From 82afd0ae61dc61a1c2d438ac573d42a30dc82aee Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 24 Oct 2022 11:02:43 +0300 Subject: [PATCH 001/302] Chat Fixes --- lib/api/chat/chat_provider_model.dart | 11 +++++++++++ .../bottom_sheets/search_employee_bottom_sheet.dart | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index ea6ea13..708096b 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -224,6 +224,17 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (chatMessage == null || chatMessage.isEmpty) { return; } + + var contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); + if (contain.isEmpty) { + searchedChats!.add( + ChatUser( + id: targetUserId, + userName: targetUserName, + ), + ); + } + String chatData = '{"contant":"$chatMessage","contantNo":"8a129295-36d7-7185-5d34-cc4eec7bcba4","chatEventId":1,"fileTypeId":null,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"conversationId":"715f8b13-96ee-cd36-cb07-5a982a219982"}'; await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index face11b..e7db4e2 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -230,7 +230,7 @@ class _SearchEmployeeBottomSheetState extends State { }, ); }, - separatorBuilder: (cxt, index) => Container( + separatorBuilder: (BuildContext cxt, int index) => Container( height: 1, color: MyColors.borderE3Color, ), From 912ac8070712117d810236ed0b09ba3d7f92a0ba Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 24 Oct 2022 11:29:28 +0300 Subject: [PATCH 002/302] Chat Fixes --- assets/langs/ar-SA.json | 3 ++- assets/langs/en-US.json | 3 ++- lib/generated/locale_keys.g.dart | 1 + lib/ui/chat/chat_detailed_screen.dart | 4 +++- lib/ui/chat/chat_home.dart | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index f5d9495..e6628b8 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -467,5 +467,6 @@ "fromUserName": "من", "sentDate": "تاريخ الإرسال", "itemTypeDisplayName": "اسم العرض", - "none": "بدون" + "none": "بدون", + "typeheretoreply": "اكتب هنا للرد" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 640afdb..3527ed4 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -467,5 +467,6 @@ "fromUserName": "From User Name", "sentDate": "Sent Date", "itemTypeDisplayName": "Item Type Display Name", - "none": "None" + "none": "None", + "typeheretoreply": "Type here to reply" } \ No newline at end of file diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index d2fae58..b351236 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -454,5 +454,6 @@ abstract class LocaleKeys { static const sentDate = 'sentDate'; static const itemTypeDisplayName = 'itemTypeDisplayName'; static const none = 'none'; + static const typeheretoreply = 'typeheretoreply'; } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index b647a38..654b026 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,11 +1,13 @@ import 'dart:async'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; @@ -56,7 +58,7 @@ class ChatDetailScreen extends StatelessWidget { child: TextField( controller: m.message, decoration: InputDecoration( - hintText: 'Type here to reply', + hintText: LocaleKeys.typeheretoreply.tr(), hintStyle: const TextStyle(color: MyColors.grey98Color), border: InputBorder.none, focusedBorder: InputBorder.none, diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index ef984a3..5d6d065 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -45,7 +45,7 @@ class _ChatHomeScreenState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, - appBar: AppBarWidget(context, title: "My Chats", showHomeButton: false), + appBar: AppBarWidget(context, title: LocaleKeys.mychats.tr(), showHomeButton: false), body: Consumer(builder: (BuildContext context, ChatProviderModel m, Widget? child) { return m.isLoading ? ChatHomeShimmer() From cf9f84f38bc61f31f52e52eeb5228857fa84ee0d Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 26 Oct 2022 16:47:13 +0300 Subject: [PATCH 003/302] PO fixes --- lib/models/get_item_creation_ntf_body_list_model.dart | 2 +- lib/models/get_po_Item_history_list_model.dart | 4 ++-- lib/models/get_po_notification_body_list_model.dart | 2 +- lib/models/get_quotation_analysis_list_model.dart | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/models/get_item_creation_ntf_body_list_model.dart b/lib/models/get_item_creation_ntf_body_list_model.dart index e4c22e7..6f98ebb 100644 --- a/lib/models/get_item_creation_ntf_body_list_model.dart +++ b/lib/models/get_item_creation_ntf_body_list_model.dart @@ -168,7 +168,7 @@ class ItemCreationLines { int? tOROWNUM; int? tRANSACTIONHEADERID; int? tRANSACTIONLINEID; - int? uNITPRICE; + num? uNITPRICE; String? uSERMANUFACTURERNAME; String? uSERMFGPARTNUM; diff --git a/lib/models/get_po_Item_history_list_model.dart b/lib/models/get_po_Item_history_list_model.dart index 656457d..35e81d6 100644 --- a/lib/models/get_po_Item_history_list_model.dart +++ b/lib/models/get_po_Item_history_list_model.dart @@ -7,11 +7,11 @@ class GetPoItemHistoryList { int? dISCOUNTPERCENTAGE; int? fROMROWNUM; int? iTEMID; - int? nETPRICE; + num? nETPRICE; int? nOOFROWS; String? oUNAME; String? pONUMBER; - int? pURCHASEPRICE; + num? pURCHASEPRICE; int? qUANTITYORDERED; int? qUANTITYRECEIVED; int? rEVISIONNUM; diff --git a/lib/models/get_po_notification_body_list_model.dart b/lib/models/get_po_notification_body_list_model.dart index 3bc92a0..e1dfbdf 100644 --- a/lib/models/get_po_notification_body_list_model.dart +++ b/lib/models/get_po_notification_body_list_model.dart @@ -164,7 +164,7 @@ class POLines { String? rEQUESTOR; int? rOWNUM; int? tOROWNUM; - int? uNITPRICE; + num? uNITPRICE; String? uOM; POLines( diff --git a/lib/models/get_quotation_analysis_list_model.dart b/lib/models/get_quotation_analysis_list_model.dart index 4ceaa96..e041f95 100644 --- a/lib/models/get_quotation_analysis_list_model.dart +++ b/lib/models/get_quotation_analysis_list_model.dart @@ -8,8 +8,8 @@ class GetQuotationAnalysisList { int? qUOTLINETOTAL; String? qUOTMFGPARTNUM; String? qUOTNUM; - int? qUOTQTY; - int? qUOTUNITPRICE; + num? qUOTQTY; + num? qUOTUNITPRICE; String? qUOTUOM; String? rFQNUM; int? rFQQTY; From db174035cabb33e2282f9bb5d8ab1970f68f9b91 Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Sun, 30 Oct 2022 15:13:15 +0300 Subject: [PATCH 004/302] Icons updated --- assets/images/drawer/drawer_marathon.svg | 3 + assets/images/winner_ribbon.svg | 10 ++ lib/provider/dashboard_provider_model.dart | 2 +- lib/ui/login/login_screen.dart | 2 +- lib/ui/marathon/widgets/countdown_timer.dart | 43 +++----- lib/ui/marathon/widgets/marathon_banner.dart | 105 +++++++++++-------- lib/ui/marathon/winner_screen.dart | 31 ++++-- 7 files changed, 116 insertions(+), 80 deletions(-) create mode 100644 assets/images/drawer/drawer_marathon.svg create mode 100644 assets/images/winner_ribbon.svg diff --git a/assets/images/drawer/drawer_marathon.svg b/assets/images/drawer/drawer_marathon.svg new file mode 100644 index 0000000..33b6c02 --- /dev/null +++ b/assets/images/drawer/drawer_marathon.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/winner_ribbon.svg b/assets/images/winner_ribbon.svg new file mode 100644 index 0000000..7a6fbd7 --- /dev/null +++ b/assets/images/winner_ribbon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index 964dab8..b0fa94b 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -101,7 +101,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { DrawerMenuItem("assets/images/drawer/performance_evaluation.svg", LocaleKeys.performanceEvaluation.tr(), AppRoutes.performanceEvaluation), DrawerMenuItem("assets/images/drawer/mowadhafi.svg", LocaleKeys.mowadhafhi.tr(), AppRoutes.mowadhafhi), DrawerMenuItem("assets/images/drawer/pending_trasactions.svg", LocaleKeys.pendingTransactions.tr(), AppRoutes.pendingTransactions), - DrawerMenuItem("assets/images/drawer/pending_trasactions.svg", LocaleKeys.brainMarathon.tr(), AppRoutes.marathonIntroScreen), + DrawerMenuItem("assets/images/drawer/drawer_marathon.svg", LocaleKeys.brainMarathon.tr(), AppRoutes.marathonIntroScreen), DrawerMenuItem("assets/images/drawer/change_password.svg", LocaleKeys.changePassword.tr(), AppRoutes.changePassword), ]; diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 4a7b659..8cd93e4 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -140,7 +140,7 @@ class _LoginScreenState extends State { Widget build(BuildContext context) { if (isAppOpenBySystem == null) { isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool; - if (kReleaseMode) { + if (kDebugMode) { // username.text = "15444"; // Maha User username.text = "15153"; // Tamer User password.text = "Abcd@12345"; diff --git a/lib/ui/marathon/widgets/countdown_timer.dart b/lib/ui/marathon/widgets/countdown_timer.dart index 3c4f790..557cfd3 100644 --- a/lib/ui/marathon/widgets/countdown_timer.dart +++ b/lib/ui/marathon/widgets/countdown_timer.dart @@ -33,8 +33,9 @@ class BuildCountdownTimer extends StatelessWidget { color: MyColors.white, fontSize: 24, fontStyle: FontStyle.italic, + fontFamily: "Poppins", letterSpacing: -1.44, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.bold, ); final TextStyle styleTextMarathon = const TextStyle( @@ -141,15 +142,11 @@ class BuildCountdownTimer extends StatelessWidget { time.days == null ? Text( "00", - style: - screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ) : Text( - time.days! < 10 - ? "0${time.days.toString()}" - : time.days.toString(), - style: - screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + time.days! < 10 ? "0${time.days.toString()}" : time.days.toString(), + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), Text( LocaleKeys.days.tr(), @@ -163,15 +160,11 @@ class BuildCountdownTimer extends StatelessWidget { time.hours == null ? Text( "00", - style: - screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ) : Text( - time.hours! < 10 - ? "0${time.hours.toString()}" - : time.hours.toString(), - style: - screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + time.hours! < 10 ? "0${time.hours.toString()}" : time.hours.toString(), + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), Text( LocaleKeys.hours.tr(), @@ -185,15 +178,11 @@ class BuildCountdownTimer extends StatelessWidget { time.min == null ? Text( "00", - style: - screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ) : Text( - time.min! < 10 - ? "0${time.min.toString()}" - : time.min.toString(), - style: - screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + time.min! < 10 ? "0${time.min.toString()}" : time.min.toString(), + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), Text( LocaleKeys.minutes.tr(), @@ -207,15 +196,11 @@ class BuildCountdownTimer extends StatelessWidget { time.sec == null ? Text( "00", - style: - screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ) : Text( - time.sec! < 10 - ? "0${time.sec.toString()}" - : time.sec.toString(), - style: - screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + time.sec! < 10 ? "0${time.sec.toString()}" : time.sec.toString(), + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), Text( LocaleKeys.seconds.tr(), diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 44bca40..be06e35 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -1,3 +1,4 @@ +import 'package:auto_size_text/auto_size_text.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -22,6 +23,7 @@ class MarathonBanner extends StatelessWidget { MarathonProvider provider = context.read(); return Container( decoration: MyDecorations.shadowDecoration, + height: 90, child: Stack( children: [ Transform( @@ -35,50 +37,69 @@ class MarathonBanner extends StatelessWidget { width: MediaQuery.of(context).size.width - 40, ), ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - children: [ - AppState().isArabic(context) ? 0.height : 5.height, - Flexible( - child: Text( - LocaleKeys.getReadyForContest.tr(), - style: const TextStyle( - fontStyle: FontStyle.italic, - fontSize: 12, - fontWeight: FontWeight.w600, - color: MyColors.lightGreyEFColor, - letterSpacing: -0.4, - ), - ), + SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + children: [ + const Expanded( + flex: 3, + child: SizedBox( + width: double.infinity, + height: double.infinity, ), - const Flexible( - child: Text( - "Saudi Arabia", - style: TextStyle( - fontStyle: FontStyle.italic, - fontSize: 19, - fontWeight: FontWeight.bold, - color: MyColors.lightGreyEFColor, - height: 32 / 22, - ), - ), + ), + Expanded( + flex: 5, + child: SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + AppState().isArabic(context) ? 0.height : 5.height, + AutoSizeText( + LocaleKeys.getReadyForContest.tr(), + style: const TextStyle( + fontStyle: FontStyle.italic, + fontSize: 12, + fontWeight: FontWeight.w600, + color: MyColors.lightGreyEFColor, + letterSpacing: -0.4, + ), + ), + const AutoSizeText( + "Saudi Arabia", + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: 19, + fontWeight: FontWeight.bold, + color: MyColors.lightGreyEFColor, + height: 32 / 22, + ), + ), + 3.height, + BuildCountdownTimer( + timeToMarathon: dummyEndTime, + provider: provider, + screenFlag: 0, + ), + ], + ).paddingOnly( + left: AppState().isArabic(context) ? 12 : 0, + right: AppState().isArabic(context) ? 0 : 12, + ) + ], + ).paddingOnly(right: 20), ), - 3.height, - BuildCountdownTimer( - timeToMarathon: dummyEndTime, - provider: provider, - screenFlag: 0, - ), - ], - ).paddingOnly( - left: AppState().isArabic(context) ? 12 : 0, - right: AppState().isArabic(context) ? 0 : 12, - ) - ], + ), + ], + ), ), ], ).onPress( diff --git a/lib/ui/marathon/winner_screen.dart b/lib/ui/marathon/winner_screen.dart index cdd3df0..2e9b16b 100644 --- a/lib/ui/marathon/winner_screen.dart +++ b/lib/ui/marathon/winner_screen.dart @@ -1,5 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; import 'package:lottie/lottie.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; @@ -43,18 +44,34 @@ class WinnerScreen extends StatelessWidget { ], ), ), - 50.height, + 26.height, + SizedBox( + height: 50, + child: Stack( + children: [ + Align( + alignment: Alignment.center, + child: SvgPicture.asset( + "assets/images/winner_ribbon.svg", + height: 50, + ), + ), + Align( + alignment: Alignment.center, + child: "WINNER".toText32(color: MyColors.white, isBold: true).paddingOnly(top: 07), + ) + ], + ), + ), + 12.height, "Muhammad Shrouff".toText22(color: MyColors.grey3AColor), "837436".toText22(color: MyColors.grey57Color), - 90.height, + 80.height, Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - LocaleKeys.sponsoredBy - .tr() - .toText14(color: MyColors.grey77Color), - " Extra".toText14( - color: MyColors.darkTextColor, isBold: true), + LocaleKeys.sponsoredBy.tr().toText14(color: MyColors.grey77Color), + " Extra".toText14(color: MyColors.darkTextColor, isBold: true), ], ), 5.height, From c87a00df6ab5b6a86da6af1121271e9cc930289e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 30 Oct 2022 17:26:39 +0300 Subject: [PATCH 005/302] Jira fixes --- lib/api/profile_api_client.dart | 2 +- lib/classes/utils.dart | 4 +++- lib/ui/landing/dashboard_screen.dart | 8 ++------ .../dynamic_screens/dynamic_input_screen.dart | 2 +- .../dynamic_screens/dynamic_input_address_screen.dart | 11 +++++++++-- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index 832b6d8..d7ceba0 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -97,7 +97,7 @@ class ProfileApiClient { Future getDffStructure(String pFunctionName, String uRL, String requestType) async { String url = ApiConsts.erpRest + uRL; - Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_REQUEST_TYPE": pFunctionName, "P_COUNTRY_CODE": "SA"}; + Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_REQUEST_TYPE": pFunctionName, "P_FUNCTION_NAME": pFunctionName, "P_COUNTRY_CODE": "SA"}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index af9e340..8f9df26 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -287,7 +287,9 @@ class Utils { String formattedDate; if (date.isNotEmpty) { formattedDate = date.split('T')[0]; - formattedDate = formattedDate + ' 00:00:00'; + if(!formattedDate.contains("00:00:00")) { + formattedDate = formattedDate + ' 00:00:00'; + } } else { formattedDate = date; } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index f5f1d7f..bb4ee43 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -1,10 +1,10 @@ import 'dart:async'; import 'dart:io'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; @@ -13,17 +13,13 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; -import 'package:mohem_flutter_app/ui/dialogs/success_dialog.dart'; -import 'package:mohem_flutter_app/ui/landing/itg/video_page.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; import 'package:mohem_flutter_app/ui/landing/widget/menus_widget.dart'; import 'package:mohem_flutter_app/ui/landing/widget/services_widget.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_banner.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; -import 'package:mohem_flutter_app/widgets/dialogs/dialogs.dart'; import 'package:mohem_flutter_app/widgets/mark_attendance_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/offers_shimmer_widget.dart'; @@ -268,7 +264,7 @@ class _DashboardScreenState extends State { bottomLeft: AppState().isArabic(context) ? Radius.circular(15) : Radius.circular(0), ), ), - child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/play.svg" : "assets/images/stop.svg"), + child: SvgPicture.asset(model.isTimeRemainingInSeconds == 0 ? "assets/images/attendance.svg" : "assets/images/attendance.svg"), ).onPress(() { showMyBottomSheet( context, diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 1c97b28..0a6c9d4 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -260,7 +260,7 @@ class _DynamicInputScreenState extends State { for (int i = 0; i < parentsList.length; i++) { for (int j = 0; j < (getEitDffStructureList?.length ?? 0); j++) { - if (getEitDffStructureList![j].sEGMENTNAME == parentsList[i].opt1) { + if (getEitDffStructureList![j].sEGMENTNAME == parentsList[i].name) { if (getEitDffStructureList![j].dISPLAYFLAG != "N") { if (getEitDffStructureList![j].vALIDATIONTYPE == "N") { String? idColName; diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart index 5c54b6d..cc8e861 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -283,10 +283,17 @@ class _DynamicInputScreenState extends State { tempVar = e.getEmployeeAddressList!.sEGMENTVALUEDSP ?? ""; } - return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); + return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 0, vARCHAR2VALUE: tempVar.toString()).toJson(); }).toList(); - submitPhoneNumbers = await ProfileApiClient().submitAddressTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, dynamicParams!.correctOrNew, countryCode, effectiveDate); + submitPhoneNumbers = await ProfileApiClient().submitAddressTransaction( + dESCFLEXCONTEXTCODE, + dynamicParams!.dynamicId, + values, + dynamicParams!.correctOrNew, + countryCode, + effectiveDate.isEmpty ? DateFormat('dd-MMM-yyy').format(DateTime.now().add(Duration(days: 35))) : effectiveDate, + ); print(values); Utils.hideLoading(context); From 40b9cb95767e4096d19c1a735f1cd050791175c1 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 31 Oct 2022 08:45:03 +0300 Subject: [PATCH 006/302] Chat Fixes --- lib/ui/chat/chat_detailed_screen.dart | 100 +++++++++++++++----------- 1 file changed, 59 insertions(+), 41 deletions(-) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 654b026..1a9cf7d 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,5 +1,4 @@ import 'dart:async'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -21,7 +20,10 @@ class ChatDetailScreen extends StatelessWidget { @override Widget build(BuildContext context) { - userDetails = ModalRoute.of(context)!.settings.arguments; + userDetails = ModalRoute + .of(context)! + .settings + .arguments; data = Provider.of(context, listen: false); data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, pagination: "0"); Timer(const Duration(seconds: 1), () => data.scrollDown()); @@ -33,56 +35,72 @@ class ChatDetailScreen extends StatelessWidget { return (m.isLoading ? ChatHomeShimmer() : Column( - children: [ - Expanded( - child: ListView.builder( - controller: m.scrollController, - shrinkWrap: true, - itemCount: m.userChatHistory.length, - padding: const EdgeInsets.symmetric(vertical: 10), - itemBuilder: (BuildContext context, int i) { - return ChatBubble( - text: m.userChatHistory[i].contant.toString(), - isSeen: m.userChatHistory[i].isSeen == true ? true : false, - isCurrentUser: m.userChatHistory[i].currentUserId == 42062 ? true : false, - isDelivered: m.userChatHistory[i].currentUserId == 42062 && m.userChatHistory[i].isDelivered == true ? true : false, - dateTime: m.userChatHistory[i].createdDate.toString(), - ); - }, - ), - ), - Card( - margin: EdgeInsets.zero, - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 10), - child: TextField( - controller: m.message, - decoration: InputDecoration( - hintText: LocaleKeys.typeheretoreply.tr(), - hintStyle: const TextStyle(color: MyColors.grey98Color), - border: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, - errorBorder: InputBorder.none, - disabledBorder: InputBorder.none, - contentPadding: const EdgeInsets.symmetric(vertical: 10, horizontal: 15), - suffixIcon: IconButton( + children: [ + Expanded( + child: ListView.builder( + controller: m.scrollController, + shrinkWrap: true, + itemCount: m.userChatHistory.length, + padding: const EdgeInsets.symmetric(vertical: 10), + itemBuilder: (BuildContext context, int i) { + return ChatBubble( + text: m.userChatHistory[i].contant.toString(), + isSeen: m.userChatHistory[i].isSeen == true ? true : false, + isCurrentUser: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id ? true : false, + isDelivered: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id && m.userChatHistory[i].isDelivered == true ? true : false, + dateTime: m.userChatHistory[i].createdDate.toString(), + ); + }, + ), + ), + Card( + margin: EdgeInsets.zero, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: TextField( + controller: m.message, + decoration: InputDecoration( + hintText: LocaleKeys.typeheretoreply.tr(), + hintStyle: const TextStyle(color: MyColors.grey98Color), + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + errorBorder: InputBorder.none, + disabledBorder: InputBorder.none, + contentPadding: const EdgeInsets.symmetric(vertical: 10, horizontal: 15), + suffixIcon: SizedBox( + width: 100, + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + IconButton( + icon: const Icon( + Icons.attach_file_rounded, + size: 27, + color: MyColors.lightGreenColor, + ), + onPressed: () {}, + ), + IconButton( icon: SvgPicture.asset( "assets/icons/chat/chat_send_icon.svg", height: 26, width: 35, ), onPressed: () { - // m.logger.d(userDetails); - m.sendChatMessage(m.message.text, userDetails["targetUser"].id, userDetails["targetUser"].userName); + m.sendChatMessage(m.message.text, userDetails["targetUser"].id, userDetails["targetUser"].userName); }, ), - ), + ], ), ), ), - ], - )); + ), + ), + ), + ], + )); }, ), ); From 69ded3dc43361a2fbc8cd2c556c18e5ea42a4701 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Mon, 31 Oct 2022 15:17:24 +0300 Subject: [PATCH 007/302] fix my request --- assets/langs/ar-SA.json | 1 + assets/langs/en-US.json | 1 + lib/api/my_requests_api_client.dart | 35 +++++++++++++++ lib/generated/codegen_loader.g.dart | 6 +++ lib/generated/locale_keys.g.dart | 1 + lib/models/generic_response_model.dart | 13 ++++-- .../get_ccp_transations_list_model.dart | 24 ++++++++++ lib/ui/profile/add_update_family_member.dart | 10 ++--- lib/ui/screens/my_requests/my_requests.dart | 2 +- lib/ui/screens/my_requests/new_request.dart | 45 +++++++++++++++++-- 10 files changed, 126 insertions(+), 12 deletions(-) create mode 100644 lib/models/my_requests/get_ccp_transations_list_model.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 6eae388..752200a 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -423,6 +423,7 @@ "skip": "يتخطى", "typeCurrentPasswordBelow": "اكتب كلمة المرور الحاليه", "currentPassword": "كلمة المرور الحاليه", + "concurrentReports": "التقارير المتزامنه", "profile": { "reset_password": { "label": "Reset Password", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 2a7945c..c176c5d 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -423,6 +423,7 @@ "skip": "skip", "typeCurrentPasswordBelow": "Type Your Current password below", "currentPassword": "Current password", + "concurrentReports": "Concurrent Reports", "profile": { "reset_password": { "label": "Reset Password", diff --git a/lib/api/my_requests_api_client.dart b/lib/api/my_requests_api_client.dart index 391e297..c9507b9 100644 --- a/lib/api/my_requests_api_client.dart +++ b/lib/api/my_requests_api_client.dart @@ -6,6 +6,7 @@ import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_ccp_dff_structure_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_ccp_output_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_ccp_transactions_model.dart'; +import 'package:mohem_flutter_app/models/my_requests/get_ccp_transations_list_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_concurrent_programs_model.dart'; class MyRequestsApiClient { @@ -59,4 +60,38 @@ class MyRequestsApiClient { }, url, postParams); } + Future getSubmitNewRequest(List> list) async + { + String url = "${ApiConsts.erpRest}SUBMIT_CCP_TRANSACTION"; + Map postParams = { + "P_MENU_TYPE": "E", + "P_SELECTED_RESP_ID": -999, + "P_DESC_FLEX_NAME": "HMG_EMP_BUS_TRIP_SET_SS", + }; + + postParams.addAll(AppState().postParamsJson); + postParams["EITTransactionTBL"] = list; + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.submitCcpTransactionList; + }, url, postParams); + } + + Future> getCcpTransactions(List> list) async + { + String url = "${ApiConsts.erpRest}GET_CCP_TRANSACTIONS"; + Map postParams = { + "P_MENU_TYPE": "E", + "P_SELECTED_RESP_ID": -999, + "P_DESC_FLEX_NAME": "HMG_EMP_BUS_TRIP_SET_SS", + }; + + postParams.addAll(AppState().postParamsJson); + postParams["EITTransactionTBL"] = list; + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.getCCPTransactionsModel ?? []; + }, url, postParams); + } + } diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 5824fe1..e9aeff4 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -435,8 +435,11 @@ class CodegenLoader extends AssetLoader{ "adult": "بالغ", "updateMember": "هل انت متأكد تريد تحديث بيانات هذا العضو؟", "fieldIsEmpty": "'{data}' الحقل فارغ. الرجاء التحديد", + "pleaseEnterComments": "الرجاء إدخال التعليقات", + "skip": "يتخطى", "typeCurrentPasswordBelow": "اكتب كلمة المرور الحاليه", "currentPassword": "كلمة المرور الحاليه", + "concurrentReports": "التقارير المتزامنه", "profile": { "reset_password": { "label": "Reset Password", @@ -906,8 +909,11 @@ static const Map en_US = { "adult": "Adult", "updateMember": "Are You Sure You Want to Update this Member?", "fieldIsEmpty": "'{data}' Field is empty. Please select", + "pleaseEnterComments": "Please enter comments", + "skip": "skip", "typeCurrentPasswordBelow": "Type Your Current password below", "currentPassword": "Current password", + "concurrentReports": "Concurrent Reports", "profile": { "reset_password": { "label": "Reset Password", diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 8e45025..4ca2275 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -424,6 +424,7 @@ abstract class LocaleKeys { static const skip = 'skip'; static const typeCurrentPasswordBelow = 'typeCurrentPasswordBelow'; static const currentPassword = 'currentPassword'; + static const concurrentReports = 'concurrentReports'; static const profile_reset_password_label = 'profile.reset_password.label'; static const profile_reset_password_username = 'profile.reset_password.username'; static const profile_reset_password_password = 'profile.reset_password.password'; diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 2374fbc..753d2c2 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -61,6 +61,7 @@ import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart'; import 'package:mohem_flutter_app/models/my_requests/get_ccp_dff_structure_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_ccp_output_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_ccp_transactions_model.dart'; +import 'package:mohem_flutter_app/models/my_requests/get_ccp_transations_list_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_concurrent_programs_model.dart'; import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart'; import 'package:mohem_flutter_app/models/my_team/get_subordinates_leaves_total_vacations_list_model.dart'; @@ -342,7 +343,7 @@ class GenericResponseModel { SubmitAddressTransaction? submitAddressTransactionList; SubmitBasicDetailsTransactionList? submitBasicDetTransactionList; String? submitCEITransactionList; - String? submitCcpTransactionList; + SubmitCcpTransactionList? submitCcpTransactionList; SubmitContactTransactionList? submitContactTransactionList; SubmitEITTransactionList? submitEITTransactionList; String? submitHrTransactionList; @@ -1298,7 +1299,10 @@ class GenericResponseModel { submitAddressTransactionList = json['SubmitAddressTransactionList'] != null ? SubmitAddressTransaction.fromJson(json['SubmitAddressTransactionList']) : null; submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'] != null ? SubmitBasicDetailsTransactionList.fromJson(json['SubmitBasicDetTransactionList']) : null; submitCEITransactionList = json['SubmitCEITransactionList']; - submitCcpTransactionList = json['SubmitCcpTransactionList']; + submitCcpTransactionList = json['SubmitCcpTransactionList'] != null + ? new SubmitCcpTransactionList.fromJson( + json['SubmitCcpTransactionList']) + : null; submitContactTransactionList = json['SubmitContactTransactionList'] != null ? SubmitContactTransactionList.fromJson(json['SubmitContactTransactionList']) : null; submitEITTransactionList = json['SubmitEITTransactionList'] != null ? SubmitEITTransactionList.fromJson(json['SubmitEITTransactionList']) : null; @@ -1753,7 +1757,10 @@ class GenericResponseModel { } data['SubmitCEITransactionList'] = this.submitCEITransactionList; - data['SubmitCcpTransactionList'] = this.submitCcpTransactionList; + if (this.submitCcpTransactionList != null) { + data['SubmitCcpTransactionList'] = + this.submitCcpTransactionList!.toJson(); + } data['SubmitContactTransactionList'] = this.submitContactTransactionList; if (this.submitEITTransactionList != null) { diff --git a/lib/models/my_requests/get_ccp_transations_list_model.dart b/lib/models/my_requests/get_ccp_transations_list_model.dart new file mode 100644 index 0000000..2e5191b --- /dev/null +++ b/lib/models/my_requests/get_ccp_transations_list_model.dart @@ -0,0 +1,24 @@ + + +class SubmitCcpTransactionList { + int? pREQUESTID; + String? pRETURNMSG; + String? pRETURNSTATUS; + + SubmitCcpTransactionList( + {this.pREQUESTID, this.pRETURNMSG, this.pRETURNSTATUS}); + + SubmitCcpTransactionList.fromJson(Map json) { + pREQUESTID = json['P_REQUEST_ID']; + pRETURNMSG = json['P_RETURN_MSG']; + pRETURNSTATUS = json['P_RETURN_STATUS']; + } + + Map toJson() { + Map data = new Map(); + data['P_REQUEST_ID'] = this.pREQUESTID; + data['P_RETURN_MSG'] = this.pRETURNMSG; + data['P_RETURN_STATUS'] = this.pRETURNSTATUS; + return data; + } +} \ No newline at end of file diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index 00ad7fc..61b6639 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -392,7 +392,7 @@ class _AddUpdateFamilyMemberState extends State { } void submitUpdateForm() async { - // try { + try { List> values1 = getBasicDetDffStructureList!.map((e) { String? dateVal = ''; String? vatcherVal = ''; @@ -463,9 +463,9 @@ class _AddUpdateFamilyMemberState extends State { Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); setState(() {}); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } } diff --git a/lib/ui/screens/my_requests/my_requests.dart b/lib/ui/screens/my_requests/my_requests.dart index 65aa534..f9d8d39 100644 --- a/lib/ui/screens/my_requests/my_requests.dart +++ b/lib/ui/screens/my_requests/my_requests.dart @@ -47,7 +47,7 @@ class _MyRequestsState extends State { backgroundColor: Colors.white, appBar: AppBarWidget( context, - title: "Concurrent Reports", + title: LocaleKeys.concurrentReports, ), body: Column( children: [ diff --git a/lib/ui/screens/my_requests/new_request.dart b/lib/ui/screens/my_requests/new_request.dart index b476ecc..d04382d 100644 --- a/lib/ui/screens/my_requests/new_request.dart +++ b/lib/ui/screens/my_requests/new_request.dart @@ -5,11 +5,15 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/my_requests_api_client.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/dyanmic_forms/validate_eit_transaction_model.dart'; import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/my_requests/get_ccp_transactions_model.dart'; +import 'package:mohem_flutter_app/models/my_requests/get_ccp_transations_list_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_concurrent_programs_model.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; @@ -25,7 +29,8 @@ class NewRequest extends StatefulWidget { class _NewRequestState extends State { List getConcurrentProgramsList = []; GetConcurrentProgramsModel? selectedConcurrentProgramList; - + SubmitCcpTransactionList? submitCcpTransactionList; + List getCCPTransactionsList = []; List? getCCPDFFStructureModelList; DateTime selectedDate = DateTime.now(); @@ -42,7 +47,7 @@ class _NewRequestState extends State { backgroundColor: Colors.white, appBar: AppBarWidget( context, - title: "Concurrent Reports", + title: LocaleKeys.concurrentReports, ), body: Column( children: [ @@ -84,7 +89,7 @@ class _NewRequestState extends State { 1.divider, DefaultButton(LocaleKeys.submit.tr(), () { // todo need to add submit method - // openNewRequest(); + openNewRequest(); }) .insideContainer, ], @@ -92,6 +97,40 @@ class _NewRequestState extends State { ); } + + void openNewRequest() async { + try { + List> values = getCCPDFFStructureModelList!.map((e) { + String? dateVal = ''; + String? vatcherVal = ''; + int? numberVal; + if (e!.fORMATTYPE == 'N') { + dateVal = null; + vatcherVal = e.eSERVICESDV!.pIDCOLUMNNAME; + numberVal = null; + } else if (e.fORMATTYPE == 'X') { + dateVal = null; + vatcherVal = e.eSERVICESDV!.pIDCOLUMNNAME; + numberVal = null; + } else { + dateVal = null; + numberVal = null; + vatcherVal = null; + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); + }).toList(); + Utils.showLoading(context); + submitCcpTransactionList = await MyRequestsApiClient().getSubmitNewRequest(values); + getCCPTransactionsList = await MyRequestsApiClient().getCcpTransactions(values); + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.myRequests,); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + void getConcurrentPrograms() async { try { Utils.showLoading(context); From 11e4da6478343dc37f292df21b051cc514059f9a Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Mon, 31 Oct 2022 17:25:26 +0300 Subject: [PATCH 008/302] Added Answer Selected Status --- lib/classes/decorations_helper.dart | 13 +- lib/ui/marathon/marathon_intro_screen.dart | 49 +++----- lib/ui/marathon/marathon_provider.dart | 16 ++- lib/ui/marathon/marathon_screen.dart | 34 ++---- .../marathon/marathon_winner_selection.dart | 20 ++- lib/ui/marathon/widgets/question_card.dart | 115 +++++++++++------- lib/ui/marathon/winner_screen.dart | 14 +-- 7 files changed, 135 insertions(+), 126 deletions(-) diff --git a/lib/classes/decorations_helper.dart b/lib/classes/decorations_helper.dart index 67139b8..77ea4a4 100644 --- a/lib/classes/decorations_helper.dart +++ b/lib/classes/decorations_helper.dart @@ -14,9 +14,12 @@ class MyDecorations { ], ); - static Decoration answerContainerDecoration = BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: MyColors.greyF7Color, - border: Border.all(width: 1, color: MyColors.lightGreyEFColor), - ); + static Decoration getContainersDecoration(Color color) { + Decoration answerContainerDecoration = BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: color, + border: Border.all(width: 1, color: MyColors.lightGreyEFColor), + ); + return answerContainerDecoration; + } } diff --git a/lib/ui/marathon/marathon_intro_screen.dart b/lib/ui/marathon/marathon_intro_screen.dart index 9ccf5b0..f836229 100644 --- a/lib/ui/marathon/marathon_intro_screen.dart +++ b/lib/ui/marathon/marathon_intro_screen.dart @@ -11,7 +11,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_header.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:provider/provider.dart'; @@ -24,18 +24,20 @@ class MarathonIntroScreen extends StatelessWidget { Widget build(BuildContext context) { MarathonProvider provider = context.watch(); return Scaffold( + appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), body: Stack( children: [ SingleChildScrollView( child: Column( children: [ - const MarathonHeader(), MarathonDetailsCard(provider: provider).paddingAll(15), MarathonTimerCard( provider: provider, timeToMarathon: dummyEndTime, ).paddingOnly(left: 15, right: 15, bottom: 15), - const SizedBox(height: 100,), + const SizedBox( + height: 100, + ), ], ), ), @@ -52,8 +54,7 @@ class MarathonIntroScreen extends StatelessWidget { class MarathonDetailsCard extends StatelessWidget { final MarathonProvider provider; - const MarathonDetailsCard({Key? key, required this.provider}) - : super(key: key); + const MarathonDetailsCard({Key? key, required this.provider}) : super(key: key); @override Widget build(BuildContext context) { @@ -68,17 +69,12 @@ class MarathonDetailsCard extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.contestTopicAbout - .tr() - .toText16(color: MyColors.grey77Color), - "Saudi Arabia" - .toText20(color: MyColors.textMixColor, isBold: true), + LocaleKeys.contestTopicAbout.tr().toText16(color: MyColors.grey77Color), + "Saudi Arabia".toText20(color: MyColors.textMixColor, isBold: true), Row( children: [ Flexible( - child: - "Nam suscipit turpis in pharetra euismsdef. Duis rutrum at nulla id aliquam" - .toText14(color: MyColors.grey77Color), + child: "Nam suscipit turpis in pharetra euismsdef. Duis rutrum at nulla id aliquam".toText14(color: MyColors.grey77Color), ) ], ), @@ -86,31 +82,25 @@ class MarathonDetailsCard extends StatelessWidget { 5.height, Row( children: [ - LocaleKeys.prize - .tr() - .toText16(color: MyColors.grey77Color, isBold: true), - " LED 55\" Android TV" - .toText16(color: MyColors.greenColor, isBold: true), + LocaleKeys.prize.tr().toText16(color: MyColors.grey77Color, isBold: true), + " LED 55\" Android TV".toText16(color: MyColors.greenColor, isBold: true), ], ), Row( children: [ - LocaleKeys.sponsoredBy - .tr() - .toText16(color: MyColors.grey77Color), - " Extra" - .toText16(color: MyColors.darkTextColor, isBold: true), + LocaleKeys.sponsoredBy.tr().toText16(color: MyColors.grey77Color), + " Extra".toText16(color: MyColors.darkTextColor, isBold: true), ], ), 10.height, Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - Image.network( - "https://cdn.pixabay.com/photo/2014/08/27/07/53/blog-428950_1280.jpg", - height: 50, + Image.asset( + "assets/images/logos/main_mohemm_logo.png", + height: 40, fit: BoxFit.fill, - width: 120, + width: 150, ) ], ), @@ -144,8 +134,7 @@ class MarathonTimerCard extends StatelessWidget { Row( children: [ LocaleKeys.gameDate.tr().toText16(color: MyColors.grey77Color), - " 10 Oct, 2022" - .toText16(color: MyColors.darkTextColor, isBold: true), + " 10 Oct, 2022".toText16(color: MyColors.darkTextColor, isBold: true), ], ), Row( @@ -156,7 +145,7 @@ class MarathonTimerCard extends StatelessWidget { ), Lottie.asset( MyLottieConsts.hourGlassLottie, - height: 140, + height: 200, ), BuildCountdownTimer( timeToMarathon: timeToMarathon, diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 39958c2..5a03b74 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -2,7 +2,9 @@ import 'dart:async'; import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class MarathonProvider extends ChangeNotifier { final AppinioSwiperController swiperController = AppinioSwiperController(); @@ -41,11 +43,18 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } + void resetAll() { + isSelectedOptions[0] = false; + isSelectedOptions[1] = false; + isSelectedOptions[2] = false; + isSelectedOptions[3] = false; + } + Timer timerU = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); - int start = 5; + int start = 8; void startTimer(BuildContext context) { - start = 5; + start = 8; const Duration oneSec = Duration(seconds: 1); timerU = Timer.periodic( oneSec, @@ -66,9 +75,10 @@ class MarathonProvider extends ChangeNotifier { return; } - swipeCardLeft(); + resetAll(); timer.cancel(); cancelTimer(); + swipeCardLeft(); } else { start--; } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 445d72a..93e4913 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -13,8 +13,8 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_header.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; import 'package:steps_indicator/steps_indicator.dart'; @@ -25,13 +25,12 @@ class MarathonScreen extends StatelessWidget { Widget build(BuildContext context) { MarathonProvider provider = context.watch(); return Scaffold( + appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), body: SingleChildScrollView( child: Column( children: [ - const MarathonHeader(), - 20.height, - MarathonProgressContainer(provider: provider) - .paddingOnly(left: 21, right: 21), + 20.height, + MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), if (provider.isMarathonCompleted) InkWell( onTap: () { @@ -58,17 +57,12 @@ class MarathonScreen extends StatelessWidget { subTitle: Text( LocaleKeys.allQuestionsCorrect.tr(), textAlign: TextAlign.center, - style: const TextStyle( - fontSize: 18, - fontWeight: FontWeight.w600, - color: MyColors.darkTextColor, - letterSpacing: -1.08), + style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -1.08), ), ).paddingOnly(top: 12, left: 21, right: 21), ) else - QuestionCard(provider: provider) - .paddingOnly(top: 12, left: 21, right: 21), + QuestionCard(provider: provider).paddingOnly(top: 12, left: 21, right: 21), ], ), ), @@ -79,12 +73,10 @@ class MarathonScreen extends StatelessWidget { class MarathonProgressContainer extends StatefulWidget { final MarathonProvider provider; - const MarathonProgressContainer({Key? key, required this.provider}) - : super(key: key); + const MarathonProgressContainer({Key? key, required this.provider}) : super(key: key); @override - State createState() => - _MarathonProgressContainerState(); + State createState() => _MarathonProgressContainerState(); } class _MarathonProgressContainerState extends State { @@ -120,13 +112,10 @@ class _MarathonProgressContainerState extends State { borderRadius: BorderRadius.circular(12), ), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), - child: - "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.totalQuestions.toString()} ${LocaleKeys.question.tr()}" - .toText12(color: MyColors.white), + child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.totalQuestions.toString()} ${LocaleKeys.question.tr()}".toText12(color: MyColors.white), ), "23 ${LocaleKeys.marathoners.tr()}".toText14(), - "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}" - .toText18(), + "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(), ], ), 15.height, @@ -152,8 +141,7 @@ class _MarathonProgressContainerState extends State { 12.height, Row( children: [ - "${widget.provider.currentQuestionNumber * 10}% ${LocaleKeys.completed.tr()}" - .toText14(isBold: true), + "${widget.provider.currentQuestionNumber * 10}% ${LocaleKeys.completed.tr()}".toText14(isBold: true), ], ), ], diff --git a/lib/ui/marathon/marathon_winner_selection.dart b/lib/ui/marathon/marathon_winner_selection.dart index c69f54f..8462ab4 100644 --- a/lib/ui/marathon/marathon_winner_selection.dart +++ b/lib/ui/marathon/marathon_winner_selection.dart @@ -13,7 +13,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_header.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; class MarathonWinnerSelection extends StatelessWidget { @@ -23,13 +23,12 @@ class MarathonWinnerSelection extends StatelessWidget { Widget build(BuildContext context) { MarathonProvider provider = context.read(); return Scaffold( + appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), body: SingleChildScrollView( child: Column( children: [ - const MarathonHeader(), 20.height, - QualifiersContainer(provider: provider) - .paddingOnly(left: 21, right: 21), + QualifiersContainer(provider: provider).paddingOnly(left: 21, right: 21), 20.height, InkWell( onTap: () { @@ -53,8 +52,7 @@ class MarathonWinnerSelection extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Muhammad Shrouff" - .toText18(isBold: true, color: MyColors.white), + "Muhammad Shrouff".toText18(isBold: true, color: MyColors.white), "837436".toText18(isBold: true, color: MyColors.white), ], ), @@ -96,8 +94,7 @@ class MarathonWinnerSelection extends StatelessWidget { class QualifiersContainer extends StatefulWidget { final MarathonProvider provider; - const QualifiersContainer({Key? key, required this.provider}) - : super(key: key); + const QualifiersContainer({Key? key, required this.provider}) : super(key: key); @override State createState() => _QualifiersContainerState(); @@ -134,11 +131,8 @@ class _QualifiersContainerState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.winnerSelection - .tr() - .toText18(isBold: true, color: MyColors.grey3AColor), - "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}" - .toText18(isBold: true, color: MyColors.redColor), + LocaleKeys.winnerSelection.tr().toText18(isBold: true, color: MyColors.grey3AColor), + "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(isBold: true, color: MyColors.redColor), ], ), 10.height, diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index 45fa6cc..d5f6bce 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -8,6 +8,13 @@ import 'package:mohem_flutter_app/models/marathon_question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:provider/provider.dart'; +List isSelectedOptions = [ + false, + false, + false, + false, +]; + class QuestionCard extends StatefulWidget { final MarathonProvider provider; @@ -18,7 +25,7 @@ class QuestionCard extends StatefulWidget { } class _QuestionCardState extends State { - final List questionCards = []; + final List questionCards = []; @override void initState() { @@ -29,7 +36,7 @@ class _QuestionCardState extends State { void _loadCards() { for (DummyQuestionModel question in questions) { questionCards.add( - QuestionContent( + CardContent( question: question, provider: widget.provider, ), @@ -64,11 +71,11 @@ class _QuestionCardState extends State { } } -class QuestionContent extends StatelessWidget { +class CardContent extends StatelessWidget { final DummyQuestionModel question; final MarathonProvider provider; - const QuestionContent({ + const CardContent({ Key? key, required this.question, required this.provider, @@ -131,12 +138,38 @@ class QuestionContent extends StatelessWidget { } } -class AnswerContent extends StatelessWidget { +class AnswerContent extends StatefulWidget { final DummyQuestionModel question; final MarathonProvider provider; const AnswerContent({Key? key, required this.question, required this.provider}) : super(key: key); + @override + State createState() => _AnswerContentState(); +} + +class _AnswerContentState extends State { + void updateOption(int index, bool value) { + isSelectedOptions[0] = false; + isSelectedOptions[1] = false; + isSelectedOptions[2] = false; + isSelectedOptions[3] = false; + isSelectedOptions[index] = value; + setState(() {}); + } + + Decoration getContainerColor(int index) { + if (!isSelectedOptions[index]) { + return MyDecorations.getContainersDecoration(MyColors.greyF7Color); + } + if (isSelectedOptions[index] && context.watch().start > 0) { + return MyDecorations.getContainersDecoration(MyColors.yellowColorII); + } + return MyDecorations.getContainersDecoration( + isSelectedOptions[index] ? MyColors.greenColor : MyColors.greyF7Color, + ); + } + @override Widget build(BuildContext context) { return Container( @@ -155,29 +188,27 @@ class AnswerContent extends StatelessWidget { children: [ InkWell( onTap: () { - if (provider.currentQuestionNumber == 9) { - provider.cancelTimer(); - provider.resetValues(); + if (widget.provider.currentQuestionNumber == 9) { + widget.provider.cancelTimer(); + widget.provider.resetValues(); Navigator.pushReplacementNamed( context, AppRoutes.marathonWinnerSelection, ); return; } - provider.cancelTimer(); - provider.startTimer(context); - provider.swipeCardLeft(); + updateOption(0, true); }, child: Container( height: 60, width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, - decoration: MyDecorations.answerContainerDecoration, + decoration: getContainerColor(0), child: Center( child: Text( - question.opt1!, - style: const TextStyle( - color: MyColors.darkTextColor, + widget.question.opt1!, + style: TextStyle( + color: isSelectedOptions[0] ? MyColors.white : MyColors.darkTextColor, fontWeight: FontWeight.w600, fontSize: 16, ), @@ -188,29 +219,27 @@ class AnswerContent extends StatelessWidget { const SizedBox(height: 15), InkWell( onTap: () { - if (provider.currentQuestionNumber == 9) { - provider.cancelTimer(); - provider.resetValues(); + if (widget.provider.currentQuestionNumber == 9) { + widget.provider.cancelTimer(); + widget.provider.resetValues(); Navigator.pushReplacementNamed( context, AppRoutes.marathonWinnerSelection, ); return; } - provider.cancelTimer(); - provider.startTimer(context); - provider.swipeCardLeft(); + updateOption(1, true); }, child: Container( height: 60, width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, - decoration: MyDecorations.answerContainerDecoration, + decoration: getContainerColor(1), child: Center( child: Text( - question.opt2!, - style: const TextStyle( - color: MyColors.darkTextColor, + widget.question.opt2!, + style: TextStyle( + color: isSelectedOptions[1] ? MyColors.white : MyColors.darkTextColor, fontWeight: FontWeight.w600, fontSize: 16, ), @@ -221,29 +250,27 @@ class AnswerContent extends StatelessWidget { const SizedBox(height: 15), InkWell( onTap: () { - if (provider.currentQuestionNumber == 9) { - provider.cancelTimer(); - provider.resetValues(); + if (widget.provider.currentQuestionNumber == 9) { + widget.provider.cancelTimer(); + widget.provider.resetValues(); Navigator.pushReplacementNamed( context, AppRoutes.marathonWinnerSelection, ); return; } - provider.cancelTimer(); - provider.startTimer(context); - provider.swipeCardLeft(); + updateOption(2, true); }, child: Container( height: 60, width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, - decoration: MyDecorations.answerContainerDecoration, + decoration: getContainerColor(2), child: Center( child: Text( - question.opt3!, - style: const TextStyle( - color: MyColors.darkTextColor, + widget.question.opt3!, + style: TextStyle( + color: isSelectedOptions[2] ? MyColors.white : MyColors.darkTextColor, fontWeight: FontWeight.w600, fontSize: 16, ), @@ -254,29 +281,27 @@ class AnswerContent extends StatelessWidget { const SizedBox(height: 15), InkWell( onTap: () { - if (provider.currentQuestionNumber == 9) { - provider.cancelTimer(); - provider.resetValues(); + if (widget.provider.currentQuestionNumber == 9) { + widget.provider.cancelTimer(); + widget.provider.resetValues(); Navigator.pushReplacementNamed( context, AppRoutes.marathonWinnerSelection, ); return; } - provider.cancelTimer(); - provider.startTimer(context); - provider.swipeCardLeft(); + updateOption(3, true); }, child: Container( height: 60, width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, - decoration: MyDecorations.answerContainerDecoration, + decoration: getContainerColor(3), child: Center( child: Text( - question.opt3!, - style: const TextStyle( - color: MyColors.darkTextColor, + widget.question.opt3!, + style: TextStyle( + color: isSelectedOptions[3] ? MyColors.white : MyColors.darkTextColor, fontWeight: FontWeight.w600, fontSize: 16, ), diff --git a/lib/ui/marathon/winner_screen.dart b/lib/ui/marathon/winner_screen.dart index 2e9b16b..8d6d171 100644 --- a/lib/ui/marathon/winner_screen.dart +++ b/lib/ui/marathon/winner_screen.dart @@ -9,7 +9,7 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_header.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; class WinnerScreen extends StatelessWidget { const WinnerScreen({Key? key}) : super(key: key); @@ -18,10 +18,10 @@ class WinnerScreen extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( backgroundColor: MyColors.backgroundColor, + appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), body: SingleChildScrollView( child: Column( children: [ - const MarathonHeader(), 60.height, Container( width: double.infinity, @@ -75,12 +75,12 @@ class WinnerScreen extends StatelessWidget { ], ), 5.height, - Image.network( - "https://cdn.pixabay.com/photo/2014/08/27/07/53/blog-428950_1280.jpg", - height: 50, + Image.asset( + "assets/images/logos/main_mohemm_logo.png", + height: 40, fit: BoxFit.fill, - width: 120, - ), + width: 150, + ) ], ), ).paddingOnly(left: 21, right: 21), From c0ee98b06ec80eee36bfbe24a63df01d0087e654 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 1 Nov 2022 09:16:55 +0300 Subject: [PATCH 009/302] Merge branch 'master' into development_aamir # Conflicts: # assets/langs/ar-SA.json # assets/langs/en-US.json # lib/generated/locale_keys.g.dart --- assets/langs/ar-SA.json | 4 +--- assets/langs/en-US.json | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 88f0b75..bfcaa1c 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -492,8 +492,6 @@ "winnerSelectedRandomly": "سيتم اختيار الفائز عشوائياً من بين التصفيات.", "fingersCrossed": "تشابك الاصابع!!!", "congrats": "مبروك !!!", - "allQuestionsCorrect": "لقد أجبت على جميع الأسئلة بشكل صحيح." - - "none": "بدون", + "allQuestionsCorrect": "لقد أجبت على جميع الأسئلة بشكل صحيح.", "typeheretoreply": "اكتب هنا للرد" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 0c7434a..7e9b42a 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -492,7 +492,6 @@ "winnerSelectedRandomly": "The winner will be selected randomly among the qualifiers.", "fingersCrossed": "Fingers Crossed!!!", "congrats": "Congratulations!!!", - "allQuestionsCorrect": "You have answered all questions correct" - "none": "None", + "allQuestionsCorrect": "You have answered all questions correct", "typeheretoreply": "Type here to reply" } \ No newline at end of file From d77f9a33628cbc6d9644c98a19a55450d7bb88db Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 1 Nov 2022 09:22:30 +0300 Subject: [PATCH 010/302] Worklist fixes --- assets/lottie/loading.json | 1 + .../get_po_notification_body_list_model.dart | 2 +- .../itg_worklist_table_model.dart | 21 ++++++ lib/provider/dashboard_provider_model.dart | 14 +++- .../attendance/add_vacation_rule_screen.dart | 1 + lib/ui/chat/chat_home.dart | 1 + lib/ui/landing/dashboard_screen.dart | 1 + .../add_leave_balance_screen.dart | 1 + lib/ui/profile/profile_screen.dart | 2 +- lib/ui/work_list/itg_detail_screen.dart | 23 ++++++- .../approval_level_fragment.dart | 20 ++++-- .../request_detail_fragment.dart | 2 + lib/ui/work_list/sheets/delegate_sheet.dart | 5 ++ .../work_list/sheets/selected_item_sheet.dart | 8 +-- lib/ui/work_list/work_list_screen.dart | 1 + lib/ui/work_list/worklist_detail_screen.dart | 69 ++++++++++++++++--- .../worklist_fragments/actions_fragment.dart | 16 +++-- lib/widgets/bottom_sheet.dart | 12 +++- lib/widgets/circular_avatar.dart | 2 +- .../dialogs/accept_reject_input_dialog.dart | 19 +++-- lib/widgets/dialogs/itg_comments_dialog.dart | 27 +++++--- lib/widgets/image_picker.dart | 1 + lib/widgets/item_detail_view_widget.dart | 19 ++++- 23 files changed, 216 insertions(+), 52 deletions(-) create mode 100644 assets/lottie/loading.json create mode 100644 lib/models/itg_forms_models/itg_worklist_table_model.dart diff --git a/assets/lottie/loading.json b/assets/lottie/loading.json new file mode 100644 index 0000000..8190459 --- /dev/null +++ b/assets/lottie/loading.json @@ -0,0 +1 @@ +{"v":"5.8.1","fr":30,"ip":0,"op":60,"w":300,"h":300,"nm":"loading_6","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[360]}],"ix":10},"p":{"a":0,"k":[150.00000000000003,150.00000000000003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[30.000000000000004,30.000000000000004,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.12941176470588237,0.7411764705882353,0.7764705882352941,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":50,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"t":60,"s":[99]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[1]},{"t":50,"s":[100]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[3]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":30,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150.00000000000003,150.00000000000003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[30.000000000000004,30.000000000000004,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.7450980392156863,0.9254901960784314,0.9372549019607843,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":50,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/lib/models/get_po_notification_body_list_model.dart b/lib/models/get_po_notification_body_list_model.dart index e1dfbdf..d0473dc 100644 --- a/lib/models/get_po_notification_body_list_model.dart +++ b/lib/models/get_po_notification_body_list_model.dart @@ -160,7 +160,7 @@ class POLines { int? pOHEADERID; String? pROMISEDDATE; String? pRNUM; - int? qUANTITY; + num? qUANTITY; String? rEQUESTOR; int? rOWNUM; int? tOROWNUM; diff --git a/lib/models/itg_forms_models/itg_worklist_table_model.dart b/lib/models/itg_forms_models/itg_worklist_table_model.dart new file mode 100644 index 0000000..e1212ba --- /dev/null +++ b/lib/models/itg_forms_models/itg_worklist_table_model.dart @@ -0,0 +1,21 @@ +class ITGWorkListTableModel { + String? label; + String? isTable; + String? textvalue; + + ITGWorkListTableModel({this.label, this.isTable, this.textvalue}); + + ITGWorkListTableModel.fromJson(Map json) { + label = json['label']; + isTable = json['isTable']; + textvalue = json['textvalue']; + } + + Map toJson() { + Map data = new Map(); + data['label'] = this.label; + data['isTable'] = this.isTable; + data['textvalue'] = this.textvalue; + return data; + } +} diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index 4e53242..9396704 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -19,6 +19,7 @@ import 'package:mohem_flutter_app/models/dashboard/mohemm_itg_pending_task_respo import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; +import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; /// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool // ignore: prefer_mixin @@ -151,7 +152,18 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { logger.wtf(ex); if (showLoading) Utils.hideLoading(context); notifyListeners(); - Utils.handleException(ex, context, null); + Utils.handleException(ex, context, (err) { + Utils.hideLoading(context); + showDialog( + context: context, + builder: (cxt) => ConfirmDialog( + message: err, + onTap: () { + Navigator.pushNamedAndRemoveUntil(cxt, AppRoutes.login, (Route route) => false); + }, + ), + ); + }); } } diff --git a/lib/ui/attendance/add_vacation_rule_screen.dart b/lib/ui/attendance/add_vacation_rule_screen.dart index aa48696..a698adc 100644 --- a/lib/ui/attendance/add_vacation_rule_screen.dart +++ b/lib/ui/attendance/add_vacation_rule_screen.dart @@ -430,6 +430,7 @@ class _AddVacationRuleScreenState extends State { onTap: () { showMyBottomSheet( context, + callBackFunc: (){}, child: SearchEmployeeBottomSheet( title: LocaleKeys.searchForEmployee.tr(), apiMode: LocaleKeys.delegate.tr(), diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index ef984a3..b8f7514 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -160,6 +160,7 @@ class _ChatHomeScreenState extends State { // .getChatMemberFromSearch("aamir.muhammad", 36239); showMyBottomSheet( context, + callBackFunc: (){}, child: SearchEmployeeBottomSheet( title: LocaleKeys.searchForEmployee.tr(), apiMode: LocaleKeys.delegate.tr(), diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index bb4ee43..d342072 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -268,6 +268,7 @@ class _DashboardScreenState extends State { ).onPress(() { showMyBottomSheet( context, + callBackFunc: (){}, child: MarkAttendanceWidget(model, isFromDashboard: true), ); }), diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index e600800..864a507 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -221,6 +221,7 @@ class _AddLeaveBalanceScreenState extends State { onTap: () { showMyBottomSheet( context, + callBackFunc: (){}, child: SearchEmployeeBottomSheet( title: LocaleKeys.searchForEmployee.tr(), apiMode: LocaleKeys.delegate.tr(), diff --git a/lib/ui/profile/profile_screen.dart b/lib/ui/profile/profile_screen.dart index c071d3f..0bf007e 100644 --- a/lib/ui/profile/profile_screen.dart +++ b/lib/ui/profile/profile_screen.dart @@ -112,7 +112,7 @@ class _ProfileScreenState extends State { } void startImageSheet() { - showMyBottomSheet(context, + showMyBottomSheet(context, callBackFunc: (){}, child: Column( children: [ Container( diff --git a/lib/ui/work_list/itg_detail_screen.dart b/lib/ui/work_list/itg_detail_screen.dart index e306750..0f45648 100644 --- a/lib/ui/work_list/itg_detail_screen.dart +++ b/lib/ui/work_list/itg_detail_screen.dart @@ -125,7 +125,7 @@ class _ItgDetailScreenState extends State { }, children: [ RequestDetailFragment(fields: itgRequest?.fieldGoups?[1].fields ?? []), - ApprovalLevelfragment(wFHistory: itgRequest?.wFHistory ?? []), + ApprovalLevelfragment(wFHistory: itgRequest?.wFHistory ?? [], voidCallback: reloadITG,), RequestDetailFragment(fields: itgRequest?.fieldGoups?[0].fields ?? []), ], ).expanded, @@ -263,12 +263,12 @@ class _ItgDetailScreenState extends State { print(action.toJson()); switch (action.action) { case "Delegate": - showMyBottomSheet(context, + showMyBottomSheet(context, callBackFunc: reloadITG, child: DelegateSheet(title: LocaleKeys.delegate.tr(), apiMode: action.action!, notificationID: null, actionHistoryList: null, wFHistory: itgRequest?.wFHistory ?? [])); break; case "RequestInformation": - showMyBottomSheet(context, + showMyBottomSheet(context, callBackFunc: reloadITG, child: DelegateSheet(title: LocaleKeys.request_info.tr(), apiMode: action.action!, notificationID: null, actionHistoryList: null, wFHistory: itgRequest?.wFHistory ?? [])); break; @@ -342,10 +342,12 @@ class _ItgDetailScreenState extends State { } void performAction(String actionMode) { + print(actionMode); showDialog( context: context, builder: (cxt) => ITGCommentsDialog( message: LocaleKeys.writeComment.tr(), + actionMode: actionMode, onTap: (note) { if (actionMode == "APPROVED") { performApproveAction(requestDetails!.requestType!, requestDetails!.iD!, requestDetails!.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", note); @@ -404,4 +406,19 @@ class _ItgDetailScreenState extends State { Utils.handleException(ex, context, null); } } + + void reloadITG() { + AppState().requestAllList!.removeAt(AppState().itgWorkListIndex!); + if (AppState().requestAllList!.isEmpty) { + Navigator.pop(context, "delegate_reload"); + } else { + if (AppState().requestAllList!.length <= AppState().itgWorkListIndex!) { + Navigator.pop(context, "delegate_reload"); + } else { + requestDetails = null; + getDataFromState(); + } + } + } + } diff --git a/lib/ui/work_list/itg_fragments/approval_level_fragment.dart b/lib/ui/work_list/itg_fragments/approval_level_fragment.dart index 1d77f2a..eb478af 100644 --- a/lib/ui/work_list/itg_fragments/approval_level_fragment.dart +++ b/lib/ui/work_list/itg_fragments/approval_level_fragment.dart @@ -12,8 +12,9 @@ import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; class ApprovalLevelfragment extends StatelessWidget { List wFHistory; + VoidCallback voidCallback; - ApprovalLevelfragment({Key? key, this.wFHistory = const []}) : super(key: key); + ApprovalLevelfragment({Key? key, this.wFHistory = const [], required this.voidCallback}) : super(key: key); @override Widget build(BuildContext context) { @@ -98,6 +99,7 @@ class ApprovalLevelfragment extends StatelessWidget { LocaleKeys.request_info.tr().toText12(color: MyColors.grey67Color).center.paddingOnly(top: 6, bottom: 6).onPress(() { showMyBottomSheet( context, + callBackFunc: voidCallback, child: SelectedItgItemSheet( LocaleKeys.comments.tr(), wfHistory: history, @@ -109,6 +111,7 @@ class ApprovalLevelfragment extends StatelessWidget { LocaleKeys.delegate.tr().toText12(color: MyColors.gradiantEndColor).center.paddingOnly(top: 6, bottom: 6).onPress(() { showMyBottomSheet( context, + callBackFunc: voidCallback, child: SelectedItgItemSheet( LocaleKeys.comments.tr(), wfHistory: history, @@ -126,18 +129,21 @@ class ApprovalLevelfragment extends StatelessWidget { } Color getStatusColor(String code) { - if (code == "Submit") { + if (code.toLowerCase() == "submit") { return MyColors.grey3AColor; - } else if (code == "Pending") { + } else if (code.toLowerCase() == "pending") { return MyColors.yellowColor; - } else if (code == "Not Doable" || code == "Rejected") { + } else if (code.toLowerCase() == "not doable" || code.toLowerCase() == "rejected") { return MyColors.redColor; - } else if (code == "APPROVED") { + } else if (code.toLowerCase() == "approved" || + code.toLowerCase() == "auto-approve" || + code.toLowerCase() == "auto-approved" || + code.toLowerCase() == "doable") { return MyColors.greenColor; - } else if (code == "Requested Information") { + } else if (code.toLowerCase() == "requested information" || code.toLowerCase() == "assign" || code.toLowerCase() == "reassign") { return MyColors.orange; } else { - return MyColors.yellowColor; + return MyColors.whiteColor; } } } diff --git a/lib/ui/work_list/itg_fragments/request_detail_fragment.dart b/lib/ui/work_list/itg_fragments/request_detail_fragment.dart index 6092bef..72b20d4 100644 --- a/lib/ui/work_list/itg_fragments/request_detail_fragment.dart +++ b/lib/ui/work_list/itg_fragments/request_detail_fragment.dart @@ -51,6 +51,7 @@ class RequestDetailFragment extends StatelessWidget { ? true : false : false, + type: fields[index].type, ); } return ItemDetailViewGridItem( @@ -62,6 +63,7 @@ class RequestDetailFragment extends StatelessWidget { ? true : false : false, + type: fields[index].type, ); }, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( diff --git a/lib/ui/work_list/sheets/delegate_sheet.dart b/lib/ui/work_list/sheets/delegate_sheet.dart index 4075332..28a90e6 100644 --- a/lib/ui/work_list/sheets/delegate_sheet.dart +++ b/lib/ui/work_list/sheets/delegate_sheet.dart @@ -194,6 +194,7 @@ class _DelegateSheetState extends State { ).onPress(() { showMyBottomSheet( context, + callBackFunc: (){}, child: SearchOptionsSheet( selectedType, onSelection: (String value) { @@ -392,6 +393,7 @@ class _DelegateSheetState extends State { return InkWell( onTap: () { showMyBottomSheet(context, + callBackFunc: (){}, child: SelectedItemSheet( "Comment", apiMode: widget.apiMode, @@ -437,6 +439,7 @@ class _DelegateSheetState extends State { return InkWell( onTap: () { showMyBottomSheet(context, + callBackFunc: (){}, child: SelectedItgItemSheet( "Comment", apiMode: widget.apiMode, @@ -461,6 +464,7 @@ class _DelegateSheetState extends State { return InkWell( onTap: () { showMyBottomSheet(context, + callBackFunc: (){}, child: SelectedItemSheet( "Comment", apiMode: widget.apiMode, @@ -506,6 +510,7 @@ class _DelegateSheetState extends State { return InkWell( onTap: () { showMyBottomSheet(context, + callBackFunc: (){}, child: SelectedItemSheet( LocaleKeys.comments.tr(), apiMode: widget.apiMode, diff --git a/lib/ui/work_list/sheets/selected_item_sheet.dart b/lib/ui/work_list/sheets/selected_item_sheet.dart index f3f8f0d..e053218 100644 --- a/lib/ui/work_list/sheets/selected_item_sheet.dart +++ b/lib/ui/work_list/sheets/selected_item_sheet.dart @@ -71,7 +71,7 @@ class SelectedItemSheet extends StatelessWidget { child: DefaultButton( LocaleKeys.cancel.tr(), () { - Navigator.pop(context); + Navigator.pop(context, "cancel"); }, textColor: Colors.black, colors: [ @@ -120,8 +120,8 @@ class SelectedItemSheet extends StatelessWidget { try { await WorkListApiClient().submitComment(comment: comment, email: email, userId: userId, notificationId: notificationID, apiMode: apiMode); Utils.hideLoading(context); - Navigator.pop(context); - Navigator.pop(context); + // Navigator.pop(context); + // Navigator.pop(context); Navigator.pop(context, "delegate_reload"); } catch (ex) { Utils.hideLoading(context); @@ -142,7 +142,7 @@ class SelectedItemSheet extends StatelessWidget { padding: EdgeInsets.only(top: 16, bottom: 16, left: 21, right: 21), child: Row( children: [ - actionHistoryList != null + (actionHistoryList != null && actionHistoryList!.eMPLOYEEIMAGE != null) ? CircularAvatar( height: 30, width: 30, diff --git a/lib/ui/work_list/work_list_screen.dart b/lib/ui/work_list/work_list_screen.dart index 2e362a9..9471568 100644 --- a/lib/ui/work_list/work_list_screen.dart +++ b/lib/ui/work_list/work_list_screen.dart @@ -429,6 +429,7 @@ class _WorkListScreenState extends State { void openBottomSheet(BuildContext context) { showMyBottomSheet( context, + callBackFunc: (){}, child: WorkListAdvanceSearch((selectedViewID, selectedItemTypeID, searchByInput, searchByDate) async { itgRequestTypeIndex = null; pNotificationType = selectedViewID; diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 8f43b8d..ec02631 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -1,6 +1,7 @@ import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:lottie/lottie.dart'; import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; @@ -82,6 +83,9 @@ class _WorkListDetailScreenState extends State { bool isApproveAvailable = false; bool isRejectAvailable = false; + bool isAttachmentLoaded = false; + bool isActionHistoryLoaded = false; + @override void initState() { super.initState(); @@ -241,8 +245,20 @@ class _WorkListDetailScreenState extends State { itemCreationLines: getItemCreationNtfBody?.itemCreationLines ?? [], prLinesList: getPrNotificationBody?.pRLines ?? [], ), - actionHistoryList.isEmpty ? Utils.getNoDataWidget(context) : ActionsFragment(workListData!.nOTIFICATIONID, actionHistoryList), - getAttachmentList.isEmpty ? Utils.getNoDataWidget(context) : AttachmentsFragment(getAttachmentList), + isActionHistoryLoaded + ? actionHistoryList.isEmpty + ? Utils.getNoDataWidget(context) + : ActionsFragment( + workListData!.nOTIFICATIONID, + actionHistoryList, + voidCallback: reloadWorkList, + ) + : showLoadingAnimation(), + isAttachmentLoaded + ? getAttachmentList.isEmpty + ? Utils.getNoDataWidget(context) + : AttachmentsFragment(getAttachmentList) + : showLoadingAnimation(), ], ).expanded, if (isApproveAvailable || isRejectAvailable || isCloseAvailable) @@ -371,20 +387,24 @@ class _WorkListDetailScreenState extends State { switch (notificationButton.bUTTONACTION) { case "DELEGATE": showMyBottomSheet(context, + callBackFunc: reloadWorkList, child: DelegateSheet(title: LocaleKeys.delegate.tr(), apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); break; case "REQUEST_INFO": // do something else showMyBottomSheet(context, + callBackFunc: reloadWorkList, child: DelegateSheet(title: LocaleKeys.request_info.tr(), apiMode: "REQUEST_INFO", notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); break; case "TRANSFER_INFO": // do something else showMyBottomSheet(context, - child: DelegateSheet(title: notificationButton.bUTTONLABEL!, apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); + callBackFunc: reloadWorkList, + child: + DelegateSheet(title: notificationButton.bUTTONLABEL!, apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); break; case "ANSWER_INFO": - performAction(notificationButton.bUTTONACTION!,title: notificationButton.bUTTONLABEL); + performAction(notificationButton.bUTTONACTION!, title: notificationButton.bUTTONLABEL); break; case "RFC": // do something else @@ -396,10 +416,13 @@ class _WorkListDetailScreenState extends State { // do something else case "APPROVE_AND_FORWARD": showMyBottomSheet(context, + callBackFunc: reloadWorkList, child: DelegateSheet(title: "Approve and Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); break; case "FORWARD": - showMyBottomSheet(context, child: DelegateSheet(title: "Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); + showMyBottomSheet(context, + callBackFunc: reloadWorkList, + child: DelegateSheet(title: "Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); break; case "REJECT": performNetworkCall(context, email: "", userId: ""); @@ -492,14 +515,15 @@ class _WorkListDetailScreenState extends State { ); } - void performAction(String actionMode,{String? title}) { + void performAction(String actionMode, {String? title}) { TextEditingController textEditingController = TextEditingController(); showDialog( context: context, builder: (cxt) => AcceptRejectInputDialog( - message: title !=null ? null:LocaleKeys.requestedItems.tr(), + message: title != null ? null : LocaleKeys.requestedItems.tr(), title: title, notificationGetRespond: notificationNoteInput, + actionMode: actionMode, onTap: (note) { Map payload = { "P_ACTION_MODE": actionMode, @@ -550,6 +574,20 @@ class _WorkListDetailScreenState extends State { } } + void reloadWorkList() { + AppState().workList!.removeAt(AppState().workListIndex!); + if (AppState().workList!.isEmpty) { + Navigator.pop(context, "delegate_reload"); + } else { + if (AppState().workList!.length <= AppState().workListIndex!) { + Navigator.pop(context, "delegate_reload"); + } else { + workListData = null; + getDataFromState(); + } + } + } + void getEitNotificationBody() async { try { if (apiCallCount == 0) Utils.showLoading(context); @@ -791,7 +829,9 @@ class _WorkListDetailScreenState extends State { // apiCallCount--; // if (apiCallCount == 0) { // Utils.hideLoading(context); - setState(() {}); + setState(() { + isActionHistoryLoaded = true; + }); // } } catch (ex) { // apiCallCount--; @@ -808,7 +848,9 @@ class _WorkListDetailScreenState extends State { // apiCallCount--; // if (apiCallCount == 0) { // Utils.hideLoading(context); - setState(() {}); + setState(() { + isAttachmentLoaded = true; + }); // } } catch (ex) { // apiCallCount--; @@ -816,4 +858,13 @@ class _WorkListDetailScreenState extends State { Utils.handleException(ex, context, null); } } + + Widget showLoadingAnimation() { + return Lottie.asset( + 'assets/lottie/loading.json', + repeat: true, + reverse: false, + fit: BoxFit.contain, + ); + } } diff --git a/lib/ui/work_list/worklist_fragments/actions_fragment.dart b/lib/ui/work_list/worklist_fragments/actions_fragment.dart index d5e1f89..8a69599 100644 --- a/lib/ui/work_list/worklist_fragments/actions_fragment.dart +++ b/lib/ui/work_list/worklist_fragments/actions_fragment.dart @@ -7,7 +7,6 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; -import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/selected_item_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; @@ -15,8 +14,9 @@ import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; class ActionsFragment extends StatelessWidget { int? notificationID; List actionHistoryList; + VoidCallback voidCallback; - ActionsFragment(this.notificationID, this.actionHistoryList, {Key? key}) : super(key: key); + ActionsFragment(this.notificationID, this.actionHistoryList, {Key? key, required this.voidCallback}) : super(key: key); @override Widget build(BuildContext context) { @@ -99,13 +99,17 @@ class ActionsFragment extends StatelessWidget { Row( children: [ LocaleKeys.request_info.tr().toText12(color: MyColors.grey67Color).center.paddingOnly(top: 6, bottom: 6).onPress(() { - showMyBottomSheet(context, - child: DelegateSheet(title: LocaleKeys.request_info.tr(), apiMode: "REQUEST_INFO", notificationID: notificationID, actionHistoryList: actionHistoryList)); + showMyBottomSheet( + context, + callBackFunc: voidCallback, + child: SelectedItemSheet(LocaleKeys.request_info.tr(), apiMode: "REQUEST_INFO", notificationID: notificationID, actionHistoryList: actionHistory), + ); }).expanded, Container(width: 1, height: 30, color: MyColors.lightGreyEFColor), LocaleKeys.delegate.tr().toText12(color: MyColors.gradiantEndColor).center.paddingOnly(top: 6, bottom: 6).onPress(() { showMyBottomSheet( context, + callBackFunc: voidCallback, child: SelectedItemSheet( LocaleKeys.comments.tr(), apiMode: "DELEGATE", @@ -133,9 +137,9 @@ class ActionsFragment extends StatelessWidget { return MyColors.redColor; } else if (code == "PENDING") { return MyColors.orange; - } else if (code == "APPROVED" || code == "APPROVE") { + } else if (code == "APPROVED" || code == "APPROVE" || code == "ANSWER_INFO") { return const Color(0xff1FA269); - } else if (code == "REQUEST_INFO") { + } else if (code == "REQUEST_INFO"|| code == "FORWARD") { return const Color(0xff2E303A); } else if (code != "SUBMIT" && code != "REJECT" && code != "PENDING") { return MyColors.orange; diff --git a/lib/widgets/bottom_sheet.dart b/lib/widgets/bottom_sheet.dart index 206d017..a15fc3b 100644 --- a/lib/widgets/bottom_sheet.dart +++ b/lib/widgets/bottom_sheet.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; -void showMyBottomSheet(BuildContext context, {required Widget child}) { - showModalBottomSheet( +void showMyBottomSheet(BuildContext context, {required Widget child, required VoidCallback callBackFunc}) { + showModalBottomSheet( context: context, isScrollControlled: true, backgroundColor: Colors.transparent, @@ -37,7 +37,13 @@ void showMyBottomSheet(BuildContext context, {required Widget child}) { ), ); }, - ); + ).then((value) { + // print("BACK FROM DELEGATE!!!!"); + // print("value: $value"); + if (value == "delegate_reload") { + callBackFunc(); + } + }); } class BottomSheetItem extends StatelessWidget { diff --git a/lib/widgets/circular_avatar.dart b/lib/widgets/circular_avatar.dart index ad94052..a18cf03 100644 --- a/lib/widgets/circular_avatar.dart +++ b/lib/widgets/circular_avatar.dart @@ -25,7 +25,7 @@ class CircularAvatar extends StatelessWidget { image: NetworkImage(url ?? "https://cdn4.iconfinder.com/data/icons/professions-2-2/151/89-512.png"), ), ), - child: isImageBase64 ? imageFromBase64String(url!) : null, + child: (isImageBase64 && url != null) ? imageFromBase64String(url!) : Container(), ); } diff --git a/lib/widgets/dialogs/accept_reject_input_dialog.dart b/lib/widgets/dialogs/accept_reject_input_dialog.dart index ef2cfaa..a0faf2c 100644 --- a/lib/widgets/dialogs/accept_reject_input_dialog.dart +++ b/lib/widgets/dialogs/accept_reject_input_dialog.dart @@ -13,11 +13,13 @@ class AcceptRejectInputDialog extends StatelessWidget { final String? title; final String? message; final String? okTitle; + final String? actionMode; final NotificationGetRespondAttributesList? notificationGetRespond; final Function(String) onTap; + // final TextEditingController textEditingController; - AcceptRejectInputDialog({Key? key, this.title, @required this.message, this.okTitle, required this.onTap, this.notificationGetRespond}) : super(key: key); + AcceptRejectInputDialog({Key? key, this.title, @required this.message, this.okTitle, required this.onTap, this.notificationGetRespond, this.actionMode}) : super(key: key); String note = ""; @@ -85,15 +87,20 @@ class AcceptRejectInputDialog extends StatelessWidget { ).expanded, 10.width, DefaultButton( - LocaleKeys.ok.tr(), + actionMode == "REJECTED" ? LocaleKeys.reject.tr() : LocaleKeys.ok.tr(), () { Navigator.pop(context); onTap(note); }, - colors: const [ - Color(0xff28C884), - Color(0xff1BB271), - ], + colors: actionMode == "REJECTED" + ? const [ + Color(0xffE47A7E), + Color(0xffE47A7E), + ] + : const [ + Color(0xff28C884), + Color(0xff1BB271), + ], ).expanded, ], ), diff --git a/lib/widgets/dialogs/itg_comments_dialog.dart b/lib/widgets/dialogs/itg_comments_dialog.dart index b984851..34199ba 100644 --- a/lib/widgets/dialogs/itg_comments_dialog.dart +++ b/lib/widgets/dialogs/itg_comments_dialog.dart @@ -2,6 +2,7 @@ import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; @@ -12,9 +13,10 @@ class ITGCommentsDialog extends StatelessWidget { final String? title; final String? message; final String? okTitle; + final String? actionMode; final Function(String) onTap; - ITGCommentsDialog({Key? key, this.title, @required this.message, this.okTitle, required this.onTap}) : super(key: key); + ITGCommentsDialog({Key? key, this.title, @required this.message, this.okTitle, required this.onTap, this.actionMode}) : super(key: key); String note = ""; @@ -82,15 +84,24 @@ class ITGCommentsDialog extends StatelessWidget { ).expanded, 10.width, DefaultButton( - LocaleKeys.ok.tr(), + actionMode == "REJECTED" ? LocaleKeys.reject.tr() : LocaleKeys.approve.tr(), () { - Navigator.pop(context); - onTap(note); + if (actionMode == "REJECTED" && note.isEmpty) { + Utils.showToast(LocaleKeys.pleaseEnterComments.tr()); + } else { + Navigator.pop(context); + onTap(note); + } }, - colors: const [ - Color(0xff28C884), - Color(0xff1BB271), - ], + colors: actionMode == "REJECTED" + ? const [ + Color(0xffE47A7E), + Color(0xffE47A7E), + ] + : const [ + Color(0xff28C884), + Color(0xff1BB271), + ], ).expanded, ], ), diff --git a/lib/widgets/image_picker.dart b/lib/widgets/image_picker.dart index 4a99577..5e5ac01 100644 --- a/lib/widgets/image_picker.dart +++ b/lib/widgets/image_picker.dart @@ -13,6 +13,7 @@ class ImageOptions { static void showImageOptionsNew(BuildContext context, bool showFilesOption, Function(String, File) image) { showMyBottomSheet( context, + callBackFunc: (){}, child: AttachmentOptions( showFilesOption: showFilesOption, onCameraTap: () async { diff --git a/lib/widgets/item_detail_view_widget.dart b/lib/widgets/item_detail_view_widget.dart index 34b2eb3..05495e9 100644 --- a/lib/widgets/item_detail_view_widget.dart +++ b/lib/widgets/item_detail_view_widget.dart @@ -1,8 +1,11 @@ +import 'dart:convert'; + import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/models/itg_forms_models/itg_worklist_table_model.dart'; class ItemDetailView extends StatelessWidget { final String title; @@ -46,9 +49,10 @@ class ItemDetailViewGridItem extends StatelessWidget { int index; final String? title; final String? value; + final String? type; final bool isNeedToShowEmptyDivider; - ItemDetailViewGridItem(this.index, this.title, this.value, {Key? key, this.isNeedToShowEmptyDivider = false}) : super(key: key); + ItemDetailViewGridItem(this.index, this.title, this.value, {Key? key, this.isNeedToShowEmptyDivider = false, this.type = ""}) : super(key: key); @override Widget build(BuildContext context) { @@ -78,7 +82,7 @@ class ItemDetailViewGridItem extends StatelessWidget { children: [ Flexible(child: "$title:".toText12Auto(isBold: true, color: const Color(0xff2BB8A6))), 4.width, - Flexible(child: (value!.isEmpty ? "--" : value).toString().toText12Auto(color: MyColors.normalTextColor)), + type!.toLowerCase() == "table" ? getStringFromJSON(value!) : Flexible(child: (value!.isEmpty ? "--" : value).toString().toText12Auto(color: MyColors.normalTextColor)), ], ), ); @@ -129,3 +133,14 @@ class ItemDetailGrid extends StatelessWidget { ); } } + +Widget getStringFromJSON(String jsonString) { + var body = json.decode(jsonString); + ITGWorkListTableModel itgWorkListTableModel = ITGWorkListTableModel(); + if (body.length != 0) { + itgWorkListTableModel = ITGWorkListTableModel.fromJson(body[0][0]); + return Flexible(child: (itgWorkListTableModel.textvalue).toString().toText12Auto(color: MyColors.normalTextColor)); + } else { + return Flexible(child: ("-").toString().toText12Auto(color: MyColors.normalTextColor)); + } +} From 7408e242457f04d76853c4d1436f40115f1aac33 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 1 Nov 2022 11:35:18 +0300 Subject: [PATCH 011/302] Chat Delivered&Seen Event Added. --- lib/api/chat/chat_provider_model.dart | 42 ++++++++++++++++++++------- lib/classes/consts.dart | 4 +-- lib/ui/chat/chat_detailed_screen.dart | 1 + lib/ui/chat/chat_home.dart | 2 +- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index d5abd79..bcb748c 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -91,18 +91,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { .build(); hubConnection.onclose( ({Exception? error}) { - logger.d(error); + // logger.d(error); }, ); hubConnection.onreconnecting( ({Exception? error}) { - logger.d(error); - logger.d("Reconnecting"); + // logger.d(error); + // logger.d("Reconnecting"); }, ); hubConnection.onreconnected( ({String? connectionId}) { - logger.d("Reconnected"); + // logger.d("Reconnected"); }, ); if (hubConnection.state != HubConnectionState.Connected) { @@ -110,23 +110,39 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - // hubConnection.on("OnUserTypingAsync", onUserTyping); + hubConnection.on("OnUserTypingAsync", onUserTyping); // hubConnection.on("OnUserCountAsync", userCountAsync); // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); // hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); + hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); } else { hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - // hubConnection.on("OnUserTypingAsync", onUserTyping); + hubConnection.on("OnUserTypingAsync", onUserTyping); // hubConnection.on("OnUserCountAsync", userCountAsync); // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); // hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); + hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); } isLoading = false; notifyListeners(); } + void updateUserChatStatus(List? args) { + dynamic items = args!.toList(); + for (dynamic cItem in items[0]) { + for (SingleUserChatModel chat in userChatHistory) { + if (chat.userChatHistoryId.toString() == cItem["userChatHistoryId"].toString()) { + logger.d(jsonEncode(chat)); + chat.isSeen = cItem["isSeen"]; + chat.isDelivered = cItem["isDelivered"]; + notifyListeners(); + } + } + } + } + void userCountAsync(List? args) { List items = args!.toList(); print("---------------------------------User Count Async -------------------------------------"); @@ -166,7 +182,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void changeStatus(List? args) { // print("================= Status Online // Offline ===================="); List items = args!.toList(); - logger.d(items); + // logger.d(items); for (ChatUser user in searchedChats!) { if (user.id == items.first["id"]) { user.userStatus = items.first["userStatus"]; @@ -192,9 +208,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future onMsgReceived(List? parameters) async { List data = []; + List temp = []; for (dynamic msg in parameters!) { data = getSingleUserChatModel(jsonEncode(msg)); - logger.d(msg); + temp = getSingleUserChatModel(jsonEncode(msg)); + data.first.targetUserId = temp.first.currentUserId; + data.first.targetUserName = temp.first.currentUserName; + data.first.currentUserId = temp.first.targetUserId; + data.first.currentUserName = temp.first.targetUserName; } userChatHistory.add(data.first); notifyListeners(); @@ -207,11 +228,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { for (ChatUser user in searchedChats!) { if (user.id == parameters![1] && parameters[0] == true) { user.isTyping = parameters[0] as bool?; - } else { + Future.delayed( - const Duration(milliseconds: 500), + const Duration(seconds: 2), () { user.isTyping = false; + notifyListeners(); }, ); } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index e82c30a..3fd992f 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 1a9cf7d..5f2fa97 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -43,6 +43,7 @@ class ChatDetailScreen extends StatelessWidget { itemCount: m.userChatHistory.length, padding: const EdgeInsets.symmetric(vertical: 10), itemBuilder: (BuildContext context, int i) { + i == 0 ? m.logger.d(m.userChatHistory.length) : ""; return ChatBubble( text: m.userChatHistory[i].contant.toString(), isSeen: m.userChatHistory[i].isSeen == true ? true : false, diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 5d6d065..b8696ae 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -110,7 +110,7 @@ class _ChatHomeScreenState extends State { ], ), title: (m.searchedChats![index].userName ?? "").toText14(color: MyColors.darkTextColor), - subtitle: (m.searchedChats![index].isTyping == true ? "Something is Typing" : "Last message text").toText11(color: MyColors.normalTextColor), + subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), trailing: ("Today").toText10(color: MyColors.lightTextColor), minVerticalPadding: 0, onTap: () { From 96e1be782353ddce3c0bf35017fcee294e1d39d1 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 1 Nov 2022 11:50:51 +0300 Subject: [PATCH 012/302] Chat Delivered&Seen Event Added. --- lib/classes/consts.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 3fd992f..e82c30a 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; From f0d2c78f8348affc00853be23f60977922f5a852 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 1 Nov 2022 14:51:51 +0300 Subject: [PATCH 013/302] Chat Delivered&Seen Event Added. --- lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index e7db4e2..1904a48 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -217,7 +217,7 @@ class _SearchEmployeeBottomSheetState extends State { ], ), title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), - subtitle: (chatUsersList![index].isTyping == true ? "Something is Typing" : "Last message text").toText11(color: MyColors.normalTextColor), + // subtitle: (chatUsersList![index].isTyping == true ? "Something is Typing" : "Last message text").toText11(color: MyColors.normalTextColor), trailing: ("Today").toText10(color: MyColors.lightTextColor), minVerticalPadding: 0, onTap: () { From 77a56759dc3c4f6f1b484f1ecc442f78603d2637 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 1 Nov 2022 15:03:38 +0300 Subject: [PATCH 014/302] Chat Delivered&Seen Event Added. --- lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index 1904a48..16942c5 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -218,7 +218,7 @@ class _SearchEmployeeBottomSheetState extends State { ), title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), // subtitle: (chatUsersList![index].isTyping == true ? "Something is Typing" : "Last message text").toText11(color: MyColors.normalTextColor), - trailing: ("Today").toText10(color: MyColors.lightTextColor), + // trailing: ("Today").toText10(color: MyColors.lightTextColor), minVerticalPadding: 0, onTap: () { Navigator.pop(context); From f06238a93fdac1feee2c21d1a967136e405e973e Mon Sep 17 00:00:00 2001 From: devmirza121 Date: Wed, 2 Nov 2022 11:22:27 +0300 Subject: [PATCH 015/302] OTP dialog new design --- assets/icons/ic_alarm.png | Bin 0 -> 875 bytes assets/langs/ar-SA.json | 6 +- assets/langs/en-US.json | 6 +- lib/classes/colors.dart | 1 + lib/dialogs/otp_dialog.dart | 117 +++++++++------ lib/generated/codegen_loader.g.dart | 12 +- lib/generated/locale_keys.g.dart | 4 + lib/ui/login/forgot_password_screen.dart | 5 +- lib/ui/login/verify_last_login_screen.dart | 158 ++++++--------------- lib/ui/login/verify_login_screen.dart | 16 +-- 10 files changed, 153 insertions(+), 172 deletions(-) create mode 100644 assets/icons/ic_alarm.png diff --git a/assets/icons/ic_alarm.png b/assets/icons/ic_alarm.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc71e7f23b3ba503f7432b873fc044249d98564 GIT binary patch literal 875 zcmV-x1C;!UP)nd8+uPmmo0$XWffoW{ zX5RO^+57fp7b1~JBoc}IuXF@lyB8R!{rw&&hqL0BeZV823M|%C1s(!>0{Zg8NnoC( z;Qwk4I1$X9WA+0TnuoXg0}KZ8=!|aQHLb&2O#!QeICaE%(ucRY5X7ki)&t+kUVtCK z#sGfRxkdKyR<{HARb>b1zWAD{3hegoT9FCzhqrp--L(=&kcYQA>e;)PZr~Mq1$YPa zcugSWEPCOs&UsBBU@b6L7ukPNEb1W<~lIn=F<5}HE+%tS1@b!0r;pm-j zp+mOP16Sb>C>yN+_kjDzj?NoN{n=s{vbNVqhwJ7aR-XHL&9fS(l?_feSfix8#wo4v zy}*pJxiZT?p#tzzd5vjcjYa{kD;u*K#oP>a0#_ZaA^x4m4{)eM4H?vAxV0I81W4R09%7TO?4RxJRRq~R?GfoE+HDy^Q@ zJhvq4>+=1WmZI__!vST?>GEu7BauiX5{X3GpTAzciiy*UBJThI002ovPDHLkV1h_x Bj9dT! literal 0 HcmV?d00001 diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index dcd03b5..27eccc8 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -493,6 +493,10 @@ "winnerSelectedRandomly": "سيتم اختيار الفائز عشوائياً من بين التصفيات.", "fingersCrossed": "تشابك الاصابع!!!", "congrats": "مبروك !!!", - "allQuestionsCorrect": "لقد أجبت على جميع الأسئلة بشكل صحيح." + "allQuestionsCorrect": "لقد أجبت على جميع الأسئلة بشكل صحيح.", + "otp": "OTP", + "verification": "تَحَقّق", + "resend": "إعادة إرسال", + "codeExpire": "انتهت صلاحية رمز التحقق" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 503302b..64a7fed 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -493,5 +493,9 @@ "winnerSelectedRandomly": "The winner will be selected randomly among the qualifiers.", "fingersCrossed": "Fingers Crossed!!!", "congrats": "Congratulations!!!", - "allQuestionsCorrect": "You have answered all questions correct" + "allQuestionsCorrect": "You have answered all questions correct", + "otp": "OTP", + "verification": "Verification", + "resend": "Resend", + "codeExpire": "The verification code has been expired" } \ No newline at end of file diff --git a/lib/classes/colors.dart b/lib/classes/colors.dart index e670bbc..ad91de7 100644 --- a/lib/classes/colors.dart +++ b/lib/classes/colors.dart @@ -29,6 +29,7 @@ class MyColors { static const Color darkWhiteColor = Color(0xffE0E0E0); static const Color redColor = Color(0xffD02127); static const Color pinkColor = Color(0xffEBA9A9); + static const Color pinkDarkColor = Color(0xffe3797d); static const Color yellowColor = Color(0xffF4E31C); static const Color orange = Color(0xFFCC9B14); static const Color yellowFavColor = Color(0xffEAC321); diff --git a/lib/dialogs/otp_dialog.dart b/lib/dialogs/otp_dialog.dart index 23c7c67..3952e70 100644 --- a/lib/dialogs/otp_dialog.dart +++ b/lib/dialogs/otp_dialog.dart @@ -7,7 +7,9 @@ import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/otp_widget.dart'; +import 'package:sizer/sizer.dart'; class OtpDialog { final int type; @@ -15,6 +17,7 @@ class OtpDialog { final Function(String) onSuccess; final Function onFailure; final BuildContext context; + final Function onResendCode; int remainingTime = 120; @@ -24,13 +27,7 @@ class OtpDialog { static bool? _loading; - OtpDialog( - this.context, - this.type, - this.mobileNo, - this.onSuccess, - this.onFailure, - ); + OtpDialog(this.context, this.type, this.mobileNo, this.onSuccess, this.onFailure, {required this.onResendCode}); GlobalKey? verifyAccountForm = GlobalKey(); @@ -69,7 +66,7 @@ class OtpDialog { // projectProvider = Provider.of(context); return Dialog( backgroundColor: Colors.white, - shape: const RoundedRectangleBorder(), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), insetPadding: const EdgeInsets.only(left: 21, right: 21), child: StatefulBuilder(builder: (context, setState) { if (displayTime == '') { @@ -77,37 +74,26 @@ class OtpDialog { } return Container( - padding: EdgeInsets.only(left: 21, right: 18, top: 39, bottom: 59), + padding: EdgeInsets.all(21), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - SvgPicture.asset( - type == 1 - ? "assets/images/login/verify_sms.svg" - : type == 2 - ? "assets/images/login/verify_whatsapp.svg" - : type == 3 - ? "assets/images/login/verify_face.svg" - : 'assets/images/login/verify_thumb.svg', - height: 50, - width: 50, - ), - IconButton( - padding: EdgeInsets.zero, - icon: const Icon(Icons.close), - constraints: const BoxConstraints(), - onPressed: () { - stopTimer = true; - onFailure(); - }) - ], + SvgPicture.asset( + type == 1 + ? "assets/images/login/verify_sms.svg" + : type == 2 + ? "assets/images/login/verify_whatsapp.svg" + : type == 3 + ? "assets/images/login/verify_face.svg" + : 'assets/images/login/verify_thumb.svg', + height: 50, + width: 50, ), - 22.height, + 12.height, + LocaleKeys.otp.tr().toText14(), + LocaleKeys.verification.tr().toText24(isBold: true), + 6.height, (LocaleKeys.pleaseEnterTheVerificationCodeSentTo.tr() + ' xxxxxxxx' + mobileNo.toString().substring(mobileNo.toString().length - 3)).toText16(), 18.height, Directionality( @@ -132,18 +118,55 @@ class OtpDialog { ), ), ), - 30.height, - RichText( - text: TextSpan( - text: LocaleKeys.theVerificationCodeWillExpireIn.tr() + '\n', - style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -0.48), - children: [ - TextSpan( - text: displayTime, - style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.textMixColor, letterSpacing: -0.48), + 10.height, + stopTimer + ? Row( + children: [ + Expanded( + child: LocaleKeys.codeExpire.tr().toText16( + color: MyColors.redColor, + ), + ), + 12.width, + Image.asset( + "assets/icons/ic_alarm.png", + width: 20, + height: 20, + color: MyColors.redColor, + ), + ], + ) + : RichText( + text: TextSpan( + text: LocaleKeys.theVerificationCodeWillExpireIn.tr() + '\n', + style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -0.48), + children: [ + TextSpan( + text: displayTime, + style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.textMixColor, letterSpacing: -0.48), + ), + ], + ), ), - ], - ), + 18.height, + DefaultButton( + stopTimer ? LocaleKeys.resend.tr() : LocaleKeys.cancel.tr(), + () async { + if (stopTimer) { + hideSMSBox(context); + onResendCode(); + } else { + stopTimer = true; + // onFailure(); + hideSMSBox(context); + } + }, + colors: stopTimer + ? null + : [ + MyColors.pinkDarkColor, + MyColors.pinkDarkColor, + ], ), ], ), @@ -208,7 +231,9 @@ class OtpDialog { if (remainingTime > 0) { startTimer(setState); } else { - Navigator.pop(context); + setState(() { + stopTimer = true; + }); } }); } diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 6b702f8..66e4f97 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -509,7 +509,11 @@ class CodegenLoader extends AssetLoader{ "winnerSelectedRandomly": "سيتم اختيار الفائز عشوائياً من بين التصفيات.", "fingersCrossed": "تشابك الاصابع!!!", "congrats": "مبروك !!!", - "allQuestionsCorrect": "لقد أجبت على جميع الأسئلة بشكل صحيح." + "allQuestionsCorrect": "لقد أجبت على جميع الأسئلة بشكل صحيح.", + "otp": "OTP", + "verification": "تَحَقّق", + "resend": "إعادة إرسال", + "codeExpire": "انتهت صلاحية رمز التحقق" }; static const Map en_US = { "mohemm": "Mohemm", @@ -1006,7 +1010,11 @@ static const Map en_US = { "winnerSelectedRandomly": "The winner will be selected randomly among the qualifiers.", "fingersCrossed": "Fingers Crossed!!!", "congrats": "Congratulations!!!", - "allQuestionsCorrect": "You have answered all questions correct" + "allQuestionsCorrect": "You have answered all questions correct", + "otp": "OTP", + "verification": "Verification", + "resend": "Resend", + "codeExpire": "The verification code has been expired" }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 0da7047..835157b 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -480,5 +480,9 @@ abstract class LocaleKeys { static const fingersCrossed = 'fingersCrossed'; static const congrats = 'congrats'; static const allQuestionsCorrect = 'allQuestionsCorrect'; + static const otp = 'otp'; + static const verification = 'verification'; + static const resend = 'resend'; + static const codeExpire = 'codeExpire'; } diff --git a/lib/ui/login/forgot_password_screen.dart b/lib/ui/login/forgot_password_screen.dart index f058d43..6c1868e 100644 --- a/lib/ui/login/forgot_password_screen.dart +++ b/lib/ui/login/forgot_password_screen.dart @@ -65,11 +65,14 @@ class _ForgotPasswordScreenState extends State { () => { Navigator.pop(context), }, + onResendCode: () { + performForgotPassword(); + }, ).displayDialog(context); } catch (ex) { print(ex); Utils.hideLoading(context); - Utils.handleException(ex, context, null); + Utils.handleException(ex, context, null); } } diff --git a/lib/ui/login/verify_last_login_screen.dart b/lib/ui/login/verify_last_login_screen.dart index 4d653ed..6e51e51 100644 --- a/lib/ui/login/verify_last_login_screen.dart +++ b/lib/ui/login/verify_last_login_screen.dart @@ -57,30 +57,21 @@ class _VerifyLastLoginScreenState extends State { @override Widget build(BuildContext context) { - mobileLoginInfoListModel ??= ModalRoute.of(context)!.settings.arguments - as GetMobileLoginInfoListModel; - String empName = AppState().isArabic(context) - ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr! - : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn!; + mobileLoginInfoListModel ??= ModalRoute.of(context)!.settings.arguments as GetMobileLoginInfoListModel; + String empName = AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr! : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn!; return Scaffold( appBar: AppBar( backgroundColor: Colors.transparent, automaticallyImplyLeading: false, title: (mobileLoginInfoListModel?.businessCardPrivilege ?? false) - ? LocaleKeys.viewBusinessCard - .tr() - .toText12(color: MyColors.textMixColor, isUnderLine: true) - .onPress(() { + ? LocaleKeys.viewBusinessCard.tr().toText12(color: MyColors.textMixColor, isUnderLine: true).onPress(() { showMDialog(context, child: BusinessCardDialog()); }) : null, actions: [ Center( - child: LocaleKeys.employeeDigitalID - .tr() - .toText12(color: MyColors.textMixColor, isUnderLine: true) - .onPress(() { + child: LocaleKeys.employeeDigitalID.tr().toText12(color: MyColors.textMixColor, isUnderLine: true).onPress(() { showMDialog(context, child: EmployeeDigitialIdDialog()); })), 21.width @@ -99,12 +90,9 @@ class _VerifyLastLoginScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.welcomeBack.tr().toText12(), - mobileLoginInfoListModel!.employeeName! - .toText24(isBold: true), + mobileLoginInfoListModel!.employeeName!.toText24(isBold: true), 10.height, - LocaleKeys.wouldYouLikeToLoginWithCurrentUsername - .tr() - .toText16(), + LocaleKeys.wouldYouLikeToLoginWithCurrentUsername.tr().toText16(), Container( height: 72, margin: const EdgeInsets.only(top: 23, bottom: 23), @@ -126,42 +114,26 @@ class _VerifyLastLoginScreenState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ LocaleKeys.lastLoginDetails.tr().toText16(), - DateUtil.formatDateToDate( - DateUtil.convertStringToDate( - mobileLoginInfoListModel!.editedOn!), - false) - .toText12(), + DateUtil.formatDateToDate(DateUtil.convertStringToDate(mobileLoginInfoListModel!.editedOn!), false).toText12(), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ - LocaleKeys.verificationType - .tr() - .toText10(color: MyColors.grey57Color), - getVerificationType( - mobileLoginInfoListModel!.loginType!) - .toText12(), + LocaleKeys.verificationType.tr().toText10(color: MyColors.grey57Color), + getVerificationType(mobileLoginInfoListModel!.loginType!).toText12(), Expanded(child: SizedBox()), - DateUtil.formatDateToTime( - DateUtil.convertStringToDate( - mobileLoginInfoListModel!.editedOn!)) - .toText12(), + DateUtil.formatDateToTime(DateUtil.convertStringToDate(mobileLoginInfoListModel!.editedOn!)).toText12(), ], ) ], ), ), LocaleKeys.pleaseVerify.tr().toText16(), - if (isNeedVerifyWithFaceIDAndBiometrics) - LocaleKeys.pleaseVerifyForBio.tr().toText12(), + if (isNeedVerifyWithFaceIDAndBiometrics) LocaleKeys.pleaseVerifyForBio.tr().toText12(), GridView( - gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 2, - crossAxisSpacing: 13, - mainAxisSpacing: 9), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, crossAxisSpacing: 13, mainAxisSpacing: 9), physics: const NeverScrollableScrollPhysics(), padding: const EdgeInsets.only(top: 9), shrinkWrap: true, @@ -214,9 +186,7 @@ class _VerifyLastLoginScreenState extends State { DefaultButton( LocaleKeys.useAnotherAccount.tr(), () { - Navigator.pushNamedAndRemoveUntil( - context, AppRoutes.login, (Route route) => false, - arguments: false); + Navigator.pushNamedAndRemoveUntil(context, AppRoutes.login, (Route route) => false, arguments: false); }, ).insideContainer, ], @@ -248,19 +218,11 @@ class _VerifyLastLoginScreenState extends State { } Future loginWithFaceIDAndBiometrics() async { - IOSAuthMessages iosStrings = const IOSAuthMessages( - cancelButton: 'cancel', - goToSettingsButton: 'settings', - goToSettingsDescription: 'Please set up your Touch ID.', - lockOut: 'Please reenable your Touch ID'); + IOSAuthMessages iosStrings = + const IOSAuthMessages(cancelButton: 'cancel', goToSettingsButton: 'settings', goToSettingsDescription: 'Please set up your Touch ID.', lockOut: 'Please reenable your Touch ID'); bool authenticated = false; try { - authenticated = await auth.authenticate( - localizedReason: 'Scan your fingerprint to authenticate', - useErrorDialogs: true, - stickyAuth: true, - biometricOnly: true, - iOSAuthStrings: iosStrings); + authenticated = await auth.authenticate(localizedReason: 'Scan your fingerprint to authenticate', useErrorDialogs: true, stickyAuth: true, biometricOnly: true, iOSAuthStrings: iosStrings); } on PlatformException catch (e) { print(e); Utils.hideLoading(context); @@ -269,11 +231,8 @@ class _VerifyLastLoginScreenState extends State { return authenticated; } - Widget _loginOptionButton( - String _title, String _icon, int _flag, int? _loginIndex) { - bool isDisable = ((_flag == 3 && - !checkBiometricIsAvailable(BiometricType.face)) || - (_flag == 4 && !checkBiometricIsAvailable(BiometricType.fingerprint))); + Widget _loginOptionButton(String _title, String _icon, int _flag, int? _loginIndex) { + bool isDisable = ((_flag == 3 && !checkBiometricIsAvailable(BiometricType.face)) || (_flag == 4 && !checkBiometricIsAvailable(BiometricType.fingerprint))); return InkWell( onTap: isDisable ? null @@ -284,21 +243,18 @@ class _VerifyLastLoginScreenState extends State { }); } else { if (_flag == 3 || _flag == 4) { - bool authenticateWithFaceAndTouchID = - await loginWithFaceIDAndBiometrics(); + bool authenticateWithFaceAndTouchID = await loginWithFaceIDAndBiometrics(); if (!authenticateWithFaceAndTouchID) { return; } else { - if (mobileLoginInfoListModel!.loginType == 3 || - mobileLoginInfoListModel!.loginType == 4) { + if (mobileLoginInfoListModel!.loginType == 3 || mobileLoginInfoListModel!.loginType == 4) { // bool authenticateWithFaceAndTouchID = await loginWithFaceIDAndBiometrics(); // if (!authenticateWithFaceAndTouchID) { // return; // } else { // performApiCall(_title, _icon, _flag, isDirectLogin: true); // } - performApiCall(_title, _icon, _flag, _flag, - isDirectLogin: true); + performApiCall(_title, _icon, _flag, _flag, isDirectLogin: true); } else { isNeedVerifyWithFaceIDAndBiometrics = true; selectedFlag = _flag; @@ -316,8 +272,7 @@ class _VerifyLastLoginScreenState extends State { } }, child: Container( - padding: - const EdgeInsets.only(left: 20, right: 20, bottom: 15, top: 28), + padding: const EdgeInsets.only(left: 20, right: 20, bottom: 15, top: 28), decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), color: isDisable ? Colors.grey.withOpacity(0.3) : Colors.white, @@ -343,23 +298,13 @@ class _VerifyLastLoginScreenState extends State { Widget getButton(int flag) { switch (flag) { case 1: - return _loginOptionButton(LocaleKeys.verifyThroughSMS.tr(), - 'assets/images/login/verify_sms.svg', flag, null); + return _loginOptionButton(LocaleKeys.verifyThroughSMS.tr(), 'assets/images/login/verify_sms.svg', flag, null); case 2: - return _loginOptionButton(LocaleKeys.verifyThroughWhatsapp.tr(), - 'assets/images/login/verify_whatsapp.svg', flag, null); + return _loginOptionButton(LocaleKeys.verifyThroughWhatsapp.tr(), 'assets/images/login/verify_whatsapp.svg', flag, null); case 3: - return _loginOptionButton( - LocaleKeys.verifyThroughFace.tr(), - 'assets/images/login/verify_face.svg', - flag, - BiometricType.face.index); + return _loginOptionButton(LocaleKeys.verifyThroughFace.tr(), 'assets/images/login/verify_face.svg', flag, BiometricType.face.index); case 4: - return _loginOptionButton( - LocaleKeys.verifyThroughFingerprint.tr(), - 'assets/images/login/verify_thumb.svg', - flag, - BiometricType.fingerprint.index); + return _loginOptionButton(LocaleKeys.verifyThroughFingerprint.tr(), 'assets/images/login/verify_thumb.svg', flag, BiometricType.fingerprint.index); default: return const SizedBox(); } @@ -376,9 +321,7 @@ class _VerifyLastLoginScreenState extends State { return isAvailable; } - Future performApiCall( - String _title, String _icon, int _flag, int sendVerificationFlat, - {bool isDirectLogin = false}) async { + Future performApiCall(String _title, String _icon, int _flag, int sendVerificationFlat, {bool isDirectLogin = false}) async { try { if (isDirectLogin) setState(() { @@ -387,16 +330,10 @@ class _VerifyLastLoginScreenState extends State { else Utils.showLoading(context); await LoginApiClient().checkMobileAppVersion(); - await LoginApiClient() - .memberLogin(AppState().getUserName!, AppState().password!); + await LoginApiClient().memberLogin(AppState().getUserName!, AppState().password!); if (!isDirectLogin) BasicMemberInformationModel? memberInformationModel = - await LoginApiClient() - .mohemmSendActivationCodeByOTPNotificationType( - 0, - AppState().memberLoginList?.pMOBILENUMBER, - sendVerificationFlat, - AppState().getUserName); + await LoginApiClient().mohemmSendActivationCodeByOTPNotificationType(0, AppState().memberLoginList?.pMOBILENUMBER, sendVerificationFlat, AppState().getUserName); if (isDirectLogin) performDirectApiCall(_title, _icon, _flag, ""); if (!isDirectLogin) Utils.hideLoading(context); if (!isDirectLogin) @@ -411,6 +348,9 @@ class _VerifyLastLoginScreenState extends State { () => { Navigator.pop(context), }, + onResendCode: () { + performApiCall(_title, _icon, _flag, sendVerificationFlat, isDirectLogin: isDirectLogin); + }, ).displayDialog(context); } catch (ex) { Utils.hideLoading(context); @@ -418,34 +358,26 @@ class _VerifyLastLoginScreenState extends State { } } - Future performDirectApiCall( - String _title, String _icon, int _flag, String value, - {bool isDirectLogin = false}) async { + Future performDirectApiCall(String _title, String _icon, int _flag, String value, {bool isDirectLogin = false}) async { try { - GenericResponseModel? genericResponseModel = await LoginApiClient() - .checkActivationCode(false, AppState().memberLoginList?.pMOBILENUMBER, - value, AppState().getUserName); - GenericResponseModel? genericResponseModel1 = await LoginApiClient() - .insertMobileLoginInfoNEW( - AppState().memberLoginList?.pEMAILADDRESS ?? "", - genericResponseModel?.pSESSIONID ?? 0, - genericResponseModel?.memberInformationList![0].eMPLOYEENAME ?? - "", - _flag, - AppState().memberLoginList?.pMOBILENUMBER ?? "", - AppState().getUserName!, - mobileLoginInfoListModel!.deviceToken!, - Platform.isAndroid ? "android" : "ios"); - AppState().setMemberInformationListModel = - genericResponseModel!.memberInformationList?.first; + GenericResponseModel? genericResponseModel = await LoginApiClient().checkActivationCode(false, AppState().memberLoginList?.pMOBILENUMBER, value, AppState().getUserName); + GenericResponseModel? genericResponseModel1 = await LoginApiClient().insertMobileLoginInfoNEW( + AppState().memberLoginList?.pEMAILADDRESS ?? "", + genericResponseModel?.pSESSIONID ?? 0, + genericResponseModel?.memberInformationList![0].eMPLOYEENAME ?? "", + _flag, + AppState().memberLoginList?.pMOBILENUMBER ?? "", + AppState().getUserName!, + mobileLoginInfoListModel!.deviceToken!, + Platform.isAndroid ? "android" : "ios"); + AppState().setMemberInformationListModel = genericResponseModel!.memberInformationList?.first; if (genericResponseModel?.errorMessage != null) { Utils.showToast(genericResponseModel?.errorMessage ?? ""); // Navigator.pop(context); } Utils.hideLoading(context); Navigator.pop(context); - Navigator.pushNamedAndRemoveUntil( - context, AppRoutes.dashboard, (Route route) => false); + Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route route) => false); } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); diff --git a/lib/ui/login/verify_login_screen.dart b/lib/ui/login/verify_login_screen.dart index f31311f..8dba16c 100644 --- a/lib/ui/login/verify_login_screen.dart +++ b/lib/ui/login/verify_login_screen.dart @@ -511,7 +511,6 @@ class _VerifyLoginScreenState extends State { // } // - Future loginWithFaceIDAndBiometrics() async { IOSAuthMessages iosStrings = const IOSAuthMessages(cancelButton: 'cancel', goToSettingsButton: 'settings', goToSettingsDescription: 'Please set up your Touch ID.', lockOut: 'Please reenable your Touch ID'); @@ -550,9 +549,9 @@ class _VerifyLoginScreenState extends State { } } else { if (isNeedVerifyWithFaceIDAndBiometrics) - performApiCall(_title, _icon, selectedFlag,_flag); + performApiCall(_title, _icon, selectedFlag, _flag); else - performApiCall(_title, _icon, _flag,_flag); + performApiCall(_title, _icon, _flag, _flag); } } }, @@ -606,13 +605,13 @@ class _VerifyLoginScreenState extends State { return isAvailable; } - Future performApiCall(String _title, String _icon, int _flag,int sendVerificationFlat) async { + Future performApiCall(String _title, String _icon, int _flag, int sendVerificationFlat) async { try { Utils.showLoading(context); await LoginApiClient().checkMobileAppVersion(); await LoginApiClient().memberLogin(AppState().getUserName!, AppState().password!); - BasicMemberInformationModel? memberInformationModel = await LoginApiClient() - .mohemmSendActivationCodeByOTPNotificationType(0, AppState().memberLoginList?.pMOBILENUMBER, sendVerificationFlat, AppState().getUserName); + BasicMemberInformationModel? memberInformationModel = + await LoginApiClient().mohemmSendActivationCodeByOTPNotificationType(0, AppState().memberLoginList?.pMOBILENUMBER, sendVerificationFlat, AppState().getUserName); Utils.hideLoading(context); OtpDialog( context, @@ -633,8 +632,6 @@ class _VerifyLoginScreenState extends State { Platform.isAndroid ? "android" : "ios"); if (genericResponseModel?.errorMessage != null) { Utils.showToast(genericResponseModel?.errorMessage ?? ""); - - } else { AppState().setPrivilegeListModel = genericResponseModel!.privilegeList ?? []; AppState().setMemberInformationListModel = genericResponseModel.memberInformationList?.first; @@ -662,6 +659,9 @@ class _VerifyLoginScreenState extends State { () => { Navigator.pop(context), }, + onResendCode: () { + performApiCall(_title, _icon, _flag, sendVerificationFlat); + }, ).displayDialog(context); } catch (ex) { Utils.hideLoading(context); From 5880e227716e19a8e79bbcf5bf83a9e42bf12ca3 Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Wed, 2 Nov 2022 14:34:55 +0300 Subject: [PATCH 016/302] merge fix --- assets/langs/ar-SA.json | 4 +--- assets/langs/en-US.json | 3 +-- lib/generated/codegen_loader.g.dart | 8 +++++--- lib/generated/locale_keys.g.dart | 1 + 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index bf3c1a8..f72ea36 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -497,8 +497,6 @@ "otp": "OTP", "verification": "تَحَقّق", "resend": "إعادة إرسال", - "codeExpire": "انتهت صلاحية رمز التحقق" - - "allQuestionsCorrect": "لقد أجبت على جميع الأسئلة بشكل صحيح.", + "codeExpire": "انتهت صلاحية رمز التحقق", "typeheretoreply": "اكتب هنا للرد" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 0543013..896a365 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -493,11 +493,10 @@ "winnerSelectedRandomly": "The winner will be selected randomly among the qualifiers.", "fingersCrossed": "Fingers Crossed!!!", "congrats": "Congratulations!!!", - "allQuestionsCorrect": "You have answered all questions correct", "otp": "OTP", "verification": "Verification", "resend": "Resend", - "codeExpire": "The verification code has been expired" + "codeExpire": "The verification code has been expired", "allQuestionsCorrect": "You have answered all questions correct", "typeheretoreply": "Type here to reply" } \ No newline at end of file diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 66e4f97..83910f7 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -513,7 +513,8 @@ class CodegenLoader extends AssetLoader{ "otp": "OTP", "verification": "تَحَقّق", "resend": "إعادة إرسال", - "codeExpire": "انتهت صلاحية رمز التحقق" + "codeExpire": "انتهت صلاحية رمز التحقق", + "typeheretoreply": "اكتب هنا للرد" }; static const Map en_US = { "mohemm": "Mohemm", @@ -1010,11 +1011,12 @@ static const Map en_US = { "winnerSelectedRandomly": "The winner will be selected randomly among the qualifiers.", "fingersCrossed": "Fingers Crossed!!!", "congrats": "Congratulations!!!", - "allQuestionsCorrect": "You have answered all questions correct", "otp": "OTP", "verification": "Verification", "resend": "Resend", - "codeExpire": "The verification code has been expired" + "codeExpire": "The verification code has been expired", + "allQuestionsCorrect": "You have answered all questions correct", + "typeheretoreply": "Type here to reply" }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 835157b..f52bb89 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -484,5 +484,6 @@ abstract class LocaleKeys { static const verification = 'verification'; static const resend = 'resend'; static const codeExpire = 'codeExpire'; + static const typeheretoreply = 'typeheretoreply'; } From 0cca8ec935c39c6201e5e73142755a43b74125c6 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Wed, 2 Nov 2022 15:01:10 +0300 Subject: [PATCH 017/302] fix issues --- assets/langs/en-US.json | 2 +- lib/models/generic_response_model.dart | 2 +- lib/ui/misc/request_submit_screen.dart | 15 ++++---- .../dynamic_screens/dynamic_input_screen.dart | 10 +++--- lib/ui/my_team/employee_details.dart | 36 ++++++++++++------- lib/ui/profile/add_update_family_member.dart | 21 +++++------ lib/ui/profile/contact_details.dart | 7 +++- 7 files changed, 53 insertions(+), 40 deletions(-) diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 503302b..c15ada7 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -296,7 +296,7 @@ "relatedTopic": "Related Topic", "selectTopic": "Select Topic", "supportingDocument": "Supporting Document", - "mowadhafhiRequest": "Mowadhafhi Request", + "mowadhafhiRequest": "Mowadhafi Request", "ticketReference": "Ticket Reference", "section": "Section", "topic": "Topic", diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 753d2c2..2c8e98f 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -1291,7 +1291,7 @@ class GenericResponseModel { startEitApprovalProcess = json['StartEitApprovalProcess'] != null ? StartEitApprovalProcess.fromJson(json['StartEitApprovalProcess']) : null; startHrApprovalProcessList = json['StartHrApprovalProcessList']; - startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'] != null ? StartPhoneApprovalProcess.fromJson(json['startPhonesApprovalProcessList']) : null; + startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'] != null ? StartPhoneApprovalProcess.fromJson(json['StartPhonesApprovalProcessList']) : null; startSitApprovalProcess = json['StartSitApprovalProcess']; startTermApprovalProcessList = json['StartTermApprovalProcessList'] != null ? StartTermApprovalProcessList.fromJson(json['StartTermApprovalProcessList']) : null; diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index 8ca9a0c..7869443 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -68,7 +68,7 @@ class _RequestSubmitScreenState extends State { } void submitRequest() async { - try { + // try { Utils.showLoading(context); List> list = []; if (attachmentFiles.isNotEmpty) { @@ -97,7 +97,7 @@ class _RequestSubmitScreenState extends State { ); } else if (params!.approvalFlag == 'address') { await ProfileApiClient().startAddressApprovalProcess( - "SUBMIT", + LocaleKeys.submit.tr(), comments.text, params!.pItemId, params!.transactionId, @@ -111,7 +111,7 @@ class _RequestSubmitScreenState extends State { ); } else if (params!.approvalFlag == 'basicDetails') { await ProfileApiClient().startBasicDetailsApprovalProcess( - "SUBMIT", + LocaleKeys.submit.tr(), comments.text, params!.pItemId, params!.transactionId, @@ -131,6 +131,7 @@ class _RequestSubmitScreenState extends State { ); }else if (params!.approvalFlag == 'endEmployment') { await TerminationDffApiClient().startTermApprovalProcess( + // "SUBMIT", LocaleKeys.submit.tr(), comments.text, params!.pItemId, @@ -142,10 +143,10 @@ class _RequestSubmitScreenState extends State { Utils.showToast(LocaleKeys.yourRequestHasBeenSubmittedForApprovals.tr(), longDuration: true); Navigator.of(context).popUntil((route) => route.settings.name == AppRoutes.dashboard); Navigator.pushNamed(context, AppRoutes.workList); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } } @override diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 0a6c9d4..c1b8a43 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -136,7 +136,7 @@ class _DynamicInputScreenState extends State { } Future getDefaultValues(GetEITDFFStructureList structureList) async { - try { + // try { Utils.showLoading(context); for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; @@ -163,10 +163,10 @@ class _DynamicInputScreenState extends State { await Future.delayed(const Duration(seconds: 1)); Utils.hideLoading(context); setState(() {}); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } } // List> calGetValueSetValuesIonicLogic(GetEITDFFStructureList structureElement) { diff --git a/lib/ui/my_team/employee_details.dart b/lib/ui/my_team/employee_details.dart index d0e167d..9fc0070 100644 --- a/lib/ui/my_team/employee_details.dart +++ b/lib/ui/my_team/employee_details.dart @@ -256,19 +256,29 @@ class _EmployeeDetailsState extends State { child: Column( children: [ Text(LocaleKeys.addFavoriteList).tr(namedArgs: {'name': '${getEmployeeSubordinates!.eMPLOYEENAME}'}), - Image.memory( - Utils.getPostBytes( - getEmployeeSubordinates!.eMPLOYEEIMAGE ?? "", - ), - errorBuilder: (BuildContext context, error, stackTrace) { - return SvgPicture.asset( - "assets/images/user.svg", height: 50, width: 50, - ); - }, - width: 50, - height: 50, - fit: BoxFit.cover, - ).circle(50).paddingOnly(top: 21), + getEmployeeSubordinates!.eMPLOYEEIMAGE == null + ? SvgPicture.asset( + "assets/images/user.svg", + height: 68, + width: 68,) + : CircleAvatar( + radius: 68, + backgroundImage: MemoryImage(Utils.dataFromBase64String(getEmployeeSubordinates!.eMPLOYEEIMAGE!)), + backgroundColor: Colors.black, + ), + // Image.memory( + // Utils.getPostBytes( + // getEmployeeSubordinates!.eMPLOYEEIMAGE ?? "", + // ), + // errorBuilder: (BuildContext context, error, stackTrace) { + // return SvgPicture.asset( + // "assets/images/user.svg", height: 50, width: 50, + // ); + // }, + // width: 50, + // height: 50, + // fit: BoxFit.cover, + // ).circle(50).paddingOnly(top: 21), ], ), ), diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index 61b6639..e6b0b3e 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -223,9 +223,8 @@ class _AddUpdateFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - //date = DateFormat('yyyy/MM/dd').format(dateValue); - date = "2022-10-23T09:17:38.653+03:00"; - // date = (DateFormat('yyyy-MM-dd').format(dateValue)+"T"+ dateTime.toString() + dateTime1.toString()); + date = (DateFormat('yyyy-MM-dd').format(dateValue)); + // date = (DateFormat('yyyy-MM-dd').format(dateValue)+"T"+ dateTime.toString() + dateTime1.toString()); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; print(dateTime); print(dateTime1); @@ -288,9 +287,8 @@ class _AddUpdateFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - date = "2022-10-23T09:17:38.653+03:00"; - // date = (DateFormat('yyyy-MM-dd').format(dateValue) +"T"+ dateTime.toString() + dateTime1.toString()); - // date = DateFormat('yyyy/MM/dd').format(dateValue); + // date = (DateFormat('yyyy-MM-dd').format(dateValue) +"T"+ dateTime.toString() + dateTime1.toString()); + date = (DateFormat('yyyy-MM-dd').format(dateValue)); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; setState(() {}); }, @@ -349,9 +347,8 @@ class _AddUpdateFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - date = "2022-10-23T09:17:38.653+03:00"; - // date = (DateFormat('yyyy-MM-dd').format(dateValue)+"T"+ dateTime.toString() + dateTime1.toString()); - // date = DateFormat('yyyy/MM/dd').format(dateValue); + // date = (DateFormat('yyyy-MM-dd').format(dateValue)+"T"+ dateTime.toString() + dateTime1.toString()); + date = (DateFormat('yyyy-MM-dd').format(dateValue)); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; setState(() {}); }, @@ -407,7 +404,7 @@ class _AddUpdateFamilyMemberState extends State { numberVal = null; } else { dateVal = null; - vatcherVal = e!.getContactDetailsList!.sEGMENTVALUEDSP; + vatcherVal = e!.getContactDetailsList!.vARCHAR2VALUE; numberVal = null; } return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); @@ -427,7 +424,7 @@ class _AddUpdateFamilyMemberState extends State { } else { dateVal = null; numberVal = null; - vatcherVal = e!.getContactDetailsList!.sEGMENTVALUEDSP; + vatcherVal = e!.getContactDetailsList!.vARCHAR2VALUE; } return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); }).toList(); @@ -441,7 +438,7 @@ class _AddUpdateFamilyMemberState extends State { if (e!.dATATYPE == 'VARCHAR2') { dateVal = null; numberVal = null; - vatcherVal = e.getContactDetailsList?.sEGMENTVALUEDSP ?? ""; + vatcherVal = e.getContactDetailsList?.vARCHAR2VALUE ?? ""; } else if (e.dATATYPE == 'DATE') { dateVal = e.getContactDetailsList!.sEGMENTVALUEDSP.toString(); print("dateVal:${dateVal ?? ""}"); diff --git a/lib/ui/profile/contact_details.dart b/lib/ui/profile/contact_details.dart index 9a6f25e..95c867a 100644 --- a/lib/ui/profile/contact_details.dart +++ b/lib/ui/profile/contact_details.dart @@ -129,7 +129,12 @@ class _ContactDetailsState extends State { separatorBuilder: (cxt, index) => 12.height, itemCount: getEmployeeAddressList.length), if (menuEntriesAddress.updateButton == 'Y') - Positioned( + AppState().isArabic(context)? Positioned( + top: 1, + left: 1, + child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(addUpdateAddress), + ) + :Positioned( top: 1, right: 1, child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(addUpdateAddress), From 7cc110b9a1092a5d23809b4106e32b711b55a372 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 2 Nov 2022 15:03:01 +0300 Subject: [PATCH 018/302] JIRA fixes --- assets/langs/en-US.json | 4 +-- assets/lottie/loading.json | 2 +- lib/classes/consts.dart | 4 +-- lib/generated/codegen_loader.g.dart | 4 +-- .../add_leave_balance_screen.dart | 33 ++++++++++++------- lib/ui/login/login_screen.dart | 4 +-- .../dynamic_screens/dynamic_input_screen.dart | 2 +- .../dynamic_input_address_screen.dart | 4 +-- lib/ui/profile/widgets/profile_panel.dart | 20 ++++++----- lib/ui/work_list/itg_detail_screen.dart | 11 +++++-- lib/ui/work_list/sheets/delegate_sheet.dart | 15 ++++++--- .../sheets/selected_itg_item_sheet.dart | 4 +-- lib/ui/work_list/worklist_detail_screen.dart | 16 +++++---- .../dialogs/accept_reject_input_dialog.dart | 9 +++-- lib/widgets/item_detail_view_widget.dart | 8 +++-- 15 files changed, 88 insertions(+), 52 deletions(-) diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 503302b..a589a82 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -284,7 +284,7 @@ "add": "Add", "edit": "Edit", "myProfile": "My Profile", - "mowadhafhi": "Mowadhafhi", + "mowadhafhi": "Mowadhafi", "searchAnnouncements": "Search Announcements", "announcements": "Announcements", "swipeRequest": "Swipe Request", @@ -296,7 +296,7 @@ "relatedTopic": "Related Topic", "selectTopic": "Select Topic", "supportingDocument": "Supporting Document", - "mowadhafhiRequest": "Mowadhafhi Request", + "mowadhafhiRequest": "Mowadhafi Request", "ticketReference": "Ticket Reference", "section": "Section", "topic": "Topic", diff --git a/assets/lottie/loading.json b/assets/lottie/loading.json index 8190459..ea7bff3 100644 --- a/assets/lottie/loading.json +++ b/assets/lottie/loading.json @@ -1 +1 @@ -{"v":"5.8.1","fr":30,"ip":0,"op":60,"w":300,"h":300,"nm":"loading_6","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[360]}],"ix":10},"p":{"a":0,"k":[150.00000000000003,150.00000000000003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[30.000000000000004,30.000000000000004,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.12941176470588237,0.7411764705882353,0.7764705882352941,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":50,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"t":60,"s":[99]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[1]},{"t":50,"s":[100]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[3]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":30,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150.00000000000003,150.00000000000003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[30.000000000000004,30.000000000000004,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.7450980392156863,0.9254901960784314,0.9372549019607843,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":50,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"bm":0}],"markers":[]} \ No newline at end of file +{"v":"5.8.1","fr":30,"ip":0,"op":60,"w":100,"h":100,"nm":"loading_6","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[360]}],"ix":10},"p":{"a":0,"k":[50.00000000000002,50.00000000000002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[10.000000000000004,10.000000000000004,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.12941176470588237,0.7411764705882353,0.7764705882352941,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":50,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[0]},{"t":60,"s":[99]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[1]},{"t":50,"s":[100]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":60,"s":[3]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":30,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50.00000000000002,50.00000000000002,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[10.000000000000004,10.000000000000004,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[300,300],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.7450980392156863,0.9254901960784314,0.9372549019607843,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":50,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index e82c30a..eea2481 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 6b702f8..8754d9b 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -797,7 +797,7 @@ static const Map en_US = { "add": "Add", "edit": "Edit", "myProfile": "My Profile", - "mowadhafhi": "Mowadhafhi", + "mowadhafhi": "Mowadhafi", "searchAnnouncements": "Search Announcements", "announcements": "Announcements", "swipeRequest": "Swipe Request", @@ -809,7 +809,7 @@ static const Map en_US = { "relatedTopic": "Related Topic", "selectTopic": "Select Topic", "supportingDocument": "Supporting Document", - "mowadhafhiRequest": "Mowadhafhi Request", + "mowadhafhiRequest": "Mowadhafi Request", "ticketReference": "Ticket Reference", "section": "Section", "topic": "Topic", diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index 864a507..85337aa 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -92,7 +92,7 @@ class _AddLeaveBalanceScreenState extends State { } void validateAbsenceTransaction() async { - // try { + try { Utils.showLoading(context); Map dffDataMap = {}; for (int i = 1; i <= 20; i++) { @@ -100,7 +100,8 @@ class _AddLeaveBalanceScreenState extends State { for (int dffIndex = 0; dffIndex < getabsenceDffStructureList.length; dffIndex++) { if ("ATTRIBUTE$i" == getabsenceDffStructureList[dffIndex].aPPLICATIONCOLUMNNAME) { if (getabsenceDffStructureList[dffIndex].fORMATTYPE == "X") { - dffDataMap["P_ATTRIBUTE$i"] = getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME != null ? Utils.formatDate(getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME!) : ""; + dffDataMap["P_ATTRIBUTE$i"] = + getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME != null ? Utils.formatDate(getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME!) : ""; } else { dffDataMap["P_ATTRIBUTE$i"] = getabsenceDffStructureList[dffIndex].eSERVICESDV?.pIDCOLUMNNAME; } @@ -108,9 +109,17 @@ class _AddLeaveBalanceScreenState extends State { } } } - await LeaveBalanceApiClient().validateAbsenceTransaction(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, - selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), -999, dffDataMap, - comments: comment); + await LeaveBalanceApiClient() + .validateAbsenceTransaction( + selectedAbsenceType!.dESCFLEXCONTEXTCODE!, + "HR_LOA_SS", + selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, + selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", + DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), + DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), + -999, + dffDataMap, + comments: comment); SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( selectedAbsenceType!.dESCFLEXCONTEXTCODE!, @@ -126,13 +135,13 @@ class _AddLeaveBalanceScreenState extends State { Utils.hideLoading(context); await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance")); - // Utils.showLoading(context); + Utils.showLoading(context); await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); - // Utils.hideLoading(context); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + Utils.hideLoading(context); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } @override @@ -221,7 +230,7 @@ class _AddLeaveBalanceScreenState extends State { onTap: () { showMyBottomSheet( context, - callBackFunc: (){}, + callBackFunc: () {}, child: SearchEmployeeBottomSheet( title: LocaleKeys.searchForEmployee.tr(), apiMode: LocaleKeys.delegate.tr(), diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 0c4e268..20fa8bc 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -145,8 +145,8 @@ class _LoginScreenState extends State { // username.text = "15153"; // Tamer User // password.text = "Abcd@12345"; - username.text = "210038"; // Hashim User - password.text = "123"; + // username.text = "206535"; // Hashim User + // password.text = "Namira786"; } if (isAppOpenBySystem!) checkFirebaseToken(); } diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 0a6c9d4..519bb6c 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -448,7 +448,7 @@ class _DynamicInputScreenState extends State { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model.eSERVICESDV?.pIDCOLUMNNAME ?? "", - isReadOnly: model.rEADONLY == "Y", + // isReadOnly: model.rEADONLY == "Y", isInputTypeNum: true, onChange: (text) { model.fieldAnswer = text; diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart index cc8e861..6933a28 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -269,13 +269,13 @@ class _DynamicInputScreenState extends State { if (tempVar.isNotEmpty) { DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); - tempVar = DateFormat('dd/MMM/yyy').format(date); + tempVar = DateFormat('dd-MMM-yyy').format(date); if (e.aPPLICATIONCOLUMNNAME == null) { effectiveDate = tempVar; } } } else if (e.eSERVICESVS?.isNotEmpty ?? false) { - tempVar = e.getEmployeeAddressList!.vARCHAR2VALUE!; + e.getEmployeeAddressList!.vARCHAR2VALUE != null ? tempVar = e.getEmployeeAddressList!.vARCHAR2VALUE! : tempVar = ""; if (e.aPPLICATIONCOLUMNNAME == null) { countryCode = tempVar; } diff --git a/lib/ui/profile/widgets/profile_panel.dart b/lib/ui/profile/widgets/profile_panel.dart index 5018171..440fbb3 100644 --- a/lib/ui/profile/widgets/profile_panel.dart +++ b/lib/ui/profile/widgets/profile_panel.dart @@ -44,12 +44,16 @@ class ProfilePanel extends StatelessWidget { Widget profileImage() => memberInformationList.eMPLOYEEIMAGE == null ? SvgPicture.asset( - "assets/images/user.svg", - height: 68, - width: 68,) - : CircleAvatar( - radius: 68, - backgroundImage: MemoryImage(Utils.dataFromBase64String(memberInformationList.eMPLOYEEIMAGE!)), - backgroundColor: Colors.black, - ); + "assets/images/user.svg", + height: 68, + width: 68, + ) + : ClipOval( + child: Image.memory( + Utils.dataFromBase64String(memberInformationList.eMPLOYEEIMAGE!), + width: 75, + height: 75, + fit: BoxFit.fill, + ), + ); } diff --git a/lib/ui/work_list/itg_detail_screen.dart b/lib/ui/work_list/itg_detail_screen.dart index 0f45648..84bd9bd 100644 --- a/lib/ui/work_list/itg_detail_screen.dart +++ b/lib/ui/work_list/itg_detail_screen.dart @@ -66,7 +66,9 @@ class _ItgDetailScreenState extends State { isRejectAvailable = itgRequest!.allowedActions!.any((element) => element.action == "Reject"); } Utils.hideLoading(context); - setState(() {}); + setState(() { + controller.jumpToPage(0); + }); } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); @@ -264,12 +266,12 @@ class _ItgDetailScreenState extends State { switch (action.action) { case "Delegate": showMyBottomSheet(context, callBackFunc: reloadITG, - child: DelegateSheet(title: LocaleKeys.delegate.tr(), apiMode: action.action!, notificationID: null, actionHistoryList: null, wFHistory: itgRequest?.wFHistory ?? [])); + child: DelegateSheet(title: LocaleKeys.delegate.tr(), apiMode: action.action!, notificationID: null, actionHistoryList: null, wFHistory: itgRequest?.wFHistory ?? [], callBackFunc: reloadITG,)); break; case "RequestInformation": showMyBottomSheet(context, callBackFunc: reloadITG, - child: DelegateSheet(title: LocaleKeys.request_info.tr(), apiMode: action.action!, notificationID: null, actionHistoryList: null, wFHistory: itgRequest?.wFHistory ?? [])); + child: DelegateSheet(title: LocaleKeys.request_info.tr(), apiMode: action.action!, notificationID: null, actionHistoryList: null, wFHistory: itgRequest?.wFHistory ?? [], callBackFunc: reloadITG,)); break; case "RFC": @@ -279,6 +281,9 @@ class _ItgDetailScreenState extends State { // do something else break; } + setState(() { + showFabOptions = false; + }); } Widget myTab(String title, int index) { diff --git a/lib/ui/work_list/sheets/delegate_sheet.dart b/lib/ui/work_list/sheets/delegate_sheet.dart index 28a90e6..bd3b010 100644 --- a/lib/ui/work_list/sheets/delegate_sheet.dart +++ b/lib/ui/work_list/sheets/delegate_sheet.dart @@ -28,8 +28,9 @@ class DelegateSheet extends StatefulWidget { String title, apiMode; List? actionHistoryList; List? wFHistory; + VoidCallback callBackFunc; - DelegateSheet({required this.title, required this.apiMode, this.notificationID, this.actionHistoryList, this.wFHistory}); + DelegateSheet({required this.title, required this.apiMode, this.notificationID, this.actionHistoryList, this.wFHistory, required this.callBackFunc}); @override State createState() => _DelegateSheetState(); @@ -392,8 +393,9 @@ class _DelegateSheetState extends State { Widget showItem(GetActionHistoryList actionHistory) { return InkWell( onTap: () { + Navigator.pop(context); showMyBottomSheet(context, - callBackFunc: (){}, + callBackFunc: widget.callBackFunc, child: SelectedItemSheet( "Comment", apiMode: widget.apiMode, @@ -438,8 +440,9 @@ class _DelegateSheetState extends State { Widget showItgItem(WFHistory wfHistory) { return InkWell( onTap: () { + Navigator.pop(context); showMyBottomSheet(context, - callBackFunc: (){}, + callBackFunc: widget.callBackFunc, child: SelectedItgItemSheet( "Comment", apiMode: widget.apiMode, @@ -463,8 +466,9 @@ class _DelegateSheetState extends State { Widget showFavUserItem(GetFavoriteReplacements actionHistory) { return InkWell( onTap: () { + Navigator.pop(context); showMyBottomSheet(context, - callBackFunc: (){}, + callBackFunc: widget.callBackFunc, child: SelectedItemSheet( "Comment", apiMode: widget.apiMode, @@ -509,8 +513,9 @@ class _DelegateSheetState extends State { Widget showInputUserItem(ReplacementList actionHistory) { return InkWell( onTap: () { + Navigator.pop(context); showMyBottomSheet(context, - callBackFunc: (){}, + callBackFunc: widget.callBackFunc, child: SelectedItemSheet( LocaleKeys.comments.tr(), apiMode: widget.apiMode, diff --git a/lib/ui/work_list/sheets/selected_itg_item_sheet.dart b/lib/ui/work_list/sheets/selected_itg_item_sheet.dart index 7381d59..f44ca04 100644 --- a/lib/ui/work_list/sheets/selected_itg_item_sheet.dart +++ b/lib/ui/work_list/sheets/selected_itg_item_sheet.dart @@ -128,8 +128,8 @@ class SelectedItgItemSheet extends StatelessWidget { .informationITGRequest(requestDetails.requestType!, requestDetails.iD!, requestDetails.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", wfHistory.employeeID!, comment); } Utils.hideLoading(context); - Navigator.pop(context); - Navigator.pop(context); + // Navigator.pop(context); + // Navigator.pop(context); Navigator.pop(context, "delegate_reload"); } catch (ex) { Utils.hideLoading(context); diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index ec02631..0e769e7 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -388,20 +388,20 @@ class _WorkListDetailScreenState extends State { case "DELEGATE": showMyBottomSheet(context, callBackFunc: reloadWorkList, - child: DelegateSheet(title: LocaleKeys.delegate.tr(), apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); + child: DelegateSheet(title: LocaleKeys.delegate.tr(), apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); break; case "REQUEST_INFO": // do something else showMyBottomSheet(context, callBackFunc: reloadWorkList, - child: DelegateSheet(title: LocaleKeys.request_info.tr(), apiMode: "REQUEST_INFO", notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); + child: DelegateSheet(title: LocaleKeys.request_info.tr(), apiMode: "REQUEST_INFO", notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); break; case "TRANSFER_INFO": // do something else showMyBottomSheet(context, callBackFunc: reloadWorkList, child: - DelegateSheet(title: notificationButton.bUTTONLABEL!, apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); + DelegateSheet(title: notificationButton.bUTTONLABEL!, apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); break; case "ANSWER_INFO": performAction(notificationButton.bUTTONACTION!, title: notificationButton.bUTTONLABEL); @@ -417,12 +417,12 @@ class _WorkListDetailScreenState extends State { case "APPROVE_AND_FORWARD": showMyBottomSheet(context, callBackFunc: reloadWorkList, - child: DelegateSheet(title: "Approve and Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); + child: DelegateSheet(title: "Approve and Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); break; case "FORWARD": showMyBottomSheet(context, callBackFunc: reloadWorkList, - child: DelegateSheet(title: "Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList)); + child: DelegateSheet(title: "Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); break; case "REJECT": performNetworkCall(context, email: "", userId: ""); @@ -431,6 +431,9 @@ class _WorkListDetailScreenState extends State { Navigator.pop(context); break; } + setState(() { + showFabOptions = false; + }); } Future performNetworkCall(BuildContext context, {String? email, String? userId}) async { @@ -516,7 +519,6 @@ class _WorkListDetailScreenState extends State { } void performAction(String actionMode, {String? title}) { - TextEditingController textEditingController = TextEditingController(); showDialog( context: context, builder: (cxt) => AcceptRejectInputDialog( @@ -823,6 +825,8 @@ class _WorkListDetailScreenState extends State { void getActionHistory() async { try { + isActionHistoryLoaded = false; + actionHistoryList.clear(); // if (apiCallCount == 0) Utils.showLoading(context); // apiCallCount++; actionHistoryList = await WorkListApiClient().getActionHistory(workListData!.nOTIFICATIONID!); diff --git a/lib/widgets/dialogs/accept_reject_input_dialog.dart b/lib/widgets/dialogs/accept_reject_input_dialog.dart index a0faf2c..db9c5d6 100644 --- a/lib/widgets/dialogs/accept_reject_input_dialog.dart +++ b/lib/widgets/dialogs/accept_reject_input_dialog.dart @@ -2,6 +2,7 @@ import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; @@ -89,8 +90,12 @@ class AcceptRejectInputDialog extends StatelessWidget { DefaultButton( actionMode == "REJECTED" ? LocaleKeys.reject.tr() : LocaleKeys.ok.tr(), () { - Navigator.pop(context); - onTap(note); + if(note.isNotEmpty) { + Navigator.pop(context); + onTap(note); + } else { + Utils.showToast(LocaleKeys.pleaseEnterComments.tr()); + } }, colors: actionMode == "REJECTED" ? const [ diff --git a/lib/widgets/item_detail_view_widget.dart b/lib/widgets/item_detail_view_widget.dart index 05495e9..5148389 100644 --- a/lib/widgets/item_detail_view_widget.dart +++ b/lib/widgets/item_detail_view_widget.dart @@ -80,9 +80,13 @@ class ItemDetailViewGridItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - Flexible(child: "$title:".toText12Auto(isBold: true, color: const Color(0xff2BB8A6))), + title != null ? Flexible(child: "$title:".toText12Auto(isBold: true, color: const Color(0xff2BB8A6))) : Container(), 4.width, - type!.toLowerCase() == "table" ? getStringFromJSON(value!) : Flexible(child: (value!.isEmpty ? "--" : value).toString().toText12Auto(color: MyColors.normalTextColor)), + type != null + ? type!.toLowerCase() == "table" + ? getStringFromJSON(value!) + : Flexible(child: (value!.isEmpty ? "--" : value).toString().toText12Auto(color: MyColors.normalTextColor)) + : Container(), ], ), ); From 09b2f8a23fe573f11835ae84349c4c3a21118a22 Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Wed, 2 Nov 2022 17:32:12 +0300 Subject: [PATCH 019/302] UI Fixes --- lib/ui/marathon/marathon_screen.dart | 7 +- lib/ui/marathon/widgets/countdown_timer.dart | 90 ++++++++++++++------ lib/ui/marathon/widgets/marathon_banner.dart | 69 +++++++++++++-- lib/ui/marathon/widgets/question_card.dart | 19 ++--- 4 files changed, 138 insertions(+), 47 deletions(-) diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index d548122..a02733f 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -16,6 +16,7 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart' import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; +import 'package:sizer/sizer.dart'; import 'package:steps_indicator/steps_indicator.dart'; class MarathonScreen extends StatelessWidget { @@ -109,7 +110,7 @@ class _MarathonProgressContainerState extends State { Container( decoration: BoxDecoration( color: MyColors.greenColor, - borderRadius: BorderRadius.circular(12), + borderRadius: BorderRadius.circular(5), ), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.totalQuestions.toString()} ${LocaleKeys.question.tr()}".toText12(color: MyColors.white), @@ -120,7 +121,7 @@ class _MarathonProgressContainerState extends State { ), 15.height, StepsIndicator( - lineLength: 21, + lineLength: SizerUtil.deviceType == DeviceType.tablet ? MediaQuery.of(context).size.width * 0.077 : MediaQuery.of(context).size.width * 0.054, nbSteps: 10, selectedStep: widget.provider.currentQuestionNumber, doneLineColor: MyColors.greenColor, @@ -130,6 +131,8 @@ class _MarathonProgressContainerState extends State { selectedStepSize: 10, unselectedStepSize: 10, doneStepSize: 10, + selectedStepBorderSize: 0, + unselectedStepBorderSize: 0, selectedStepColorIn: MyColors.greenColor, selectedStepColorOut: MyColors.greenColor, unselectedStepColorIn: MyColors.lightGreyDeColor, diff --git a/lib/ui/marathon/widgets/countdown_timer.dart b/lib/ui/marathon/widgets/countdown_timer.dart index 557cfd3..f5eb92f 100644 --- a/lib/ui/marathon/widgets/countdown_timer.dart +++ b/lib/ui/marathon/widgets/countdown_timer.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:auto_size_text/auto_size_text.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/current_remaining_time.dart'; @@ -21,7 +22,7 @@ class BuildCountdownTimer extends StatelessWidget { }) : super(key: key); final TextStyle styleTextHome = const TextStyle( - fontSize: 7, + // fontSize: 7, color: MyColors.greyACColor, fontStyle: FontStyle.italic, fontWeight: FontWeight.w600, @@ -31,9 +32,8 @@ class BuildCountdownTimer extends StatelessWidget { final TextStyle styleDigitHome = const TextStyle( height: 23 / 27, color: MyColors.white, - fontSize: 24, + // fontSize: 24, fontStyle: FontStyle.italic, - fontFamily: "Poppins", letterSpacing: -1.44, fontWeight: FontWeight.bold, ); @@ -62,12 +62,16 @@ class BuildCountdownTimer extends StatelessWidget { children: [ Column( children: [ - Text( + AutoSizeText( "00", + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), - Text( + AutoSizeText( LocaleKeys.days.tr(), + minFontSize: 7, + maxFontSize: 8, style: screenFlag == 0 ? styleTextHome : styleTextMarathon, ), ], @@ -75,12 +79,16 @@ class BuildCountdownTimer extends StatelessWidget { buildSeparator(), Column( children: [ - Text( + AutoSizeText( "00", + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), - Text( + AutoSizeText( LocaleKeys.hours.tr(), + minFontSize: 7, + maxFontSize: 8, style: screenFlag == 0 ? styleTextHome : styleTextMarathon, ), ], @@ -88,12 +96,16 @@ class BuildCountdownTimer extends StatelessWidget { buildSeparator(), Column( children: [ - Text( + AutoSizeText( "00", + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), - Text( + AutoSizeText( LocaleKeys.minutes.tr(), + minFontSize: 7, + maxFontSize: 8, style: screenFlag == 0 ? styleTextHome : styleTextMarathon, ), ], @@ -101,12 +113,16 @@ class BuildCountdownTimer extends StatelessWidget { buildSeparator(), Column( children: [ - Text( + AutoSizeText( "00", + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), - Text( + AutoSizeText( LocaleKeys.seconds.tr(), + minFontSize: 7, + maxFontSize: 8, style: screenFlag == 0 ? styleTextHome : styleTextMarathon, ), ], @@ -116,8 +132,10 @@ class BuildCountdownTimer extends StatelessWidget { } Widget buildSeparator() { - return Text( + return AutoSizeText( " : ", + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ); } @@ -140,16 +158,22 @@ class BuildCountdownTimer extends StatelessWidget { Column( children: [ time.days == null - ? Text( + ? AutoSizeText( "00", + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ) - : Text( + : AutoSizeText( time.days! < 10 ? "0${time.days.toString()}" : time.days.toString(), + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), - Text( + AutoSizeText( LocaleKeys.days.tr(), + minFontSize: 7, + maxFontSize: 8, style: screenFlag == 0 ? styleTextHome : styleTextMarathon, ), ], @@ -158,16 +182,22 @@ class BuildCountdownTimer extends StatelessWidget { Column( children: [ time.hours == null - ? Text( + ? AutoSizeText( "00", + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ) - : Text( + : AutoSizeText( time.hours! < 10 ? "0${time.hours.toString()}" : time.hours.toString(), + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), - Text( + AutoSizeText( LocaleKeys.hours.tr(), + minFontSize: 7, + maxFontSize: 8, style: screenFlag == 0 ? styleTextHome : styleTextMarathon, ), ], @@ -176,16 +206,22 @@ class BuildCountdownTimer extends StatelessWidget { Column( children: [ time.min == null - ? Text( + ? AutoSizeText( "00", + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ) - : Text( + : AutoSizeText( time.min! < 10 ? "0${time.min.toString()}" : time.min.toString(), + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), - Text( + AutoSizeText( LocaleKeys.minutes.tr(), + minFontSize: 7, + maxFontSize: 8, style: screenFlag == 0 ? styleTextHome : styleTextMarathon, ), ], @@ -194,16 +230,22 @@ class BuildCountdownTimer extends StatelessWidget { Column( children: [ time.sec == null - ? Text( + ? AutoSizeText( "00", + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ) - : Text( + : AutoSizeText( time.sec! < 10 ? "0${time.sec.toString()}" : time.sec.toString(), + maxFontSize: 24, + minFontSize: 20, style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, ), - Text( + AutoSizeText( LocaleKeys.seconds.tr(), + minFontSize: 7, + maxFontSize: 8, style: screenFlag == 0 ? styleTextHome : styleTextMarathon, ), ], diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index be06e35..379df20 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -23,7 +23,8 @@ class MarathonBanner extends StatelessWidget { MarathonProvider provider = context.read(); return Container( decoration: MyDecorations.shadowDecoration, - height: 90, + height: MediaQuery.of(context).size.height * 0.11, + clipBehavior: Clip.antiAlias, child: Stack( children: [ Transform( @@ -33,8 +34,20 @@ class MarathonBanner extends StatelessWidget { ), child: SvgPicture.asset( "assets/images/marathon_banner_bg.svg", - fit: BoxFit.cover, - width: MediaQuery.of(context).size.width - 40, + fit: BoxFit.fill, + width: double.infinity, + ), + ), + Positioned( + left: -20, + top: -10, + child: Transform.rotate( + angle: 15, + child: Container( + width: 65, + height: 32, + color: MyColors.gradiantStartColor, + ), ), ), SizedBox( @@ -55,7 +68,7 @@ class MarathonBanner extends StatelessWidget { width: double.infinity, height: double.infinity, child: Row( - mainAxisAlignment: MainAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.start, children: [ Column( mainAxisAlignment: MainAxisAlignment.center, @@ -65,9 +78,10 @@ class MarathonBanner extends StatelessWidget { AppState().isArabic(context) ? 0.height : 5.height, AutoSizeText( LocaleKeys.getReadyForContest.tr(), + minFontSize: 08, + maxFontSize: 11, style: const TextStyle( fontStyle: FontStyle.italic, - fontSize: 12, fontWeight: FontWeight.w600, color: MyColors.lightGreyEFColor, letterSpacing: -0.4, @@ -91,16 +105,55 @@ class MarathonBanner extends StatelessWidget { ), ], ).paddingOnly( - left: AppState().isArabic(context) ? 12 : 0, - right: AppState().isArabic(context) ? 0 : 12, + left: AppState().isArabic(context) ? 12 : 3, + right: AppState().isArabic(context) ? 3 : 12, ) ], - ).paddingOnly(right: 20), + ), ), ), ], ), ), + Positioned( + top: 0, + left: 0, + child: SizedBox( + height: 20, + width: 35, + child: Transform.rotate( + angle: -math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: const TextStyle( + color: MyColors.kWhiteColor, + fontWeight: FontWeight.bold, + fontSize: 6, + height: 1.2, + ), + ), + ), + ), + ).paddingOnly(top: 3), + !AppState().isArabic(context) + ? Positioned( + right: 0, + bottom: 0, + child: RotatedBox( + quarterTurns: 4, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white), + ).paddingAll(15), + ) + : Positioned( + bottom: 0, + left: 0, + child: RotatedBox( + quarterTurns: 2, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white), + ).paddingAll(15), + ), ], ).onPress( () => Navigator.pushNamed(context, AppRoutes.marathonIntroScreen), diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index d5f6bce..a3fe720 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/models/marathon_question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:provider/provider.dart'; @@ -48,7 +49,7 @@ class _QuestionCardState extends State { Widget build(BuildContext context) { return CupertinoPageScaffold( child: SizedBox( - height: 420, + height: 440, width: double.infinity, child: Consumer( builder: (BuildContext context, MarathonProvider provider, _) { @@ -200,8 +201,6 @@ class _AnswerContentState extends State { updateOption(0, true); }, child: Container( - height: 60, - width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, decoration: getContainerColor(0), child: Center( @@ -212,7 +211,7 @@ class _AnswerContentState extends State { fontWeight: FontWeight.w600, fontSize: 16, ), - ), + ).paddingOnly(top: 17, bottom: 17), ), ), ), @@ -231,8 +230,6 @@ class _AnswerContentState extends State { updateOption(1, true); }, child: Container( - height: 60, - width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, decoration: getContainerColor(1), child: Center( @@ -243,7 +240,7 @@ class _AnswerContentState extends State { fontWeight: FontWeight.w600, fontSize: 16, ), - ), + ).paddingOnly(top: 17, bottom: 17), ), ), ), @@ -262,8 +259,6 @@ class _AnswerContentState extends State { updateOption(2, true); }, child: Container( - height: 60, - width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, decoration: getContainerColor(2), child: Center( @@ -274,7 +269,7 @@ class _AnswerContentState extends State { fontWeight: FontWeight.w600, fontSize: 16, ), - ), + ).paddingOnly(top: 17, bottom: 17), ), ), ), @@ -293,8 +288,6 @@ class _AnswerContentState extends State { updateOption(3, true); }, child: Container( - height: 60, - width: MediaQuery.of(context).size.width - 75, alignment: Alignment.centerLeft, decoration: getContainerColor(3), child: Center( @@ -305,7 +298,7 @@ class _AnswerContentState extends State { fontWeight: FontWeight.w600, fontSize: 16, ), - ), + ).paddingOnly(top: 17, bottom: 17), ), ), ), From ea676e19ca319bb299b15e39406329f9e925ad2c Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 3 Nov 2022 14:39:33 +0300 Subject: [PATCH 020/302] JIRA Fixes --- assets/images/monthly_attendance.svg | 6 +++--- lib/ui/attendance/monthly_attendance_screen.dart | 1 - lib/ui/landing/widget/services_widget.dart | 4 ++-- lib/ui/my_team/view_attendance.dart | 1 - lib/ui/work_list/worklist_detail_screen.dart | 3 ++- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/assets/images/monthly_attendance.svg b/assets/images/monthly_attendance.svg index c84a9a1..b77ccc3 100644 --- a/assets/images/monthly_attendance.svg +++ b/assets/images/monthly_attendance.svg @@ -7,9 +7,9 @@ - - - + + + diff --git a/lib/ui/attendance/monthly_attendance_screen.dart b/lib/ui/attendance/monthly_attendance_screen.dart index 439a5f4..de35da0 100644 --- a/lib/ui/attendance/monthly_attendance_screen.dart +++ b/lib/ui/attendance/monthly_attendance_screen.dart @@ -287,7 +287,6 @@ class _MonthlyAttendanceScreenState extends State { cellBorderColor: Colors.white, selectionDecoration: BoxDecoration( border: Border.all(color: MyColors.white, width: 10), - borderRadius: const BorderRadius.all(Radius.circular(100)), shape: BoxShape.circle, ), dataSource: MeetingDataSource(_getDataSource()), diff --git a/lib/ui/landing/widget/services_widget.dart b/lib/ui/landing/widget/services_widget.dart index d822920..0b257c5 100644 --- a/lib/ui/landing/widget/services_widget.dart +++ b/lib/ui/landing/widget/services_widget.dart @@ -22,8 +22,8 @@ class ServicesWidget extends StatelessWidget { "assets/images/monthly_attendance.svg", "assets/images/monthly_attendance.svg", "assets/images/ticket_request.svg", - "assets/images/ticket_request.svg", - "assets/images/ticket_request.svg", + "assets/images/ticket_bal.svg", + "assets/images/vacation_rule.svg", "assets/images/ticket_request.svg", "assets/images/ticket_request.svg", "assets/images/ticket_request.svg" diff --git a/lib/ui/my_team/view_attendance.dart b/lib/ui/my_team/view_attendance.dart index c77b1b4..90414d1 100644 --- a/lib/ui/my_team/view_attendance.dart +++ b/lib/ui/my_team/view_attendance.dart @@ -283,7 +283,6 @@ class _ViewAttendanceState extends State { cellBorderColor: Colors.white, selectionDecoration: BoxDecoration( border: Border.all(color: MyColors.white, width: 10), - borderRadius: const BorderRadius.all(Radius.circular(100)), shape: BoxShape.circle, ), dataSource: MeetingDataSource(_getDataSource()), diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 0e769e7..de7c152 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -846,6 +846,8 @@ class _WorkListDetailScreenState extends State { void getAttachments() async { try { + isAttachmentLoaded = false; + getAttachmentList.clear(); // if (apiCallCount == 0) Utils.showLoading(context); // apiCallCount++; getAttachmentList = await WorkListApiClient().getAttachments(workListData!.nOTIFICATIONID!); @@ -868,7 +870,6 @@ class _WorkListDetailScreenState extends State { 'assets/lottie/loading.json', repeat: true, reverse: false, - fit: BoxFit.contain, ); } } From 8f088c78da1c1a66b37e8521f9dba9cf8dd585fb Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Thu, 3 Nov 2022 15:24:59 +0300 Subject: [PATCH 021/302] Position Fix --- lib/ui/marathon/widgets/marathon_banner.dart | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 379df20..6fcb514 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -115,9 +115,8 @@ class MarathonBanner extends StatelessWidget { ], ), ), - Positioned( - top: 0, - left: 0, + Align( + alignment: Alignment.topLeft, child: SizedBox( height: 20, width: 35, @@ -136,7 +135,7 @@ class MarathonBanner extends StatelessWidget { ), ), ), - ).paddingOnly(top: 3), + ).paddingOnly(top: 5), !AppState().isArabic(context) ? Positioned( right: 0, From c0e7bc7c7da84d691b9e35c25bca4dce9f558b94 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 6 Nov 2022 11:23:56 +0300 Subject: [PATCH 022/302] Last Login fixes --- lib/ui/login/verify_last_login_screen.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/ui/login/verify_last_login_screen.dart b/lib/ui/login/verify_last_login_screen.dart index 6e51e51..0b07b43 100644 --- a/lib/ui/login/verify_last_login_screen.dart +++ b/lib/ui/login/verify_last_login_screen.dart @@ -58,7 +58,8 @@ class _VerifyLastLoginScreenState extends State { @override Widget build(BuildContext context) { mobileLoginInfoListModel ??= ModalRoute.of(context)!.settings.arguments as GetMobileLoginInfoListModel; - String empName = AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr! : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn!; + // String empName = AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr! : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn!; + String empName = mobileLoginInfoListModel!.employeeName!; return Scaffold( appBar: AppBar( @@ -68,7 +69,7 @@ class _VerifyLastLoginScreenState extends State { ? LocaleKeys.viewBusinessCard.tr().toText12(color: MyColors.textMixColor, isUnderLine: true).onPress(() { showMDialog(context, child: BusinessCardDialog()); }) - : null, + : Container(), actions: [ Center( child: LocaleKeys.employeeDigitalID.tr().toText12(color: MyColors.textMixColor, isUnderLine: true).onPress(() { From fe8c6f90600166df69f192c76022b2a1380048f6 Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Sun, 6 Nov 2022 12:54:19 +0300 Subject: [PATCH 023/302] Updated Marathon Banner Design --- assets/images/marathon_banner_bg.svg | 254 ++++++++++--------- lib/classes/colors.dart | 1 + lib/ui/marathon/widgets/countdown_timer.dart | 12 +- lib/ui/marathon/widgets/marathon_banner.dart | 14 +- 4 files changed, 142 insertions(+), 139 deletions(-) diff --git a/assets/images/marathon_banner_bg.svg b/assets/images/marathon_banner_bg.svg index 9053afc..767a78c 100644 --- a/assets/images/marathon_banner_bg.svg +++ b/assets/images/marathon_banner_bg.svg @@ -28,87 +28,91 @@ - + + + + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - + - + @@ -117,121 +121,121 @@ - - + + - + - + - - - - - - - - - - + + + + + + + + + + - - + + - + - - - - + + + + - - + + - + - - + + - + - - - + + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - - + + - + - - - + + + - + - + - + @@ -239,19 +243,19 @@ - - - - - - - - + + + + + + + + - - + + - + @@ -271,10 +275,10 @@ - + - - + + @@ -302,8 +306,8 @@ - - + + diff --git a/lib/classes/colors.dart b/lib/classes/colors.dart index ad91de7..b77e7b1 100644 --- a/lib/classes/colors.dart +++ b/lib/classes/colors.dart @@ -59,4 +59,5 @@ class MyColors { static const Color greyC4Color = Color(0xffC4C4C4); static const Color grey35Color = Color(0xff535353); static const Color grey9DColor = Color(0xff9D9D9D); + static const Color darkDigitColor = Color(0xff2D2F39); } diff --git a/lib/ui/marathon/widgets/countdown_timer.dart b/lib/ui/marathon/widgets/countdown_timer.dart index f5eb92f..93db057 100644 --- a/lib/ui/marathon/widgets/countdown_timer.dart +++ b/lib/ui/marathon/widgets/countdown_timer.dart @@ -14,25 +14,23 @@ class BuildCountdownTimer extends StatelessWidget { final MarathonProvider provider; final int screenFlag; - const BuildCountdownTimer({ + BuildCountdownTimer({ Key? key, required this.provider, required this.timeToMarathon, required this.screenFlag, }) : super(key: key); - final TextStyle styleTextHome = const TextStyle( - // fontSize: 7, - color: MyColors.greyACColor, + final TextStyle styleTextHome = TextStyle( + color: MyColors.grey3AColor.withOpacity(0.45), fontStyle: FontStyle.italic, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w800, letterSpacing: -0.4, ); final TextStyle styleDigitHome = const TextStyle( height: 23 / 27, - color: MyColors.white, - // fontSize: 24, + color: MyColors.darkDigitColor, fontStyle: FontStyle.italic, letterSpacing: -1.44, fontWeight: FontWeight.bold, diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 6fcb514..10fe17d 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -46,7 +46,7 @@ class MarathonBanner extends StatelessWidget { child: Container( width: 65, height: 32, - color: MyColors.gradiantStartColor, + color: MyColors.darkDigitColor, ), ), ), @@ -80,20 +80,20 @@ class MarathonBanner extends StatelessWidget { LocaleKeys.getReadyForContest.tr(), minFontSize: 08, maxFontSize: 11, - style: const TextStyle( + style: TextStyle( fontStyle: FontStyle.italic, fontWeight: FontWeight.w600, - color: MyColors.lightGreyEFColor, + color: MyColors.grey3AColor.withOpacity(0.8), letterSpacing: -0.4, ), ), - const AutoSizeText( + AutoSizeText( "Saudi Arabia", style: TextStyle( fontStyle: FontStyle.italic, fontSize: 19, fontWeight: FontWeight.bold, - color: MyColors.lightGreyEFColor, + color: MyColors.grey3AColor.withOpacity(0.8), height: 32 / 22, ), ), @@ -142,7 +142,7 @@ class MarathonBanner extends StatelessWidget { bottom: 0, child: RotatedBox( quarterTurns: 4, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white), + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.darkDigitColor), ).paddingAll(15), ) : Positioned( @@ -150,7 +150,7 @@ class MarathonBanner extends StatelessWidget { left: 0, child: RotatedBox( quarterTurns: 2, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white), + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.darkDigitColor), ).paddingAll(15), ), ], From b2e03b26477bd2e66db8bfaf1ede05cb2a9ae8f6 Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Sun, 6 Nov 2022 14:34:12 +0300 Subject: [PATCH 024/302] Added attendance svg --- assets/images/attendance.svg | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 assets/images/attendance.svg diff --git a/assets/images/attendance.svg b/assets/images/attendance.svg new file mode 100644 index 0000000..974fba3 --- /dev/null +++ b/assets/images/attendance.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + From 034436425a8d2686c245f3933492af7969fdb794 Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Sun, 6 Nov 2022 17:18:42 +0300 Subject: [PATCH 025/302] Added success tone --- assets/audio/success_tone_android.mp3 | Bin 0 -> 21741 bytes assets/audio/success_tone_ios.caf | Bin 0 -> 254144 bytes lib/ui/dialogs/success_dialog.dart | 55 ++++++++++++++++++++++---- pubspec.yaml | 2 + 4 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 assets/audio/success_tone_android.mp3 create mode 100644 assets/audio/success_tone_ios.caf diff --git a/assets/audio/success_tone_android.mp3 b/assets/audio/success_tone_android.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b8ad93f95e2b4628ce07ba6493e9f7f96584d660 GIT binary patch literal 21741 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 z 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 literal 0 HcmV?d00001 diff --git a/lib/ui/dialogs/success_dialog.dart b/lib/ui/dialogs/success_dialog.dart index 8e1de54..5150110 100644 --- a/lib/ui/dialogs/success_dialog.dart +++ b/lib/ui/dialogs/success_dialog.dart @@ -1,11 +1,41 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; +import 'package:just_audio/just_audio.dart'; import 'package:lottie/lottie.dart'; -class SuccessDialog extends StatelessWidget { +class SuccessDialog extends StatefulWidget { bool isFromDashboard; SuccessDialog(this.isFromDashboard); + @override + State createState() => _SuccessDialogState(); +} + +class _SuccessDialogState extends State with TickerProviderStateMixin { + late AnimationController _controller; + + @override + void initState() { + _controller = AnimationController(vsync: this); + + super.initState(); + } + + Future playSuccessSound() async { + AudioPlayer player = AudioPlayer(); + String audioAsset = ""; + if (Platform.isAndroid) { + audioAsset = "assets/audio/success_tone_android.mp3"; + } else { + audioAsset = "assets/audio/success_tone_ios.caf"; + } + await player.setAsset(audioAsset); + await player.load(); + player.play(); + } + @override Widget build(BuildContext context) { double size = MediaQuery.of(context).size.width / 1.8; @@ -18,13 +48,22 @@ class SuccessDialog extends StatelessWidget { width: size, height: size, child: Card( - child: Lottie.asset('assets/lottie/lt_success.json', repeat: false, reverse: false, onLoaded: (v) { - print("calling_lottie " + v.seconds.toString()); - Future.delayed(Duration(seconds: 2)).then((value) { - Navigator.pop(context); - if (isFromDashboard) Navigator.pop(context); - }); - }), + child: Lottie.asset( + 'assets/lottie/lt_success.json', + repeat: false, + reverse: false, + controller: _controller, + onLoaded: (LottieComposition v) async { + print("calling_lottie " + v.seconds.toString()); + await playSuccessSound(); + _controller + ..duration = v.duration + ..forward().whenComplete(() async { + Navigator.pop(context); + if (widget.isFromDashboard) Navigator.pop(context); + }); + }, + ), ), ), ], diff --git a/pubspec.yaml b/pubspec.yaml index 633edd7..16c5737 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -92,6 +92,7 @@ dependencies: video_player: ^2.4.7 + just_audio: ^0.9.30 dev_dependencies: flutter_test: @@ -124,6 +125,7 @@ flutter: - assets/langs/ - assets/icons/ - assets/lottie/ + - assets/audio/ - assets/images/ - assets/images/login/ - assets/icons/chat/ From 28a882a2f6455f9636ebc15a42c2a97b2c3cfedf Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 6 Nov 2022 17:44:15 +0300 Subject: [PATCH 026/302] Updates & Fixes --- lib/ui/landing/widget/missing_swipe.dart | 8 --- .../leave_balance/leave_balance_screen.dart | 27 ++++++--- .../dynamic_listview_screen.dart | 58 ++++++++++++++++--- lib/ui/work_list/worklist_detail_screen.dart | 3 +- .../dialogs/accept_reject_input_dialog.dart | 16 ++--- 5 files changed, 78 insertions(+), 34 deletions(-) diff --git a/lib/ui/landing/widget/missing_swipe.dart b/lib/ui/landing/widget/missing_swipe.dart index ebd011a..c5bc4fb 100644 --- a/lib/ui/landing/widget/missing_swipe.dart +++ b/lib/ui/landing/widget/missing_swipe.dart @@ -1,20 +1,12 @@ -import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; -import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; -import 'package:mohem_flutter_app/models/dashboard/menus.dart'; import 'package:mohem_flutter_app/models/eit/get_eit_transaction_model.dart'; -import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/eit_provider_model.dart'; -import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart'; import 'package:mohem_flutter_app/widgets/loading_dialog.dart'; -import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; class MissingSwipe extends StatelessWidget { diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index f3a1f91..548ca99 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -62,7 +62,7 @@ class _LeaveBalanceState extends State { physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ - BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true), + BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true), 12.height, absenceTransList == null ? const SizedBox() @@ -76,14 +76,23 @@ class _LeaveBalanceState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - ItemDetailView(LocaleKeys.startDateT.tr(), absenceTransList![index].sTARTDATE ?? ""), - ItemDetailView(LocaleKeys.endDateT.tr(), absenceTransList![index].eNDDATE ?? ""), - ItemDetailView(LocaleKeys.absenceType.tr(), absenceTransList![index].aBSENCETYPE ?? ""), - ItemDetailView(LocaleKeys.absenceCategory.tr(), absenceTransList![index].aBSENCECATEGORY ?? ""), - ItemDetailView(LocaleKeys.days.tr(), absenceTransList![index].aBSENCEDAYS?.toString() ?? ""), - ItemDetailView(LocaleKeys.hours.tr(), absenceTransList![index].aBSENCEHOURS?.toString() ?? ""), - ItemDetailView(LocaleKeys.approvalStatus.tr(), absenceTransList![index].aPPROVALSTATUS ?? ""), - ItemDetailView(LocaleKeys.absenceStatus.tr(), absenceTransList![index].aBSENCESTATUS ?? ""), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.startDateT.tr(), absenceTransList![index].sTARTDATE ?? ""), + ItemDetailViewCol(LocaleKeys.endDateT.tr(), absenceTransList![index].eNDDATE ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.absenceType.tr(), absenceTransList![index].aBSENCETYPE ?? ""), + ItemDetailViewCol(LocaleKeys.absenceCategory.tr(), absenceTransList![index].aBSENCECATEGORY ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.days.tr(), absenceTransList![index].aBSENCEDAYS?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.hours.tr(), absenceTransList![index].aBSENCEHOURS?.toString() ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.approvalStatus.tr(), absenceTransList![index].aPPROVALSTATUS ?? ""), + ItemDetailViewCol(LocaleKeys.absenceStatus.tr(), absenceTransList![index].aBSENCESTATUS ?? ""), + isItLast: true, + ), ], ).objectContainerView(), separatorBuilder: (cxt, index) => 12.height, diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index 57b61d9..bdfb391 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -62,6 +62,17 @@ class _DynamicListViewScreenState extends State { late bool isTicketRequest; + List getEITWidgetsList(List? collectionTransaction) { + List itemsList = []; + + for (int t = 0; t < (collectionTransaction ?? []).length; t++) { + if (collectionTransaction![t].dISPLAYFLAG == "Y") { + itemsList.add(ItemDetailViewCol(collectionTransaction[t].sEGMENTPROMPT!, collectionTransaction[t].sEGMENTVALUEDSP ?? "")); + } + } + return itemsList; + } + @override Widget build(BuildContext context) { if (dynamicParams == null) { @@ -84,16 +95,45 @@ class _DynamicListViewScreenState extends State { shrinkWrap: true, itemBuilder: (cxt, int parentIndex) => getEITTransactionList![parentIndex].collectionTransaction!.isEmpty ? const SizedBox() - : Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - for (int t = 0; t < (getEITTransactionList![parentIndex].collectionTransaction ?? []).length; t++) - if (getEITTransactionList![parentIndex].collectionTransaction![t].dISPLAYFLAG == "Y") - ItemDetailView(getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTPROMPT!, - getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTVALUEDSP ?? ""), - ], + : GridView( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.9 / 0.75), + padding: const EdgeInsets.all(12.0), + shrinkWrap: true, + primary: false, + physics: const ScrollPhysics(), + children: getEITWidgetsList(getEITTransactionList![parentIndex].collectionTransaction), ).objectContainerView(), + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisSize: MainAxisSize.min, + // children: [ + // for (int t = 0; t < (getEITTransactionList![parentIndex].collectionTransaction ?? []).length; t++) + // if (getEITTransactionList![parentIndex].collectionTransaction![t].dISPLAYFLAG == "Y") + // // ItemDetailView(getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTPROMPT!, + // // getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTVALUEDSP ?? ""), + // // GridView( + // // gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2), + // // padding: const EdgeInsets.only(left: 21, right: 21, bottom: 21, top: 12), + // // shrinkWrap: true, + // // primary: false, + // // physics: const ScrollPhysics(), + // // children: getEITWidgetsList(getEITTransactionList![parentIndex].collectionTransaction), + // // ) + // // ItemDetailViewCol(getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTPROMPT!, + // // getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTVALUEDSP ?? ""), + // + // // GridView( + // // gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2), + // // padding: const EdgeInsets.only(left: 21, right: 21, bottom: 21, top: 12), + // // shrinkWrap: true, + // // primary: false, + // // physics: const ScrollPhysics(), + // // children: getEITWidgetsList(getEITTransactionList![parentIndex].collectionTransaction), + // // ) + // // ItemDetailView(getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTPROMPT!, + // // getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTVALUEDSP ?? ""), + // ], + // ).objectContainerView(), separatorBuilder: (cxt, index) => 12.height, itemCount: getEITTransactionList!.length)), ], diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index de7c152..4dd9a04 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -425,7 +425,8 @@ class _WorkListDetailScreenState extends State { child: DelegateSheet(title: "Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); break; case "REJECT": - performNetworkCall(context, email: "", userId: ""); + // performNetworkCall(context, email: "", userId: ""); + performAction(notificationButton.bUTTONACTION!); break; case "RETURNED": Navigator.pop(context); diff --git a/lib/widgets/dialogs/accept_reject_input_dialog.dart b/lib/widgets/dialogs/accept_reject_input_dialog.dart index db9c5d6..0008a1d 100644 --- a/lib/widgets/dialogs/accept_reject_input_dialog.dart +++ b/lib/widgets/dialogs/accept_reject_input_dialog.dart @@ -88,16 +88,18 @@ class AcceptRejectInputDialog extends StatelessWidget { ).expanded, 10.width, DefaultButton( - actionMode == "REJECTED" ? LocaleKeys.reject.tr() : LocaleKeys.ok.tr(), + (actionMode == "REJECTED" || actionMode == "REJECT") ? LocaleKeys.reject.tr() : LocaleKeys.ok.tr(), () { - if(note.isNotEmpty) { - Navigator.pop(context); - onTap(note); - } else { - Utils.showToast(LocaleKeys.pleaseEnterComments.tr()); + if (note.isEmpty) { + if (actionMode == "APPROVED" || actionMode == "APPROVE") { + Navigator.pop(context); + onTap(note); + } else { + Utils.showToast(LocaleKeys.pleaseEnterComments.tr()); + } } }, - colors: actionMode == "REJECTED" + colors: (actionMode == "REJECTED" || actionMode == "REJECT") ? const [ Color(0xffE47A7E), Color(0xffE47A7E), From b834c52b5fbbd695b5ab48501e478f089cec5963 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 7 Nov 2022 12:04:42 +0300 Subject: [PATCH 027/302] Updated Profile screen --- lib/ui/profile/profile_screen.dart | 76 +++++++++++++++++------------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/lib/ui/profile/profile_screen.dart b/lib/ui/profile/profile_screen.dart index 0bf007e..0a78873 100644 --- a/lib/ui/profile/profile_screen.dart +++ b/lib/ui/profile/profile_screen.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:io'; import 'dart:ui'; import 'package:easy_localization/easy_localization.dart'; @@ -16,6 +17,7 @@ import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/ui/profile/widgets/profile_panel.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; +import 'package:mohem_flutter_app/widgets/image_picker.dart'; class ProfileScreen extends StatefulWidget { const ProfileScreen({Key? key}) : super(key: key); @@ -28,6 +30,7 @@ class _ProfileScreenState extends State { late MemberInformationListModel memberInformationList; final ImagePicker _picker = ImagePicker(); List getEmployeeBasicDetailsList = []; + List images = []; @override void initState() { @@ -46,24 +49,25 @@ class _ProfileScreenState extends State { children: [ memberInformationList!.eMPLOYEEIMAGE != null ? Container( - height: 300, - margin: const EdgeInsets.only(top: 50), - decoration: BoxDecoration( - image: DecorationImage( - image: MemoryImage( - Utils.dataFromBase64String(memberInformationList.eMPLOYEEIMAGE!), + height: 300, + margin: const EdgeInsets.only(top: 50), + decoration: BoxDecoration( + image: DecorationImage( + image: MemoryImage( + Utils.dataFromBase64String(memberInformationList.eMPLOYEEIMAGE!), + ), + fit: BoxFit.cover), ), - fit: BoxFit.cover), - ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: Container( - color: Colors.white.withOpacity(0.0), - ), - ), - ): Container( - decoration: BoxDecoration(color: Colors.white.withOpacity(0.0)), - ), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + color: Colors.white.withOpacity(0.0), + ), + ), + ) + : Container( + decoration: BoxDecoration(color: Colors.white.withOpacity(0.0)), + ), SingleChildScrollView( scrollDirection: Axis.vertical, child: Column( @@ -83,7 +87,14 @@ class _ProfileScreenState extends State { ), InkWell( onTap: () { - startImageSheet(); + // startImageSheet(); + ImageOptions.showImageOptionsNew(context, false, (String image, File file) { + setState(() { + // images.add(image); + Navigator.of(context).pop(); + openGallery(image); + }); + }); }, child: Container( padding: const EdgeInsets.only(left: 17, right: 17, top: 8, bottom: 8), @@ -112,7 +123,8 @@ class _ProfileScreenState extends State { } void startImageSheet() { - showMyBottomSheet(context, callBackFunc: (){}, + showMyBottomSheet(context, + callBackFunc: () {}, child: Column( children: [ Container( @@ -123,14 +135,14 @@ class _ProfileScreenState extends State { )), BottomSheetItem( onTap: () { - openGallery(false); + // openGallery(false); }, title: 'Open Gallery', icon: Icons.browse_gallery_outlined, ), BottomSheetItem( onTap: () { - openGallery(true); + // openGallery(true); }, title: 'Open Camera', icon: Icons.camera, @@ -139,19 +151,17 @@ class _ProfileScreenState extends State { )); } - void openGallery(bool isCamera) async { - XFile? image = await _picker.pickImage(source: isCamera ? ImageSource.camera : ImageSource.gallery); + void openGallery(String image) async { + // XFile? image = await _picker.pickImage(source: isCamera ? ImageSource.camera : ImageSource.gallery); - if (image != null) { - String img = base64.encode(await image!.readAsBytes()); - Utils.showLoading(context); - dynamic empImageUpdteResp = await ProfileApiClient().updateEmpImage(img); - Utils.hideLoading(context); - if (empImageUpdteResp['P_RETURN_STATUS'] == 'S') { - setState(() { - memberInformationList.eMPLOYEEIMAGE = img; - }); - } + // String img = base64.encode(await image!.readAsBytes()); + Utils.showLoading(context); + dynamic empImageUpdteResp = await ProfileApiClient().updateEmpImage(image); + Utils.hideLoading(context); + if (empImageUpdteResp['P_RETURN_STATUS'] == 'S') { + setState(() { + memberInformationList.eMPLOYEEIMAGE = image; + }); } } } From c83f0c11994aa5f93259d91431fbf06ac5c89230 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Tue, 8 Nov 2022 08:13:05 +0300 Subject: [PATCH 028/302] fix issues --- lib/api/profile_api_client.dart | 2 +- lib/models/get_employee_address_model.dart | 2 +- lib/models/profile/get_address_dff_structure_list.dart | 6 +++--- .../dynamic_screens/dynamic_input_screen.dart | 10 +++++----- .../dynamic_screens/dynamic_input_address_screen.dart | 5 ++--- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index d7ceba0..210d179 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -293,7 +293,7 @@ class ProfileApiClient { "P_COUNTRY_CODE": countryCode, //"SA", "P_DESC_FLEX_CONTEXT_CODE": "SA", "P_FUNCTION_NAME": pFunctionName, - "P_ACTION": correctOrNew == 1 ? 'CORRECT' : 'NEW', + "P_ACTION": correctOrNew == 1 ? 'CORRECT' : 'CHANGE', "P_EFFECTIVE_DATE": effectiveDate, //"EITTransactionTBL": list, diff --git a/lib/models/get_employee_address_model.dart b/lib/models/get_employee_address_model.dart index 8531ced..71c5885 100644 --- a/lib/models/get_employee_address_model.dart +++ b/lib/models/get_employee_address_model.dart @@ -5,7 +5,7 @@ String? dATATYPE; String? dATEVALUE; String? dISPLAYFLAG; - Null? nUMBERVALUE; + dynamic? nUMBERVALUE; String? sEGMENTPROMPT; int? sEGMENTSEQNUM; String? sEGMENTVALUEDSP; diff --git a/lib/models/profile/get_address_dff_structure_list.dart b/lib/models/profile/get_address_dff_structure_list.dart index 786e683..61f6b5e 100644 --- a/lib/models/profile/get_address_dff_structure_list.dart +++ b/lib/models/profile/get_address_dff_structure_list.dart @@ -5,7 +5,7 @@ class GetAddressDffStructureList { String? aLPHANUMERICALLOWEDFLAG; String? aPPLICATIONCOLUMNNAME; String? cHILDSEGMENTSVS; - Null? cHILDSEGMENTSVSSplited; + dynamic? cHILDSEGMENTSVSSplited; String? dEFAULTTYPE; String? dEFAULTVALUE; String? dESCFLEXCONTEXTCODE; @@ -27,9 +27,9 @@ class GetAddressDffStructureList { String? nUMBERPRECISION; String? nUMERICMODEENABLEDFLAG; String? pARENTSEGMENTSDV; - List? pARENTSEGMENTSDVSplited; + List? pARENTSEGMENTSDVSplited; String? pARENTSEGMENTSVS; - List? pARENTSEGMENTSVSSplitedVS; + List? pARENTSEGMENTSVSSplitedVS; String? rEADONLY; String? rEQUIREDFLAG; String? sEGMENTNAME; diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index c1b8a43..0a6c9d4 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -136,7 +136,7 @@ class _DynamicInputScreenState extends State { } Future getDefaultValues(GetEITDFFStructureList structureList) async { - // try { + try { Utils.showLoading(context); for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; @@ -163,10 +163,10 @@ class _DynamicInputScreenState extends State { await Future.delayed(const Duration(seconds: 1)); Utils.hideLoading(context); setState(() {}); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } // List> calGetValueSetValuesIonicLogic(GetEITDFFStructureList structureElement) { diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart index cc8e861..ecc2426 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -266,16 +266,15 @@ class _DynamicInputScreenState extends State { if (e.fORMATTYPE == "X") { // for date format type, date format is changed tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? ""; - if (tempVar.isNotEmpty) { DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); - tempVar = DateFormat('dd/MMM/yyy').format(date); + tempVar = DateFormat('dd-MMM-yyy').format(date); if (e.aPPLICATIONCOLUMNNAME == null) { effectiveDate = tempVar; } } } else if (e.eSERVICESVS?.isNotEmpty ?? false) { - tempVar = e.getEmployeeAddressList!.vARCHAR2VALUE!; + tempVar = e.getEmployeeAddressList!.vARCHAR2VALUE ?? ""; if (e.aPPLICATIONCOLUMNNAME == null) { countryCode = tempVar; } From 965edf9141730de2a70cc75be10930ab5e49f7fc Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Tue, 8 Nov 2022 10:20:08 +0300 Subject: [PATCH 029/302] fix issues --- .../profile/dynamic_screens/dynamic_input_address_screen.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart index 6933a28..ecc2426 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -266,7 +266,6 @@ class _DynamicInputScreenState extends State { if (e.fORMATTYPE == "X") { // for date format type, date format is changed tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? ""; - if (tempVar.isNotEmpty) { DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); tempVar = DateFormat('dd-MMM-yyy').format(date); @@ -275,7 +274,7 @@ class _DynamicInputScreenState extends State { } } } else if (e.eSERVICESVS?.isNotEmpty ?? false) { - e.getEmployeeAddressList!.vARCHAR2VALUE != null ? tempVar = e.getEmployeeAddressList!.vARCHAR2VALUE! : tempVar = ""; + tempVar = e.getEmployeeAddressList!.vARCHAR2VALUE ?? ""; if (e.aPPLICATIONCOLUMNNAME == null) { countryCode = tempVar; } From a0201efbfb084e6e800b39f6af0b6b7de6d0a5dc Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Tue, 8 Nov 2022 10:24:05 +0300 Subject: [PATCH 030/302] dynamic screen updated --- .../dynamic_screens/dynamic_input_screen.dart | 259 ++++++++++-------- lib/ui/profile/add_update_family_member.dart | 171 ++++++------ lib/ui/screens/my_requests/new_request.dart | 4 +- 3 files changed, 242 insertions(+), 192 deletions(-) diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 1c97b28..01895a7 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -57,51 +57,51 @@ class _DynamicInputScreenState extends State { } void validateTransaction() async { - try { - Utils.showLoading(context); - List> values = getEitDffStructureList!.map((e) { - String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; - if (e.fORMATTYPE == "X") { - // for date format type, date format is changed - tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; - if (tempVar.isNotEmpty) { - if (!tempVar.contains("/")) { - DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); - tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); - } + /// try { + Utils.showLoading(context); + List> values = getEitDffStructureList!.map((e) { + String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + if (e.fORMATTYPE == "X") { + // for date format type, date format is changed + tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + if (tempVar.isNotEmpty) { + if (!tempVar.contains("/")) { + DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); + tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); } } - // else if (e.fORMATTYPE == "N") { - // // for date format type, date format is changed - // tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; - // print("------------------------sEGMENTNAME:${e.sEGMENTNAME}"); - // print("------------------------tempVar:$tempVar"); - // if (tempVar.isNotEmpty) { - // if (!tempVar.contains("/")) { - // DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); - // tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); - // } - // } - // } - return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); - }).toList(); - - values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_ACTION", nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: "NEW_ROW").toJson()); - values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); - values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); - - genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); - SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); - Utils.hideLoading(context); - await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, - arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); - Utils.showLoading(context); - await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); - Utils.hideLoading(context); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } + } + // else if (e.fORMATTYPE == "N") { + // // for date format type, date format is changed + // tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + // print("------------------------sEGMENTNAME:${e.sEGMENTNAME}"); + // print("------------------------tempVar:$tempVar"); + // if (tempVar.isNotEmpty) { + // if (!tempVar.contains("/")) { + // DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); + // tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); + // } + // } + // } + return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); + }).toList(); + + values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_ACTION", nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: "NEW_ROW").toJson()); + values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); + values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); + + genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); + SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); + Utils.hideLoading(context); + await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); + Utils.showLoading(context); + await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); + Utils.hideLoading(context); + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } } String dESCFLEXCONTEXTCODE = ""; @@ -119,6 +119,19 @@ class _DynamicInputScreenState extends State { sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) .toJson()) .toList(); + + // if (structureList.pARENTSEGMENTSVSSplitedVS!.isNotEmpty) { + // structureList.pARENTSEGMENTSVSSplitedVS!.forEach((element2) { + // filteredList = getEitDffStructureList?.where((element) => element.sEGMENTNAME == element2.name).toList() ?? []; + // values = filteredList + // .map((e) => GetSetValuesRequestModel( + // sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) + // .toJson()) + // .toList(); + // }); + // List filteredList2 = getEitDffStructureList?.where((element) => element.fLEXVALUESETNAME == structureList.fLEXVALUESETNAME).toList() ?? []; + // } + List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); List abc = genericResponseModel?.getEITDFFStructureList ?? []; getEitDffStructureList = abc; @@ -158,6 +171,25 @@ class _DynamicInputScreenState extends State { ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, getSetList); int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); getEitDffStructureList![index].eSERVICESDV = defaultValue; + GetEITDFFStructureList defaultValueCheck = getEitDffStructureList!.where((GetEITDFFStructureList element) => element.sEGMENTNAME == segmentId).toList().first; + + if (defaultValueCheck.cHILDSEGMENTSDVSplited!.isNotEmpty && defaultValueCheck.rEADONLY == 'Y') { + getDefaultValues(defaultValueCheck); + Utils.hideLoading(context); + + // GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); + // List> getSetList = getDefaultValuesIonicLogic(parent); + // ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, defaultValueCheck.dESCFLEXCONTEXTCODE!, defaultValueCheck.dESCFLEXNAME!, getSetList); + // int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + // getEitDffStructureList![index].eSERVICESDV = defaultValue; + } else if (defaultValueCheck.cHILDSEGMENTSVSSplited!.isNotEmpty && defaultValueCheck.rEADONLY == 'Y') { + calGetValueSetValues(defaultValueCheck); + Utils.hideLoading(context); + } + } else if (values.isNotEmpty) { + ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); + int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + getEitDffStructureList![index].eSERVICESDV = defaultValue; } } await Future.delayed(const Duration(seconds: 1)); @@ -180,79 +212,79 @@ class _DynamicInputScreenState extends State { // } List> getDefaultValuesIonicLogic(GetEITDFFStructureList structureElement) { - try { - List parentValue = structureElement.pARENTSEGMENTSVSSplitedVS ?? []; - List parentsList = structureElement.pARENTSEGMENTSDVSplited ?? []; - - List> dependenciesList = []; - String? parentVal; - bool isStandardDate = false; - bool isStandardTimeDate = false; - bool isStandardTime = false; - bool isHidden = false; - bool isReadOnlyList = false; - bool isSelectElement = false; - - // isStandardDate = this.isStandardDate(obj); - // isStandardTimeDate = this.isStandardDateTime(obj); - // isStandardTime = this.isStandardTime(obj); - if (structureElement.dISPLAYFLAG == "N") isHidden = true; - if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "Y") { - isReadOnlyList = true; - } - if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "N") { - isSelectElement = true; - } + //try { + List parentValue = structureElement.pARENTSEGMENTSVSSplitedVS ?? []; + List parentsList = structureElement.pARENTSEGMENTSDVSplited ?? []; + + List> dependenciesList = []; + String? parentVal; + bool isStandardDate = false; + bool isStandardTimeDate = false; + bool isStandardTime = false; + bool isHidden = false; + bool isReadOnlyList = false; + bool isSelectElement = false; + + // isStandardDate = this.isStandardDate(obj); + // isStandardTimeDate = this.isStandardDateTime(obj); + // isStandardTime = this.isStandardTime(obj); + if (structureElement.dISPLAYFLAG == "N") isHidden = true; + if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "Y") { + isReadOnlyList = true; + } + if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "N") { + isSelectElement = true; + } - if (parentValue.isNotEmpty && (structureElement.vALIDATIONTYPE == "D" || structureElement.vALIDATIONTYPE == "Y")) { - List parValue = getDependenciesParams(parentValue); + if (parentValue.isNotEmpty && (structureElement.vALIDATIONTYPE == "D" || structureElement.vALIDATIONTYPE == "Y")) { + List parValue = getDependenciesParams(parentValue); - if (parValue.isNotEmpty) { - parentVal = parValue.first.ID_COLUMN_NAME; - } + if (parValue.isNotEmpty) { + parentVal = parValue.first.ID_COLUMN_NAME; + } - if (parentVal == null) { - return []; - } + if (parentVal == null) { + return []; } - if (parentsList.isNotEmpty) { - if (parentValue.isNotEmpty) { - parentsList = parentsList + parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson())).toList(); - // parentsList.addAll(parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson()))); - // parentsList.concat(parentValue); - } - dependenciesList = getDependenciesParams(parentsList); + } + if (parentsList.isNotEmpty) { + if (parentValue.isNotEmpty) { + parentsList = parentsList + parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson())).toList(); + // parentsList.addAll(parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson()))); + // parentsList.concat(parentValue); } - return dependenciesList; - // for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { - // String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; - // print("segmentId:$segmentId"); - // print("segmentName:${structureList.sEGMENTNAME}"); - // GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); - // List parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? []; - // List parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? []; - // - // List filteredList = - // getEitDffStructureList!.where((outerElement) => parentDvRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList(); - // - // List> values = filteredList - // .map((e) => GetSetValuesRequestModel( - // sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) - // .toJson()) - // .toList(); - // print("values:$values"); - // - // ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); - // int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); - // getEitDffStructureList![index].eSERVICESDV = defaultValue; - // } - // Utils.hideLoading(context); - // setState(() {}); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - return []; + dependenciesList = getDependenciesParams(parentsList); } + return dependenciesList; + // for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { + // String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; + // print("segmentId:$segmentId"); + // print("segmentName:${structureList.sEGMENTNAME}"); + // GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); + // List parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? []; + // List parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? []; + // + // List filteredList = + // getEitDffStructureList!.where((outerElement) => parentDvRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList(); + // + // List> values = filteredList + // .map((e) => GetSetValuesRequestModel( + // sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) + // .toJson()) + // .toList(); + // print("values:$values"); + // + // ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); + // int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + // getEitDffStructureList![index].eSERVICESDV = defaultValue; + // } + // Utils.hideLoading(context); + // setState(() {}); + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // return []; + // } } List> getDependenciesParams(parentsList) { @@ -260,7 +292,7 @@ class _DynamicInputScreenState extends State { for (int i = 0; i < parentsList.length; i++) { for (int j = 0; j < (getEitDffStructureList?.length ?? 0); j++) { - if (getEitDffStructureList![j].sEGMENTNAME == parentsList[i].opt1) { + if (getEitDffStructureList![j].sEGMENTNAME == parentsList[i]?.name) { if (getEitDffStructureList![j].dISPLAYFLAG != "N") { if (getEitDffStructureList![j].vALIDATIONTYPE == "N") { String? idColName; @@ -455,6 +487,11 @@ class _DynamicInputScreenState extends State { model.eSERVICESDV ??= ESERVICESDV(); model.eSERVICESDV!.pIDCOLUMNNAME = text; }, + onTap: () async { + if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { + await getDefaultValues(model); + } + }, ).paddingOnly(bottom: 12); } else if (model.fORMATTYPE == "X") { String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? (getEitDffStructureList![index].fieldAnswer ?? ""); diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index 00ad7fc..528e38d 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -224,8 +224,8 @@ class _AddUpdateFamilyMemberState extends State { onTap: () async { DateTime dateValue = await _selectDate(context); //date = DateFormat('yyyy/MM/dd').format(dateValue); - date = "2022-10-23T09:17:38.653+03:00"; - // date = (DateFormat('yyyy-MM-dd').format(dateValue)+"T"+ dateTime.toString() + dateTime1.toString()); + //date = "2022-10-23T09:17:38.653+03:00"; + date = (DateFormat('yyyy-MM-dd').format(dateValue)); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; print(dateTime); print(dateTime1); @@ -288,7 +288,7 @@ class _AddUpdateFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - date = "2022-10-23T09:17:38.653+03:00"; + date = (DateFormat('yyyy-MM-dd').format(dateValue)); // date = (DateFormat('yyyy-MM-dd').format(dateValue) +"T"+ dateTime.toString() + dateTime1.toString()); // date = DateFormat('yyyy/MM/dd').format(dateValue); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; @@ -349,8 +349,8 @@ class _AddUpdateFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - date = "2022-10-23T09:17:38.653+03:00"; - // date = (DateFormat('yyyy-MM-dd').format(dateValue)+"T"+ dateTime.toString() + dateTime1.toString()); + // date = "2022-10-23T09:17:38.653+03:00"; + date = (DateFormat('yyyy-MM-dd').format(dateValue)); // date = DateFormat('yyyy/MM/dd').format(dateValue); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; setState(() {}); @@ -392,80 +392,93 @@ class _AddUpdateFamilyMemberState extends State { } void submitUpdateForm() async { - // try { - List> values1 = getBasicDetDffStructureList!.map((e) { - String? dateVal = ''; - String? vatcherVal = ''; - int? numberVal; - if (e!.fORMATTYPE == 'N') { - dateVal = null; - vatcherVal = null; - numberVal = int.parse(e.getContactDetailsList!.sEGMENTVALUEDSP??"0"); - } else if (e.fORMATTYPE == 'X') { - dateVal = e!.getContactDetailsList!.sEGMENTVALUEDSP.toString(); - vatcherVal = null; - numberVal = null; - } else { - dateVal = null; - vatcherVal = e!.getContactDetailsList!.sEGMENTVALUEDSP; - numberVal = null; - } - return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); - }).toList(); - List> values2 = getContactDffStructureList!.map((e) { - String? dateVal = ''; - String? vatcherVal = ''; - int? numberVal; - if (e!.fORMATTYPE == 'N') { - dateVal = null; - vatcherVal = null; - numberVal = int.parse(e.getContactDetailsList!.sEGMENTVALUEDSP??"0"); - } else if (e.fORMATTYPE == 'X') { - dateVal = e!.getContactDetailsList!.sEGMENTVALUEDSP; - vatcherVal = null; - numberVal = null; - } else { - dateVal = null; - numberVal = null; - vatcherVal = e!.getContactDetailsList!.sEGMENTVALUEDSP; - } - return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); - }).toList(); - List> values3 = getContactColsStructureList!.map((e) { - // String tempVar = e!.getContactDetailsList!.sEGMENTVALUEDSP ?? ""; - String? dateVal = ''; - String? vatcherVal = ''; - int? numberVal; + print("submit"); + try { + List> values1 = getBasicDetDffStructureList!.map((e) { + String? dateVal = ''; + String? varChar = ''; + int? numberVal; + if (e!.fORMATTYPE == 'N') { + dateVal = null; + varChar = null; + numberVal = int.parse(e.getContactDetailsList!.sEGMENTVALUEDSP ?? "0"); + } else if (e.fORMATTYPE == 'X') { + dateVal = e!.getContactDetailsList!.sEGMENTVALUEDSP.toString(); + varChar = null; + numberVal = null; + } else if (e.eSERVICESVS!.isNotEmpty) { + dateVal = null; + varChar = e!.getContactDetailsList!.vARCHAR2VALUE; + numberVal = null; + } else { + dateVal = null; + varChar = e!.getContactDetailsList!.sEGMENTVALUEDSP; + numberVal = null; + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: varChar).toJson(); + }).toList(); + List> values2 = getContactDffStructureList!.map((e) { + String? dateVal = ''; + String? varChar = ''; + int? numberVal; + if (e!.fORMATTYPE == 'N') { + dateVal = null; + varChar = null; + numberVal = int.parse(e.getContactDetailsList!.sEGMENTVALUEDSP ?? "0"); + } else if (e.fORMATTYPE == 'X') { + dateVal = e!.getContactDetailsList!.dATEVALUE; + varChar = null; + numberVal = null; + } else if (e.eSERVICESVS!.isNotEmpty) { + dateVal = null; + varChar = e!.getContactDetailsList!.vARCHAR2VALUE; + numberVal = null; + } else { + dateVal = null; + numberVal = null; + varChar = e!.getContactDetailsList!.sEGMENTVALUEDSP; + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: varChar).toJson(); + }).toList(); + List> values3 = getContactColsStructureList!.map((e) { + // String tempVar = e!.getContactDetailsList!.sEGMENTVALUEDSP ?? ""; + String? dateVal = ''; + dynamic? varChar1 = ''; + int? numberVal; - print("e.dATATYPE:${e?.dATATYPE}"); - if (e!.dATATYPE == 'VARCHAR2') { - dateVal = null; - numberVal = null; - vatcherVal = e.getContactDetailsList?.sEGMENTVALUEDSP ?? ""; - } else if (e.dATATYPE == 'DATE') { - dateVal = e.getContactDetailsList!.sEGMENTVALUEDSP.toString(); - print("dateVal:${dateVal ?? ""}"); - vatcherVal = null; - numberVal = null; - } else if (e.dATATYPE == 'NUMBER') { - dateVal = null; - vatcherVal = null; - numberVal = int.parse(e.getContactDetailsList!.sEGMENTVALUEDSP??"0"); - } else {} - return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal).toJson(); - }).toList(); - List> valuesFinal = [...values1, ...values2, ...values3]; - Utils.showLoading(context); - submitContactTransactionList = await ProfileApiClient().submitContactTransactionAddAndUpdate(args['actionType'], args['relationID'] ?? null, valuesFinal); - var transactionId = submitContactTransactionList!.pTRANSACTIONID; - var itemKey = submitContactTransactionList!.pITEMKEY; - Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, - arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); - setState(() {}); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + print("e.dATATYPE:${e?.dATATYPE}"); + if (e!.dATATYPE == 'VARCHAR2') { + dateVal = null; + numberVal = null; + if (e.objectValuesList != null && e.objectValuesList!.isNotEmpty) { + varChar1 = e.getContactDetailsList?.vARCHAR2VALUE ?? ""; + } else { + varChar1 = e.getContactDetailsList?.sEGMENTVALUEDSP ?? ""; + } + } else if (e.dATATYPE == 'DATE') { + dateVal = e.getContactDetailsList!.sEGMENTVALUEDSP.toString(); + varChar1 = null; + numberVal = null; + } else if (e.dATATYPE == 'NUMBER') { + dateVal = null; + varChar1 = null; + numberVal = int.parse(e.getContactDetailsList!.sEGMENTVALUEDSP ?? "0"); + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: varChar1).toJson(); + }).toList(); + List> valuesFinal = [...values1, ...values2, ...values3]; + Utils.showLoading(context); + submitContactTransactionList = await ProfileApiClient().submitContactTransactionAddAndUpdate(args['actionType'], args['relationID'] ?? null, valuesFinal); + var transactionId = submitContactTransactionList!.pTRANSACTIONID; + var itemKey = submitContactTransactionList!.pITEMKEY; + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); + setState(() {}); + } catch (ex) { + print(ex); + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } } diff --git a/lib/ui/screens/my_requests/new_request.dart b/lib/ui/screens/my_requests/new_request.dart index b476ecc..851b82f 100644 --- a/lib/ui/screens/my_requests/new_request.dart +++ b/lib/ui/screens/my_requests/new_request.dart @@ -84,9 +84,9 @@ class _NewRequestState extends State { 1.divider, DefaultButton(LocaleKeys.submit.tr(), () { // todo need to add submit method + print("hi"); // openNewRequest(); - }) - .insideContainer, + }).insideContainer, ], ), ); From 26ddc0004846a0e36c6770bc27027cd1843aac3e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 8 Nov 2022 11:09:45 +0300 Subject: [PATCH 031/302] Updates & fixes --- lib/api/worklist/worklist_api_client.dart | 10 ++++++ lib/ui/work_list/sheets/delegate_sheet.dart | 35 +++++++++++++++---- .../work_list/sheets/selected_item_sheet.dart | 29 +++++++++------ lib/ui/work_list/worklist_detail_screen.dart | 1 + .../dialogs/accept_reject_input_dialog.dart | 2 +- 5 files changed, 58 insertions(+), 19 deletions(-) diff --git a/lib/api/worklist/worklist_api_client.dart b/lib/api/worklist/worklist_api_client.dart index 1b00383..5ea1b72 100644 --- a/lib/api/worklist/worklist_api_client.dart +++ b/lib/api/worklist/worklist_api_client.dart @@ -481,6 +481,16 @@ class WorkListApiClient { }, url, postParams); } + Future?> getFavoriteReplacementWithImageNew(String selectedFavLetter) async { + String url = "${ApiConsts.erpRest}Mohemm_GetFavoriteReplacements_Images"; + Map postParams = {"ItgFilter": selectedFavLetter}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + return responseData.mohemmGetFavoriteReplacementsList; + }, url, postParams); + } + Future changeFavoriteReplacements({required String email, required String employeName, required String image, required String userName, bool isFav = false}) async { String url = "${ApiConsts.erpRest}Mohemm_ChangeFavoriteReplacements"; Map postParamsObj = { diff --git a/lib/ui/work_list/sheets/delegate_sheet.dart b/lib/ui/work_list/sheets/delegate_sheet.dart index bd3b010..6d39fc8 100644 --- a/lib/ui/work_list/sheets/delegate_sheet.dart +++ b/lib/ui/work_list/sheets/delegate_sheet.dart @@ -91,6 +91,15 @@ class _DelegateSheetState extends State { favUsersList = await WorkListApiClient().getFavoriteReplacementWithImage(selectedFavLetter ?? ""); if (isNeedLoading) Utils.hideLoading(context); setState(() {}); + fetchFavUsersListNew(isNeedLoading: false); + return null; + } + + Future fetchFavUsersListNew({bool isNeedLoading = true}) async { + if (isNeedLoading) Utils.showLoading(context); + favUsersList = await WorkListApiClient().getFavoriteReplacementWithImageNew(selectedFavLetter ?? ""); + if (isNeedLoading) Utils.hideLoading(context); + setState(() {}); return null; } @@ -195,7 +204,7 @@ class _DelegateSheetState extends State { ).onPress(() { showMyBottomSheet( context, - callBackFunc: (){}, + callBackFunc: () {}, child: SearchOptionsSheet( selectedType, onSelection: (String value) { @@ -478,12 +487,24 @@ class _DelegateSheetState extends State { }, child: Row( children: [ - CircularAvatar( - url: actionHistory.employeeImage, - height: 30, - width: 30, - isImageBase64: (actionHistory.employeeImage != null || actionHistory.employeeImage!.isNotEmpty) ? true : false, - ), + actionHistory.employeeImage != "" + ? CircularAvatar( + url: actionHistory.employeeImage, + height: 40, + width: 40, + isImageBase64: (actionHistory.employeeImage != null || actionHistory.employeeImage!.isNotEmpty) ? true : false, + ) + : ClipRRect( + borderRadius: const BorderRadius.all( + Radius.circular(50), + ), + child: Image.network( + "https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo", + fit: BoxFit.cover, + height: 40, + width: 40, + ).toShimmer(), + ), 16.width, Expanded( child: (actionHistory.employeeDisplayName ?? "").toText12(), diff --git a/lib/ui/work_list/sheets/selected_item_sheet.dart b/lib/ui/work_list/sheets/selected_item_sheet.dart index e053218..355fee6 100644 --- a/lib/ui/work_list/sheets/selected_item_sheet.dart +++ b/lib/ui/work_list/sheets/selected_item_sheet.dart @@ -133,26 +133,33 @@ class SelectedItemSheet extends StatelessWidget { return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), - color: Color(0xffF7F7F7), + color: const Color(0xffF7F7F7), border: Border.all( - color: Color(0xffefefef), + color: const Color(0xffefefef), width: 1, ), ), - padding: EdgeInsets.only(top: 16, bottom: 16, left: 21, right: 21), + padding: const EdgeInsets.only(top: 16, bottom: 16, left: 21, right: 21), child: Row( children: [ - (actionHistoryList != null && actionHistoryList!.eMPLOYEEIMAGE != null) + (isFav != null && isFav) ? CircularAvatar( - height: 30, - width: 30, - url: actionHistoryList!.eMPLOYEEIMAGE, + height: 40, + width: 40, + url: favoriteReplacements != null ? favoriteReplacements!.employeeImage : actionHistoryList!.eMPLOYEEIMAGE, isImageBase64: true, ) - : CircularAvatar( - height: 30, - width: 30, - ), + : (actionHistoryList != null && actionHistoryList!.eMPLOYEEIMAGE != null) + ? CircularAvatar( + height: 40, + width: 40, + url: actionHistoryList!.eMPLOYEEIMAGE, + isImageBase64: true, + ) + : CircularAvatar( + height: 40, + width: 40, + ), 16.width, Expanded( child: (name ?? "").toText12(), diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 4dd9a04..1d5931d 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -520,6 +520,7 @@ class _WorkListDetailScreenState extends State { } void performAction(String actionMode, {String? title}) { + print(actionMode); showDialog( context: context, builder: (cxt) => AcceptRejectInputDialog( diff --git a/lib/widgets/dialogs/accept_reject_input_dialog.dart b/lib/widgets/dialogs/accept_reject_input_dialog.dart index 0008a1d..e335453 100644 --- a/lib/widgets/dialogs/accept_reject_input_dialog.dart +++ b/lib/widgets/dialogs/accept_reject_input_dialog.dart @@ -91,7 +91,7 @@ class AcceptRejectInputDialog extends StatelessWidget { (actionMode == "REJECTED" || actionMode == "REJECT") ? LocaleKeys.reject.tr() : LocaleKeys.ok.tr(), () { if (note.isEmpty) { - if (actionMode == "APPROVED" || actionMode == "APPROVE") { + if (actionMode != "REJECTED" || actionMode != "REJECT") { Navigator.pop(context); onTap(note); } else { From 9bdb6bfb718969ec053e0e8573f6bb4a4c5d703c Mon Sep 17 00:00:00 2001 From: FaizHashmiCS22 Date: Tue, 8 Nov 2022 11:46:03 +0300 Subject: [PATCH 032/302] Updated Banner Again :D --- assets/images/marathon_banner_bg.svg | 14 +++++--------- lib/ui/marathon/widgets/countdown_timer.dart | 4 ++-- lib/ui/marathon/widgets/marathon_banner.dart | 4 ++-- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/assets/images/marathon_banner_bg.svg b/assets/images/marathon_banner_bg.svg index 767a78c..fb7159d 100644 --- a/assets/images/marathon_banner_bg.svg +++ b/assets/images/marathon_banner_bg.svg @@ -1,4 +1,4 @@ - + @@ -33,10 +33,6 @@ - - - - @@ -53,10 +49,10 @@ - + - + @@ -243,7 +239,7 @@ - + @@ -307,7 +303,7 @@ - + diff --git a/lib/ui/marathon/widgets/countdown_timer.dart b/lib/ui/marathon/widgets/countdown_timer.dart index 93db057..6ab8dba 100644 --- a/lib/ui/marathon/widgets/countdown_timer.dart +++ b/lib/ui/marathon/widgets/countdown_timer.dart @@ -22,7 +22,7 @@ class BuildCountdownTimer extends StatelessWidget { }) : super(key: key); final TextStyle styleTextHome = TextStyle( - color: MyColors.grey3AColor.withOpacity(0.45), + color: MyColors.white.withOpacity(0.45), fontStyle: FontStyle.italic, fontWeight: FontWeight.w800, letterSpacing: -0.4, @@ -30,7 +30,7 @@ class BuildCountdownTimer extends StatelessWidget { final TextStyle styleDigitHome = const TextStyle( height: 23 / 27, - color: MyColors.darkDigitColor, + color: MyColors.white, fontStyle: FontStyle.italic, letterSpacing: -1.44, fontWeight: FontWeight.bold, diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 10fe17d..5da5ed2 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -83,7 +83,7 @@ class MarathonBanner extends StatelessWidget { style: TextStyle( fontStyle: FontStyle.italic, fontWeight: FontWeight.w600, - color: MyColors.grey3AColor.withOpacity(0.8), + color: MyColors.white.withOpacity(0.83), letterSpacing: -0.4, ), ), @@ -93,7 +93,7 @@ class MarathonBanner extends StatelessWidget { fontStyle: FontStyle.italic, fontSize: 19, fontWeight: FontWeight.bold, - color: MyColors.grey3AColor.withOpacity(0.8), + color: MyColors.white.withOpacity(0.83), height: 32 / 22, ), ), From 143d0772f281a5cf99407ddbeeef3842b4f3db52 Mon Sep 17 00:00:00 2001 From: Zohaib Iqbal Kambrani <> Date: Tue, 8 Nov 2022 16:43:47 +0300 Subject: [PATCH 033/302] test commit from iMac with nothing special --- pubspec.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pubspec.yaml b/pubspec.yaml index 16c5737..257d80b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -182,3 +182,6 @@ flutter: # # For details regarding fonts from package dependencies, # see https://flutter.dev/custom-fonts/#from-packages + + +# Adding this to test the push from iMac From b9f9c31f01e5a14c5edfe7069292d40e009e57e7 Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Wed, 9 Nov 2022 12:39:08 +0300 Subject: [PATCH 034/302] lynx access issue fixed --- .../dynamic_screens/dynamic_input_screen.dart | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 0e71b09..9aafdd8 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -110,16 +110,26 @@ class _DynamicInputScreenState extends State { Future calGetValueSetValues(GetEITDFFStructureList structureList) async { try { Utils.showLoading(context); + List> values = []; String segmentId = structureList.cHILDSEGMENTSVS!; + if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!; List filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; - List> values = filteredList + + if (filteredList.isEmpty && structureList.cHILDSEGMENTSVSSplited!.isNotEmpty) { + segmentId = structureList.cHILDSEGMENTSVSSplited![0]; + filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; + } + values = filteredList .map((e) => GetSetValuesRequestModel( sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) .toJson()) .toList(); + // if (parentValue.isNotEmpty && (structureList.vALIDATIONTYPE == "F")) { + // values = getDependenciesParams(parentValue); + // } // if (structureList.pARENTSEGMENTSVSSplitedVS!.isNotEmpty) { // structureList.pARENTSEGMENTSVSSplitedVS!.forEach((element2) { // filteredList = getEitDffStructureList?.where((element) => element.sEGMENTNAME == element2.name).toList() ?? []; @@ -135,7 +145,7 @@ class _DynamicInputScreenState extends State { List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); List abc = genericResponseModel?.getEITDFFStructureList ?? []; getEitDffStructureList = abc; - int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == structureList.cHILDSEGMENTSVS); + int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); getEitDffStructureList![index].eSERVICESVS!.clear(); if (eServicesResponseModel.isNotEmpty) getEitDffStructureList![index].eSERVICESVS!.addAll(eServicesResponseModel); // getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; From 21d396b3bb968e2cb5eaa357edf3e948a7369e34 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 9 Nov 2022 14:37:17 +0300 Subject: [PATCH 035/302] Worklist updates --- lib/api/my_attendance_api_client.dart | 16 ++ lib/api/worklist/worklist_api_client.dart | 38 +++- lib/app_state/app_state.dart | 4 + lib/models/generic_response_model.dart | 18 +- lib/models/worklist/GetRFCEmployeeList.dart | 48 +++++ .../get_favorite_replacements_model.dart | 8 +- .../worklist/replacement_list_model.dart | 2 +- .../worklist/resubmit_eit_response_model.dart | 22 +++ .../dynamic_listview_screen.dart | 5 +- lib/ui/work_list/itg_detail_screen.dart | 126 ++++++++++++- .../approval_level_fragment.dart | 3 +- lib/ui/work_list/sheets/delegate_sheet.dart | 37 ++-- .../work_list/sheets/selected_item_sheet.dart | 94 ++++++++-- .../sheets/selected_itg_item_sheet.dart | 5 +- .../sheets/update_continue_sheet.dart | 131 +++++++++++++ lib/ui/work_list/worklist_detail_screen.dart | 175 ++++++++++++++++-- .../dialogs/accept_reject_input_dialog.dart | 5 +- pubspec.yaml | 1 + 18 files changed, 673 insertions(+), 65 deletions(-) create mode 100644 lib/models/worklist/GetRFCEmployeeList.dart create mode 100644 lib/models/worklist/resubmit_eit_response_model.dart create mode 100644 lib/ui/work_list/sheets/update_continue_sheet.dart diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart index eb66a8b..72d9bcb 100644 --- a/lib/api/my_attendance_api_client.dart +++ b/lib/api/my_attendance_api_client.dart @@ -9,6 +9,7 @@ import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart'; import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart'; +import 'package:mohem_flutter_app/models/worklist/resubmit_eit_response_model.dart'; class MyAttendanceApiClient { static final MyAttendanceApiClient _instance = MyAttendanceApiClient._internal(); @@ -108,6 +109,21 @@ class MyAttendanceApiClient { }, url, postParams); } + Future reSubmitEitTransaction(String itemKey, var notifID, List> list) async { + String url = "${ApiConsts.erpRest}RESUBMIT_EIT_TRANSACTION"; + Map postParams = { + "P_NOTIFICATION_ID": notifID, + "P_ITEM_KEY": itemKey, + "P_EMAIL_ADDRESS": AppState().memberInformationList!.eMPLOYEEEMAILADDRESS, + "EITTransactionTBL": list + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + return responseData.resubmitEITTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); + }, url, postParams); + } + Future> getApproversList(String pAmeTransactionType, int pTransactionId) async { String url = "${ApiConsts.erpRest}GET_APPROVERS_LIST"; Map postParams = { diff --git a/lib/api/worklist/worklist_api_client.dart b/lib/api/worklist/worklist_api_client.dart index 5ea1b72..d999d18 100644 --- a/lib/api/worklist/worklist_api_client.dart +++ b/lib/api/worklist/worklist_api_client.dart @@ -23,6 +23,7 @@ import 'package:mohem_flutter_app/models/itg_forms_models/itg_request_model.dart import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; import 'package:mohem_flutter_app/models/update_user_item_type_list.dart'; +import 'package:mohem_flutter_app/models/worklist/GetRFCEmployeeList.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart'; @@ -88,6 +89,16 @@ class WorkListApiClient { }, url, postParams); } + Future> getRFCEmployeeeList(int pNotificationID) async { + String url = "${ApiConsts.erpRest}GET_RFC_EMPLOYEE_LIST"; + Map postParams = {"P_NOTIFICATION_ID": pNotificationID, "P_PAGE_NUM": 1, "P_PAGE_LIMIT": 10}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + return responseData.getRFCEmployeeListList ?? []; + }, url, postParams); + } + Future> getActionHistory(int pNotificationID) async { String url = "${ApiConsts.erpRest}GET_ACTION_HISTORY"; Map postParams = { @@ -357,7 +368,7 @@ class WorkListApiClient { }, url, postParams); } - Future delegateITGRequest(String requestType, int taskId, int itemId, String employeeNumber,String newUserEMPId, String comments) async { + Future delegateITGRequest(String requestType, int taskId, int itemId, String employeeNumber, String newUserEMPId, String comments) async { String url = "${ApiConsts.cocRest}ITGDelegateRequest"; Map postParams = { "RequestType": requestType, @@ -373,7 +384,26 @@ class WorkListApiClient { return responseData.itgRequest; }, url, postParams); } - Future informationITGRequest(String requestType, int taskId, int itemId, String employeeNumber,String newUserEMPId, String comments) async { + + // ANSWER = 'Services/COCWS.svc/REST/ITGAnswer'; + + Future answerITGRequest(String requestType, int taskId, int itemId, String employeeNumber, String newUserEMPId, String comments) async { + String url = "${ApiConsts.cocRest}ITGAnswer"; + Map postParams = { + "RequestType": requestType, + "TaskID": taskId, + "ItemID": itemId, + "EmployeeNumber": employeeNumber, + "Comments": comments, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + ItgFormsModel responseData = ItgFormsModel.fromJson(json); + return responseData.itgRequest; + }, url, postParams); + } + + Future informationITGRequest(String requestType, int taskId, int itemId, String employeeNumber, String newUserEMPId, String comments) async { String url = "${ApiConsts.cocRest}ITGRequestInformation"; Map postParams = { "RequestType": requestType, @@ -526,7 +556,7 @@ class WorkListApiClient { }, url, postParams); } - Future submitComment({String? comment, String? email, String? userId, int? notificationId, required String apiMode}) async { + Future submitComment({String? comment, String? email, String? userId, int? notificationId, required String apiMode, int? approverIndex = null}) async { String url = "${ApiConsts.erpRest}NOTIFICATION_ACTIONS"; Map postParams = { "P_COMMENTS": comment, @@ -534,7 +564,7 @@ class WorkListApiClient { "P_EMAIL_ADDRESS": email, "P_FORWARD_TO_USER_NAME": userId, "P_NOTIFICATION_ID": notificationId, - "P_APPROVER_INDEX": null, + "P_APPROVER_INDEX": approverIndex, "RespondAttributeList": [] }; postParams.addAll(AppState().postParamsJson); diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 44de36f..9e61872 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -125,4 +125,8 @@ class AppState { set setchatUserDetails(UserAutoLoginModel details) => chatDetails = details; UserAutoLoginModel? get getchatUserDetails => chatDetails; + + String? _base64ImageEmp = "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"; + + String? get getBase64ImageEmp => _base64ImageEmp; } diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 2c8e98f..bf8d166 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -99,12 +99,14 @@ import 'package:mohem_flutter_app/models/vacation_rule/respond_attributes_list_m import 'package:mohem_flutter_app/models/vacation_rule/vr_item_types_list_model.dart'; import 'package:mohem_flutter_app/models/vacation_rule/wf_look_up_list_model.dart'; import 'package:mohem_flutter_app/models/validate_eit_transaction_list_model.dart'; +import 'package:mohem_flutter_app/models/worklist/GetRFCEmployeeList.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; +import 'package:mohem_flutter_app/models/worklist/resubmit_eit_response_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart'; import 'package:mohem_flutter_app/start_term_approval_process_list_model.dart'; @@ -224,7 +226,7 @@ class GenericResponseModel { GetPoNotificationBodyList? getPoNotificationBodyList; GetPrNotificationBodyList? getPrNotificationBodyList; List? getQuotationAnalysisList; - List? getRFCEmployeeListList; + List? getRFCEmployeeListList; List? getRespondAttributeValueList; List? getSITCollectionNotificationBodyList; List? getSITDFFStructureList; @@ -326,7 +328,7 @@ class GenericResponseModel { List? respondAttributesList; List? respondRolesList; String? resubmitAbsenceTransactionList; - String? resubmitEITTransactionList; + ResubmitEITRequestResponse? resubmitEITTransactionList; String? resubmitHrTransactionList; String? sFHGetPoNotificationBodyList; String? sFHGetPrNotificationBodyList; @@ -975,7 +977,7 @@ class GenericResponseModel { getQuotationAnalysisList!.add(GetQuotationAnalysisList.fromJson(v)); }); } - getRFCEmployeeListList = json['GetRFCEmployeeListList']; + getRespondAttributeValueList = json['GetRespondAttributeValueList']; getSITCollectionNotificationBodyList = json['GetSITCollectionNotificationBodyList']; getSITDFFStructureList = json['GetSITDFFStructureList']; @@ -986,6 +988,14 @@ class GenericResponseModel { getScheduleShiftsDetailsList!.add(GetScheduleShiftsDetailsList.fromJson(v)); }); } + + if (json['GetRFCEmployeeListList'] != null) { + getRFCEmployeeListList = []; + json['GetRFCEmployeeListList'].forEach((v) { + getRFCEmployeeListList!.add(GetRFCEmployeeList.fromJson(v)); + }); + } + getShiftTypesList = json['GetShiftTypesList']; if (json['GetStampMsNotificationBodyList'] != null) { @@ -1277,7 +1287,7 @@ class GenericResponseModel { }); } resubmitAbsenceTransactionList = json['ResubmitAbsenceTransactionList']; - resubmitEITTransactionList = json['ResubmitEITTransactionList']; + resubmitEITTransactionList = json['ResubmitEITTransactionList'] != null ? ResubmitEITRequestResponse.fromJson(json['ResubmitEITTransactionList']) : null; resubmitHrTransactionList = json['ResubmitHrTransactionList']; sFHGetPoNotificationBodyList = json['SFH_GetPoNotificationBodyList']; sFHGetPrNotificationBodyList = json['SFH_GetPrNotificationBodyList']; diff --git a/lib/models/worklist/GetRFCEmployeeList.dart b/lib/models/worklist/GetRFCEmployeeList.dart new file mode 100644 index 0000000..33881c7 --- /dev/null +++ b/lib/models/worklist/GetRFCEmployeeList.dart @@ -0,0 +1,48 @@ +class GetRFCEmployeeList { + String? aCTION; + String? eMPLOYEEDISPLAYNAME; + String? eMPLOYEEIMAGE; + int? fROMROWNUM; + int? nOOFROWS; + int? rOWNUM; + int? sEQ; + int? tOROWNUM; + String? uSERNAME; + + GetRFCEmployeeList( + {this.aCTION, + this.eMPLOYEEDISPLAYNAME, + this.eMPLOYEEIMAGE, + this.fROMROWNUM, + this.nOOFROWS, + this.rOWNUM, + this.sEQ, + this.tOROWNUM, + this.uSERNAME}); + + GetRFCEmployeeList.fromJson(Map json) { + aCTION = json['ACTION']; + eMPLOYEEDISPLAYNAME = json['EMPLOYEE_DISPLAY_NAME']; + eMPLOYEEIMAGE = json['EMPLOYEE_IMAGE']; + fROMROWNUM = json['FROM_ROW_NUM']; + nOOFROWS = json['NO_OF_ROWS']; + rOWNUM = json['ROW_NUM']; + sEQ = json['SEQ']; + tOROWNUM = json['TO_ROW_NUM']; + uSERNAME = json['USER_NAME']; + } + + Map toJson() { + Map data = new Map(); + data['ACTION'] = this.aCTION; + data['EMPLOYEE_DISPLAY_NAME'] = this.eMPLOYEEDISPLAYNAME; + data['EMPLOYEE_IMAGE'] = this.eMPLOYEEIMAGE; + data['FROM_ROW_NUM'] = this.fROMROWNUM; + data['NO_OF_ROWS'] = this.nOOFROWS; + data['ROW_NUM'] = this.rOWNUM; + data['SEQ'] = this.sEQ; + data['TO_ROW_NUM'] = this.tOROWNUM; + data['USER_NAME'] = this.uSERNAME; + return data; + } +} diff --git a/lib/models/worklist/get_favorite_replacements_model.dart b/lib/models/worklist/get_favorite_replacements_model.dart index b5cefad..feee917 100644 --- a/lib/models/worklist/get_favorite_replacements_model.dart +++ b/lib/models/worklist/get_favorite_replacements_model.dart @@ -16,10 +16,10 @@ class GetFavoriteReplacements { this.employeeImage, }); - final String? userName; - final String? employeeDisplayName; - final String? emailAddress; - final String? employeeImage; + String? userName; + String? employeeDisplayName; + String? emailAddress; + String? employeeImage; factory GetFavoriteReplacements.fromJson(Map json) => GetFavoriteReplacements( userName: json["USER_NAME"] == null ? null : json["USER_NAME"], diff --git a/lib/models/worklist/replacement_list_model.dart b/lib/models/worklist/replacement_list_model.dart index f77b991..864cbe1 100644 --- a/lib/models/worklist/replacement_list_model.dart +++ b/lib/models/worklist/replacement_list_model.dart @@ -23,7 +23,7 @@ class ReplacementList { final String? emailAddress; final String? employeeDisplayName; - final String? employeeImage; + String? employeeImage; final int? fromRowNum; bool? isFavorite; final int? noOfRows; diff --git a/lib/models/worklist/resubmit_eit_response_model.dart b/lib/models/worklist/resubmit_eit_response_model.dart new file mode 100644 index 0000000..1da90ba --- /dev/null +++ b/lib/models/worklist/resubmit_eit_response_model.dart @@ -0,0 +1,22 @@ +class ResubmitEITRequestResponse { + String? pRETURNMSG; + String? pRETURNSTATUS; + int? pTRANSACTIONID; + + ResubmitEITRequestResponse( + {this.pRETURNMSG, this.pRETURNSTATUS, this.pTRANSACTIONID}); + + ResubmitEITRequestResponse.fromJson(Map json) { + pRETURNMSG = json['P_RETURN_MSG']; + pRETURNSTATUS = json['P_RETURN_STATUS']; + pTRANSACTIONID = json['P_TRANSACTION_ID']; + } + + Map toJson() { + Map data = new Map(); + data['P_RETURN_MSG'] = this.pRETURNMSG; + data['P_RETURN_STATUS'] = this.pRETURNSTATUS; + data['P_TRANSACTION_ID'] = this.pTRANSACTIONID; + return data; + } +} diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index bdfb391..ec52304 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -6,6 +6,7 @@ import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/models/get_eit_transaction_list_model.dart'; +import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/balances_dashboard_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; @@ -16,8 +17,10 @@ class DynamicListViewParams { String uRL; String requestID; String colsURL; + bool isUpdate; + List? collectionNotificationList; - DynamicListViewParams(this.title, this.dynamicId, {this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = ''}); + DynamicListViewParams(this.title, this.dynamicId, {this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.isUpdate = false, this.collectionNotificationList}); } class DynamicListViewScreen extends StatefulWidget { diff --git a/lib/ui/work_list/itg_detail_screen.dart b/lib/ui/work_list/itg_detail_screen.dart index 84bd9bd..b215435 100644 --- a/lib/ui/work_list/itg_detail_screen.dart +++ b/lib/ui/work_list/itg_detail_screen.dart @@ -127,7 +127,10 @@ class _ItgDetailScreenState extends State { }, children: [ RequestDetailFragment(fields: itgRequest?.fieldGoups?[1].fields ?? []), - ApprovalLevelfragment(wFHistory: itgRequest?.wFHistory ?? [], voidCallback: reloadITG,), + ApprovalLevelfragment( + wFHistory: itgRequest?.wFHistory ?? [], + voidCallback: reloadITG, + ), RequestDetailFragment(fields: itgRequest?.fieldGoups?[0].fields ?? []), ], ).expanded, @@ -256,24 +259,106 @@ class _ItgDetailScreenState extends State { if (allowedActionList[i].action! == "Reject" || allowedActionList[i].action! == "Approve" || allowedActionList[i].action! == "CLOSE") { continue; } - fabs.add(myFab(allowedActionList[i].action!, "", isIconAsset: false).paddingOnly(bottom: 12).onPress(() => handleFabAction(allowedActionList[i]))); + fabs.add(myFab(getFabActionTitle(allowedActionList[i].action!), getFabActionImages(allowedActionList[i].action!)).paddingOnly(bottom: 12).onPress(() => handleFabAction(allowedActionList[i]))); } return fabs; } + String getFabActionImages(String actionTitle) { + String returnActionImage = ""; + switch (actionTitle) { + case "Delegate": + returnActionImage = "assets/images/delegate.svg"; + break; + case "RequestInformation": + returnActionImage = "assets/images/request_info.svg"; + break; + case "ReportGenerated": + returnActionImage = "assets/images/request_info.svg"; + break; + case "DataCorrected": + returnActionImage = "assets/images/request_info.svg"; + break; + case "Doable": + returnActionImage = "assets/images/request_info.svg"; + break; + case "NotDoable": + returnActionImage = "assets/images/request_info.svg"; + break; + default: + returnActionImage = "assets/images/request_info.svg"; + break; + } + + return returnActionImage; + } + + String getFabActionTitle(String title) { + String returnTitle = ""; + switch (title) { + case "Delegate": + returnTitle = "Delegate"; + break; + case "RequestInformation": + returnTitle = "Request Information"; + break; + case "ReportGenerated": + returnTitle = "Report Generated"; + break; + case "DataCorrected": + returnTitle = "Data Corrected"; + break; + case "Doable": + returnTitle = "Doable"; + break; + case "NotDoable": + returnTitle = "Not Doable"; + break; + default: + returnTitle = title; + break; + } + return returnTitle; + } + void handleFabAction(AllowedActions action) { print(action.toJson()); switch (action.action) { case "Delegate": - showMyBottomSheet(context, callBackFunc: reloadITG, - child: DelegateSheet(title: LocaleKeys.delegate.tr(), apiMode: action.action!, notificationID: null, actionHistoryList: null, wFHistory: itgRequest?.wFHistory ?? [], callBackFunc: reloadITG,)); + showMyBottomSheet(context, + callBackFunc: reloadITG, + child: DelegateSheet( + title: LocaleKeys.delegate.tr(), + apiMode: action.action!, + notificationID: null, + actionHistoryList: null, + wFHistory: itgRequest?.wFHistory ?? [], + callBackFunc: reloadITG, + )); break; case "RequestInformation": - showMyBottomSheet(context, callBackFunc: reloadITG, - child: DelegateSheet(title: LocaleKeys.request_info.tr(), apiMode: action.action!, notificationID: null, actionHistoryList: null, wFHistory: itgRequest?.wFHistory ?? [], callBackFunc: reloadITG,)); - + showMyBottomSheet(context, + callBackFunc: reloadITG, + child: DelegateSheet( + title: LocaleKeys.request_info.tr(), + apiMode: action.action!, + notificationID: null, + actionHistoryList: null, + wFHistory: itgRequest?.wFHistory ?? [], + callBackFunc: reloadITG, + )); break; + case "Doable": + performAction("APPROVED"); + break; + case "NotDoable": + performAction("REJECTED"); + break; + case "Answer": + performAction("Answer"); + break; + case "RFC": // do something else break; @@ -356,6 +441,8 @@ class _ItgDetailScreenState extends State { onTap: (note) { if (actionMode == "APPROVED") { performApproveAction(requestDetails!.requestType!, requestDetails!.iD!, requestDetails!.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", note); + } else if (actionMode == "Answer") { + performAnswerAction(requestDetails!.requestType!, requestDetails!.iD!, requestDetails!.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", note); } else { performRejectAction(requestDetails!.requestType!, requestDetails!.iD!, requestDetails!.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", note); } @@ -364,6 +451,30 @@ class _ItgDetailScreenState extends State { ); } + void performAnswerAction(String requestType, int taskId, int itemId, String employeeNumber, String comments) async { + try { + Utils.showLoading(context); + ITGRequest? itgRequest = await WorkListApiClient().answerITGRequest(requestType, taskId, itemId, employeeNumber, "", comments); + Utils.hideLoading(context); + Utils.showToast(LocaleKeys.yourChangeHasBeenSavedSuccessfully.tr()); + // Navigator.pop(context, "delegate_reload"); + AppState().requestAllList!.removeAt(AppState().itgWorkListIndex!); + if (AppState().requestAllList!.isEmpty) { + Navigator.pop(context, "delegate_reload"); + } else { + if (AppState().requestAllList!.length <= AppState().itgWorkListIndex!) { + Navigator.pop(context, "delegate_reload"); + } else { + requestDetails = null; + getDataFromState(); + } + } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + void performRejectAction(String requestType, int taskId, int itemId, String employeeNumber, String comments) async { try { Utils.showLoading(context); @@ -425,5 +536,4 @@ class _ItgDetailScreenState extends State { } } } - } diff --git a/lib/ui/work_list/itg_fragments/approval_level_fragment.dart b/lib/ui/work_list/itg_fragments/approval_level_fragment.dart index eb478af..52915ab 100644 --- a/lib/ui/work_list/itg_fragments/approval_level_fragment.dart +++ b/lib/ui/work_list/itg_fragments/approval_level_fragment.dart @@ -138,7 +138,8 @@ class ApprovalLevelfragment extends StatelessWidget { } else if (code.toLowerCase() == "approved" || code.toLowerCase() == "auto-approve" || code.toLowerCase() == "auto-approved" || - code.toLowerCase() == "doable") { + code.toLowerCase() == "doable" || + code.toLowerCase() == "answer") { return MyColors.greenColor; } else if (code.toLowerCase() == "requested information" || code.toLowerCase() == "assign" || code.toLowerCase() == "reassign") { return MyColors.orange; diff --git a/lib/ui/work_list/sheets/delegate_sheet.dart b/lib/ui/work_list/sheets/delegate_sheet.dart index 6d39fc8..2a5f453 100644 --- a/lib/ui/work_list/sheets/delegate_sheet.dart +++ b/lib/ui/work_list/sheets/delegate_sheet.dart @@ -47,6 +47,8 @@ class _DelegateSheetState extends State { List? favUsersList; List? replacementList; + bool isImageLoaded = false; + @override void initState() { super.initState(); @@ -99,7 +101,9 @@ class _DelegateSheetState extends State { if (isNeedLoading) Utils.showLoading(context); favUsersList = await WorkListApiClient().getFavoriteReplacementWithImageNew(selectedFavLetter ?? ""); if (isNeedLoading) Utils.hideLoading(context); - setState(() {}); + setState(() { + isImageLoaded = true; + }); return null; } @@ -410,6 +414,7 @@ class _DelegateSheetState extends State { apiMode: widget.apiMode, actionHistoryList: actionHistory, notificationID: widget.notificationID, + isITGRequest: widget.wFHistory != null, )); }, child: Row( @@ -483,6 +488,7 @@ class _DelegateSheetState extends State { apiMode: widget.apiMode, favoriteReplacements: actionHistory, notificationID: widget.notificationID, + isITGRequest: widget.wFHistory != null, )); }, child: Row( @@ -494,17 +500,23 @@ class _DelegateSheetState extends State { width: 40, isImageBase64: (actionHistory.employeeImage != null || actionHistory.employeeImage!.isNotEmpty) ? true : false, ) - : ClipRRect( - borderRadius: const BorderRadius.all( - Radius.circular(50), - ), - child: Image.network( - "https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo", - fit: BoxFit.cover, - height: 40, - width: 40, - ).toShimmer(), - ), + : isImageLoaded + ? CircularAvatar( + height: 40, + width: 40, + isImageBase64: false, + ) + : ClipRRect( + borderRadius: const BorderRadius.all( + Radius.circular(50), + ), + child: Image.network( + "https://play-lh.googleusercontent.com/NPo88ojmhah4HDiposucJmfQIop4z4xc8kqJK9ITO9o-yCab2zxIp7PPB_XPj2iUojo", + fit: BoxFit.cover, + height: 40, + width: 40, + ).toShimmer(), + ), 16.width, Expanded( child: (actionHistory.employeeDisplayName ?? "").toText12(), @@ -542,6 +554,7 @@ class _DelegateSheetState extends State { apiMode: widget.apiMode, replacementList: actionHistory, notificationID: widget.notificationID, + isITGRequest: widget.wFHistory != null, )); }, child: Row( diff --git a/lib/ui/work_list/sheets/selected_item_sheet.dart b/lib/ui/work_list/sheets/selected_item_sheet.dart index 355fee6..4f7f6b3 100644 --- a/lib/ui/work_list/sheets/selected_item_sheet.dart +++ b/lib/ui/work_list/sheets/selected_item_sheet.dart @@ -1,12 +1,15 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; +import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; @@ -19,8 +22,11 @@ class SelectedItemSheet extends StatelessWidget { GetActionHistoryList? actionHistoryList; GetFavoriteReplacements? favoriteReplacements; ReplacementList? replacementList; + MemberInformationListModel? memberInformationListModel; - SelectedItemSheet(this.title, {required this.apiMode, this.notificationID, this.actionHistoryList, this.favoriteReplacements, this.replacementList}); + bool isITGRequest; + + SelectedItemSheet(this.title, {required this.apiMode, this.notificationID, this.actionHistoryList, this.favoriteReplacements, this.replacementList, this.isITGRequest = false}); TextEditingController username = TextEditingController(); String comment = ""; @@ -41,9 +47,9 @@ class SelectedItemSheet extends StatelessWidget { children: [ title.toText24(isBold: true), 21.height, - if (actionHistoryList != null) showItem(actionHistoryList!.nAME, actionHistoryList!.isFavorite), - if (favoriteReplacements != null) showItem(favoriteReplacements!.employeeDisplayName, true), - if (replacementList != null) showItem(replacementList!.employeeDisplayName, replacementList!.isFavorite), + if (actionHistoryList != null) showItem(actionHistoryList!.nAME, context, actionHistoryList!.isFavorite), + if (favoriteReplacements != null) showItem(favoriteReplacements!.employeeDisplayName, context, true), + if (replacementList != null) showItem(replacementList!.employeeDisplayName, context, replacementList!.isFavorite), 14.height, InputWidget( "Enter a note", @@ -97,7 +103,7 @@ class SelectedItemSheet extends StatelessWidget { email = replacementList!.emailAddress; userId = replacementList!.userName; } - performNetworkCall(context, email: email ?? "", userId: userId ?? ""); + isITGRequest ? performITGNetworkCall(context, email: email ?? "", userId: userId ?? "") : performNetworkCall(context, email: email ?? "", userId: userId ?? ""); } else { Utils.showToast("Please enter comments"); } @@ -115,10 +121,26 @@ class SelectedItemSheet extends StatelessWidget { ); } + void getUserInformation(BuildContext context) async { + String? empID = ""; + if (actionHistoryList != null) empID = actionHistoryList!.uSERNAME; + if (favoriteReplacements != null) empID = favoriteReplacements!.userName; + if (replacementList != null) empID = replacementList!.userName; + try { + memberInformationListModel = await WorkListApiClient().getUserInformation(-999, empID!); + if (actionHistoryList != null) empID = actionHistoryList!.eMPLOYEEIMAGE = memberInformationListModel!.eMPLOYEEIMAGE ?? AppState().getBase64ImageEmp; + if (favoriteReplacements != null) empID = favoriteReplacements!.employeeImage = memberInformationListModel!.eMPLOYEEIMAGE ?? AppState().getBase64ImageEmp; + if (replacementList != null) empID = replacementList!.employeeImage = memberInformationListModel!.eMPLOYEEIMAGE ?? AppState().getBase64ImageEmp; + (context as Element).markNeedsBuild(); + } catch (ex) { + Utils.handleException(ex, context, null); + } + } + Future performNetworkCall(BuildContext context, {String? email, String? userId}) async { Utils.showLoading(context); try { - await WorkListApiClient().submitComment(comment: comment, email: email, userId: userId, notificationId: notificationID, apiMode: apiMode); + await WorkListApiClient().submitComment(comment: comment, email: email, userId: userId, notificationId: notificationID, apiMode: apiMode, approverIndex: actionHistoryList!.sEQUENCE); Utils.hideLoading(context); // Navigator.pop(context); // Navigator.pop(context); @@ -129,7 +151,44 @@ class SelectedItemSheet extends StatelessWidget { } } - Widget showItem(String? name, bool? isFav) { + Future performITGNetworkCall(BuildContext context, {String? email, String? userId}) async { + Utils.showLoading(context); + try { + var requestDetails = AppState().requestAllList![AppState().itgWorkListIndex!]; + if (apiMode == "Delegate") { + await WorkListApiClient().delegateITGRequest(requestDetails.requestType!, requestDetails.iD!, requestDetails.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", + isITGRequest ? favoriteReplacements!.userName! : actionHistoryList!.uSERNAME!, comment); + } else if (apiMode == "RequestInformation") { + await WorkListApiClient().informationITGRequest(requestDetails.requestType!, requestDetails.iD!, requestDetails.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", + isITGRequest ? favoriteReplacements!.userName! : actionHistoryList!.uSERNAME!, comment); + } else if (apiMode == "Answer") { + await WorkListApiClient().answerITGRequest(requestDetails.requestType!, requestDetails.iD!, requestDetails.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", + isITGRequest ? favoriteReplacements!.userName! : actionHistoryList!.uSERNAME!, comment); + } + Utils.hideLoading(context); + Navigator.pop(context, "delegate_reload"); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + Widget showItem(String? name, BuildContext context, bool? isFav) { + if (actionHistoryList != null) { + if (actionHistoryList!.eMPLOYEEIMAGE == null || actionHistoryList!.eMPLOYEEIMAGE == "") { + // getUserInformation(context); + } + } + if (favoriteReplacements != null) { + if (favoriteReplacements!.employeeImage == null || favoriteReplacements!.employeeImage == "") { + // getUserInformation(context); + } + } + if (replacementList != null) { + if (replacementList!.employeeImage == null || replacementList!.employeeImage == "") { + // getUserInformation(context); + } + } return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), @@ -142,13 +201,18 @@ class SelectedItemSheet extends StatelessWidget { padding: const EdgeInsets.only(top: 16, bottom: 16, left: 21, right: 21), child: Row( children: [ - (isFav != null && isFav) - ? CircularAvatar( - height: 40, - width: 40, - url: favoriteReplacements != null ? favoriteReplacements!.employeeImage : actionHistoryList!.eMPLOYEEIMAGE, - isImageBase64: true, - ) + (isFav != null && isFav && favoriteReplacements != null) + ? favoriteReplacements!.employeeImage != "" + ? CircularAvatar( + height: 40, + width: 40, + url: favoriteReplacements != null ? favoriteReplacements!.employeeImage : actionHistoryList!.eMPLOYEEIMAGE, + isImageBase64: true, + ) + : CircularAvatar( + height: 40, + width: 40, + ).toShimmer() : (actionHistoryList != null && actionHistoryList!.eMPLOYEEIMAGE != null) ? CircularAvatar( height: 40, @@ -159,7 +223,7 @@ class SelectedItemSheet extends StatelessWidget { : CircularAvatar( height: 40, width: 40, - ), + ).toShimmer(), 16.width, Expanded( child: (name ?? "").toText12(), diff --git a/lib/ui/work_list/sheets/selected_itg_item_sheet.dart b/lib/ui/work_list/sheets/selected_itg_item_sheet.dart index f44ca04..e836a07 100644 --- a/lib/ui/work_list/sheets/selected_itg_item_sheet.dart +++ b/lib/ui/work_list/sheets/selected_itg_item_sheet.dart @@ -126,10 +126,11 @@ class SelectedItgItemSheet extends StatelessWidget { } else if (apiMode == "RequestInformation") { await WorkListApiClient() .informationITGRequest(requestDetails.requestType!, requestDetails.iD!, requestDetails.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", wfHistory.employeeID!, comment); + } else if (apiMode == "Answer") { + await WorkListApiClient() + .answerITGRequest(requestDetails.requestType!, requestDetails.iD!, requestDetails.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? "", wfHistory.employeeID!, comment); } Utils.hideLoading(context); - // Navigator.pop(context); - // Navigator.pop(context); Navigator.pop(context, "delegate_reload"); } catch (ex) { Utils.hideLoading(context); diff --git a/lib/ui/work_list/sheets/update_continue_sheet.dart b/lib/ui/work_list/sheets/update_continue_sheet.dart new file mode 100644 index 0000000..169e12e --- /dev/null +++ b/lib/ui/work_list/sheets/update_continue_sheet.dart @@ -0,0 +1,131 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; +import 'package:mohem_flutter_app/models/worklist/resubmit_eit_response_model.dart'; +import 'package:mohem_flutter_app/models/worklist_response_model.dart'; +import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; +import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; +import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; + +class UpdateContinueSheet extends StatefulWidget { + WorkListResponseModel? workListData; + List? getEitCollectionNotificationBodyList; + DynamicListViewParams? dynamicParams; + + UpdateContinueSheet({this.workListData, this.getEitCollectionNotificationBodyList, this.dynamicParams, Key? key}) : super(key: key); + + @override + State createState() => _UpdateContinueSheetState(); +} + +class _UpdateContinueSheetState extends State { + double itemHeight = 0; + double itemWidth = 0; + + @override + Widget build(BuildContext context) { + var size = MediaQuery.of(context).size; + itemHeight = (size.height - kToolbarHeight - 24) / 9; + itemWidth = size.width / 2; + return Column( + children: [ + if ((widget.workListData?.sUBJECT ?? "").isNotEmpty) widget.workListData!.sUBJECT!.toText14().paddingOnly(top: 10, right: 21, left: 21, bottom: 21), + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (cxt, index) { + List dataList = widget.getEitCollectionNotificationBodyList!.isEmpty ? [] : (widget.getEitCollectionNotificationBodyList![index].collectionNotification ?? []); + dataList = dataList.where((o) => o.displayFlag == "Y").toList(); + bool isOdd = false; + if (dataList.length % 2 != 0) { + isOdd = true; + dataList.add(new CollectionNotificationEit()); + } + return GridView.builder( + itemCount: dataList.length, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) => ItemDetailViewGridItem( + index, + dataList[index].segmentPrompt, + dataList[index].segmentValueDsp, + isNeedToShowEmptyDivider: (dataList.length == index + 1) + ? isOdd + ? true + : false + : false, + ), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + childAspectRatio: (itemWidth / itemHeight), + ), + ).objectContainerView(); + }, + separatorBuilder: (cxt, index) => 12.height, + itemCount: widget.getEitCollectionNotificationBodyList!.length, + ), + Padding( + padding: const EdgeInsets.only(right: 21, left: 21, bottom: 21), + child: Row( + children: [ + DefaultButton( + LocaleKeys.edit.tr(), + () => performEditAction(), + colors: const [Color(0xffE47A7E), Color(0xffDE6D71)], + ).expanded, + 8.width, + DefaultButton( + LocaleKeys.next.tr(), + () => performNextAction(), + colors: const [Color(0xff28C884), Color(0xff1BB271)], + ).expanded, + ], + ), + ), + ], + ); + } + + void performNextAction() async { + //Resubmit EIT Transaction + try { + Utils.showLoading(context); + List> values = []; + for (GetEitCollectionNotificationBodyList element in widget.getEitCollectionNotificationBodyList!) { + for (CollectionNotificationEit collectionElement in element.collectionNotification!) { + values.add({ + "TRANSACTION_NUMBER": collectionElement.transactionNumber, + "NAME": collectionElement.applicationColumnName, + "VARCHAR2_VALUE": collectionElement.varchar2Value, + "NUMBER_VALUE": collectionElement.numberValue, + "DATE_VALUE": collectionElement.dateValue, + }); + } + } + ResubmitEITRequestResponse resubmitEITRequestResponse = await MyAttendanceApiClient().reSubmitEitTransaction(widget.workListData!.iTEMKEY!, widget.workListData!.nOTIFICATIONID, values); + Utils.hideLoading(context); + await Navigator.pushNamed( + context, + AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), resubmitEITRequestResponse.pTRANSACTIONID!, widget.workListData!.iTEMKEY!, 'eit'), + ); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + void performEditAction() { + //Open EIT Edit Screen + + Navigator.pushNamed(context, AppRoutes.addDynamicInput, arguments: widget.dynamicParams); + } +} diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 1d5931d..262ec4f 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -23,12 +23,16 @@ import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_mod import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; +import 'package:mohem_flutter_app/models/worklist/GetRFCEmployeeList.dart'; import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart'; +import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart'; +import 'package:mohem_flutter_app/ui/work_list/sheets/selected_item_sheet.dart'; +import 'package:mohem_flutter_app/ui/work_list/sheets/update_continue_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/actions_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/attachments_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_fragments/detail_fragment.dart'; @@ -65,6 +69,8 @@ class _WorkListDetailScreenState extends State { List getNotificationRespondAttributes = []; NotificationGetRespondAttributesList? notificationNoteInput; + List getRFCEmployeeList = []; + //HR Details Screen Requests List? getEitCollectionNotificationBodyList = []; List? getPhonesNotificationBodyList = []; @@ -375,57 +381,115 @@ class _WorkListDetailScreenState extends State { } fabs.add(myFab( notificationButtonsList[i].bUTTONLABEL!, - notificationButtonsList[i].bUTTONACTION == "DELEGATE" ? "assets/images/delegate.svg" : notificationButtonsList[i].bUTTONICON ?? "", - isIconAsset: notificationButtonsList[i].bUTTONACTION == "DELEGATE" ? true : false, + getActionImage(notificationButtonsList[i].bUTTONACTION!), + isIconAsset: true, ).paddingOnly(bottom: 12).onPress(() => handleFabAction(notificationButtonsList[i]))); } return fabs; } + String getActionImage(String action) { + String returnActionImage = ""; + + switch (action) { + case "DELEGATE": + returnActionImage = "assets/images/delegate.svg"; + break; + case "REQUEST_INFO": + returnActionImage = "assets/images/request_info.svg"; + break; + case "RFC": + returnActionImage = "assets/images/worklist/return.svg"; + break; + case "UPDATE_ACTION": + returnActionImage = "assets/images/worklist/update_action.svg"; + break; + } + + return returnActionImage; + } + void handleFabAction(GetNotificationButtonsList notificationButton) { print("notificationButton:${notificationButton.bUTTONACTION}"); switch (notificationButton.bUTTONACTION) { case "DELEGATE": showMyBottomSheet(context, callBackFunc: reloadWorkList, - child: DelegateSheet(title: LocaleKeys.delegate.tr(), apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); + child: DelegateSheet( + title: LocaleKeys.delegate.tr(), + apiMode: notificationButton.bUTTONACTION!, + notificationID: workListData!.nOTIFICATIONID, + actionHistoryList: actionHistoryList, + callBackFunc: reloadWorkList, + )); break; case "REQUEST_INFO": // do something else showMyBottomSheet(context, callBackFunc: reloadWorkList, - child: DelegateSheet(title: LocaleKeys.request_info.tr(), apiMode: "REQUEST_INFO", notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); + child: DelegateSheet( + title: LocaleKeys.request_info.tr(), + apiMode: "REQUEST_INFO", + notificationID: workListData!.nOTIFICATIONID, + actionHistoryList: actionHistoryList, + callBackFunc: reloadWorkList, + )); break; case "TRANSFER_INFO": // do something else showMyBottomSheet(context, callBackFunc: reloadWorkList, - child: - DelegateSheet(title: notificationButton.bUTTONLABEL!, apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); + child: DelegateSheet( + title: notificationButton.bUTTONLABEL!, + apiMode: notificationButton.bUTTONACTION!, + notificationID: workListData!.nOTIFICATIONID, + actionHistoryList: actionHistoryList, + callBackFunc: reloadWorkList, + )); break; case "ANSWER_INFO": performAction(notificationButton.bUTTONACTION!, title: notificationButton.bUTTONLABEL); break; case "RFC": - // do something else + getRFCEmployeeListFunc(); break; case "APPROVE": performAction(notificationButton.bUTTONACTION!); break; case "UPDATE_ACTION": - // do something else + showMyBottomSheet( + context, + callBackFunc: reloadWorkList, + child: UpdateContinueSheet( + workListData: workListData, + getEitCollectionNotificationBodyList: getEitCollectionNotificationBodyList, + dynamicParams: DynamicListViewParams(workListData!.sUBJECT!, workListData!.fUNCTIONNAME!, + isUpdate: true, collectionNotificationList: getEitCollectionNotificationBodyList![0].collectionNotification)), + ); + break; case "APPROVE_AND_FORWARD": showMyBottomSheet(context, callBackFunc: reloadWorkList, - child: DelegateSheet(title: "Approve and Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); + child: DelegateSheet( + title: "Approve and Forward", + apiMode: notificationButton.bUTTONACTION!, + notificationID: workListData!.nOTIFICATIONID, + actionHistoryList: actionHistoryList, + callBackFunc: reloadWorkList, + )); break; case "FORWARD": showMyBottomSheet(context, callBackFunc: reloadWorkList, - child: DelegateSheet(title: "Forward", apiMode: notificationButton.bUTTONACTION!, notificationID: workListData!.nOTIFICATIONID, actionHistoryList: actionHistoryList, callBackFunc: reloadWorkList,)); + child: DelegateSheet( + title: "Forward", + apiMode: notificationButton.bUTTONACTION!, + notificationID: workListData!.nOTIFICATIONID, + actionHistoryList: actionHistoryList, + callBackFunc: reloadWorkList, + )); break; case "REJECT": - // performNetworkCall(context, email: "", userId: ""); performAction(notificationButton.bUTTONACTION!); break; case "RETURNED": @@ -437,6 +501,28 @@ class _WorkListDetailScreenState extends State { }); } + void getRFCEmployeeListFunc() async { + try { + Utils.showLoading(context); + getRFCEmployeeList = await WorkListApiClient().getRFCEmployeeeList(workListData!.nOTIFICATIONID!); + Utils.hideLoading(context); + actionHistoryList.last.sEQUENCE = getRFCEmployeeList[0].sEQ; + showMyBottomSheet(context, + callBackFunc: reloadWorkList, + child: SelectedItemSheet( + "Comment", + apiMode: "RFC", + actionHistoryList: actionHistoryList.last, + notificationID: workListData!.nOTIFICATIONID, + isITGRequest: false, + )); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + Future performNetworkCall(BuildContext context, {String? email, String? userId}) async { showDialog( context: context, @@ -543,7 +629,7 @@ class _WorkListDetailScreenState extends State { } ], }; - if (actionMode == "APPROVED" || actionMode == "APPROVE" || actionMode == "CLOSE") { + if (actionMode == "APPROVED" || actionMode == "APPROVE" || actionMode == "CLOSE" || actionMode == "ANSWER_INFO" || actionMode == "RFC") { performNotificationAction(payload); } else if (note.isNotEmpty && (actionMode != "APPROVED" || actionMode != "APPROVE")) { performNotificationAction(payload); @@ -867,6 +953,71 @@ class _WorkListDetailScreenState extends State { } } + // Widget showUpdateContinueSheet(List list) { + // double itemHeight = 0; + // double itemWidth = 0; + // var size = MediaQuery.of(context).size; + // itemHeight = (size.height - kToolbarHeight - 24) / 9; + // itemWidth = size.width / 2; + // return Column( + // children: [ + // if ((workListData?.sUBJECT ?? "").isNotEmpty) workListData!.sUBJECT!.toText14().paddingOnly(top: 10, right: 21, left: 21, bottom: 21), + // ListView.separated( + // shrinkWrap: true, + // physics: const NeverScrollableScrollPhysics(), + // itemBuilder: (cxt, index) { + // List dataList = list.isEmpty ? [] : (list[index].collectionNotification ?? []); + // dataList = dataList.where((o) => o.displayFlag == "Y").toList(); + // bool isOdd = false; + // if (dataList.length % 2 != 0) { + // isOdd = true; + // dataList.add(new CollectionNotificationEit()); + // } + // return GridView.builder( + // itemCount: dataList.length, + // shrinkWrap: true, + // physics: const NeverScrollableScrollPhysics(), + // itemBuilder: (context, index) => ItemDetailViewGridItem( + // index, + // dataList[index].segmentPrompt, + // dataList[index].segmentValueDsp, + // isNeedToShowEmptyDivider: (dataList.length == index + 1) + // ? isOdd + // ? true + // : false + // : false, + // ), + // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + // crossAxisCount: 2, + // childAspectRatio: (itemWidth / itemHeight), + // ), + // ).objectContainerView(); + // }, + // separatorBuilder: (cxt, index) => 12.height, + // itemCount: list.length, + // ), + // Padding( + // padding: const EdgeInsets.only(right: 21, left: 21, bottom: 21), + // child: Row( + // children: [ + // DefaultButton( + // LocaleKeys.edit.tr(), + // () => performEditAction(), + // colors: const [Color(0xffE47A7E), Color(0xffDE6D71)], + // ).expanded, + // 8.width, + // DefaultButton( + // LocaleKeys.next.tr(), + // () => performNextAction(), + // colors: const [Color(0xff28C884), Color(0xff1BB271)], + // ).expanded, + // ], + // ), + // ), + // ], + // ); + // } + Widget showLoadingAnimation() { return Lottie.asset( 'assets/lottie/loading.json', diff --git a/lib/widgets/dialogs/accept_reject_input_dialog.dart b/lib/widgets/dialogs/accept_reject_input_dialog.dart index e335453..ac5db05 100644 --- a/lib/widgets/dialogs/accept_reject_input_dialog.dart +++ b/lib/widgets/dialogs/accept_reject_input_dialog.dart @@ -91,12 +91,15 @@ class AcceptRejectInputDialog extends StatelessWidget { (actionMode == "REJECTED" || actionMode == "REJECT") ? LocaleKeys.reject.tr() : LocaleKeys.ok.tr(), () { if (note.isEmpty) { - if (actionMode != "REJECTED" || actionMode != "REJECT") { + if ((actionMode != "REJECTED" && actionMode != "REJECT") && actionMode != "ANSWER_INFO" && actionMode != "RFC") { Navigator.pop(context); onTap(note); } else { Utils.showToast(LocaleKeys.pleaseEnterComments.tr()); } + } else { + Navigator.pop(context); + onTap(note); } }, colors: (actionMode == "REJECTED" || actionMode == "REJECT") diff --git a/pubspec.yaml b/pubspec.yaml index 16c5737..40fd3bc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -127,6 +127,7 @@ flutter: - assets/lottie/ - assets/audio/ - assets/images/ + - assets/images/worklist/ - assets/images/login/ - assets/icons/chat/ - assets/images/logos/ From 89812c0f726a9772b3cacd45117e9c6e885ced94 Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Wed, 9 Nov 2022 17:10:12 +0300 Subject: [PATCH 036/302] Worklist changes --- .../dynamic_screens/dynamic_input_screen.dart | 100 ++++++++++-------- .../dynamic_input_address_screen.dart | 2 +- .../sheets/update_continue_sheet.dart | 32 +++--- 3 files changed, 78 insertions(+), 56 deletions(-) diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 9aafdd8..c0fbc2b 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -48,6 +48,17 @@ class _DynamicInputScreenState extends State { descFlexConTextTitle = genericResponseModel!.pDESCFLEXCONTEXTNAME ?? ""; getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); + if (dynamicParams!.collectionNotificationList != null && dynamicParams!.collectionNotificationList!.isNotEmpty) { + getEitDffStructureList!.forEach((element) { + dynamicParams!.collectionNotificationList!.forEach((element2) { + if (element.sEGMENTNAME == element2.segmentName) { + element.fieldAnswer = element2.varchar2Value; + element.eSERVICESDV ??= ESERVICESDV(); + element.eSERVICESDV!.pIDCOLUMNNAME = element2.varchar2Value; + } + }); + }); + } Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -57,51 +68,56 @@ class _DynamicInputScreenState extends State { } void validateTransaction() async { - /// try { - Utils.showLoading(context); - List> values = getEitDffStructureList!.map((e) { - String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; - if (e.fORMATTYPE == "X") { - // for date format type, date format is changed - tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; - if (tempVar.isNotEmpty) { - if (!tempVar.contains("/")) { - DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); - tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); + try { + Utils.showLoading(context); + List> values = getEitDffStructureList!.map((e) { + String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + if (e.fORMATTYPE == "X") { + // for date format type, date format is changed + tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + if (tempVar.isNotEmpty) { + if (!tempVar.contains("/")) { + DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); + tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); + } } } + // else if (e.fORMATTYPE == "N") { + // // for date format type, date format is changed + // tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + // print("------------------------sEGMENTNAME:${e.sEGMENTNAME}"); + // print("------------------------tempVar:$tempVar"); + // if (tempVar.isNotEmpty) { + // if (!tempVar.contains("/")) { + // DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); + // tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); + // } + // } + // } + return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); + }).toList(); + + values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_ACTION", nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: "NEW_ROW").toJson()); + values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); + values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); + + genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); + if (dynamicParams!.collectionNotificationList != null && dynamicParams!.collectionNotificationList!.isNotEmpty) { + Utils.hideLoading(context); + Navigator.pop(context, values); + return; } - // else if (e.fORMATTYPE == "N") { - // // for date format type, date format is changed - // tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; - // print("------------------------sEGMENTNAME:${e.sEGMENTNAME}"); - // print("------------------------tempVar:$tempVar"); - // if (tempVar.isNotEmpty) { - // if (!tempVar.contains("/")) { - // DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); - // tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); - // } - // } - // } - return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); - }).toList(); - - values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_ACTION", nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: "NEW_ROW").toJson()); - values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); - values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); - - genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); - SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); - Utils.hideLoading(context); - await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, - arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); - Utils.showLoading(context); - await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); - Utils.hideLoading(context); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); + Utils.hideLoading(context); + await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); + Utils.showLoading(context); + await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); + Utils.hideLoading(context); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } String dESCFLEXCONTEXTCODE = ""; diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart index ecc2426..226eae9 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -88,7 +88,7 @@ class _DynamicInputScreenState extends State { getAddressDffStructureList! .insert(1, GetAddressDffStructureList(fORMATTYPE: 'C', sEGMENTPROMPT: LocaleKeys.profile_country.tr(), eSERVICESVS: eSerivceList, getEmployeeAddressList: GetEmployeeAddressList())); } - print(getAddressDffStructureList); + // genericResponseModel = await ProfileApiClient().getColStructure(dynamicParams!.dynamicId, 'GET_BASIC_DET_COLS_STRUCTURE', dynamicParams!.requestID); // getBasicDetColsStructureList = genericResponseModel?.getBasicDetColsStructureList ?? []; // getBasicDetColsStructureList?.forEach((element) { diff --git a/lib/ui/work_list/sheets/update_continue_sheet.dart b/lib/ui/work_list/sheets/update_continue_sheet.dart index 169e12e..1e4e5f3 100644 --- a/lib/ui/work_list/sheets/update_continue_sheet.dart +++ b/lib/ui/work_list/sheets/update_continue_sheet.dart @@ -29,7 +29,7 @@ class UpdateContinueSheet extends StatefulWidget { class _UpdateContinueSheetState extends State { double itemHeight = 0; double itemWidth = 0; - + List> validatedValues = []; @override Widget build(BuildContext context) { var size = MediaQuery.of(context).size; @@ -99,17 +99,22 @@ class _UpdateContinueSheetState extends State { try { Utils.showLoading(context); List> values = []; - for (GetEitCollectionNotificationBodyList element in widget.getEitCollectionNotificationBodyList!) { - for (CollectionNotificationEit collectionElement in element.collectionNotification!) { - values.add({ - "TRANSACTION_NUMBER": collectionElement.transactionNumber, - "NAME": collectionElement.applicationColumnName, - "VARCHAR2_VALUE": collectionElement.varchar2Value, - "NUMBER_VALUE": collectionElement.numberValue, - "DATE_VALUE": collectionElement.dateValue, - }); + if (validatedValues!.isNotEmpty) { + values = validatedValues; + } else { + for (GetEitCollectionNotificationBodyList element in widget.getEitCollectionNotificationBodyList!) { + for (CollectionNotificationEit collectionElement in element.collectionNotification!) { + values.add({ + "TRANSACTION_NUMBER": collectionElement.transactionNumber, + "NAME": collectionElement.applicationColumnName, + "VARCHAR2_VALUE": collectionElement.varchar2Value, + "NUMBER_VALUE": collectionElement.numberValue, + "DATE_VALUE": collectionElement.dateValue, + }); + } } } + ResubmitEITRequestResponse resubmitEITRequestResponse = await MyAttendanceApiClient().reSubmitEitTransaction(widget.workListData!.iTEMKEY!, widget.workListData!.nOTIFICATIONID, values); Utils.hideLoading(context); await Navigator.pushNamed( @@ -124,8 +129,9 @@ class _UpdateContinueSheetState extends State { } void performEditAction() { - //Open EIT Edit Screen - - Navigator.pushNamed(context, AppRoutes.addDynamicInput, arguments: widget.dynamicParams); + // ignore: avoid_annotating_with_dynamic + Navigator.pushNamed(context, AppRoutes.addDynamicInput, arguments: widget.dynamicParams).then((dynamic value) { + validatedValues = value; + }); } } From 3be279d57197c11c54237d8965a3b61435f2b52e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 9 Nov 2022 18:00:26 +0300 Subject: [PATCH 037/302] Worklist images added --- lib/ui/work_list/itg_detail_screen.dart | 18 +++++++----------- lib/ui/work_list/worklist_detail_screen.dart | 9 +++++++++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/ui/work_list/itg_detail_screen.dart b/lib/ui/work_list/itg_detail_screen.dart index b215435..0a29a72 100644 --- a/lib/ui/work_list/itg_detail_screen.dart +++ b/lib/ui/work_list/itg_detail_screen.dart @@ -274,16 +274,19 @@ class _ItgDetailScreenState extends State { returnActionImage = "assets/images/request_info.svg"; break; case "ReportGenerated": - returnActionImage = "assets/images/request_info.svg"; + returnActionImage = "assets/images/worklist/report_generated.svg"; break; case "DataCorrected": - returnActionImage = "assets/images/request_info.svg"; + returnActionImage = "assets/images/worklist/report_generated.svg"; break; case "Doable": - returnActionImage = "assets/images/request_info.svg"; + returnActionImage = "assets/images/worklist/doable.svg"; break; case "NotDoable": - returnActionImage = "assets/images/request_info.svg"; + returnActionImage = "assets/images/worklist/not_doable.svg"; + break; + case "Answer": + returnActionImage = "assets/images/worklist/answer_hr.svg"; break; default: returnActionImage = "assets/images/request_info.svg"; @@ -358,13 +361,6 @@ class _ItgDetailScreenState extends State { case "Answer": performAction("Answer"); break; - - case "RFC": - // do something else - break; - case "UPDATE_ACTION": - // do something else - break; } setState(() { showFabOptions = false; diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 262ec4f..3c05204 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -404,6 +404,15 @@ class _WorkListDetailScreenState extends State { case "UPDATE_ACTION": returnActionImage = "assets/images/worklist/update_action.svg"; break; + case "APPROVE_AND_FORWARD": + returnActionImage = "assets/images/worklist/approve_and_forward.svg"; + break; + case "FORWARD": + returnActionImage = "assets/images/worklist/forward.svg"; + break; + default: + returnActionImage = "assets/images/request_info.svg"; + break; } return returnActionImage; From 22ac89e74435f182da5fe6f1d5c1174db4e54520 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Thu, 10 Nov 2022 09:45:29 +0300 Subject: [PATCH 038/302] fix issues --- lib/classes/consts.dart | 4 +- lib/models/generic_response_model.dart | 2 +- .../attendance/add_vacation_rule_screen.dart | 2 +- .../dynamic_screens/dynamic_input_screen.dart | 37 ++++++++++--------- 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index eea2481..6276213 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + //static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 2c8e98f..cf799fd 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -1273,7 +1273,7 @@ class GenericResponseModel { if (json['RespondRolesList'] != null) { respondRolesList = []; json['RespondRolesList'].forEach((v) { - respondRolesList!.add(v); + // respondRolesList!.add(v); }); } resubmitAbsenceTransactionList = json['ResubmitAbsenceTransactionList']; diff --git a/lib/ui/attendance/add_vacation_rule_screen.dart b/lib/ui/attendance/add_vacation_rule_screen.dart index a698adc..caa1ee3 100644 --- a/lib/ui/attendance/add_vacation_rule_screen.dart +++ b/lib/ui/attendance/add_vacation_rule_screen.dart @@ -98,7 +98,7 @@ class _AddVacationRuleScreenState extends State { } void callCombineApis() async { - try { + try { Utils.showLoading(context); List results = await Future.wait([ VacationRuleApiClient().getNotificationReassignMode(), diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 519bb6c..f71e6f1 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -57,7 +57,7 @@ class _DynamicInputScreenState extends State { } void validateTransaction() async { - try { + // try { Utils.showLoading(context); List> values = getEitDffStructureList!.map((e) { String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; @@ -98,10 +98,10 @@ class _DynamicInputScreenState extends State { Utils.showLoading(context); await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); Utils.hideLoading(context); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } } String dESCFLEXCONTEXTCODE = ""; @@ -136,7 +136,7 @@ class _DynamicInputScreenState extends State { } Future getDefaultValues(GetEITDFFStructureList structureList) async { - try { + // try { Utils.showLoading(context); for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; @@ -163,10 +163,10 @@ class _DynamicInputScreenState extends State { await Future.delayed(const Duration(seconds: 1)); Utils.hideLoading(context); setState(() {}); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } } // List> calGetValueSetValuesIonicLogic(GetEITDFFStructureList structureElement) { @@ -180,7 +180,7 @@ class _DynamicInputScreenState extends State { // } List> getDefaultValuesIonicLogic(GetEITDFFStructureList structureElement) { - try { + // try { List parentValue = structureElement.pARENTSEGMENTSVSSplitedVS ?? []; List parentsList = structureElement.pARENTSEGMENTSDVSplited ?? []; @@ -248,11 +248,11 @@ class _DynamicInputScreenState extends State { // } // Utils.hideLoading(context); // setState(() {}); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - return []; - } + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // return []; + // } } List> getDependenciesParams(parentsList) { @@ -340,7 +340,7 @@ class _DynamicInputScreenState extends State { String? text = data?.pVALUECOLUMNNAME; String? val = data?.pIDCOLUMNNAME; - if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { + if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { //alert(parentsList[i].Name +" Is required"); return []; } else {} @@ -362,7 +362,8 @@ class _DynamicInputScreenState extends State { String? text = data?.pVALUECOLUMNNAME; String? val = data?.pIDCOLUMNNAME; - if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { + /// + if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { //alert(parentsList[i].Name +" Is required"); return []; } else {} From 4d0d3a980eeab4acacd10a2d97059e9b2dc83cd6 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 10 Nov 2022 10:44:15 +0300 Subject: [PATCH 039/302] Item history updated --- lib/ui/work_list/item_history_screen.dart | 48 ++++++++++++++++------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/lib/ui/work_list/item_history_screen.dart b/lib/ui/work_list/item_history_screen.dart index 6cf80ca..782e34d 100644 --- a/lib/ui/work_list/item_history_screen.dart +++ b/lib/ui/work_list/item_history_screen.dart @@ -131,21 +131,39 @@ class _ItemHistoryScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - ItemDetailView(LocaleKeys.operatingUnit.tr(), poItemHistoryList[index].oUNAME ?? ""), - ItemDetailView(LocaleKeys.poNumber.tr(), poItemHistoryList[index].pONUMBER ?? ""), - ItemDetailView(LocaleKeys.revision.tr(), poItemHistoryList[index].rEVISIONNUM?.toString() ?? ""), - ItemDetailView(LocaleKeys.creationDate.tr(), poItemHistoryList[index].cREATIONDATE ?? ""), - ItemDetailView(LocaleKeys.supplier.tr(), poItemHistoryList[index].sUPPLIER ?? ""), - ItemDetailView(LocaleKeys.buyer.tr(), poItemHistoryList[index].bUYER ?? ""), - ItemDetailView(LocaleKeys.uom.tr(), poItemHistoryList[index].uOM ?? ""), - ItemDetailView(LocaleKeys.quantityOrdered.tr(), poItemHistoryList[index].qUANTITYORDERED?.toString() ?? ""), - ItemDetailView(LocaleKeys.quantityReceived.tr(), poItemHistoryList[index].qUANTITYRECEIVED?.toString() ?? ""), - ItemDetailView(LocaleKeys.bonusQuantity.tr(), poItemHistoryList[index].bONUSQUANTITY?.toString() ?? ""), - ItemDetailView(LocaleKeys.purchasePrice.tr(), poItemHistoryList[index].pURCHASEPRICE?.toString() ?? ""), - ItemDetailView(LocaleKeys.discountPer.tr(), poItemHistoryList[index].dISCOUNTPERCENTAGE?.toString() ?? ""), - ItemDetailView(LocaleKeys.balanceQuantity.tr(), poItemHistoryList[index].bALANCEQUANTITY?.toString() ?? ""), - ItemDetailView(LocaleKeys.netPrice.tr(), poItemHistoryList[index].nETPRICE?.toString() ?? ""), - ItemDetailView(LocaleKeys.closureStatus.tr(), poItemHistoryList[index].cLOSEDCODE ?? ""), + // ItemDetailGrid( + // ItemDetailViewCol(LocaleKeys.from.tr(), workListData!.fROMUSER ?? ""), + // ItemDetailViewCol(LocaleKeys.to.tr(), workListData!.tOUSER ?? ""), + // ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.operatingUnit.tr(), poItemHistoryList[index].oUNAME ?? ""), + ItemDetailViewCol(LocaleKeys.poNumber.tr(), poItemHistoryList[index].pONUMBER ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.revision.tr(), poItemHistoryList[index].rEVISIONNUM?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.creationDate.tr(), poItemHistoryList[index].cREATIONDATE ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.supplier.tr(), poItemHistoryList[index].sUPPLIER ?? ""), + ItemDetailViewCol(LocaleKeys.buyer.tr(), poItemHistoryList[index].bUYER ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.uom.tr(), poItemHistoryList[index].uOM ?? ""), + ItemDetailViewCol(LocaleKeys.quantityOrdered.tr(), poItemHistoryList[index].qUANTITYORDERED?.toString() ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.quantityReceived.tr(), poItemHistoryList[index].qUANTITYRECEIVED?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.bonusQuantity.tr(), poItemHistoryList[index].bONUSQUANTITY?.toString() ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.purchasePrice.tr(), poItemHistoryList[index].pURCHASEPRICE?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.discountPer.tr(), poItemHistoryList[index].dISCOUNTPERCENTAGE?.toString() ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.balanceQuantity.tr(), poItemHistoryList[index].bALANCEQUANTITY?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.netPrice.tr(), poItemHistoryList[index].nETPRICE?.toString() ?? ""), + ), + ItemDetailGrid(ItemDetailViewCol(LocaleKeys.closureStatus.tr(), poItemHistoryList[index].cLOSEDCODE ?? ""), Container(), isItLast: true,) ], ).objectContainerView(), separatorBuilder: (cxt, index) => 12.height, From c22556d9b6afae97cf514ce7c63ac4674baa7484 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 10 Nov 2022 15:43:28 +0300 Subject: [PATCH 040/302] fixes --- lib/classes/consts.dart | 4 +- lib/main.dart | 6 ++ lib/ui/dialogs/success_dialog.dart | 2 +- lib/ui/landing/dashboard_screen.dart | 4 +- lib/ui/landing/widget/services_widget.dart | 90 ++++++++++++++++++- .../fragments/add_details_fragment.dart | 6 +- .../fragments/item_review_fragment.dart | 2 + pubspec.yaml | 1 + 8 files changed, 107 insertions(+), 8 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 6276213..eea2481 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - //static String baseUrl = "https://hmgwebservices.com"; // Live server + // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/main.dart b/lib/main.dart index adca4aa..a2ae0ae 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -92,6 +92,12 @@ class MyApp extends StatelessWidget { MonthYearPickerLocalizations.delegate, ); return MaterialApp( + builder: (BuildContext context, Widget? child) { + return MediaQuery( + data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), + child: child!, + ); + }, theme: AppTheme.getTheme( EasyLocalization.of(context)?.locale.languageCode == "ar", ), diff --git a/lib/ui/dialogs/success_dialog.dart b/lib/ui/dialogs/success_dialog.dart index 5150110..a5df64f 100644 --- a/lib/ui/dialogs/success_dialog.dart +++ b/lib/ui/dialogs/success_dialog.dart @@ -53,8 +53,8 @@ class _SuccessDialogState extends State with TickerProviderStateM repeat: false, reverse: false, controller: _controller, + frameRate: FrameRate(60.0), onLoaded: (LottieComposition v) async { - print("calling_lottie " + v.seconds.toString()); await playSuccessSound(); _controller ..duration = v.duration diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index d342072..b49b98b 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -256,7 +256,7 @@ class _DashboardScreenState extends State { margin: EdgeInsets.only(top: AppState().isArabic(context) ? 6 : 0), width: 45, height: 45, - padding: const EdgeInsets.only(left: 14, right: 14), + padding: const EdgeInsets.only(left: 10, right: 10), decoration: BoxDecoration( color: Color(0xff259EA4), borderRadius: BorderRadius.only( @@ -296,7 +296,7 @@ class _DashboardScreenState extends State { ), ], ).paddingOnly(left: 21, right: 21, top: 7), - MarathonBanner().paddingAll(20), + const MarathonBanner().paddingAll(20), ServicesWidget(), // 8.height, Container( diff --git a/lib/ui/landing/widget/services_widget.dart b/lib/ui/landing/widget/services_widget.dart index 0b257c5..ae24dde 100644 --- a/lib/ui/landing/widget/services_widget.dart +++ b/lib/ui/landing/widget/services_widget.dart @@ -39,7 +39,7 @@ class ServicesWidget extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, - children: [ + children: [ data.homeMenus![parentIndex].menuEntry.prompt!.toSectionHeading().paddingOnly(left: 21, right: 21), SizedBox( height: 105 + 26, @@ -69,7 +69,7 @@ class ServicesWidget extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ - SvgPicture.asset(iconT[index]), + SvgPicture.asset(AppState().isArabic(context) ? getMenuIconAr(data.homeMenus![parentIndex].menuEntiesList[index].prompt!) : getMenuIconEn(data.homeMenus![parentIndex].menuEntiesList[index].prompt!)), Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ @@ -102,6 +102,92 @@ class ServicesWidget extends StatelessWidget { ); } + String getMenuIconAr(String name) { + String returnImage = ""; + switch (name) { + case "الحضور الشهري": + returnImage = "assets/images/services_icons/monthly_attendance.svg"; + break; + case "كشف الراتب": + returnImage = "assets/images/services_icons/payslips.svg"; + break; + case "تغيير معلومات البنك": + returnImage = "assets/images/services_icons/change_bank_details.svg"; + break; + case "طلب بدل السكن مقدما": + returnImage = "assets/images/services_icons/housing_allowance.svg"; + break; + case "شهادات تعريف الموظف": + returnImage = "assets/images/services_icons/employee_certificates.svg"; + break; + case "البيانات الشخصية": + returnImage = "assets/images/personal-info.svg"; + break; + case "الحضور": + returnImage = "assets/images/services_icons/my_attendance.svg"; + break; + case "طلبات أخرى": + returnImage = "assets/images/services_icons/other_requests.svg"; + break; + case "الإجازات": + returnImage = "assets/images/services_icons/my_leaves.svg"; + break; + case "طلب تذكرة": + returnImage = "assets/images/services_icons/ticket_bal.svg"; + break; + case "قاعدة الاجازات": + returnImage = "assets/images/services_icons/vacation_rule.svg"; + break; + default: + returnImage = "assets/images/monthly_attendance.svg"; + break; + } + return returnImage; + } + + String getMenuIconEn(String name) { + String returnImage = ""; + switch (name) { + case "Monthly Attendance": + returnImage = "assets/images/services_icons/monthly_attendance.svg"; + break; + case "Payslip": + returnImage = "assets/images/services_icons/payslips.svg"; + break; + case "Change Bank Details": + returnImage = "assets/images/services_icons/change_bank_details.svg"; + break; + case "Housing Advance": + returnImage = "assets/images/services_icons/housing_allowance.svg"; + break; + case "Employee Certificate": + returnImage = "assets/images/services_icons/employee_certificates.svg"; + break; + case "Personal Information": + returnImage = "assets/images/personal-info.svg"; + break; + case "My Attendance": + returnImage = "assets/images/services_icons/my_attendance.svg"; + break; + case "Other Requests": + returnImage = "assets/images/services_icons/other_requests.svg"; + break; + case "My Leave": + returnImage = "assets/images/services_icons/my_leaves.svg"; + break; + case "Ticket Request": + returnImage = "assets/images/services_icons/ticket_bal.svg"; + break; + case "Vacation Rule": + returnImage = "assets/images/services_icons/vacation_rule.svg"; + break; + default: + returnImage = "assets/images/monthly_attendance.svg"; + break; + } + return returnImage; + } + void handleOnPress(context, GetMenuEntriesList menuEntry) { var pro = Provider.of(context, listen: false); if (menuEntry.requestType == "MONTHLY_ATTENDANCE") { diff --git a/lib/ui/screens/items_for_sale/fragments/add_details_fragment.dart b/lib/ui/screens/items_for_sale/fragments/add_details_fragment.dart index b2791ec..f0f2c62 100644 --- a/lib/ui/screens/items_for_sale/fragments/add_details_fragment.dart +++ b/lib/ui/screens/items_for_sale/fragments/add_details_fragment.dart @@ -25,8 +25,9 @@ class AddItemDetailsFragment extends StatefulWidget { final Function changePageViewIndex; final GetSaleCategoriesList selectedSaleCategory; static late ItemReviewModel itemReviewModel; + static late bool isUpdate; - const AddItemDetailsFragment({Key? key, required this.changePageViewIndex, required this.selectedSaleCategory}) : super(key: key); + AddItemDetailsFragment({Key? key, required this.changePageViewIndex, required this.selectedSaleCategory}) : super(key: key); @override State createState() => _AddItemDetailsFragmentState(); @@ -246,6 +247,7 @@ class _AddItemDetailsFragmentState extends State { String details = await Utils.getStringFromPrefs(SharedPrefsConsts.editItemForSale); if(details.isNotEmpty) { var body = json.decode(details); + AddItemDetailsFragment.isUpdate = true; GetRegionsList selectedRegionAd = GetRegionsList(); @@ -268,6 +270,8 @@ class _AddItemDetailsFragmentState extends State { AddItemDetailsFragment.itemReviewModel = itemReviewModel; SelectCategoryFragment.selectedSaleCategory = selectedSaleCategoryAd; + } else { + AddItemDetailsFragment.isUpdate = false; } } diff --git a/lib/ui/screens/items_for_sale/fragments/item_review_fragment.dart b/lib/ui/screens/items_for_sale/fragments/item_review_fragment.dart index 0b02658..190460e 100644 --- a/lib/ui/screens/items_for_sale/fragments/item_review_fragment.dart +++ b/lib/ui/screens/items_for_sale/fragments/item_review_fragment.dart @@ -26,11 +26,13 @@ class ItemReviewFragment extends StatefulWidget { class _ItemReviewFragmentState extends State { ItemReviewModel? itemReviewModel; + late bool isUpdate; @override void initState() { itemReviewModel = AddItemDetailsFragment.itemReviewModel; itemReviewModel!.selectedSaleCategory = SelectCategoryFragment.selectedSaleCategory; + isUpdate = AddItemDetailsFragment.isUpdate; super.initState(); } diff --git a/pubspec.yaml b/pubspec.yaml index bba295d..9fb50ac 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -128,6 +128,7 @@ flutter: - assets/audio/ - assets/images/ - assets/images/worklist/ + - assets/images/services_icons/ - assets/images/login/ - assets/icons/chat/ - assets/images/logos/ From 8ba3dcf43bf1f35b6e734811bc3790919e0a6862 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 10 Nov 2022 16:00:55 +0300 Subject: [PATCH 041/302] Chat Fixes & Favorite Api Implementation --- assets/icons/chat/doc.svg | 54 ++ assets/icons/chat/ppt.svg | 51 ++ assets/icons/chat/txt.svg | 51 ++ assets/icons/chat/xls.svg | 53 ++ assets/icons/chat/zip.svg | 51 ++ lib/api/chat/chat_provider_model.dart | 461 +++++++++++++++--- lib/classes/colors.dart | 1 + lib/classes/consts.dart | 9 +- lib/extensions/string_extensions.dart | 2 +- ...t => get_single_user_chat_list_model.dart} | 77 ++- ...e_user_favotire_unfavorite_chat_model.dart | 53 ++ lib/ui/chat/chat_bubble.dart | 85 ++-- lib/ui/chat/chat_detailed_screen.dart | 306 +++++++++--- lib/ui/chat/chat_home.dart | 121 +++-- .../search_employee_bottom_sheet.dart | 88 +++- lib/widgets/image_picker.dart | 9 +- pubspec.yaml | 4 + 17 files changed, 1251 insertions(+), 225 deletions(-) create mode 100644 assets/icons/chat/doc.svg create mode 100644 assets/icons/chat/ppt.svg create mode 100644 assets/icons/chat/txt.svg create mode 100644 assets/icons/chat/xls.svg create mode 100644 assets/icons/chat/zip.svg rename lib/models/chat/{get_single_user_chat_list_Model.dart => get_single_user_chat_list_model.dart} (58%) create mode 100644 lib/models/chat/make_user_favotire_unfavorite_chat_model.dart diff --git a/assets/icons/chat/doc.svg b/assets/icons/chat/doc.svg new file mode 100644 index 0000000..1f678df --- /dev/null +++ b/assets/icons/chat/doc.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/chat/ppt.svg b/assets/icons/chat/ppt.svg new file mode 100644 index 0000000..5134010 --- /dev/null +++ b/assets/icons/chat/ppt.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/chat/txt.svg b/assets/icons/chat/txt.svg new file mode 100644 index 0000000..bbaf693 --- /dev/null +++ b/assets/icons/chat/txt.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/chat/xls.svg b/assets/icons/chat/xls.svg new file mode 100644 index 0000000..325f974 --- /dev/null +++ b/assets/icons/chat/xls.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/chat/zip.svg b/assets/icons/chat/zip.svg new file mode 100644 index 0000000..9aaaf6b --- /dev/null +++ b/assets/icons/chat/zip.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index bcb748c..b3f37ab 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -1,8 +1,9 @@ import 'dart:convert'; - +import 'dart:io'; +import 'dart:math'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; -import 'package:fluttertoast/fluttertoast.dart'; import 'package:http/http.dart'; import 'package:logging/logging.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; @@ -10,11 +11,14 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; -import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_Model.dart'; +import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as login; -import 'package:shared_preferences/shared_preferences.dart'; +import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; +import 'package:mohem_flutter_app/widgets/image_picker.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:signalr_netcore/signalr_client.dart'; import 'package:logger/logger.dart' as L; +import 'package:uuid/uuid.dart'; class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List userChatHistory = []; @@ -22,8 +26,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { late HubConnection hubConnection; L.Logger logger = L.Logger(); TextEditingController message = TextEditingController(); - ScrollController scrollController = ScrollController(); bool isLoading = true; + bool isChatScreenActive = false; + late File selectedFile; + bool isFileSelected = false; + String sFileType = ""; + bool isMsgReply = false; + List repliedMsg = []; + int paginationVal = 0; Future getUserAutoLoginToken() async { String userName = AppState().memberInformationList!.eMPLOYEEEMAILADDRESS!.split("@").first.toString(); @@ -40,9 +50,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { token: AppState().chatDetails!.response!.token, ); return searchUserJsonModel(response.body); - logger.d(response.body); - isLoading = false; - notifyListeners(); } List searchUserJsonModel(String str) => List.from(json.decode(str).map((x) => ChatUser.fromJson(x))); @@ -52,25 +59,52 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatRecentUrl}", token: AppState().chatDetails!.response!.token, ); + + logger.d(AppState().chatDetails!.response!.token); ChatUserModel recentChat = userToList(response.body); + + Response favRes = await ApiClient().getJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatFavoriteUsers}${AppState().chatDetails!.response!.id}", + token: AppState().chatDetails!.response!.token, + ); + print("============================== Fav Response ====================================="); + ChatUserModel favUsersList = userToList(favRes.body); + for (var user in recentChat.response!) { + for (var favUser in favUsersList.response!) { + logger.d(favUser.isFav); + if (user.id == favUser.id) { + user.isFav = favUser.isFav; + } + } + } + pChatHistory = recentChat.response; searchedChats = pChatHistory; isLoading = false; notifyListeners(); } - void getSingleUserChatHistory({required String senderUID, required int receiverUID, required String pagination}) async { + void getSingleUserChatHistory({required String senderUID, required int receiverUID, required bool loadMore}) async { isLoading = true; + if (!loadMore) paginationVal = 0; + logger.d(paginationVal); + isChatScreenActive = true; Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$pagination", + "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal", token: AppState().chatDetails!.response!.token, ); - logger.d(response.statusCode); - print(response.body); + + logger.d(response.body); if (response.statusCode == 204) { - userChatHistory = []; + if (!loadMore) userChatHistory = []; + Utils.showToast("No More Data To Load"); } else { - userChatHistory = getSingleUserChatModel(response.body); + if (loadMore) { + List temp = getSingleUserChatModel(response.body); + userChatHistory.insertAll(0, temp); + } else { + userChatHistory = getSingleUserChatModel(response.body); + } } isLoading = false; notifyListeners(); @@ -80,6 +114,23 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ChatUserModel userToList(String str) => ChatUserModel.fromJson(json.decode(str)); + Future uploadAttachments(String userId, File file) async { + dynamic result; + dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatMediaImageUploadUrl}')); + request.fields.addAll({'userId': userId, 'fileSource': '1'}); + request.files.add(await MultipartFile.fromPath('files', file.path)); + request.headers.addAll({'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}'}); + try { + StreamedResponse response = await request.send(); + if (response.statusCode == 200) { + result = jsonDecode(await response.stream.bytesToString()); + } else { + result = []; + } + } catch (e) {} + return result; + } + Future buildHubConnection() async { HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); hubConnection = await HubConnectionBuilder() @@ -113,7 +164,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { hubConnection.on("OnUserTypingAsync", onUserTyping); // hubConnection.on("OnUserCountAsync", userCountAsync); // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); - // hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); + hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); } else { hubConnection.on("OnUpdateUserStatusAsync", changeStatus); @@ -219,7 +270,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } userChatHistory.add(data.first); notifyListeners(); - scrollDown(); + logger.d(isChatScreenActive); + // if (isChatScreenActive) scrollDown(); } void onUserTyping(List? parameters) { @@ -228,7 +280,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { for (ChatUser user in searchedChats!) { if (user.id == parameters![1] && parameters[0] == true) { user.isTyping = parameters[0] as bool?; - Future.delayed( const Duration(seconds: 2), () { @@ -241,12 +292,122 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } - void sendChatMessage(String chatMessage, int targetUserId, String targetUserName) async { - if (chatMessage == null || chatMessage.isEmpty) { - return; + int getFileType(String value) { + switch (value) { + case ".pdf": + return 1; + case ".png": + return 3; + case ".txt": + return 5; + case ".jpg": + return 12; + case ".jpeg": + return 4; + case ".xls": + return 7; + case ".xlsx": + return 7; + case ".doc": + return 6; + case ".docx": + return 6; + case ".ppt": + return 8; + case ".pptx": + return 8; + case ".zip": + return 2; + case ".rar": + return 2; + default: + return 0; } + } - var contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); + String getFileTypeDescription(String value) { + switch (value) { + case ".pdf": + return "application/pdf"; + case ".png": + return "image/png"; + case ".txt": + return "text/plain"; + case ".jpg": + return "image/jpg"; + case ".jpeg": + return "image/jpeg"; + case ".ppt": + return "application/vnd.openxmlformats-officedocument.presentationml.presentation"; + case ".pptx": + return "application/vnd.openxmlformats-officedocument.presentationml.presentation"; + case ".doc": + return "application/vnd.openxmlformats-officedocument.wordprocessingm"; + case ".docx": + return "application/vnd.openxmlformats-officedocument.wordprocessingm"; + case ".xls": + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + case ".xlsx": + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + case ".zip": + return "application/octet-stream"; + case ".rar": + return "application/octet-stream"; + default: + return ""; + } + } + + // void scrollDown() { + // scrollController.animateTo( + // scrollController.position.maxScrollExtent + 100, + // curve: Curves.easeOut, + // duration: const Duration(milliseconds: 300), + // ); + // notifyListeners(); + // } + + Future sendChatToServer( + {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { + Uuid uuid = const Uuid(); + SingleUserChatModel data = SingleUserChatModel( + chatEventId: chatEventId, + chatSource: 1, + contant: message.text, + contantNo: uuid.v4(), + conversationId: uuid.v4(), + createdDate: DateTime.now(), + currentUserId: AppState().chatDetails!.response!.id, + currentUserName: AppState().chatDetails!.response!.userName, + targetUserId: targetUserId, + targetUserName: targetUserName, + isReplied: false, + fileTypeId: fileTypeId, + userChatReplyResponse: isReply ? UserChatReplyResponse.fromJson(repliedMsg.first.toJson()) : null, + fileTypeResponse: isAttachment + ? FileTypeResponse( + fileTypeId: fileTypeId, + fileTypeName: getFileType(getFileExtension(selectedFile.path).toString()), + fileKind: getFileExtension(selectedFile.path), + fileName: selectedFile.path.split("/").last, + fileTypeDescription: getFileTypeDescription(getFileExtension(selectedFile.path).toString()), + ) + : null, + ); + String chatData = + '{"contant":"${message.text}","contantNo":"${uuid.v4()}","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"${uuid.v4()}"}'; + await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); + userChatHistory.add(data); + isFileSelected = false; + isMsgReply = false; + sFileType = ""; + message.clear(); + notifyListeners(); + // scrollDown(); + } + + void sendChatMessage(int targetUserId, String targetUserName) async { + dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { searchedChats!.add( ChatUser( @@ -254,51 +415,233 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { userName: targetUserName, ), ); + notifyListeners(); + } + if (!isFileSelected && !isMsgReply) { + logger.d("Normal Text Message"); + if (message.text == null || message.text.isEmpty) { + return; + } + sendChatToServer(chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: false, chatReplyId: null, isReply: false); + } + if (isFileSelected && !isMsgReply) { + logger.d("Normal Attachment Message"); + dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); + String? ext = getFileExtension(selectedFile.path); + sendChatToServer(chatEventId: 2, fileTypeId: getFileType(ext.toString()), targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: true, chatReplyId: null, isReply: false); + } + if (!isFileSelected && isMsgReply) { + logger.d("Normal Text Message With Reply"); + if (message.text == null || message.text.isEmpty) { + return; + } + sendChatToServer( + chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, chatReplyId: repliedMsg.first.userChatHistoryId, isAttachment: false, isReply: true); +//chatReplyId + } + if (isFileSelected && isMsgReply) { + logger.d("Attachment Message With Reply"); + logger.d(repliedMsg.first.userChatHistoryId); + dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); + String? ext = getFileExtension(selectedFile.path); + sendChatToServer( + chatEventId: 2, + fileTypeId: getFileType(ext.toString()), + targetUserId: targetUserId, + targetUserName: targetUserName, + isAttachment: true, + chatReplyId: repliedMsg.first.userChatHistoryId, + isReply: true); } - String chatData = - '{"contant":"$chatMessage","contantNo":"8a129295-36d7-7185-5d34-cc4eec7bcba4","chatEventId":1,"fileTypeId":null,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"conversationId":"715f8b13-96ee-cd36-cb07-5a982a219982"}'; - await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); - userChatHistory.add( - SingleUserChatModel( - chatEventId: 1, - chatSource: 1, - contant: chatMessage, - contantNo: "8a129295-36d7-7185-5d34-cc4eec7bcba4", - conversationId: "715f8b13-96ee-cd36-cb07-5a982a219982", - createdDate: DateTime.now(), - currentUserId: AppState().chatDetails!.response!.id, - currentUserName: AppState().chatDetails!.response!.userName, - targetUserId: targetUserId, - targetUserName: targetUserName, - ), - ); - message.clear(); + // dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); + // if (contain.isEmpty) { + // searchedChats!.add( + // ChatUser( + // id: targetUserId, + // userName: targetUserName, + // ), + // ); + // notifyListeners(); + // } + // Uuid uuid = const Uuid(); + // dynamic fileID = fileUploadResponse.isEmpty ? null : getFileType(chatMessage); + // SingleUserChatModel data = SingleUserChatModel( + // chatEventId: fileUploadResponse.isEmpty ? 1 : 2, + // chatSource: 1, + // contant: chatMessage, + // contantNo: uuid.v4(), + // conversationId: uuid.v4(), + // createdDate: DateTime.now(), + // currentUserId: AppState().chatDetails!.response!.id, + // currentUserName: AppState().chatDetails!.response!.userName, + // targetUserId: targetUserId, + // targetUserName: targetUserName, + // fileTypeId: fileID, + // isReplied: false, + // // fileTypeResponse: FileTypeResponse( + // // fileTypeId: 0, + // // fileTypeDescription: fileUploadResponse.isEmpty ? null : fileUploadResponse.first["filePath"], + // // fileName: fileUploadResponse.isEmpty ? null : fileUploadResponse.first["filePath"], + // // fileKind: "image", + // // fileTypeName: fileUploadResponse.isEmpty ? null : fileUploadResponse.first["filePath"].toString().split(".").last), + // ); + // + // String chatData = + // '{"contant":"$chatMessage","contantNo":"${uuid.v4()}","chatEventId":${fileUploadResponse.isEmpty ? 1 : 2},"fileTypeId": $fileID,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"conversationId":"${uuid.v4()}"}'; + // await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); + // userChatHistory.add(data); + // message.clear(); + // notifyListeners(); + // scrollDown(); + } + + void scrollListener() { + if (userChatHistory.length < paginationVal) { + print("Get New Data"); + } + } + + void selectImageToUpload(BuildContext context) { + ImageOptions.showImageOptionsNew(context, true, (String image, File file) async { + if (checkFileSize(file.path)) { + selectedFile = file; + isFileSelected = true; + sFileType = getFileExtension(file.path)!; + message.text = file.path.split("/").last; + Navigator.of(context).pop(); + } else { + Utils.showToast("Max 1 mb size is allowed to upload"); + } + //Utils.showLoading(context); + notifyListeners(); + //Utils.hideLoading(context); + // Utils.showLoading(context); + // await m.uploadAttachments(AppState().chatDetails!.response!.id.toString(), file).then((value) { + // if (value == null) { + // m.logger.d("Returned EMPTY"); + // } else { + // m.sendChatMessage(value.isEmpty ? m.message.text : value.first["filePath"], userDetails["targetUser"].id, userDetails["targetUser"].userName, value); + // } + // }); + // Utils.hideLoading(context); + }); + } + + void removeAttachment() { + isFileSelected = false; + sFileType = ""; + message.text = ''; notifyListeners(); - scrollDown(); } - void scrollDown() { - scrollController.animateTo( - scrollController.position.maxScrollExtent + 100, - curve: Curves.easeOut, - duration: const Duration(milliseconds: 300), - ); + String? getFileExtension(String fileName) { + try { + return "." + fileName.split('.').last; + } catch (e) { + return null; + } + } + + bool checkFileSize(String path) { + int fileSizeLimit = 1024; + File f = File(path); + double fileSizeInKB = f.lengthSync() / 1024; + double fileSizeInMB = fileSizeInKB / 1024; + if (fileSizeInKB > fileSizeLimit) { + return false; + } else { + return true; + } + } + + String getType(String type) { + switch (type) { + case ".pdf": + return "assets/images/pdf.svg"; + case ".png": + return "assets/images/png.svg"; + case ".txt": + return "assets/icons/chat/txt.svg"; + case ".jpg": + return "assets/images/jpg.svg"; + case ".jpeg": + return "assets/images/jpg.svg"; + case ".xls": + return "assets/icons/chat/xls.svg"; + case ".xlsx": + return "assets/icons/chat/xls.svg"; + case ".doc": + return "assets/icons/chat/doc.svg"; + case ".docx": + return "assets/icons/chat/doc.svg"; + case ".ppt": + return "assets/icons/chat/ppt.svg"; + case ".pptx": + return "assets/icons/chat/ppt.svg"; + case ".zip": + return "assets/icons/chat/zip.svg"; + case ".rar": + return "assets/icons/chat/zip.svg"; + default: + return "assets/images/thumb.svg"; + } + } + + void chatReply(SingleUserChatModel data) { + repliedMsg = []; + data.isReplied = true; + isMsgReply = true; + repliedMsg.add(data); + notifyListeners(); + } + + void closeMe() { + repliedMsg = []; + isMsgReply = false; + notifyListeners(); + } + + String dateFormte(DateTime data) { + DateFormat f = new DateFormat('hh:mm a dd MMM yyyy'); + f.format(data); + return f.format(data); + } + + Future favoriteUser({required int userID, required int targetUserID}) async { + Response response = + await ApiClient().postJsonForResponse("${ApiConsts.chatServerBaseApiUrl}FavUser/addFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token); + fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); + if (favoriteChatUser.response != null) { + for (var user in searchedChats!) { + if (user.id == favoriteChatUser.response!.targetUserId!) { + user.isFav = favoriteChatUser.response!.isFav; + } + } + } notifyListeners(); } -// void _scrollListener() { -// if (scrollController.position.extentAfter.toInt() <= 0 && canCallApi) { -// if (userChatHistory.length < _ayatTangheemTypeMapped.totalItemsCount) { -// currentPageNo++; -// if (widget.tangheemQuery == null) { -// getTangheemData(); -// } else { -// getTangheemDataByKeyword(); -// } -// } -// canCallApi = false; -// } -// } + Future unFavoriteUser({required int userID, required int targetUserID}) async { + Response response = await ApiClient() + .postJsonForResponse("${ApiConsts.chatServerBaseApiUrl}FavUser/deleteFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token); + fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); + if (favoriteChatUser.response != null) { + for (var user in searchedChats!) { + if (user.id == favoriteChatUser.response!.targetUserId!) { + user.isFav = favoriteChatUser.response!.isFav; + } + } + } + notifyListeners(); + } + void clearSelections() { + isChatScreenActive = false; + paginationVal = 0; + message.text = ''; + isFileSelected = false; + repliedMsg = []; + sFileType = ""; + } } diff --git a/lib/classes/colors.dart b/lib/classes/colors.dart index e670bbc..5e390c7 100644 --- a/lib/classes/colors.dart +++ b/lib/classes/colors.dart @@ -58,4 +58,5 @@ class MyColors { static const Color greyC4Color = Color(0xffC4C4C4); static const Color grey35Color = Color(0xff535353); static const Color grey9DColor = Color(0xff9D9D9D); + static const Color grey71Color = Color(0xff717171); } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index e82c30a..c98d136 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -16,7 +16,12 @@ class ApiConsts { static String chatSearchMember = "user/getUserWithStatusAndFavAsync/"; static String chatRecentUrl = "UserChatHistory/getchathistorybyuserid"; //For a Mem static String chatSingleUserHistoryUrl = "UserChatHistory/GetUserChatHistory"; + static String chatMediaImageUploadUrl = "shared/upload"; + static String chatFavoriteUsers = "FavUser/getFavUserById/"; + //https://apiderichat.hmg.com/api/FavUser/getFavUserById/42062 +//https://apiderichat.hmg.com/api/shared/upload // 42062 is CurrentUserID and 36745 is targetUserID and 0 is For Pagination + // static String chatSearchMember = "https://apiderichat.hmg.com/api/user/getUserWithStatusAndFavAsync/aamir.muhammad/36239"; } diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 37f41ae..9af8f2b 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -18,7 +18,7 @@ extension EmailValidator on String { Widget toText10({Color? color, bool isBold = false, int? maxlines, FontStyle? fontStyle}) => Text( this, - //maxLines: maxlines, + maxLines: maxlines, style: TextStyle(fontSize: 10, fontStyle: fontStyle ?? FontStyle.normal, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.4), ); diff --git a/lib/models/chat/get_single_user_chat_list_Model.dart b/lib/models/chat/get_single_user_chat_list_model.dart similarity index 58% rename from lib/models/chat/get_single_user_chat_list_Model.dart rename to lib/models/chat/get_single_user_chat_list_model.dart index 0e3cb22..6a35f0e 100644 --- a/lib/models/chat/get_single_user_chat_list_Model.dart +++ b/lib/models/chat/get_single_user_chat_list_model.dart @@ -1,3 +1,9 @@ +import 'dart:convert'; + +List singleUserChatModelFromJson(String str) => List.from(json.decode(str).map((x) => SingleUserChatModel.fromJson(x))); + +String singleUserChatModelToJson(List data) => json.encode(List.from(data.map((x) => x.toJson()))); + class SingleUserChatModel { SingleUserChatModel({ this.userChatHistoryId, @@ -19,6 +25,7 @@ class SingleUserChatModel { this.conversationId, this.fileTypeResponse, this.userChatReplyResponse, + this.isReplied, }); int? userChatHistoryId; @@ -29,17 +36,18 @@ class SingleUserChatModel { String? currentUserName; int? targetUserId; String? targetUserName; - dynamic encryptedTargetUserId; - dynamic encryptedTargetUserName; + String? encryptedTargetUserId; + String? encryptedTargetUserName; int? chatEventId; - dynamic fileTypeId; + dynamic? fileTypeId; bool? isSeen; bool? isDelivered; DateTime? createdDate; int? chatSource; String? conversationId; FileTypeResponse? fileTypeResponse; - dynamic userChatReplyResponse; + UserChatReplyResponse? userChatReplyResponse; + bool? isReplied; factory SingleUserChatModel.fromJson(Map json) => SingleUserChatModel( userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], @@ -50,8 +58,8 @@ class SingleUserChatModel { currentUserName: json["currentUserName"] == null ? null : json["currentUserName"], targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], targetUserName: json["targetUserName"] == null ? null : json["targetUserName"], - encryptedTargetUserId: json["encryptedTargetUserId"], - encryptedTargetUserName: json["encryptedTargetUserName"], + encryptedTargetUserId: json["encryptedTargetUserId"] == null ? null : json["encryptedTargetUserId"], + encryptedTargetUserName: json["encryptedTargetUserName"] == null ? null : json["encryptedTargetUserName"], chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], fileTypeId: json["fileTypeId"], isSeen: json["isSeen"] == null ? null : json["isSeen"], @@ -60,7 +68,8 @@ class SingleUserChatModel { chatSource: json["chatSource"] == null ? null : json["chatSource"], conversationId: json["conversationId"] == null ? null : json["conversationId"], fileTypeResponse: json["fileTypeResponse"] == null ? null : FileTypeResponse.fromJson(json["fileTypeResponse"]), - userChatReplyResponse: json["userChatReplyResponse"], + userChatReplyResponse: json["userChatReplyResponse"] == null ? null : UserChatReplyResponse.fromJson(json["userChatReplyResponse"]), + isReplied: false, ); Map toJson() => { @@ -72,8 +81,8 @@ class SingleUserChatModel { "currentUserName": currentUserName == null ? null : currentUserName, "targetUserId": targetUserId == null ? null : targetUserId, "targetUserName": targetUserName == null ? null : targetUserName, - "encryptedTargetUserId": encryptedTargetUserId, - "encryptedTargetUserName": encryptedTargetUserName, + "encryptedTargetUserId": encryptedTargetUserId == null ? null : encryptedTargetUserId, + "encryptedTargetUserName": encryptedTargetUserName == null ? null : encryptedTargetUserName, "chatEventId": chatEventId == null ? null : chatEventId, "fileTypeId": fileTypeId, "isSeen": isSeen == null ? null : isSeen, @@ -82,7 +91,7 @@ class SingleUserChatModel { "chatSource": chatSource == null ? null : chatSource, "conversationId": conversationId == null ? null : conversationId, "fileTypeResponse": fileTypeResponse == null ? null : fileTypeResponse!.toJson(), - "userChatReplyResponse": userChatReplyResponse, + "userChatReplyResponse": userChatReplyResponse == null ? null : userChatReplyResponse!.toJson(), }; } @@ -117,3 +126,51 @@ class FileTypeResponse { "fileName": fileName, }; } + +class UserChatReplyResponse { + UserChatReplyResponse({ + this.userChatHistoryId, + this.chatEventId, + this.contant, + this.contantNo, + this.fileTypeId, + this.createdDate, + this.targetUserId, + this.targetUserName, + this.fileTypeResponse, + }); + + int? userChatHistoryId; + int? chatEventId; + String? contant; + String? contantNo; + dynamic? fileTypeId; + DateTime? createdDate; + int? targetUserId; + String? targetUserName; + FileTypeResponse? fileTypeResponse; + + factory UserChatReplyResponse.fromJson(Map json) => UserChatReplyResponse( + userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], + chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], + contant: json["contant"] == null ? null : json["contant"], + contantNo: json["contantNo"] == null ? null : json["contantNo"], + fileTypeId: json["fileTypeId"], + createdDate: json["createdDate"] == null ? null : DateTime.parse(json["createdDate"]), + targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], + targetUserName: json["targetUserName"] == null ? null : json["targetUserName"], + fileTypeResponse: json["fileTypeResponse"] == null ? null : FileTypeResponse.fromJson(json["fileTypeResponse"]), + ); + + Map toJson() => { + "userChatHistoryId": userChatHistoryId == null ? null : userChatHistoryId, + "chatEventId": chatEventId == null ? null : chatEventId, + "contant": contant == null ? null : contant, + "contantNo": contantNo == null ? null : contantNo, + "fileTypeId": fileTypeId, + "createdDate": createdDate == null ? null : createdDate!.toIso8601String(), + "targetUserId": targetUserId == null ? null : targetUserId, + "targetUserName": targetUserName == null ? null : targetUserName, + "fileTypeResponse": fileTypeResponse == null ? null : fileTypeResponse!.toJson(), + }; +} diff --git a/lib/models/chat/make_user_favotire_unfavorite_chat_model.dart b/lib/models/chat/make_user_favotire_unfavorite_chat_model.dart new file mode 100644 index 0000000..64eb6b1 --- /dev/null +++ b/lib/models/chat/make_user_favotire_unfavorite_chat_model.dart @@ -0,0 +1,53 @@ +// To parse this JSON data, do +// +// final favoriteChatUser = favoriteChatUserFromJson(jsonString); + +import 'dart:convert'; + +class FavoriteChatUser { + FavoriteChatUser({ + this.response, + this.errorResponses, + }); + + Response? response; + dynamic? errorResponses; + + factory FavoriteChatUser.fromRawJson(String str) => FavoriteChatUser.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory FavoriteChatUser.fromJson(Map json) => FavoriteChatUser( + response: json["response"] == null ? null : Response.fromJson(json["response"]), + errorResponses: json["errorResponses"], + ); + + Map toJson() => { + "response": response == null ? null : response!.toJson(), + "errorResponses": errorResponses, + }; +} + +class Response { + Response({ + this.targetUserId, + this.isFav, + }); + + int? targetUserId; + bool? isFav; + + factory Response.fromRawJson(String str) => Response.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory Response.fromJson(Map json) => Response( + targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], + isFav: json["isFav"] == null ? null : json["isFav"], + ); + + Map toJson() => { + "targetUserId": targetUserId == null ? null : targetUserId, + "isFav": isFav == null ? null : isFav, + }; +} diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 74d2e2b..1e8aec4 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -2,82 +2,105 @@ import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:sizer/sizer.dart'; class ChatBubble extends StatelessWidget { const ChatBubble( {Key? key, required this.text, + required this.replyText, required this.isCurrentUser, required this.isSeen, required this.isDelivered, - required this.dateTime}) + required this.dateTime, + required this.isReplied, + required this.userName}) : super(key: key); final String text; + final String replyText; final bool isCurrentUser; final bool isSeen; final bool isDelivered; final String dateTime; + final bool isReplied; + final String userName; @override Widget build(BuildContext context) { return Padding( - // asymmetric padding - padding: EdgeInsets.fromLTRB( - isCurrentUser ? 64.0 : 16.0, - 4, - isCurrentUser ? 16.0 : 64.0, - 4, - ), + // padding: EdgeInsets.zero, + padding: EdgeInsets.only(left: isCurrentUser ? 110 : 20, right: isCurrentUser ? 20 : 110, bottom: 9), + child: Align( - // align the child within the container alignment: isCurrentUser ? Alignment.centerRight : Alignment.centerLeft, child: DecoratedBox( - // chat bubble decoration decoration: BoxDecoration( color: Colors.white, gradient: isCurrentUser ? null - : LinearGradient( + : const LinearGradient( transform: GradientRotation(.46), begin: Alignment.topRight, end: Alignment.bottomLeft, - colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, - ]), + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], + ), borderRadius: BorderRadius.circular(10), ), child: Padding( - padding: const EdgeInsets.all(12), + padding: EdgeInsets.only(top: isReplied ? 8 : 5, right:8, left: 8, bottom: 5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - text.toText12( - color: - isCurrentUser ? MyColors.grey57Color : MyColors.white), - 8.height, + if (isReplied) + ClipRRect( + borderRadius: BorderRadius.circular(5.0), + child: Container( + decoration: BoxDecoration( + border: Border( + left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), + ), + color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), + ), + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (userName).toText12(color: MyColors.gradiantStartColor, isBold: false).paddingOnly(right: 5, top: 5, bottom: 0, left: 5), + replyText + .toText10(color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), isBold: false, maxlines: 4) + .paddingOnly(right: 5, top: 5, bottom: 8, left: 5), + ], + ), + ), + ], + ), + ), + ), + if (isReplied) 8.height, + text.toText12(color: isCurrentUser ? MyColors.grey57Color : MyColors.white), + Row( crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, children: [ - dateTime.toText12( - color: isCurrentUser - ? MyColors.grey41Color.withOpacity(.5) - : Colors.white.withOpacity(0.7)), + dateTime.toText12(color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : Colors.white.withOpacity(0.7)), if (isCurrentUser) 5.width, if (isCurrentUser) Icon( - isDelivered - ? Icons.done_all - : Icons.done_all, - color: isSeen - ? MyColors.textMixColor - : MyColors.grey9DColor, + isDelivered ? Icons.done_all : Icons.done_all, + color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor, size: 14, - ) + ), ], ), + ], ), ), diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 5f2fa97..d2d3598 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,4 +1,6 @@ import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -6,27 +8,53 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/widgets/image_picker.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; +import 'package:pull_to_refresh/pull_to_refresh.dart'; +import 'package:sizer/sizer.dart'; +import 'package:swipe_to/swipe_to.dart'; class ChatDetailScreen extends StatelessWidget { + ChatDetailScreen({Key? key}) : super(key: key); dynamic userDetails; late ChatProviderModel data; + ScrollController scrollController = ScrollController(); + RefreshController _refreshController = RefreshController(initialRefresh: false); - ChatDetailScreen({Key? key}) : super(key: key); + void onRefresh() async { + print("Refresh Triggered"); + await Future.delayed(Duration(milliseconds: 1000)); + if (userDetails != null) { + data.paginationVal = data.paginationVal + 10; + data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true); + } + _refreshController.refreshCompleted(); + } @override Widget build(BuildContext context) { - userDetails = ModalRoute - .of(context)! - .settings - .arguments; + userDetails = ModalRoute.of(context)!.settings.arguments; data = Provider.of(context, listen: false); - data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, pagination: "0"); - Timer(const Duration(seconds: 1), () => data.scrollDown()); + if (userDetails != null) data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: false); + // + // if (userDetails != null) { + // scrollController.addListener(() { + // if (scrollController.position.minScrollExtent == scrollController.offset) { + // data.paginationVal++; + // data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true); + // } + // }); + // } + return Scaffold( backgroundColor: const Color(0xFFF8F8F8), appBar: AppBarWidget(context, title: userDetails["targetUser"].userName, showHomeButton: false, image: userDetails["targetUser"].image), @@ -35,73 +63,217 @@ class ChatDetailScreen extends StatelessWidget { return (m.isLoading ? ChatHomeShimmer() : Column( - children: [ - Expanded( - child: ListView.builder( - controller: m.scrollController, - shrinkWrap: true, - itemCount: m.userChatHistory.length, - padding: const EdgeInsets.symmetric(vertical: 10), - itemBuilder: (BuildContext context, int i) { - i == 0 ? m.logger.d(m.userChatHistory.length) : ""; - return ChatBubble( - text: m.userChatHistory[i].contant.toString(), - isSeen: m.userChatHistory[i].isSeen == true ? true : false, - isCurrentUser: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id ? true : false, - isDelivered: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id && m.userChatHistory[i].isDelivered == true ? true : false, - dateTime: m.userChatHistory[i].createdDate.toString(), - ); - }, - ), - ), - Card( - margin: EdgeInsets.zero, - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 10), - child: TextField( - controller: m.message, - decoration: InputDecoration( - hintText: LocaleKeys.typeheretoreply.tr(), - hintStyle: const TextStyle(color: MyColors.grey98Color), - border: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, - errorBorder: InputBorder.none, - disabledBorder: InputBorder.none, - contentPadding: const EdgeInsets.symmetric(vertical: 10, horizontal: 15), - suffixIcon: SizedBox( - width: 100, - child: Row( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: MainAxisAlignment.end, - children: [ - IconButton( - icon: const Icon( - Icons.attach_file_rounded, - size: 27, - color: MyColors.lightGreenColor, + children: [ + Expanded( + flex: 2, + child: SmartRefresher( + enablePullDown: true, + enablePullUp: false, + header: const MaterialClassicHeader( + color: MyColors.gradiantEndColor, + ), + controller: _refreshController, + onRefresh: onRefresh, + child: ListView.builder( + controller: scrollController, + shrinkWrap: true, + itemCount: m.userChatHistory.length, + padding: EdgeInsets.zero, + itemBuilder: (BuildContext context, int i) { + return GestureDetector( + onTap: () { + m.logger.d(jsonEncode(m.userChatHistory[i])); + m.logger.d(jsonEncode(m.userChatHistory.length)); + }, + child: SwipeTo( + iconColor: MyColors.lightGreenColor, + child: ChatBubble( + text: m.userChatHistory[i].contant.toString(), + replyText: m.userChatHistory[i].userChatReplyResponse != null ? m.userChatHistory[i].userChatReplyResponse!.contant.toString() : "", + isSeen: m.userChatHistory[i].isSeen == true ? true : false, + isCurrentUser: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id ? true : false, + isDelivered: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id && m.userChatHistory[i].isDelivered == true ? true : false, + dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), + isReplied: m.userChatHistory[i].userChatReplyResponse != null ? true : false, + userName: AppState().chatDetails!.response!.userName == m.userChatHistory[i].currentUserName.toString() ? "You" : m.userChatHistory[i].currentUserName.toString(), + ), + onRightSwipe: () { + m.chatReply(m.userChatHistory[i]); + }, + ), + ); + }, + ), + ), + ), + if (m.isMsgReply) + Row( + children: [ + Container( + height: 80, + color: MyColors.textMixColor, + width: 6, + ), + Expanded( + child: Container( + height: 80, + color: MyColors.black.withOpacity(0.10), + child: ListTile( + title: (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString() ? "You" : m.repliedMsg.first.currentUserName.toString()) + .toText14(color: MyColors.lightGreenColor), + subtitle: (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12(color: MyColors.white, maxLine: 2), + trailing: GestureDetector( + onTap: m.closeMe, + child: Container( + decoration: BoxDecoration( + color: MyColors.white.withOpacity(0.5), + borderRadius: const BorderRadius.all( + Radius.circular(20), + ), + ), + child: const Icon( + Icons.close, + size: 23, + color: MyColors.white, + ), + ), + ), ), - onPressed: () {}, ), - IconButton( - icon: SvgPicture.asset( - "assets/icons/chat/chat_send_icon.svg", - height: 26, - width: 35, + ), + ], + ), + if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") + Card( + margin: EdgeInsets.zero, + elevation: 0, + child: Padding( + padding: const EdgeInsets.only(left: 20.0, right: 20, top: 20, bottom: 0), + child: Card( + margin: EdgeInsets.zero, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(0.0), + ), + elevation: 0, + child: Container( + height: 200, + decoration: BoxDecoration( + image: DecorationImage( + image: FileImage( + m.selectedFile, + ), + fit: BoxFit.cover), + borderRadius: const BorderRadius.all( + Radius.circular(0), + ), ), - onPressed: () { - m.sendChatMessage(m.message.text, userDetails["targetUser"].id, userDetails["targetUser"].userName); - }, + child: const SizedBox( + width: double.infinity, + height: 200, + ), + ), + ), + ), + ), + Card( + margin: EdgeInsets.zero, + child: TextField( + controller: m.message, + decoration: InputDecoration( + hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), + hintStyle: TextStyle(color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14), + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + errorBorder: InputBorder.none, + disabledBorder: InputBorder.none, + contentPadding: EdgeInsets.only(left: m.sFileType.isNotEmpty ? 10 : 20, right: m.sFileType.isNotEmpty ? 0 : 5, top: 20, bottom: 20), + prefixIcon: m.sFileType.isNotEmpty + ? Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + SvgPicture.asset( + m.getType(m.sFileType), + height: 30, + width: 25, + alignment: Alignment.center, + fit: BoxFit.cover, + ).paddingOnly(left: 20), + ], + ) + : null, + suffixIcon: Container( + width: 96, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.center, // added line + children: [ + if (m.sFileType.isNotEmpty) + IconButton( + padding: EdgeInsets.zero, + alignment: Alignment.centerRight, + icon: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + decoration: const BoxDecoration( + color: MyColors.redA3Color, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: const Icon( + Icons.close, + size: 15, + color: MyColors.white, + ), + ), + ("Clear").toText11(color: MyColors.redA3Color).paddingOnly(left: 4), + ], + ), + onPressed: () async { + m.removeAttachment(); + }, + ), + if (m.sFileType.isEmpty) + RotationTransition( + turns: const AlwaysStoppedAnimation(45 / 360), + child: IconButton( + padding: EdgeInsets.zero, + alignment: Alignment.topRight, + icon: const Icon( + Icons.attach_file_rounded, + size: 26, + color: MyColors.grey3AColor, + ), + onPressed: () async { + m.selectImageToUpload(context); + }, + ), + ), + IconButton( + alignment: Alignment.centerRight, + padding: EdgeInsets.zero, + icon: SvgPicture.asset( + "assets/icons/chat/chat_send_icon.svg", + height: 26, + width: 26, + ), + onPressed: () { + m.sendChatMessage(userDetails["targetUser"].id, userDetails["targetUser"].userName); + }, + ) + ], ), - ], + ).paddingOnly(right: 20), ), ), ), - ), - ), - ), - ], - )); + ], + )); }, ), ); diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index f6f8e24..106a4b3 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -8,13 +8,16 @@ import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; +import 'package:sizer/sizer.dart'; class ChatHomeScreen extends StatefulWidget { const ChatHomeScreen({Key? key}) : super(key: key); @@ -81,45 +84,92 @@ class _ChatHomeScreenState extends State { if (m.searchedChats != null) ListView.separated( itemCount: m.searchedChats!.length, - padding: const EdgeInsets.only(top: 0), + padding: const EdgeInsets.only(top: 20), shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemBuilder: (BuildContext context, int index) { - return ListTile( - leading: Stack( - children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), + return SizedBox( + height: 55, + child: ListTile( + leading: Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), ), ), - ), - ) - ], + ) + ], + ), + title: (m.searchedChats![index].userName ?? "").toText14(color: MyColors.darkTextColor), + // subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), + trailing: SizedBox( + width: 60, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + if (m.searchedChats![index].unreadMessageCount! > 0) + Flexible( + child: Container( + padding: EdgeInsets.zero, + alignment: Alignment.centerRight, + width: 18, + height: 18, + decoration: const BoxDecoration( + color: MyColors.redColor, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: (m.searchedChats![index].unreadMessageCount!.toString()) + .toText10( + color: MyColors.white, + ) + .center, + ), + ), + Flexible( + child: IconButton( + alignment: Alignment.centerRight, + padding: EdgeInsets.zero, + icon: Icon(m.searchedChats![index].isFav! ? Icons.star : Icons.star_border), + color: m.searchedChats![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, + onPressed: () { + if (m.searchedChats![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + if (!m.searchedChats![index].isFav!) m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + }, + ), + ) + ], + ), + ), + minVerticalPadding: 0, + onTap: () { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.searchedChats![index]}, + ).then((value) { + m.clearSelections(); + }); + }, + onLongPress: () {}, ), - title: (m.searchedChats![index].userName ?? "").toText14(color: MyColors.darkTextColor), - subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), - trailing: ("Today").toText10(color: MyColors.lightTextColor), - minVerticalPadding: 0, - onTap: () { - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index]}, - ); - }, ); }, separatorBuilder: (BuildContext context, int index) => const Padding( @@ -129,7 +179,6 @@ class _ChatHomeScreenState extends State { ), ), ), - // if (searchedUsersList == null) Utils.getNoChatWidget(context), ], ); }), @@ -156,11 +205,9 @@ class _ChatHomeScreenState extends State { ), ), onPressed: () async { - // var userData = await ChatApiClient() - // .getChatMemberFromSearch("aamir.muhammad", 36239); showMyBottomSheet( context, - callBackFunc: (){}, + callBackFunc: () {}, child: SearchEmployeeBottomSheet( title: LocaleKeys.searchForEmployee.tr(), apiMode: LocaleKeys.delegate.tr(), diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index 16942c5..fb14141 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -183,16 +183,66 @@ class _SearchEmployeeBottomSheetState extends State { if (widget.fromChat) if (chatUsersList != null && widget.fromChat) chatUsersList!.isEmpty - ? Utils.getNoDataWidget(context) + ? Column( + children: [ + 20.height, + Utils.getNoDataWidget(context), + ], + ) : ListView( physics: const BouncingScrollPhysics(), - padding: EdgeInsets.only(top: 0, bottom: 8), - children: [ + padding: const EdgeInsets.only(top: 15,), + children: [ ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (cxt, index) { - return ListTile( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int index) { + + + + + // return ListTile( + // leading: Stack( + // children: [ + // SvgPicture.asset( + // "assets/images/user.svg", + // height: 48, + // width: 48, + // ), + // Positioned( + // right: 5, + // bottom: 1, + // child: Container( + // width: 10, + // height: 10, + // decoration: BoxDecoration( + // color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + // borderRadius: const BorderRadius.all( + // Radius.circular(10), + // ), + // ), + // ), + // ) + // ], + // ), + // title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), + // // subtitle: (chatUsersList![index].isTyping == true ? "Something is Typing" : "Last message text").toText11(color: MyColors.normalTextColor), + // // trailing: ("Today").toText10(color: MyColors.lightTextColor), + // minVerticalPadding: 0, + // onTap: () { + // Navigator.pop(context); + // Navigator.pushNamed( + // context, + // AppRoutes.chatDetailed, + // arguments: {"targetUser": chatUsersList![index]}, + // ); + // }, + // ); + + + return SizedBox( + height: 55, + child: ListTile( leading: Stack( children: [ SvgPicture.asset( @@ -217,8 +267,6 @@ class _SearchEmployeeBottomSheetState extends State { ], ), title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), - // subtitle: (chatUsersList![index].isTyping == true ? "Something is Typing" : "Last message text").toText11(color: MyColors.normalTextColor), - // trailing: ("Today").toText10(color: MyColors.lightTextColor), minVerticalPadding: 0, onTap: () { Navigator.pop(context); @@ -228,13 +276,21 @@ class _SearchEmployeeBottomSheetState extends State { arguments: {"targetUser": chatUsersList![index]}, ); }, - ); - }, - separatorBuilder: (BuildContext cxt, int index) => Container( - height: 1, - color: MyColors.borderE3Color, - ), - itemCount: chatUsersList?.length ?? 0), + onLongPress: () {}, + ), + ); + + + + }, + separatorBuilder: (BuildContext context, int index) => const Padding( + padding: EdgeInsets.only(right: 10, left: 70, bottom: 0,top: 0), + child: Divider( + color: Color(0xFFE5E5E5), + ), + ), + itemCount: chatUsersList?.length ?? 0, + ), 12.height, ], ).expanded, diff --git a/lib/widgets/image_picker.dart b/lib/widgets/image_picker.dart index 5e5ac01..9fa0336 100644 --- a/lib/widgets/image_picker.dart +++ b/lib/widgets/image_picker.dart @@ -13,7 +13,7 @@ class ImageOptions { static void showImageOptionsNew(BuildContext context, bool showFilesOption, Function(String, File) image) { showMyBottomSheet( context, - callBackFunc: (){}, + callBackFunc: () {}, child: AttachmentOptions( showFilesOption: showFilesOption, onCameraTap: () async { @@ -43,7 +43,12 @@ class ImageOptions { } }, onFilesTap: () async { - FilePickerResult? result = await FilePicker.platform.pickFiles(); + FilePickerResult? result = await FilePicker.platform.pickFiles( + type: FileType.custom, + allowedExtensions: ['jpg', 'jpeg ', 'pdf', 'txt', 'docx', 'doc', 'pptx', 'xlsx', 'png', 'rar', 'zip', 'xls'], + ); + List files = result!.paths.map((path) => File(path!)).toList(); + image(result!.files.first.path.toString(), files.first); }, ), ); diff --git a/pubspec.yaml b/pubspec.yaml index 633edd7..f2fbba8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -85,9 +85,13 @@ dependencies: appinio_swiper: ^1.1.1 expandable: ^5.0.1 + + #Chat signalr_netcore: ^1.3.3 logging: ^1.0.1 + swipe_to: ^1.0.2 + From 67f4fdef289f3d1165d978beea1f9c13c4be44f6 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 10 Nov 2022 16:06:25 +0300 Subject: [PATCH 042/302] Chat Fixes & Favorite Api Implementation --- lib/api/chat/chat_provider_model.dart | 88 +++---------------- lib/classes/consts.dart | 7 +- lib/ui/chat/chat_bubble.dart | 6 +- lib/ui/chat/chat_detailed_screen.dart | 59 ++++--------- lib/ui/chat/chat_home.dart | 4 +- .../search_employee_bottom_sheet.dart | 83 +++++------------ 6 files changed, 56 insertions(+), 191 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index b3f37ab..b85aa85 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -141,20 +141,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ) .build(); hubConnection.onclose( - ({Exception? error}) { - // logger.d(error); - }, + ({Exception? error}) {}, ); hubConnection.onreconnecting( - ({Exception? error}) { - // logger.d(error); - // logger.d("Reconnecting"); - }, + ({Exception? error}) {}, ); hubConnection.onreconnected( - ({String? connectionId}) { - // logger.d("Reconnected"); - }, + ({String? connectionId}) {}, ); if (hubConnection.state != HubConnectionState.Connected) { await hubConnection.start(); @@ -403,7 +396,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sFileType = ""; message.clear(); notifyListeners(); - // scrollDown(); } void sendChatMessage(int targetUserId, String targetUserName) async { @@ -437,7 +429,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } sendChatToServer( chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, chatReplyId: repliedMsg.first.userChatHistoryId, isAttachment: false, isReply: true); -//chatReplyId } if (isFileSelected && isMsgReply) { logger.d("Attachment Message With Reply"); @@ -445,60 +436,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); sendChatToServer( - chatEventId: 2, - fileTypeId: getFileType(ext.toString()), - targetUserId: targetUserId, - targetUserName: targetUserName, - isAttachment: true, - chatReplyId: repliedMsg.first.userChatHistoryId, - isReply: true); - } - - // dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); - // if (contain.isEmpty) { - // searchedChats!.add( - // ChatUser( - // id: targetUserId, - // userName: targetUserName, - // ), - // ); - // notifyListeners(); - // } - // Uuid uuid = const Uuid(); - // dynamic fileID = fileUploadResponse.isEmpty ? null : getFileType(chatMessage); - // SingleUserChatModel data = SingleUserChatModel( - // chatEventId: fileUploadResponse.isEmpty ? 1 : 2, - // chatSource: 1, - // contant: chatMessage, - // contantNo: uuid.v4(), - // conversationId: uuid.v4(), - // createdDate: DateTime.now(), - // currentUserId: AppState().chatDetails!.response!.id, - // currentUserName: AppState().chatDetails!.response!.userName, - // targetUserId: targetUserId, - // targetUserName: targetUserName, - // fileTypeId: fileID, - // isReplied: false, - // // fileTypeResponse: FileTypeResponse( - // // fileTypeId: 0, - // // fileTypeDescription: fileUploadResponse.isEmpty ? null : fileUploadResponse.first["filePath"], - // // fileName: fileUploadResponse.isEmpty ? null : fileUploadResponse.first["filePath"], - // // fileKind: "image", - // // fileTypeName: fileUploadResponse.isEmpty ? null : fileUploadResponse.first["filePath"].toString().split(".").last), - // ); - // - // String chatData = - // '{"contant":"$chatMessage","contantNo":"${uuid.v4()}","chatEventId":${fileUploadResponse.isEmpty ? 1 : 2},"fileTypeId": $fileID,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"conversationId":"${uuid.v4()}"}'; - // await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); - // userChatHistory.add(data); - // message.clear(); - // notifyListeners(); - // scrollDown(); - } - - void scrollListener() { - if (userChatHistory.length < paginationVal) { - print("Get New Data"); + chatEventId: 2, + fileTypeId: getFileType(ext.toString()), + targetUserId: targetUserId, + targetUserName: targetUserName, + isAttachment: true, + chatReplyId: repliedMsg.first.userChatHistoryId, + isReply: true, + ); } } @@ -513,18 +458,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } else { Utils.showToast("Max 1 mb size is allowed to upload"); } - //Utils.showLoading(context); notifyListeners(); - //Utils.hideLoading(context); - // Utils.showLoading(context); - // await m.uploadAttachments(AppState().chatDetails!.response!.id.toString(), file).then((value) { - // if (value == null) { - // m.logger.d("Returned EMPTY"); - // } else { - // m.sendChatMessage(value.isEmpty ? m.message.text : value.first["filePath"], userDetails["targetUser"].id, userDetails["targetUser"].userName, value); - // } - // }); - // Utils.hideLoading(context); }); } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c98d136..c5788f9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -10,6 +10,7 @@ class ApiConsts { static String user = baseUrlServices + "api/User/"; static String cocRest = baseUrlServices + "COCWS.svc/REST/"; + //Chat static String chatServerBaseUrl = "https://apiderichat.hmg.com"; static String chatServerBaseApiUrl = "https://apiderichat.hmg.com/api/"; static String chatHubConnectionUrl = chatServerBaseUrl + "/ConnectionChatHub"; @@ -18,12 +19,6 @@ class ApiConsts { static String chatSingleUserHistoryUrl = "UserChatHistory/GetUserChatHistory"; static String chatMediaImageUploadUrl = "shared/upload"; static String chatFavoriteUsers = "FavUser/getFavUserById/"; - //https://apiderichat.hmg.com/api/FavUser/getFavUserById/42062 -//https://apiderichat.hmg.com/api/shared/upload -// 42062 is CurrentUserID and 36745 is targetUserID and 0 is For Pagination - -// static String chatSearchMember = "https://apiderichat.hmg.com/api/user/getUserWithStatusAndFavAsync/aamir.muhammad/36239"; - } class SharedPrefsConsts { diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 1e8aec4..5a878ca 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -29,7 +29,7 @@ class ChatBubble extends StatelessWidget { @override Widget build(BuildContext context) { return Padding( - // padding: EdgeInsets.zero, + // padding: EdgeInsets.zero, padding: EdgeInsets.only(left: isCurrentUser ? 110 : 20, right: isCurrentUser ? 20 : 110, bottom: 9), child: Align( @@ -51,7 +51,7 @@ class ChatBubble extends StatelessWidget { borderRadius: BorderRadius.circular(10), ), child: Padding( - padding: EdgeInsets.only(top: isReplied ? 8 : 5, right:8, left: 8, bottom: 5), + padding: EdgeInsets.only(top: isReplied ? 8 : 5, right: 8, left: 8, bottom: 5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -85,7 +85,6 @@ class ChatBubble extends StatelessWidget { ), if (isReplied) 8.height, text.toText12(color: isCurrentUser ? MyColors.grey57Color : MyColors.white), - Row( crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, @@ -100,7 +99,6 @@ class ChatBubble extends StatelessWidget { ), ], ), - ], ), ), diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index d2d3598..fe7a968 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -8,19 +8,14 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/utils.dart'; -import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; -import 'package:mohem_flutter_app/widgets/image_picker.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; -import 'package:sizer/sizer.dart'; import 'package:swipe_to/swipe_to.dart'; class ChatDetailScreen extends StatelessWidget { @@ -30,13 +25,13 @@ class ChatDetailScreen extends StatelessWidget { ScrollController scrollController = ScrollController(); RefreshController _refreshController = RefreshController(initialRefresh: false); - void onRefresh() async { - print("Refresh Triggered"); - await Future.delayed(Duration(milliseconds: 1000)); + void getMoreChat() async { + if (userDetails != null) { data.paginationVal = data.paginationVal + 10; data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true); } + await Future.delayed(Duration(milliseconds: 1000)); _refreshController.refreshCompleted(); } @@ -45,16 +40,6 @@ class ChatDetailScreen extends StatelessWidget { userDetails = ModalRoute.of(context)!.settings.arguments; data = Provider.of(context, listen: false); if (userDetails != null) data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: false); - // - // if (userDetails != null) { - // scrollController.addListener(() { - // if (scrollController.position.minScrollExtent == scrollController.offset) { - // data.paginationVal++; - // data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true); - // } - // }); - // } - return Scaffold( backgroundColor: const Color(0xFFF8F8F8), appBar: AppBarWidget(context, title: userDetails["targetUser"].userName, showHomeButton: false, image: userDetails["targetUser"].image), @@ -73,34 +58,28 @@ class ChatDetailScreen extends StatelessWidget { color: MyColors.gradiantEndColor, ), controller: _refreshController, - onRefresh: onRefresh, + onRefresh: getMoreChat, child: ListView.builder( controller: scrollController, shrinkWrap: true, itemCount: m.userChatHistory.length, padding: EdgeInsets.zero, itemBuilder: (BuildContext context, int i) { - return GestureDetector( - onTap: () { - m.logger.d(jsonEncode(m.userChatHistory[i])); - m.logger.d(jsonEncode(m.userChatHistory.length)); - }, - child: SwipeTo( - iconColor: MyColors.lightGreenColor, - child: ChatBubble( - text: m.userChatHistory[i].contant.toString(), - replyText: m.userChatHistory[i].userChatReplyResponse != null ? m.userChatHistory[i].userChatReplyResponse!.contant.toString() : "", - isSeen: m.userChatHistory[i].isSeen == true ? true : false, - isCurrentUser: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id ? true : false, - isDelivered: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id && m.userChatHistory[i].isDelivered == true ? true : false, - dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), - isReplied: m.userChatHistory[i].userChatReplyResponse != null ? true : false, - userName: AppState().chatDetails!.response!.userName == m.userChatHistory[i].currentUserName.toString() ? "You" : m.userChatHistory[i].currentUserName.toString(), - ), - onRightSwipe: () { - m.chatReply(m.userChatHistory[i]); - }, + return SwipeTo( + iconColor: MyColors.lightGreenColor, + child: ChatBubble( + text: m.userChatHistory[i].contant.toString(), + replyText: m.userChatHistory[i].userChatReplyResponse != null ? m.userChatHistory[i].userChatReplyResponse!.contant.toString() : "", + isSeen: m.userChatHistory[i].isSeen == true ? true : false, + isCurrentUser: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id ? true : false, + isDelivered: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id && m.userChatHistory[i].isDelivered == true ? true : false, + dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), + isReplied: m.userChatHistory[i].userChatReplyResponse != null ? true : false, + userName: AppState().chatDetails!.response!.userName == m.userChatHistory[i].currentUserName.toString() ? "You" : m.userChatHistory[i].currentUserName.toString(), ), + onRightSwipe: () { + m.chatReply(m.userChatHistory[i]); + }, ); }, ), @@ -203,7 +182,7 @@ class ChatDetailScreen extends StatelessWidget { ], ) : null, - suffixIcon: Container( + suffixIcon: SizedBox( width: 96, child: Row( mainAxisAlignment: MainAxisAlignment.end, diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 106a4b3..38388ca 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -27,7 +27,7 @@ class ChatHomeScreen extends StatefulWidget { } class _ChatHomeScreenState extends State { - TextEditingController search = new TextEditingController(); + TextEditingController search = TextEditingController(); late ChatProviderModel data; @override @@ -213,8 +213,6 @@ class _ChatHomeScreenState extends State { apiMode: LocaleKeys.delegate.tr(), fromChat: true, onSelectEmployee: (_selectedEmployee) { - // Navigator.pop(context); - // selectedReplacementEmployee = _selectedEmployee; setState(() {}); }, ), diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index fb14141..63ce88b 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -136,12 +136,13 @@ class _SearchEmployeeBottomSheetState extends State { }, ).expanded, IconButton( - constraints: const BoxConstraints(), - onPressed: () async { - await SystemChannels.textInput.invokeMethod('TextInput.hide'); - widget.fromChat ? fetchChatUser() : fetchUserByInput(); - }, - icon: Icon(Icons.search)) + constraints: const BoxConstraints(), + onPressed: () async { + await SystemChannels.textInput.invokeMethod('TextInput.hide'); + widget.fromChat ? fetchChatUser() : fetchUserByInput(); + }, + icon: const Icon(Icons.search), + ) ], ), if (replacementList != null) @@ -184,62 +185,21 @@ class _SearchEmployeeBottomSheetState extends State { if (chatUsersList != null && widget.fromChat) chatUsersList!.isEmpty ? Column( - children: [ - 20.height, - Utils.getNoDataWidget(context), - ], - ) + children: [ + 20.height, + Utils.getNoDataWidget(context), + ], + ) : ListView( physics: const BouncingScrollPhysics(), - padding: const EdgeInsets.only(top: 15,), + padding: const EdgeInsets.only( + top: 15, + ), children: [ ListView.separated( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, itemBuilder: (BuildContext cxt, int index) { - - - - - // return ListTile( - // leading: Stack( - // children: [ - // SvgPicture.asset( - // "assets/images/user.svg", - // height: 48, - // width: 48, - // ), - // Positioned( - // right: 5, - // bottom: 1, - // child: Container( - // width: 10, - // height: 10, - // decoration: BoxDecoration( - // color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - // borderRadius: const BorderRadius.all( - // Radius.circular(10), - // ), - // ), - // ), - // ) - // ], - // ), - // title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), - // // subtitle: (chatUsersList![index].isTyping == true ? "Something is Typing" : "Last message text").toText11(color: MyColors.normalTextColor), - // // trailing: ("Today").toText10(color: MyColors.lightTextColor), - // minVerticalPadding: 0, - // onTap: () { - // Navigator.pop(context); - // Navigator.pushNamed( - // context, - // AppRoutes.chatDetailed, - // arguments: {"targetUser": chatUsersList![index]}, - // ); - // }, - // ); - - return SizedBox( height: 55, child: ListTile( @@ -279,12 +239,9 @@ class _SearchEmployeeBottomSheetState extends State { onLongPress: () {}, ), ); - - - }, separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only(right: 10, left: 70, bottom: 0,top: 0), + padding: EdgeInsets.only(right: 10, left: 70, bottom: 0, top: 0), child: Divider( color: Color(0xFFE5E5E5), ), @@ -349,7 +306,9 @@ class _SearchEmployeeBottomSheetState extends State { decoration: BoxDecoration( color: Colors.transparent, border: Border.all(color: MyColors.borderColor, width: 1), - borderRadius: const BorderRadius.all(Radius.circular(100)), + borderRadius: const BorderRadius.all( + Radius.circular(100), + ), ), padding: const EdgeInsets.all(4), child: Container( @@ -357,7 +316,9 @@ class _SearchEmployeeBottomSheetState extends State { height: double.infinity, decoration: BoxDecoration( color: value == groupValue ? MyColors.grey3AColor : Colors.transparent, - borderRadius: BorderRadius.all(const Radius.circular(100)), + borderRadius: const BorderRadius.all( + Radius.circular(100), + ), ), ), ), From 6fe015d10466c850e94731fc5678f42f2650d02d Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 10 Nov 2022 16:25:48 +0300 Subject: [PATCH 043/302] fixes --- lib/ui/work_list/sheets/selected_item_sheet.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ui/work_list/sheets/selected_item_sheet.dart b/lib/ui/work_list/sheets/selected_item_sheet.dart index 4f7f6b3..54f87d0 100644 --- a/lib/ui/work_list/sheets/selected_item_sheet.dart +++ b/lib/ui/work_list/sheets/selected_item_sheet.dart @@ -140,7 +140,7 @@ class SelectedItemSheet extends StatelessWidget { Future performNetworkCall(BuildContext context, {String? email, String? userId}) async { Utils.showLoading(context); try { - await WorkListApiClient().submitComment(comment: comment, email: email, userId: userId, notificationId: notificationID, apiMode: apiMode, approverIndex: actionHistoryList!.sEQUENCE); + await WorkListApiClient().submitComment(comment: comment, email: email, userId: userId, notificationId: notificationID, apiMode: apiMode, approverIndex: actionHistoryList != null ? actionHistoryList!.sEQUENCE : null); Utils.hideLoading(context); // Navigator.pop(context); // Navigator.pop(context); @@ -212,7 +212,7 @@ class SelectedItemSheet extends StatelessWidget { : CircularAvatar( height: 40, width: 40, - ).toShimmer() + ) : (actionHistoryList != null && actionHistoryList!.eMPLOYEEIMAGE != null) ? CircularAvatar( height: 40, @@ -223,7 +223,7 @@ class SelectedItemSheet extends StatelessWidget { : CircularAvatar( height: 40, width: 40, - ).toShimmer(), + ), 16.width, Expanded( child: (name ?? "").toText12(), From ea8fd42abd83fcee9544b909c3b534096808666d Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Sun, 13 Nov 2022 11:12:50 +0300 Subject: [PATCH 044/302] Otp clear & resend fixed --- lib/classes/consts.dart | 4 +- lib/dialogs/otp_dialog.dart | 125 ++++++++++++--------- lib/ui/login/forgot_password_screen.dart | 28 +++-- lib/ui/login/login_screen.dart | 4 +- lib/ui/login/verify_last_login_screen.dart | 16 ++- lib/ui/login/verify_login_screen.dart | 4 +- 6 files changed, 105 insertions(+), 76 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c5788f9..646e498 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/dialogs/otp_dialog.dart b/lib/dialogs/otp_dialog.dart index 3952e70..9158b94 100644 --- a/lib/dialogs/otp_dialog.dart +++ b/lib/dialogs/otp_dialog.dart @@ -11,10 +11,12 @@ import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/otp_widget.dart'; import 'package:sizer/sizer.dart'; +final ValueNotifier otpFieldClear = ValueNotifier(""); + class OtpDialog { final int type; final int? mobileNo; - final Function(String) onSuccess; + final Function(String, TextEditingController _pinPutController) onSuccess; final Function onFailure; final BuildContext context; final Function onResendCode; @@ -96,58 +98,70 @@ class OtpDialog { 6.height, (LocaleKeys.pleaseEnterTheVerificationCodeSentTo.tr() + ' xxxxxxxx' + mobileNo.toString().substring(mobileNo.toString().length - 3)).toText16(), 18.height, - Directionality( - textDirection: TextDirection.ltr, - child: Center( - child: OTPWidget( - autoFocus: true, - controller: _pinPutController, - defaultBorderColor: const Color(0xffD8D8D8), - maxLength: 4, - onTextChanged: (text) {}, - pinBoxColor: Colors.white, - onDone: (code) => _onOtpCallBack(code, null), - textBorderColor: const Color(0xffD8D8D8), - pinBoxWidth: 60, - pinBoxHeight: 60, - pinTextStyle: const TextStyle(fontSize: 24.0, color: MyColors.darkTextColor), - pinTextAnimatedSwitcherTransition: ProvidedPinBoxTextAnimation.scalingTransition, - pinTextAnimatedSwitcherDuration: const Duration(milliseconds: 300), - pinBoxRadius: 10, - keyboardType: TextInputType.number, - ), - ), - ), - 10.height, - stopTimer - ? Row( - children: [ - Expanded( - child: LocaleKeys.codeExpire.tr().toText16( - color: MyColors.redColor, - ), - ), - 12.width, - Image.asset( - "assets/icons/ic_alarm.png", - width: 20, - height: 20, - color: MyColors.redColor, - ), - ], - ) - : RichText( - text: TextSpan( - text: LocaleKeys.theVerificationCodeWillExpireIn.tr() + '\n', - style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -0.48), - children: [ - TextSpan( - text: displayTime, - style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.textMixColor, letterSpacing: -0.48), + ValueListenableBuilder( + builder: (BuildContext context, String value, Widget? child) { + // This builder will only get called when the _counter + // is updated. + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Directionality( + textDirection: TextDirection.ltr, + child: Center( + child: OTPWidget( + autoFocus: true, + controller: _pinPutController, + defaultBorderColor: const Color(0xffD8D8D8), + maxLength: 4, + onTextChanged: (text) {}, + pinBoxColor: Colors.white, + onDone: (code) => _onOtpCallBack(code, null), + textBorderColor: const Color(0xffD8D8D8), + pinBoxWidth: 60, + pinBoxHeight: 60, + pinTextStyle: const TextStyle(fontSize: 24.0, color: MyColors.darkTextColor), + pinTextAnimatedSwitcherTransition: ProvidedPinBoxTextAnimation.scalingTransition, + pinTextAnimatedSwitcherDuration: const Duration(milliseconds: 300), + pinBoxRadius: 10, + keyboardType: TextInputType.number, ), - ], + ), ), - ), + 10.height, + stopTimer + ? Row( + children: [ + Expanded( + child: LocaleKeys.codeExpire.tr().toText16( + color: MyColors.redColor, + ), + ), + 12.width, + Image.asset( + "assets/icons/ic_alarm.png", + width: 20, + height: 20, + color: MyColors.redColor, + ), + ], + ) + : RichText( + text: TextSpan( + text: LocaleKeys.theVerificationCodeWillExpireIn.tr() + '\n', + style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -0.48), + children: [ + TextSpan( + text: displayTime, + style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.textMixColor, letterSpacing: -0.48), + ), + ], + ), + ), + ], + ); + }, + valueListenable: otpFieldClear, + ), 18.height, DefaultButton( stopTimer ? LocaleKeys.resend.tr() : LocaleKeys.cancel.tr(), @@ -238,14 +252,15 @@ class OtpDialog { }); } - static void hideSMSBox(context) { - Navigator.pop(context); + void hideSMSBox(context) { + onFailure(); } void _onOtpCallBack(String otpCode, bool? isAutofill) { if (otpCode.length == 4) { - stopTimer = true; - onSuccess(otpCode); + // stopTimer = true; + otpFieldClear.value = otpCode; + onSuccess(otpCode, _pinPutController); } } diff --git a/lib/ui/login/forgot_password_screen.dart b/lib/ui/login/forgot_password_screen.dart index 6c1868e..b2d5c92 100644 --- a/lib/ui/login/forgot_password_screen.dart +++ b/lib/ui/login/forgot_password_screen.dart @@ -50,17 +50,25 @@ class _ForgotPasswordScreenState extends State { context, 1, int.tryParse(_basicMemberInformation?.pMOBILENUMBER ?? ""), - (value) async { + (value,TextEditingController _pinPutController) async { Utils.showLoading(context); - GenericResponseModel? genericResponseModel = await LoginApiClient().checkPublicActivationCode(value, employeeId.text); - if (genericResponseModel?.errorMessage != null) { - Utils.showToast(genericResponseModel?.errorMessage ?? ""); - return; - } - Utils.hideLoading(context); - await Navigator.pushNamed(context, AppRoutes.newPassword, arguments: employeeId.text); - Navigator.pop(context); - Navigator.pop(context); + try{ + GenericResponseModel? genericResponseModel = await LoginApiClient().checkPublicActivationCode(value, employeeId.text); + if (genericResponseModel?.errorMessage != null) { + Utils.showToast(genericResponseModel?.errorMessage ?? ""); + return; + } + Utils.hideLoading(context); + await Navigator.pushNamed(context, AppRoutes.newPassword, arguments: employeeId.text); + Navigator.pop(context); + Navigator.pop(context); + }catch(ex){ + print(ex); + _pinPutController.clear(); + otpFieldClear.value = ""; + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } }, () => { Navigator.pop(context), diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 20fa8bc..97282d3 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -142,8 +142,8 @@ class _LoginScreenState extends State { isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool; if (!kReleaseMode) { // username.text = "15444"; // Maha User - // username.text = "15153"; // Tamer User - // password.text = "Abcd@12345"; + username.text = "15153"; // Tamer User + password.text = "Abcd@12345"; // username.text = "206535"; // Hashim User // password.text = "Namira786"; diff --git a/lib/ui/login/verify_last_login_screen.dart b/lib/ui/login/verify_last_login_screen.dart index 0b07b43..81d1ba2 100644 --- a/lib/ui/login/verify_last_login_screen.dart +++ b/lib/ui/login/verify_last_login_screen.dart @@ -335,16 +335,16 @@ class _VerifyLastLoginScreenState extends State { if (!isDirectLogin) BasicMemberInformationModel? memberInformationModel = await LoginApiClient().mohemmSendActivationCodeByOTPNotificationType(0, AppState().memberLoginList?.pMOBILENUMBER, sendVerificationFlat, AppState().getUserName); - if (isDirectLogin) performDirectApiCall(_title, _icon, _flag, ""); + if (isDirectLogin) performDirectApiCall(_title, _icon, _flag, "", null); if (!isDirectLogin) Utils.hideLoading(context); if (!isDirectLogin) OtpDialog( context, sendVerificationFlat, int.tryParse(AppState().memberLoginList?.pMOBILENUMBER ?? ""), - (value) async { + (value, TextEditingController _pinPutController) async { Utils.showLoading(context); - performDirectApiCall(_title, _icon, _flag, value); + performDirectApiCall(_title, _icon, _flag, value, _pinPutController); }, () => { Navigator.pop(context), @@ -359,7 +359,7 @@ class _VerifyLastLoginScreenState extends State { } } - Future performDirectApiCall(String _title, String _icon, int _flag, String value, {bool isDirectLogin = false}) async { + Future performDirectApiCall(String _title, String _icon, int _flag, String value, TextEditingController? _pinPutController, {bool isDirectLogin = false}) async { try { GenericResponseModel? genericResponseModel = await LoginApiClient().checkActivationCode(false, AppState().memberLoginList?.pMOBILENUMBER, value, AppState().getUserName); GenericResponseModel? genericResponseModel1 = await LoginApiClient().insertMobileLoginInfoNEW( @@ -372,14 +372,18 @@ class _VerifyLastLoginScreenState extends State { mobileLoginInfoListModel!.deviceToken!, Platform.isAndroid ? "android" : "ios"); AppState().setMemberInformationListModel = genericResponseModel!.memberInformationList?.first; - if (genericResponseModel?.errorMessage != null) { - Utils.showToast(genericResponseModel?.errorMessage ?? ""); + if (genericResponseModel.errorMessage != null) { + Utils.showToast(genericResponseModel.errorMessage ?? ""); // Navigator.pop(context); } Utils.hideLoading(context); Navigator.pop(context); Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route route) => false); } catch (ex) { + if (_pinPutController != null) { + _pinPutController.clear(); + otpFieldClear.value = ""; + } Utils.hideLoading(context); Utils.handleException(ex, context, null); } diff --git a/lib/ui/login/verify_login_screen.dart b/lib/ui/login/verify_login_screen.dart index 8dba16c..ce21b63 100644 --- a/lib/ui/login/verify_login_screen.dart +++ b/lib/ui/login/verify_login_screen.dart @@ -617,7 +617,7 @@ class _VerifyLoginScreenState extends State { context, sendVerificationFlat, int.tryParse(AppState().memberLoginList?.pMOBILENUMBER ?? ""), - (value) async { + (value, TextEditingController _pinPutController) async { Utils.showLoading(context); try { GenericResponseModel? genericResponseModel = await LoginApiClient().checkActivationCode(true, AppState().memberLoginList?.pMOBILENUMBER, value, AppState().getUserName); @@ -652,6 +652,8 @@ class _VerifyLoginScreenState extends State { Navigator.pushNamedAndRemoveUntil(context, AppRoutes.dashboard, (Route route) => false); } catch (ex) { print(ex); + _pinPutController.clear(); + otpFieldClear.value = ""; Utils.hideLoading(context); Utils.handleException(ex, context, null); } From c2a4df89bb518fdb775c3a9957ab14b3f2cf63c2 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 13 Nov 2022 11:19:21 +0300 Subject: [PATCH 045/302] offers & discouts --- .../offers_and_discounts/offers_and_discounts_home.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/ui/screens/offers_and_discounts/offers_and_discounts_home.dart b/lib/ui/screens/offers_and_discounts/offers_and_discounts_home.dart index 45247dc..343eed8 100644 --- a/lib/ui/screens/offers_and_discounts/offers_and_discounts_home.dart +++ b/lib/ui/screens/offers_and_discounts/offers_and_discounts_home.dart @@ -173,7 +173,7 @@ class _OffersAndDiscountsHomeState extends State { tag: "ItemImage" + getOffersList.rowID!, transitionOnUserGestures: true, child: AspectRatio( - aspectRatio: 148 / 127, + aspectRatio: 118 / 127, child: ClipRRect( borderRadius: BorderRadius.circular(6), child: Image.network( @@ -192,10 +192,10 @@ class _OffersAndDiscountsHomeState extends State { // // launchUrl(Uri.parse(url!)); // // } // ), - getOffersList.description!.toText12(maxLine: 2, color: const Color(0xff535353)), + // getOffersList.description!.toText12(maxLine: 2, color: const Color(0xff535353)), // 8.height, getOffersList.discount!.toText14(isBold: true, maxlines: 1), - 10.height, + 20.height, Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [checkDate(getOffersList.endDate!), SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)], @@ -211,7 +211,7 @@ class _OffersAndDiscountsHomeState extends State { if (enteredKeyword.isEmpty) { results = getOffersList; } else { - if(AppState().isArabic(context)) { + if (AppState().isArabic(context)) { results = getOffersList.where((offer) => offer.titleAR!.toLowerCase().contains(enteredKeyword.toLowerCase())).toList(); } else { results = getOffersList.where((offer) => offer.title!.toLowerCase().contains(enteredKeyword.toLowerCase())).toList(); From 55ff08c3f3f3e813f7258e30ea796d099e58d9fe Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 13 Nov 2022 13:50:35 +0300 Subject: [PATCH 046/302] Chat Favorite Screen & Fixes --- assets/langs/ar-SA.json | 5 +- assets/langs/en-US.json | 5 +- lib/api/chat/chat_provider_model.dart | 45 ++-- lib/classes/consts.dart | 4 +- lib/config/routes.dart | 5 +- lib/generated/locale_keys.g.dart | 2 + lib/ui/chat/chat_bubble.dart | 4 +- lib/ui/chat/chat_detailed_screen.dart | 3 +- lib/ui/chat/chat_home.dart | 275 +++++++------------------ lib/ui/chat/chat_home_screen.dart | 226 ++++++++++++++++++++ lib/ui/chat/favorite_users_screen.dart | 102 +++++++++ lib/widgets/image_picker.dart | 2 +- 12 files changed, 445 insertions(+), 233 deletions(-) create mode 100644 lib/ui/chat/chat_home_screen.dart create mode 100644 lib/ui/chat/favorite_users_screen.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index f72ea36..bdec4f0 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -498,5 +498,8 @@ "verification": "تَحَقّق", "resend": "إعادة إرسال", "codeExpire": "انتهت صلاحية رمز التحقق", - "typeheretoreply": "اكتب هنا للرد" + "typeheretoreply": "اكتب هنا للرد", + "favorite" : "مفضل", + "searchfromchat": "البحث من الدردشة" + } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index e0b9019..1cd1a33 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -498,5 +498,8 @@ "resend": "Resend", "codeExpire": "The verification code has been expired", "allQuestionsCorrect": "You have answered all questions correct", - "typeheretoreply": "Type here to reply" + "typeheretoreply": "Type here to reply", + "favorite" : "Favorite", + "searchfromchat": "Search from chat" + } \ No newline at end of file diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index b85aa85..4e79374 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -33,6 +33,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String sFileType = ""; bool isMsgReply = false; List repliedMsg = []; + List favUsersList = []; int paginationVal = 0; Future getUserAutoLoginToken() async { @@ -60,25 +61,26 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { token: AppState().chatDetails!.response!.token, ); - logger.d(AppState().chatDetails!.response!.token); + //logger.d(AppState().chatDetails!.response!.token); ChatUserModel recentChat = userToList(response.body); Response favRes = await ApiClient().getJsonForResponse( "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatFavoriteUsers}${AppState().chatDetails!.response!.id}", token: AppState().chatDetails!.response!.token, ); - print("============================== Fav Response ====================================="); - ChatUserModel favUsersList = userToList(favRes.body); - for (var user in recentChat.response!) { - for (var favUser in favUsersList.response!) { - logger.d(favUser.isFav); - if (user.id == favUser.id) { - user.isFav = favUser.isFav; + ChatUserModel favUList = userToList(favRes.body); + if (favUList.response != null) { + favUsersList = favUList.response!; + for (dynamic user in recentChat.response!) { + for (dynamic favUser in favUList.response!) { + if (user.id == favUser.id) { + user.isFav = favUser.isFav; + } } } } - pChatHistory = recentChat.response; + pChatHistory!.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase()!.compareTo(b.userName!.toLowerCase()!)); searchedChats = pChatHistory; isLoading = false; notifyListeners(); @@ -87,7 +89,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void getSingleUserChatHistory({required String senderUID, required int receiverUID, required bool loadMore}) async { isLoading = true; if (!loadMore) paginationVal = 0; - logger.d(paginationVal); isChatScreenActive = true; Response response = await ApiClient().getJsonForResponse( "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal", @@ -150,24 +151,16 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ({String? connectionId}) {}, ); if (hubConnection.state != HubConnectionState.Connected) { + print("================= Connection Established =========================="); await hubConnection.start(); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - hubConnection.on("OnUserTypingAsync", onUserTyping); + //hubConnection.on("OnUserTypingAsync", onUserTyping); // hubConnection.on("OnUserCountAsync", userCountAsync); - // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); + hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); - } else { - hubConnection.on("OnUpdateUserStatusAsync", changeStatus); - hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - - hubConnection.on("OnUserTypingAsync", onUserTyping); - // hubConnection.on("OnUserCountAsync", userCountAsync); - // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); - // hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); - hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); } isLoading = false; notifyListeners(); @@ -189,8 +182,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void userCountAsync(List? args) { List items = args!.toList(); - print("---------------------------------User Count Async -------------------------------------"); - logger.d(items); + //print("---------------------------------User Count Async -------------------------------------"); + //logger.d(items); // for (var user in searchedChats!) { // if (user.id == items.first["id"]) { // user.userStatus = items.first["userStatus"]; @@ -537,7 +530,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } String dateFormte(DateTime data) { - DateFormat f = new DateFormat('hh:mm a dd MMM yyyy'); + DateFormat f = DateFormat('hh:mm a dd MMM yyyy'); f.format(data); return f.format(data); } @@ -547,9 +540,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await ApiClient().postJsonForResponse("${ApiConsts.chatServerBaseApiUrl}FavUser/addFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token); fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); if (favoriteChatUser.response != null) { - for (var user in searchedChats!) { + for (ChatUser user in searchedChats!) { if (user.id == favoriteChatUser.response!.targetUserId!) { user.isFav = favoriteChatUser.response!.isFav; + favUsersList.add(user); } } } @@ -566,6 +560,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { user.isFav = favoriteChatUser.response!.isFav; } } + favUsersList.removeWhere((ChatUser element) => element.id == targetUserID); } notifyListeners(); } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c5788f9..ede22e3 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + //static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 1fcbf2e..ab3fb9a 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -5,6 +5,7 @@ import 'package:mohem_flutter_app/ui/attendance/vacation_rule_screen.dart'; import 'package:mohem_flutter_app/ui/bottom_sheets/attendence_details_bottom_sheet.dart'; import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_home.dart'; +import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/ui/landing/itg/survey_screen.dart'; import 'package:mohem_flutter_app/ui/landing/today_attendance_screen.dart'; @@ -177,6 +178,7 @@ class AppRoutes { //Chat static const String chat = "/chat"; static const String chatDetailed = "/chatDetailed"; + static const String chatFavoriteUsers = "/chatFavoriteUsers"; //Marathon static const String marathonIntroScreen = "/marathonIntroScreen"; @@ -287,8 +289,9 @@ class AppRoutes { changePassword: (BuildContext context) => ChangePasswordScreen(), //Chat - chat: (BuildContext context) => ChatHomeScreen(), + chat: (BuildContext context) => ChatHome(), chatDetailed: (BuildContext context) => ChatDetailScreen(), + chatFavoriteUsers: (BuildContext context) => ChatFavoriteUsersScreen(), // Marathon marathonIntroScreen: (BuildContext context) => MarathonIntroScreen(), diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index f52bb89..f5d4960 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -485,5 +485,7 @@ abstract class LocaleKeys { static const resend = 'resend'; static const codeExpire = 'codeExpire'; static const typeheretoreply = 'typeheretoreply'; + static const favorite = 'favorite'; + static const searchfromchat = 'searchfromchat'; } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 5a878ca..d9bd599 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -36,7 +36,7 @@ class ChatBubble extends StatelessWidget { alignment: isCurrentUser ? Alignment.centerRight : Alignment.centerLeft, child: DecoratedBox( decoration: BoxDecoration( - color: Colors.white, + color: MyColors.white, gradient: isCurrentUser ? null : const LinearGradient( @@ -89,7 +89,7 @@ class ChatBubble extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, children: [ - dateTime.toText12(color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : Colors.white.withOpacity(0.7)), + dateTime.toText12(color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : MyColors.white.withOpacity(0.7)), if (isCurrentUser) 5.width, if (isCurrentUser) Icon( diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index fe7a968..c13e6d3 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -26,7 +26,6 @@ class ChatDetailScreen extends StatelessWidget { RefreshController _refreshController = RefreshController(initialRefresh: false); void getMoreChat() async { - if (userDetails != null) { data.paginationVal = data.paginationVal + 10; data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true); @@ -63,7 +62,7 @@ class ChatDetailScreen extends StatelessWidget { controller: scrollController, shrinkWrap: true, itemCount: m.userChatHistory.length, - padding: EdgeInsets.zero, + padding: const EdgeInsets.only(top: 20), itemBuilder: (BuildContext context, int i) { return SwipeTo( iconColor: MyColors.lightGreenColor, diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 38388ca..5176273 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -1,224 +1,103 @@ -import 'dart:convert'; - import 'package:easy_localization/easy_localization.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/ui/chat/chat_home_screen.dart'; +import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; +import 'package:mohem_flutter_app/ui/screens/items_for_sale/fragments/items_for_sale.dart'; +import 'package:mohem_flutter_app/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; -import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; -import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; -import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; -import 'package:provider/provider.dart'; -import 'package:sizer/sizer.dart'; -class ChatHomeScreen extends StatefulWidget { - const ChatHomeScreen({Key? key}) : super(key: key); +class ChatHome extends StatefulWidget { + const ChatHome({Key? key}) : super(key: key); @override - State createState() => _ChatHomeScreenState(); + State createState() => _ChatHomeState(); } -class _ChatHomeScreenState extends State { - TextEditingController search = TextEditingController(); - late ChatProviderModel data; - - @override - void initState() { - super.initState(); - data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().whenComplete(() { - data.getUserRecentChats(); - }); - } - - @override - void dispose() { - super.dispose(); - } +class _ChatHomeState extends State { + int tabIndex = 0; + PageController controller = PageController(); @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Colors.white, - appBar: AppBarWidget(context, title: LocaleKeys.mychats.tr(), showHomeButton: false), - body: Consumer(builder: (BuildContext context, ChatProviderModel m, Widget? child) { - return m.isLoading - ? ChatHomeShimmer() - : ListView( - shrinkWrap: true, - physics: const AlwaysScrollableScrollPhysics(), - children: [ - Padding( - padding: const EdgeInsets.symmetric(vertical: 0, horizontal: 20), - child: TextField( - onChanged: (String val) { - m.filter(val); - }, - decoration: InputDecoration( - border: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide( - color: Color(0xFFE5E5E5), - ), - ), - errorBorder: InputBorder.none, - disabledBorder: InputBorder.none, - contentPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 10), - hintText: "Search from chat", - hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic), - filled: true, - fillColor: const Color(0xFFF7F7F7), - ), - ), - ), - if (m.searchedChats != null) - ListView.separated( - itemCount: m.searchedChats!.length, - padding: const EdgeInsets.only(top: 20), - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - itemBuilder: (BuildContext context, int index) { - return SizedBox( - height: 55, - child: ListTile( - leading: Stack( - children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), - ), - ), - ) - ], - ), - title: (m.searchedChats![index].userName ?? "").toText14(color: MyColors.darkTextColor), - // subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), - trailing: SizedBox( - width: 60, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.max, - children: [ - if (m.searchedChats![index].unreadMessageCount! > 0) - Flexible( - child: Container( - padding: EdgeInsets.zero, - alignment: Alignment.centerRight, - width: 18, - height: 18, - decoration: const BoxDecoration( - color: MyColors.redColor, - borderRadius: BorderRadius.all( - Radius.circular(20), - ), - ), - child: (m.searchedChats![index].unreadMessageCount!.toString()) - .toText10( - color: MyColors.white, - ) - .center, - ), - ), - Flexible( - child: IconButton( - alignment: Alignment.centerRight, - padding: EdgeInsets.zero, - icon: Icon(m.searchedChats![index].isFav! ? Icons.star : Icons.star_border), - color: m.searchedChats![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, - onPressed: () { - if (m.searchedChats![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); - if (!m.searchedChats![index].isFav!) m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); - }, - ), - ) - ], - ), - ), - minVerticalPadding: 0, - onTap: () { - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index]}, - ).then((value) { - m.clearSelections(); - }); - }, - onLongPress: () {}, - ), - ); - }, - separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only(right: 10, left: 70), - child: Divider( - color: Color(0xFFE5E5E5), - ), - ), - ), + backgroundColor: MyColors.white, + appBar: AppBarWidget( + context, + title: LocaleKeys.chat.tr(), + showHomeButton: true, + ), + body: Column( + children: [ + Container( + padding: const EdgeInsets.only(left: 21, right: 21, top: 16, bottom: 16), + decoration: const BoxDecoration( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(25), + bottomRight: Radius.circular(25), + ), + gradient: LinearGradient( + transform: GradientRotation(.83), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, ], - ); - }), - floatingActionButton: FloatingActionButton( - child: Container( - width: 60, - height: 60, - decoration: const BoxDecoration( - shape: BoxShape.circle, - gradient: LinearGradient( - transform: GradientRotation(.46), - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, + ), + ), + child: Row( + children: [ + myTab(LocaleKeys.mychats.tr(), 0), + myTab( + LocaleKeys.favorite.tr(), + 1) ], ), ), - child: const Icon( - Icons.add, - size: 30, - color: MyColors.white, - ), - ), - onPressed: () async { - showMyBottomSheet( - context, - callBackFunc: () {}, - child: SearchEmployeeBottomSheet( - title: LocaleKeys.searchForEmployee.tr(), - apiMode: LocaleKeys.delegate.tr(), - fromChat: true, - onSelectEmployee: (_selectedEmployee) { - setState(() {}); - }, - ), - ); - }, + PageView( + controller: controller, + physics: const NeverScrollableScrollPhysics(), + onPageChanged: (int pageIndex) { + setState(() { + tabIndex = pageIndex; + }); + }, + children: [ChatHomeScreen(), ChatFavoriteUsersScreen()], + ).expanded, + ], ), ); } + + Widget myTab(String title, int index) { + bool isSelected = (index == tabIndex); + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + title.toText12(color: isSelected ? MyColors.white : MyColors.white.withOpacity(.74), isCenter: true), + 4.height, + Container( + height: 8, + width: 8, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: isSelected ? MyColors.white : Colors.transparent, + ), + ).onPress(() { + setState(() { + // showFabOptions = true; + }); + }) + ], + ).onPress(() { + controller.jumpToPage(index); + }).expanded; + } } diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart new file mode 100644 index 0000000..328354b --- /dev/null +++ b/lib/ui/chat/chat_home_screen.dart @@ -0,0 +1,226 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; +import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; +import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; +import 'package:provider/provider.dart'; + +class ChatHomeScreen extends StatefulWidget { + const ChatHomeScreen({Key? key}) : super(key: key); + + @override + State createState() => _ChatHomeScreenState(); +} + +class _ChatHomeScreenState extends State { + TextEditingController search = TextEditingController(); + late ChatProviderModel data; + + @override + void initState() { + super.initState(); + data = Provider.of(context, listen: false); + data.getUserAutoLoginToken().whenComplete(() { + data.getUserRecentChats(); + }); + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: MyColors.white, + body: Consumer(builder: (BuildContext context, ChatProviderModel m, Widget? child) { + return m.isLoading + ? ChatHomeShimmer() + : ListView( + shrinkWrap: true, + physics: const AlwaysScrollableScrollPhysics(), + children: [ + Padding( + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), + child: TextField( + onChanged: (String val) { + m.filter(val); + }, + decoration: InputDecoration( + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide( + color: Color(0xFFE5E5E5), + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide( + color: Color(0xFFE5E5E5), + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide( + color: Color(0xFFE5E5E5), + ), + ), + contentPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 10), + hintText: LocaleKeys.searchfromchat.tr(), + hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic), + filled: true, + fillColor: const Color(0xFFF7F7F7), + ), + ), + ), + if (m.searchedChats != null) + ListView.separated( + itemCount: m.searchedChats!.length, + padding: const EdgeInsets.only(bottom: 80), + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (BuildContext context, int index) { + return SizedBox( + height: 55, + child: ListTile( + leading: Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), + ), + ), + ) + ], + ), + title: (m.searchedChats![index].userName ?? "").toText14(color: MyColors.darkTextColor), + // subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), + trailing: SizedBox( + width: 60, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + if (m.searchedChats![index].unreadMessageCount! > 0) + Flexible( + child: Container( + padding: EdgeInsets.zero, + alignment: Alignment.centerRight, + width: 18, + height: 18, + decoration: const BoxDecoration( + color: MyColors.redColor, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: (m.searchedChats![index].unreadMessageCount!.toString()) + .toText10( + color: MyColors.white, + ) + .center, + ), + ), + Flexible( + child: IconButton( + alignment: Alignment.centerRight, + padding: EdgeInsets.zero, + icon: Icon(m.searchedChats![index].isFav! ? Icons.star : Icons.star_border), + color: m.searchedChats![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, + onPressed: () { + if (m.searchedChats![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + if (!m.searchedChats![index].isFav!) m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + }, + ), + ) + ], + ), + ), + minVerticalPadding: 0, + onTap: () { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.searchedChats![index]}, + ).then((value) { + m.clearSelections(); + }); + }, + onLongPress: () {}, + ), + ); + }, + separatorBuilder: (BuildContext context, int index) => const Padding( + padding: EdgeInsets.only(right: 10, left: 70), + child: Divider( + color: Color(0xFFE5E5E5), + ), + ), + ), + ], + ); + }), + floatingActionButton: FloatingActionButton( + child: Container( + width: 60, + height: 60, + decoration: const BoxDecoration( + shape: BoxShape.circle, + gradient: LinearGradient( + transform: GradientRotation(.46), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], + ), + ), + child: const Icon( + Icons.add, + size: 30, + color: MyColors.white, + ), + ), + onPressed: () async { + showMyBottomSheet( + context, + callBackFunc: () {}, + child: SearchEmployeeBottomSheet( + title: LocaleKeys.searchForEmployee.tr(), + apiMode: LocaleKeys.delegate.tr(), + fromChat: true, + onSelectEmployee: (_selectedEmployee) { + setState(() {}); + }, + ), + ); + }, + ), + ); + } +} diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart new file mode 100644 index 0000000..b84b827 --- /dev/null +++ b/lib/ui/chat/favorite_users_screen.dart @@ -0,0 +1,102 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; +import 'package:provider/provider.dart'; + +class ChatFavoriteUsersScreen extends StatelessWidget { + const ChatFavoriteUsersScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + // TODO: implement build + return Scaffold( + backgroundColor: MyColors.white, + body: Consumer(builder: (BuildContext context, ChatProviderModel m, Widget? child) { + return m.isLoading + ? ChatHomeShimmer() + : ListView( + shrinkWrap: true, + physics: const AlwaysScrollableScrollPhysics(), + padding: const EdgeInsets.only(top: 20), + children: [ + if (m.favUsersList != null && m.favUsersList.isNotEmpty) + ListView.separated( + itemCount: m.favUsersList!.length, + padding: EdgeInsets.zero, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (BuildContext context, int index) { + return SizedBox( + height: 55, + child: ListTile( + leading: Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.favUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), + ), + ), + ) + ], + ), + title: (m.favUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), + // subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), + trailing: IconButton( + alignment: Alignment.centerRight, + padding: EdgeInsets.zero, + icon: Icon(m.favUsersList![index].isFav! ? Icons.star : Icons.star_border), + color: m.favUsersList![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, + onPressed: () { + if (m.favUsersList![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.favUsersList![index].id!); + }, + ), + minVerticalPadding: 0, + onTap: () { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.favUsersList![index]}, + ).then((value) { + m.clearSelections(); + }); + }, + onLongPress: () {}, + ), + ); + }, + separatorBuilder: (BuildContext context, int index) => const Padding( + padding: EdgeInsets.only(right: 10, left: 70), + child: Divider( + color: Color(0xFFE5E5E5), + ), + ), + ) + else + Utils.getNoDataWidget(context).expanded + ], + ); + }), + ); + } +} diff --git a/lib/widgets/image_picker.dart b/lib/widgets/image_picker.dart index 9fa0336..f92f9f4 100644 --- a/lib/widgets/image_picker.dart +++ b/lib/widgets/image_picker.dart @@ -48,7 +48,7 @@ class ImageOptions { allowedExtensions: ['jpg', 'jpeg ', 'pdf', 'txt', 'docx', 'doc', 'pptx', 'xlsx', 'png', 'rar', 'zip', 'xls'], ); List files = result!.paths.map((path) => File(path!)).toList(); - image(result!.files.first.path.toString(), files.first); + image(result.files.first.path.toString(), files.first); }, ), ); From cffe185cdad9f6ecc1b65a53b49399173b75a3c3 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 13 Nov 2022 16:32:53 +0300 Subject: [PATCH 047/302] ITG Count fixes --- lib/app_state/app_state.dart | 6 ++++++ lib/classes/consts.dart | 4 ++-- lib/ui/login/login_screen.dart | 4 ++-- lib/ui/work_list/item_history_screen.dart | 12 ++++++++---- lib/ui/work_list/itg_detail_screen.dart | 6 ++++++ lib/ui/work_list/work_list_screen.dart | 1 + 6 files changed, 25 insertions(+), 8 deletions(-) diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 9e61872..49f4186 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -120,6 +120,12 @@ class AppState { set setItgWorkListIndex(int? _itgWorkListIndex) => itgWorkListIndex = _itgWorkListIndex; + String? itgRequestType; + + set setItgRequestType(String? _itgRequestType) => itgRequestType = _itgRequestType; + + String? get getItgRequestType => itgRequestType; + UserAutoLoginModel? chatDetails; set setchatUserDetails(UserAutoLoginModel details) => chatDetails = details; diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 646e498..789ef40 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 97282d3..20fa8bc 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -142,8 +142,8 @@ class _LoginScreenState extends State { isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool; if (!kReleaseMode) { // username.text = "15444"; // Maha User - username.text = "15153"; // Tamer User - password.text = "Abcd@12345"; + // username.text = "15153"; // Tamer User + // password.text = "Abcd@12345"; // username.text = "206535"; // Hashim User // password.text = "Namira786"; diff --git a/lib/ui/work_list/item_history_screen.dart b/lib/ui/work_list/item_history_screen.dart index 782e34d..fb1066b 100644 --- a/lib/ui/work_list/item_history_screen.dart +++ b/lib/ui/work_list/item_history_screen.dart @@ -86,9 +86,9 @@ class _ItemHistoryScreenState extends State { padding: const EdgeInsets.all(21), physics: const BouncingScrollPhysics(), children: [ - if (moItemHistoryList.isNotEmpty) loadMoItemHistoryData(), - if (poItemHistoryList.isNotEmpty) loadPoItemHistoryData(), - if (quotationAnalysisList.isNotEmpty) loadQuotationAnalysisData() + if (moItemHistoryList.isNotEmpty) loadMoItemHistoryData() else Utils.getNoDataWidget(context), + if (poItemHistoryList.isNotEmpty) loadPoItemHistoryData() else Utils.getNoDataWidget(context), + if (quotationAnalysisList.isNotEmpty) loadQuotationAnalysisData() else Utils.getNoDataWidget(context) ], ), ); @@ -163,7 +163,11 @@ class _ItemHistoryScreenState extends State { ItemDetailViewCol(LocaleKeys.balanceQuantity.tr(), poItemHistoryList[index].bALANCEQUANTITY?.toString() ?? ""), ItemDetailViewCol(LocaleKeys.netPrice.tr(), poItemHistoryList[index].nETPRICE?.toString() ?? ""), ), - ItemDetailGrid(ItemDetailViewCol(LocaleKeys.closureStatus.tr(), poItemHistoryList[index].cLOSEDCODE ?? ""), Container(), isItLast: true,) + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.closureStatus.tr(), poItemHistoryList[index].cLOSEDCODE ?? ""), + Container(), + isItLast: true, + ) ], ).objectContainerView(), separatorBuilder: (cxt, index) => 12.height, diff --git a/lib/ui/work_list/itg_detail_screen.dart b/lib/ui/work_list/itg_detail_screen.dart index 0a29a72..bbb0267 100644 --- a/lib/ui/work_list/itg_detail_screen.dart +++ b/lib/ui/work_list/itg_detail_screen.dart @@ -14,6 +14,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/itg_forms_models/allowed_actions_model.dart'; import 'package:mohem_flutter_app/models/itg_forms_models/itg_request_model.dart'; import 'package:mohem_flutter_app/models/itg_forms_models/request_detail_model.dart'; +import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/work_list/itg_fragments/approval_level_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/itg_fragments/request_detail_fragment.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart'; @@ -21,6 +22,7 @@ import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dialogs/itg_comments_dialog.dart'; +import 'package:provider/provider.dart'; class ItgDetailScreen extends StatefulWidget { ItgDetailScreen({Key? key}) : super(key: key); @@ -42,8 +44,11 @@ class _ItgDetailScreenState extends State { List allowedActionList = []; + late DashboardProviderModel providerData; + @override void initState() { + providerData = Provider.of(context, listen: false); super.initState(); } @@ -78,6 +83,7 @@ class _ItgDetailScreenState extends State { void getDataFromState() { if (requestDetails == null) { requestDetails = AppState().requestAllList![AppState().itgWorkListIndex!]; // ModalRoute.of(context)!.settings.arguments as WorkListResponseModel; + providerData.itgFormsModel!.totalCount = providerData.itgFormsModel!.totalCount! - 1; getItgData(); } } diff --git a/lib/ui/work_list/work_list_screen.dart b/lib/ui/work_list/work_list_screen.dart index 9471568..8efd789 100644 --- a/lib/ui/work_list/work_list_screen.dart +++ b/lib/ui/work_list/work_list_screen.dart @@ -347,6 +347,7 @@ class _WorkListScreenState extends State { return InkWell( onTap: () async { AppState().setItgWorkListIndex = index; + AppState().setItgRequestType = requestDetails.requestType; var shouldReloadData = await Navigator.pushNamed(context, AppRoutes.itgDetail); if (shouldReloadData != null) { if (shouldReloadData.toString() == "delegate_reload") { From 5412dcaf35a35317b849551cefb04ba3227aa5b5 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 14 Nov 2022 08:28:41 +0300 Subject: [PATCH 048/302] Chat Favorite Screen & Fixes --- lib/api/chat/chat_provider_model.dart | 20 +++++++------------- lib/ui/chat/chat_detailed_screen.dart | 17 ++++++++--------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 4e79374..b826753 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -60,8 +60,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatRecentUrl}", token: AppState().chatDetails!.response!.token, ); - - //logger.d(AppState().chatDetails!.response!.token); ChatUserModel recentChat = userToList(response.body); Response favRes = await ApiClient().getJsonForResponse( @@ -71,6 +69,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ChatUserModel favUList = userToList(favRes.body); if (favUList.response != null) { favUsersList = favUList.response!; + favUsersList.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase())); for (dynamic user in recentChat.response!) { for (dynamic favUser in favUList.response!) { if (user.id == favUser.id) { @@ -80,7 +79,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } pChatHistory = recentChat.response; - pChatHistory!.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase()!.compareTo(b.userName!.toLowerCase()!)); + pChatHistory!.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase())); searchedChats = pChatHistory; isLoading = false; notifyListeners(); @@ -94,8 +93,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal", token: AppState().chatDetails!.response!.token, ); - - logger.d(response.body); if (response.statusCode == 204) { if (!loadMore) userChatHistory = []; Utils.showToast("No More Data To Load"); @@ -134,7 +131,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future buildHubConnection() async { HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); - hubConnection = await HubConnectionBuilder() + hubConnection = HubConnectionBuilder() .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]) .configureLogging( @@ -162,8 +159,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); } - isLoading = false; - notifyListeners(); + // notifyListeners(); } void updateUserChatStatus(List? args) { @@ -171,7 +167,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { for (dynamic cItem in items[0]) { for (SingleUserChatModel chat in userChatHistory) { if (chat.userChatHistoryId.toString() == cItem["userChatHistoryId"].toString()) { - logger.d(jsonEncode(chat)); chat.isSeen = cItem["isSeen"]; chat.isDelivered = cItem["isDelivered"]; notifyListeners(); @@ -182,7 +177,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void userCountAsync(List? args) { List items = args!.toList(); - //print("---------------------------------User Count Async -------------------------------------"); + //logger.d("---------------------------------User Count Async -------------------------------------"); //logger.d(items); // for (var user in searchedChats!) { // if (user.id == items.first["id"]) { @@ -256,13 +251,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } userChatHistory.add(data.first); notifyListeners(); - logger.d(isChatScreenActive); // if (isChatScreenActive) scrollDown(); } void onUserTyping(List? parameters) { - print("==================== Typing Active =================="); - logger.d(parameters); + // print("==================== Typing Active =================="); + // logger.d(parameters); for (ChatUser user in searchedChats!) { if (user.id == parameters![1] && parameters[0] == true) { user.isTyping = parameters[0] as bool?; diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index c13e6d3..369bf3c 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,8 +1,5 @@ import 'dart:async'; -import 'dart:convert'; -import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; @@ -23,14 +20,14 @@ class ChatDetailScreen extends StatelessWidget { dynamic userDetails; late ChatProviderModel data; ScrollController scrollController = ScrollController(); - RefreshController _refreshController = RefreshController(initialRefresh: false); + final RefreshController _refreshController = RefreshController(initialRefresh: false); void getMoreChat() async { if (userDetails != null) { data.paginationVal = data.paginationVal + 10; data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true); } - await Future.delayed(Duration(milliseconds: 1000)); + await Future.delayed(const Duration(milliseconds: 1000)); _refreshController.refreshCompleted(); } @@ -61,6 +58,7 @@ class ChatDetailScreen extends StatelessWidget { child: ListView.builder( controller: scrollController, shrinkWrap: true, + reverse: false, itemCount: m.userChatHistory.length, padding: const EdgeInsets.only(top: 20), itemBuilder: (BuildContext context, int i) { @@ -137,10 +135,11 @@ class ChatDetailScreen extends StatelessWidget { height: 200, decoration: BoxDecoration( image: DecorationImage( - image: FileImage( - m.selectedFile, - ), - fit: BoxFit.cover), + image: FileImage( + m.selectedFile, + ), + fit: BoxFit.cover, + ), borderRadius: const BorderRadius.all( Radius.circular(0), ), From 83aabd05552aee12222c46317efcf259f447892b Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 14 Nov 2022 09:35:53 +0300 Subject: [PATCH 049/302] Chat Favorite Screen & Fixes --- lib/generated/codegen_loader.g.dart | 8 +- lib/ui/chat/chat_detailed_screen.dart | 4 +- lib/ui/chat/chat_home_screen.dart | 250 +++++++++++++------------ lib/ui/chat/favorite_users_screen.dart | 149 ++++++++------- 4 files changed, 209 insertions(+), 202 deletions(-) diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index e9dd08c..49dac5c 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -514,7 +514,9 @@ class CodegenLoader extends AssetLoader{ "verification": "تَحَقّق", "resend": "إعادة إرسال", "codeExpire": "انتهت صلاحية رمز التحقق", - "typeheretoreply": "اكتب هنا للرد" + "typeheretoreply": "اكتب هنا للرد", + "favorite": "مفضل", + "searchfromchat": "البحث من الدردشة" }; static const Map en_US = { "mohemm": "Mohemm", @@ -1016,7 +1018,9 @@ static const Map en_US = { "resend": "Resend", "codeExpire": "The verification code has been expired", "allQuestionsCorrect": "You have answered all questions correct", - "typeheretoreply": "Type here to reply" + "typeheretoreply": "Type here to reply", + "favorite": "Favorite", + "searchfromchat": "Search from chat" }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 369bf3c..7dfb321 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -16,10 +16,12 @@ import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:swipe_to/swipe_to.dart'; class ChatDetailScreen extends StatelessWidget { - ChatDetailScreen({Key? key}) : super(key: key); dynamic userDetails; + late ChatProviderModel data; + ScrollController scrollController = ScrollController(); + final RefreshController _refreshController = RefreshController(initialRefresh: false); void getMoreChat() async { diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 328354b..f10cc26 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -43,147 +43,149 @@ class _ChatHomeScreenState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: MyColors.white, - body: Consumer(builder: (BuildContext context, ChatProviderModel m, Widget? child) { - return m.isLoading - ? ChatHomeShimmer() - : ListView( - shrinkWrap: true, - physics: const AlwaysScrollableScrollPhysics(), - children: [ - Padding( - padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), - child: TextField( - onChanged: (String val) { - m.filter(val); - }, - decoration: InputDecoration( - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide( - color: Color(0xFFE5E5E5), + body: Consumer( + builder: (BuildContext context, ChatProviderModel m, Widget? child) { + return m.isLoading + ? ChatHomeShimmer() + : ListView( + shrinkWrap: true, + physics: const AlwaysScrollableScrollPhysics(), + children: [ + Padding( + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), + child: TextField( + onChanged: (String val) { + m.filter(val); + }, + decoration: InputDecoration( + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide( + color: Color(0xFFE5E5E5), + ), ), - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide( - color: Color(0xFFE5E5E5), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide( + color: Color(0xFFE5E5E5), + ), ), - ), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide( - color: Color(0xFFE5E5E5), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(5), + borderSide: const BorderSide( + color: Color(0xFFE5E5E5), + ), ), + contentPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 10), + hintText: LocaleKeys.searchfromchat.tr(), + hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic), + filled: true, + fillColor: const Color(0xFFF7F7F7), ), - contentPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 10), - hintText: LocaleKeys.searchfromchat.tr(), - hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic), - filled: true, - fillColor: const Color(0xFFF7F7F7), ), ), - ), - if (m.searchedChats != null) - ListView.separated( - itemCount: m.searchedChats!.length, - padding: const EdgeInsets.only(bottom: 80), - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - itemBuilder: (BuildContext context, int index) { - return SizedBox( - height: 55, - child: ListTile( - leading: Stack( - children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), - ), + if (m.searchedChats != null) + ListView.separated( + itemCount: m.searchedChats!.length, + padding: const EdgeInsets.only(bottom: 80), + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (BuildContext context, int index) { + return SizedBox( + height: 55, + child: ListTile( + leading: Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, ), - ) - ], - ), - title: (m.searchedChats![index].userName ?? "").toText14(color: MyColors.darkTextColor), - // subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), - trailing: SizedBox( - width: 60, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.max, - children: [ - if (m.searchedChats![index].unreadMessageCount! > 0) - Flexible( - child: Container( - padding: EdgeInsets.zero, - alignment: Alignment.centerRight, - width: 18, - height: 18, - decoration: const BoxDecoration( - color: MyColors.redColor, - borderRadius: BorderRadius.all( - Radius.circular(20), - ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), ), - child: (m.searchedChats![index].unreadMessageCount!.toString()) - .toText10( - color: MyColors.white, - ) - .center, ), ), - Flexible( - child: IconButton( - alignment: Alignment.centerRight, - padding: EdgeInsets.zero, - icon: Icon(m.searchedChats![index].isFav! ? Icons.star : Icons.star_border), - color: m.searchedChats![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, - onPressed: () { - if (m.searchedChats![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); - if (!m.searchedChats![index].isFav!) m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); - }, - ), ) ], ), + title: (m.searchedChats![index].userName ?? "").toText14(color: MyColors.darkTextColor), + // subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), + trailing: SizedBox( + width: 60, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + if (m.searchedChats![index].unreadMessageCount! > 0) + Flexible( + child: Container( + padding: EdgeInsets.zero, + alignment: Alignment.centerRight, + width: 18, + height: 18, + decoration: const BoxDecoration( + color: MyColors.redColor, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: (m.searchedChats![index].unreadMessageCount!.toString()) + .toText10( + color: MyColors.white, + ) + .center, + ), + ), + Flexible( + child: IconButton( + alignment: Alignment.centerRight, + padding: EdgeInsets.zero, + icon: Icon(m.searchedChats![index].isFav! ? Icons.star : Icons.star_border), + color: m.searchedChats![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, + onPressed: () { + if (m.searchedChats![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + if (!m.searchedChats![index].isFav!) m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + }, + ), + ) + ], + ), + ), + minVerticalPadding: 0, + onTap: () { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.searchedChats![index]}, + ).then((value) { + m.clearSelections(); + }); + }, + onLongPress: () {}, ), - minVerticalPadding: 0, - onTap: () { - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index]}, - ).then((value) { - m.clearSelections(); - }); - }, - onLongPress: () {}, + ); + }, + separatorBuilder: (BuildContext context, int index) => const Padding( + padding: EdgeInsets.only(right: 10, left: 70), + child: Divider( + color: Color(0xFFE5E5E5), ), - ); - }, - separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only(right: 10, left: 70), - child: Divider( - color: Color(0xFFE5E5E5), ), ), - ), - ], - ); - }), + ], + ); + }, + ), floatingActionButton: FloatingActionButton( child: Container( width: 60, diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index b84b827..2e3a3f2 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -12,91 +12,90 @@ import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart' import 'package:provider/provider.dart'; class ChatFavoriteUsersScreen extends StatelessWidget { - const ChatFavoriteUsersScreen({Key? key}) : super(key: key); - @override Widget build(BuildContext context) { - // TODO: implement build return Scaffold( backgroundColor: MyColors.white, - body: Consumer(builder: (BuildContext context, ChatProviderModel m, Widget? child) { - return m.isLoading - ? ChatHomeShimmer() - : ListView( - shrinkWrap: true, - physics: const AlwaysScrollableScrollPhysics(), - padding: const EdgeInsets.only(top: 20), - children: [ - if (m.favUsersList != null && m.favUsersList.isNotEmpty) - ListView.separated( - itemCount: m.favUsersList!.length, - padding: EdgeInsets.zero, - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - itemBuilder: (BuildContext context, int index) { - return SizedBox( - height: 55, - child: ListTile( - leading: Stack( - children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.favUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), + body: Consumer( + builder: (BuildContext context, ChatProviderModel m, Widget? child) { + if (m.isLoading) { + return ChatHomeShimmer(); + } else { + return m.favUsersList != null && m.favUsersList.isNotEmpty + ? ListView.separated( + itemCount: m.favUsersList!.length, + padding: const EdgeInsets.only(top: 20), + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (BuildContext context, int index) { + return SizedBox( + height: 55, + child: ListTile( + leading: Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.favUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), ), ), - ) - ], - ), - title: (m.favUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), - // subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), - trailing: IconButton( - alignment: Alignment.centerRight, - padding: EdgeInsets.zero, - icon: Icon(m.favUsersList![index].isFav! ? Icons.star : Icons.star_border), - color: m.favUsersList![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, - onPressed: () { - if (m.favUsersList![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.favUsersList![index].id!); - }, - ), - minVerticalPadding: 0, - onTap: () { - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: {"targetUser": m.favUsersList![index]}, - ).then((value) { - m.clearSelections(); - }); + ), + ) + ], + ), + title: (m.favUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), + trailing: IconButton( + alignment: Alignment.centerRight, + padding: EdgeInsets.zero, + icon: Icon(m.favUsersList![index].isFav! ? Icons.star : Icons.star_border), + color: m.favUsersList![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, + onPressed: () { + if (m.favUsersList![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.favUsersList![index].id!); }, - onLongPress: () {}, ), - ); - }, - separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only(right: 10, left: 70), - child: Divider( - color: Color(0xFFE5E5E5), + minVerticalPadding: 0, + onTap: () { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.favUsersList![index]}, + ).then( + (Object? value) { + m.clearSelections(); + }, + ); + }, + ), + ); + }, + separatorBuilder: (BuildContext context, int index) => const Padding( + padding: EdgeInsets.only(right: 10, left: 70), + child: Divider( + color: Color( + 0xFFE5E5E5, ), ), - ) - else - Utils.getNoDataWidget(context).expanded - ], - ); - }), + ), + ) + : Column( + children: [ + Utils.getNoDataWidget(context).expanded, + ], + ); + } + }, + ), ); } } From 3e5ce90c9a3885bc85c23f328bc1822abedbace9 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 14 Nov 2022 09:39:23 +0300 Subject: [PATCH 050/302] Chat Favorite Screen & Fixes --- lib/ui/chat/chat_detailed_screen.dart | 10 +++++++++- lib/ui/chat/favorite_users_screen.dart | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 7dfb321..e653fbe 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -15,7 +15,15 @@ import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:swipe_to/swipe_to.dart'; -class ChatDetailScreen extends StatelessWidget { +class ChatDetailScreen extends StatefulWidget { + // ignore: prefer_const_constructors_in_immutables + ChatDetailScreen({Key? key}) : super(key: key); + + @override + State createState() => _ChatDetailScreenState(); +} + +class _ChatDetailScreenState extends State { dynamic userDetails; late ChatProviderModel data; diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 2e3a3f2..a41c1b8 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -12,6 +12,8 @@ import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart' import 'package:provider/provider.dart'; class ChatFavoriteUsersScreen extends StatelessWidget { + const ChatFavoriteUsersScreen({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { return Scaffold( @@ -89,7 +91,7 @@ class ChatFavoriteUsersScreen extends StatelessWidget { ), ) : Column( - children: [ + children: [ Utils.getNoDataWidget(context).expanded, ], ); From 027b6ca7b6558405caae824569454dac334b9eac Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 14 Nov 2022 10:05:03 +0300 Subject: [PATCH 051/302] Chat Fixes --- lib/api/chat/chat_provider_model.dart | 30 +++++++++++++++++---------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index b826753..a4ea408 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -148,7 +148,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ({String? connectionId}) {}, ); if (hubConnection.state != HubConnectionState.Connected) { - print("================= Connection Established =========================="); + if (kDebugMode) { + print("================= Connection Established =========================="); + } await hubConnection.start(); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); @@ -176,7 +178,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void userCountAsync(List? args) { - List items = args!.toList(); + dynamic items = args!.toList(); //logger.d("---------------------------------User Count Async -------------------------------------"); //logger.d(items); // for (var user in searchedChats!) { @@ -188,8 +190,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void updateChatHistoryWindow(List? args) { - List items = args!.toList(); - print("---------------------------------Update Chat History Windows Async -------------------------------------"); + dynamic items = args!.toList(); + if (kDebugMode) { + print("---------------------------------Update Chat History Windows Async -------------------------------------"); + } logger.d(items); // for (var user in searchedChats!) { // if (user.id == items.first["id"]) { @@ -200,21 +204,25 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void chatNotDelivered(List? args) { - List items = args!.toList(); - print("--------------------------------- Chat Not Delivered Windows Async -------------------------------------"); + dynamic items = args!.toList(); + if (kDebugMode) { + print("--------------------------------- Chat Not Delivered Windows Async -------------------------------------"); + } logger.d(items); // for (var user in searchedChats!) { // if (user.id == items.first["id"]) { // user.userStatus = items.first["userStatus"]; // } // } - // notifyListeners(); + // notifyListeners();2 } void changeStatus(List? args) { - // print("================= Status Online // Offline ===================="); - List items = args!.toList(); - // logger.d(items); + if (kDebugMode) { + print("================= Status Online // Offline ===================="); + } + dynamic items = args!.toList(); + logger.d(items); for (ChatUser user in searchedChats!) { if (user.id == items.first["id"]) { user.userStatus = items.first["userStatus"]; @@ -348,7 +356,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // } Future sendChatToServer( - {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { + {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { Uuid uuid = const Uuid(); SingleUserChatModel data = SingleUserChatModel( chatEventId: chatEventId, From 93e7f7c862d02cd7d6c5b8bd849e2fcdb5350425 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 14 Nov 2022 10:13:25 +0300 Subject: [PATCH 052/302] Chat Fixes --- lib/classes/consts.dart | 4 ++-- lib/ui/chat/chat_home_screen.dart | 2 +- lib/ui/chat/favorite_users_screen.dart | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 646e498..c5788f9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index f10cc26..b4483dc 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -117,7 +117,7 @@ class _ChatHomeScreenState extends State { ) ], ), - title: (m.searchedChats![index].userName ?? "").toText14(color: MyColors.darkTextColor), + title: (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor), // subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), trailing: SizedBox( width: 60, diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index a41c1b8..8b5eba0 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -56,7 +56,7 @@ class ChatFavoriteUsersScreen extends StatelessWidget { ) ], ), - title: (m.favUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), + title: (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor), trailing: IconButton( alignment: Alignment.centerRight, padding: EdgeInsets.zero, From 4ff3a5093bd2bc70f49d81df6d6fa2e0a539db67 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 14 Nov 2022 10:22:16 +0300 Subject: [PATCH 053/302] Action duration implemented --- lib/classes/date_uitl.dart | 76 ++++++++----- lib/extensions/string_extensions.dart | 3 +- lib/ui/work_list/item_history_screen.dart | 101 +++++++++++------- .../worklist_fragments/actions_fragment.dart | 28 ++++- 4 files changed, 140 insertions(+), 68 deletions(-) diff --git a/lib/classes/date_uitl.dart b/lib/classes/date_uitl.dart index 73945f8..f7b8192 100644 --- a/lib/classes/date_uitl.dart +++ b/lib/classes/date_uitl.dart @@ -381,6 +381,30 @@ class DateUtil { return ""; } + static String formatDuration(Duration d) { + var seconds = d.inSeconds; + var days = seconds ~/ Duration.secondsPerDay; + seconds -= days * Duration.secondsPerDay; + var hours = seconds ~/ Duration.secondsPerHour; + seconds -= hours * Duration.secondsPerHour; + var minutes = seconds ~/ Duration.secondsPerMinute; + seconds -= minutes * Duration.secondsPerMinute; + + List tokens = []; + if (days != 0) { + tokens.add('$days days'); + } + if (tokens.isNotEmpty || hours != 0) { + tokens.add('$hours hours'); + } + if (tokens.isNotEmpty || minutes != 0) { + tokens.add('$minutes mins'); + } + tokens.add('$seconds secs'); + + return tokens.join(' '); + } + /// get data formatted like 26/4/2020 /// [dateTime] convert DateTime to data formatted according to language static String getDayMonthYearDateFormattedLang(DateTime dateTime, bool isArabic) { @@ -431,30 +455,30 @@ class DateUtil { return "/Date(" + DateFormat('mm-dd-yyy').parse(isoDate).millisecondsSinceEpoch.toString() + ")/"; } - // static String getDay(DayOfWeek dayOfWeek) { - // switch (dayOfWeek) { - // case DayOfWeek.Monday: - // return "Monday"; - // break; - // case DayOfWeek.Tuesday: - // return "Tuesday"; - // break; - // case DayOfWeek.Wednesday: - // return "Wednesday"; - // break; - // case DayOfWeek.Thursday: - // return "Thursday"; - // break; - // case DayOfWeek.Friday: - // return "Friday"; - // break; - // case DayOfWeek.Saturday: - // return "Saturday"; - // break; - // case DayOfWeek.Sunday: - // return "Sunday"; - // break; - // } - // return ""; - // } +// static String getDay(DayOfWeek dayOfWeek) { +// switch (dayOfWeek) { +// case DayOfWeek.Monday: +// return "Monday"; +// break; +// case DayOfWeek.Tuesday: +// return "Tuesday"; +// break; +// case DayOfWeek.Wednesday: +// return "Wednesday"; +// break; +// case DayOfWeek.Thursday: +// return "Thursday"; +// break; +// case DayOfWeek.Friday: +// return "Friday"; +// break; +// case DayOfWeek.Saturday: +// return "Saturday"; +// break; +// case DayOfWeek.Sunday: +// return "Sunday"; +// break; +// } +// return ""; +// } } diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 9af8f2b..8bc15e7 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -22,8 +22,9 @@ extension EmailValidator on String { style: TextStyle(fontSize: 10, fontStyle: fontStyle ?? FontStyle.normal, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.4), ); - Widget toText11({Color? color, FontWeight? weight, bool isUnderLine = false, bool isBold = false}) => Text( + Widget toText11({Color? color, FontWeight? weight, bool isUnderLine = false, bool isBold = false, int maxLine = 0}) => Text( this, + maxLines: (maxLine > 0) ? maxLine : null, style: TextStyle( fontSize: 11, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.w600), diff --git a/lib/ui/work_list/item_history_screen.dart b/lib/ui/work_list/item_history_screen.dart index fb1066b..562b59f 100644 --- a/lib/ui/work_list/item_history_screen.dart +++ b/lib/ui/work_list/item_history_screen.dart @@ -86,9 +86,9 @@ class _ItemHistoryScreenState extends State { padding: const EdgeInsets.all(21), physics: const BouncingScrollPhysics(), children: [ - if (moItemHistoryList.isNotEmpty) loadMoItemHistoryData() else Utils.getNoDataWidget(context), - if (poItemHistoryList.isNotEmpty) loadPoItemHistoryData() else Utils.getNoDataWidget(context), - if (quotationAnalysisList.isNotEmpty) loadQuotationAnalysisData() else Utils.getNoDataWidget(context) + if (moItemHistoryList.isNotEmpty) loadMoItemHistoryData(), + if (poItemHistoryList.isNotEmpty) loadPoItemHistoryData(), + if (quotationAnalysisList.isNotEmpty) loadQuotationAnalysisData() ], ), ); @@ -102,21 +102,39 @@ class _ItemHistoryScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - ItemDetailView(LocaleKeys.requestNumber.tr(), moItemHistoryList[index].rEQUESTNUMBER ?? ""), - ItemDetailView(LocaleKeys.uom.tr(), moItemHistoryList[index].uNITOFMEASURE ?? ""), - ItemDetailView(LocaleKeys.quantity.tr(), moItemHistoryList[index].qUANTITY?.toString() ?? ""), - ItemDetailView(LocaleKeys.dateRequired.tr(), moItemHistoryList[index].dATEREQUIRED ?? ""), - ItemDetailView(LocaleKeys.lineStatus.tr(), moItemHistoryList[index].lINESTATUSDIS ?? ""), - ItemDetailView(LocaleKeys.statusDate.tr(), moItemHistoryList[index].sTATUSDATE ?? ""), - ItemDetailView(LocaleKeys.transactionType.tr(), moItemHistoryList[index].tRANSACTIONTYPENAME ?? ""), - ItemDetailView(LocaleKeys.organization.tr(), moItemHistoryList[index].oRGANIZATIONNAME ?? ""), - ItemDetailView(LocaleKeys.operatingCode.tr(), moItemHistoryList[index].oRGANIZATIONCODE ?? ""), - ItemDetailView(LocaleKeys.operatingUnit.tr(), moItemHistoryList[index].oPERATINGUNITNAME ?? ""), - ItemDetailView(LocaleKeys.fromSubInventory.tr(), moItemHistoryList[index].fROMSUBINVENTORYCODE ?? ""), - ItemDetailView(LocaleKeys.fromLocator.tr(), moItemHistoryList[index].fROMLOCATOR ?? ""), - ItemDetailView(LocaleKeys.toSubInventory.tr(), moItemHistoryList[index].tOSUBINVENTORYCODE ?? ""), - ItemDetailView(LocaleKeys.toLocator.tr(), moItemHistoryList[index].tOLOCATOR ?? ""), - ItemDetailView(LocaleKeys.shipToLocation.tr(), moItemHistoryList[index].sHIPTOLOCATION ?? ""), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.requestNumber.tr(), moItemHistoryList[index].rEQUESTNUMBER ?? ""), + ItemDetailViewCol(LocaleKeys.uom.tr(), moItemHistoryList[index].uNITOFMEASURE ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.quantity.tr(), moItemHistoryList[index].qUANTITY?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.dateRequired.tr(), moItemHistoryList[index].dATEREQUIRED ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.lineStatus.tr(), moItemHistoryList[index].lINESTATUSDIS ?? ""), + ItemDetailViewCol(LocaleKeys.statusDate.tr(), moItemHistoryList[index].sTATUSDATE ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.transactionType.tr(), moItemHistoryList[index].tRANSACTIONTYPENAME ?? ""), + ItemDetailViewCol(LocaleKeys.organization.tr(), moItemHistoryList[index].oRGANIZATIONNAME ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.operatingCode.tr(), moItemHistoryList[index].oRGANIZATIONCODE ?? ""), + ItemDetailViewCol(LocaleKeys.operatingUnit.tr(), moItemHistoryList[index].oPERATINGUNITNAME ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.fromSubInventory.tr(), moItemHistoryList[index].fROMSUBINVENTORYCODE ?? ""), + ItemDetailViewCol(LocaleKeys.fromLocator.tr(), moItemHistoryList[index].fROMLOCATOR ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.toSubInventory.tr(), moItemHistoryList[index].tOSUBINVENTORYCODE ?? ""), + ItemDetailViewCol(LocaleKeys.toLocator.tr(), moItemHistoryList[index].tOLOCATOR ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.shipToLocation.tr(), moItemHistoryList[index].sHIPTOLOCATION ?? ""), + Container(), + isItLast: true, + ), ], ).objectContainerView(), separatorBuilder: (cxt, index) => 12.height, @@ -131,10 +149,6 @@ class _ItemHistoryScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - // ItemDetailGrid( - // ItemDetailViewCol(LocaleKeys.from.tr(), workListData!.fROMUSER ?? ""), - // ItemDetailViewCol(LocaleKeys.to.tr(), workListData!.tOUSER ?? ""), - // ), ItemDetailGrid( ItemDetailViewCol(LocaleKeys.operatingUnit.tr(), poItemHistoryList[index].oUNAME ?? ""), ItemDetailViewCol(LocaleKeys.poNumber.tr(), poItemHistoryList[index].pONUMBER ?? ""), @@ -182,20 +196,35 @@ class _ItemHistoryScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - ItemDetailView(LocaleKeys.quotationNumber.tr(), quotationAnalysisList[index].qUOTNUM ?? ""), - ItemDetailView(LocaleKeys.vendorName.tr(), quotationAnalysisList[index].vENDORNAME ?? ""), - ItemDetailView(LocaleKeys.itemCode.tr(), quotationAnalysisList[index].iTEMCODE ?? ""), - ItemDetailView(LocaleKeys.description.tr(), quotationAnalysisList[index].iTEMDESC ?? ""), - ItemDetailView(LocaleKeys.quotationQty.tr(), quotationAnalysisList[index].qUOTQTY?.toString() ?? ""), - ItemDetailView(LocaleKeys.quotationUOM.tr(), quotationAnalysisList[index].qUOTUOM ?? ""), - ItemDetailView(LocaleKeys.quotationNetPrice.tr(), quotationAnalysisList[index].qUOTUNITPRICE?.toString() ?? ""), - ItemDetailView(LocaleKeys.quotationLineTotal.tr(), quotationAnalysisList[index].qUOTLINETOTAL?.toString() ?? ""), - ItemDetailView(LocaleKeys.quotationBonusQuantity.tr(), quotationAnalysisList[index].qUOTBONUSQTY ?? ""), - ItemDetailView(LocaleKeys.quotationDeliveryDate.tr(), quotationAnalysisList[index].qUOTDELIVERYDATE ?? ""), - ItemDetailView(LocaleKeys.quotationMFGPartNumber.tr(), quotationAnalysisList[index].qUOTMFGPARTNUM ?? ""), - ItemDetailView(LocaleKeys.rfqNumber.tr(), quotationAnalysisList[index].rFQNUM ?? ""), - ItemDetailView(LocaleKeys.rfqQty.tr(), quotationAnalysisList[index].rFQQTY?.toString() ?? ""), - ItemDetailView(LocaleKeys.rfqUOM.tr(), quotationAnalysisList[index].rFQUOM ?? ""), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.quotationNumber.tr(), quotationAnalysisList[index].qUOTNUM ?? ""), + ItemDetailViewCol(LocaleKeys.vendorName.tr(), quotationAnalysisList[index].vENDORNAME ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.itemCode.tr(), quotationAnalysisList[index].iTEMCODE ?? ""), + ItemDetailViewCol(LocaleKeys.description.tr(), quotationAnalysisList[index].iTEMDESC ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.quotationQty.tr(), quotationAnalysisList[index].qUOTQTY?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.quotationUOM.tr(), quotationAnalysisList[index].qUOTUOM ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.quotationNetPrice.tr(), quotationAnalysisList[index].qUOTUNITPRICE?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.quotationLineTotal.tr(), quotationAnalysisList[index].qUOTLINETOTAL?.toString() ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.quotationBonusQuantity.tr(), quotationAnalysisList[index].qUOTBONUSQTY ?? ""), + ItemDetailViewCol(LocaleKeys.quotationDeliveryDate.tr(), quotationAnalysisList[index].qUOTDELIVERYDATE ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.quotationMFGPartNumber.tr(), quotationAnalysisList[index].qUOTMFGPARTNUM ?? ""), + ItemDetailViewCol(LocaleKeys.rfqNumber.tr(), quotationAnalysisList[index].rFQNUM ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.rfqQty.tr(), quotationAnalysisList[index].rFQQTY?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.rfqUOM.tr(), quotationAnalysisList[index].rFQUOM ?? ""), + isItLast: true, + ) ], ).objectContainerView(title: "${quotationAnalysisList[index].iTEMCODE}-${quotationAnalysisList[index].iTEMDESC}"), separatorBuilder: (cxt, index) => 12.height, diff --git a/lib/ui/work_list/worklist_fragments/actions_fragment.dart b/lib/ui/work_list/worklist_fragments/actions_fragment.dart index 8a69599..439888b 100644 --- a/lib/ui/work_list/worklist_fragments/actions_fragment.dart +++ b/lib/ui/work_list/worklist_fragments/actions_fragment.dart @@ -27,7 +27,7 @@ class ActionsFragment extends StatelessWidget { itemCount: actionHistoryList.length, padding: EdgeInsets.all(21), itemBuilder: (context, index) { - return showItem(context, actionHistoryList[index]); + return showItem(context, actionHistoryList[index], index); }, separatorBuilder: (BuildContext context, int index) { return 12.height; @@ -36,7 +36,7 @@ class ActionsFragment extends StatelessWidget { ); } - Widget showItem(BuildContext context, GetActionHistoryList actionHistory) { + Widget showItem(BuildContext context, GetActionHistoryList actionHistory, int index) { return Container( width: double.infinity, decoration: BoxDecoration( @@ -89,7 +89,9 @@ class ActionsFragment extends StatelessWidget { if (actionHistory.nOTIFICATIONDATE!.isNotEmpty) DateUtil.formatDateToDate(DateUtil.convertSimpleStringDateToDateddMMyyyy(actionHistory.nOTIFICATIONDATE!), false).toText12(color: MyColors.lightTextColor), ], - ) + ), + 10.height, + getActionDuration(index).toText11(maxLine: 1, color: const Color(0xff1FA269)) ], ), ) @@ -127,8 +129,24 @@ class ActionsFragment extends StatelessWidget { ); } + String getActionDuration(int index) { + if (actionHistoryList[index].aCTIONCODE == "SUBMIT") { + return ""; + } else if(actionHistoryList[index].aCTIONCODE == "PENDING") { + DateTime dateTimeFrom = DateUtil.convertSimpleStringDateToDate(actionHistoryList[++index].nOTIFICATIONDATE!); + Duration duration = DateTime.now().difference(dateTimeFrom); + return "Action duration: " + DateUtil.formatDuration(duration); + } else { + DateTime dateTimeTo = DateUtil.convertSimpleStringDateToDate(actionHistoryList[index].nOTIFICATIONDATE!); + DateTime dateTimeFrom = DateUtil.convertSimpleStringDateToDate(actionHistoryList[++index].nOTIFICATIONDATE!); + Duration duration = dateTimeTo.difference(dateTimeFrom); + print(dateTimeTo); + print(dateTimeFrom); + return "Action duration: " + DateUtil.formatDuration(duration); + } + } + Color getStatusColor(String code) { - print("code:$code"); if (code == "SUBMIT") { return const Color(0xff2E303A); } else if (code == "REJECTED") { @@ -139,7 +157,7 @@ class ActionsFragment extends StatelessWidget { return MyColors.orange; } else if (code == "APPROVED" || code == "APPROVE" || code == "ANSWER_INFO") { return const Color(0xff1FA269); - } else if (code == "REQUEST_INFO"|| code == "FORWARD") { + } else if (code == "REQUEST_INFO" || code == "FORWARD") { return const Color(0xff2E303A); } else if (code != "SUBMIT" && code != "REJECT" && code != "PENDING") { return MyColors.orange; From 2fe41977d8a9f83e9e3158004b9fe8b9f859ed23 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 14 Nov 2022 10:26:36 +0300 Subject: [PATCH 054/302] Chat Fixes --- lib/ui/chat/chat_detailed_screen.dart | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index e653fbe..b9a7ea2 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,4 +1,5 @@ import 'dart:async'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -25,6 +26,8 @@ class ChatDetailScreen extends StatefulWidget { class _ChatDetailScreenState extends State { dynamic userDetails; + bool _firstAutoscrollExecuted = false; + bool _shouldAutoscroll = false; late ChatProviderModel data; @@ -40,6 +43,47 @@ class _ChatDetailScreenState extends State { await Future.delayed(const Duration(milliseconds: 1000)); _refreshController.refreshCompleted(); } + // + // void _scrollListener() { + // _firstAutoscrollExecuted = true; + // if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { + // _shouldAutoscroll = true; + // } else { + // _shouldAutoscroll = false; + // } + // } + // + // void _scrollToBottom() { + // scrollController.jumpTo(scrollController.position.maxScrollExtent); + // } + + // void scrollToMaxExtent() { + // WidgetsBinding.instance.addPostFrameCallback((_) { + // scrollController.animateTo( + // scrollController.position.maxScrollExtent, + // duration: const Duration(milliseconds: 100), + // curve: Curves.easeIn, + // ); + // }); + // } + + + + @override + void initState() { + // TODO: implement initState + super.initState(); + //scrollToMaxExtent(); + + // scrollController.addListener(_scrollListener); + } + + @override + void dispose() { + // TODO: implement dispose + //scrollController.removeListener(_scrollListener); + super.dispose(); + } @override Widget build(BuildContext context) { From 2934203b8b156d5ba12d8c4b16bb4a68e1afd6f3 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 14 Nov 2022 10:30:47 +0300 Subject: [PATCH 055/302] Chat Fixes --- lib/ui/chat/chat_detailed_screen.dart | 4 ++-- lib/ui/chat/chat_home_screen.dart | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index b9a7ea2..a6c0e67 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -92,7 +92,7 @@ class _ChatDetailScreenState extends State { if (userDetails != null) data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: false); return Scaffold( backgroundColor: const Color(0xFFF8F8F8), - appBar: AppBarWidget(context, title: userDetails["targetUser"].userName, showHomeButton: false, image: userDetails["targetUser"].image), + appBar: AppBarWidget(context, title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, showHomeButton: false, image: userDetails["targetUser"].image), body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { return (m.isLoading @@ -149,7 +149,7 @@ class _ChatDetailScreenState extends State { height: 80, color: MyColors.black.withOpacity(0.10), child: ListTile( - title: (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString() ? "You" : m.repliedMsg.first.currentUserName.toString()) + title: (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString() ? "You" : m.repliedMsg.first.currentUserName.toString().replaceAll(".", " ")) .toText14(color: MyColors.lightGreenColor), subtitle: (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12(color: MyColors.white, maxLine: 2), trailing: GestureDetector( diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index b4483dc..879e390 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -167,7 +167,7 @@ class _ChatHomeScreenState extends State { context, AppRoutes.chatDetailed, arguments: {"targetUser": m.searchedChats![index]}, - ).then((value) { + ).then((Object? value) { m.clearSelections(); }); }, From f1aadf50314b4d3af6deae4ae2e5b96092b970ae Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 14 Nov 2022 10:53:17 +0300 Subject: [PATCH 056/302] Chat Fixes --- lib/api/chat/chat_provider_model.dart | 4 ++-- lib/ui/chat/chat_detailed_screen.dart | 1 + lib/ui/chat/chat_home_screen.dart | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index a4ea408..fb9e6c5 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -219,10 +219,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void changeStatus(List? args) { if (kDebugMode) { - print("================= Status Online // Offline ===================="); + // print("================= Status Online // Offline ===================="); } dynamic items = args!.toList(); - logger.d(items); + // logger.d(items); for (ChatUser user in searchedChats!) { if (user.id == items.first["id"]) { user.userStatus = items.first["userStatus"]; diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index a6c0e67..e2d0bd7 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 879e390..32f97fa 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -37,6 +37,7 @@ class _ChatHomeScreenState extends State { @override void dispose() { super.dispose(); + data.hubConnection.stop(); } @override From d849699489cdc36fb0cfbe33b5e67aa1ad8ef8f8 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Mon, 14 Nov 2022 11:03:06 +0300 Subject: [PATCH 057/302] fix issues --- .../attendance/monthly_attendance_screen.dart | 2 +- lib/ui/misc/request_submit_screen.dart | 23 +- .../dynamic_screens/dynamic_input_screen.dart | 228 +++++++----------- 3 files changed, 94 insertions(+), 159 deletions(-) diff --git a/lib/ui/attendance/monthly_attendance_screen.dart b/lib/ui/attendance/monthly_attendance_screen.dart index de35da0..3115e46 100644 --- a/lib/ui/attendance/monthly_attendance_screen.dart +++ b/lib/ui/attendance/monthly_attendance_screen.dart @@ -286,7 +286,7 @@ class _MonthlyAttendanceScreenState extends State { showWeekNumber: false, cellBorderColor: Colors.white, selectionDecoration: BoxDecoration( - border: Border.all(color: MyColors.white, width: 10), + border: Border.all(color: MyColors.white, width: 1), shape: BoxShape.circle, ), dataSource: MeetingDataSource(_getDataSource()), diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index 7869443..f5a2d1e 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -68,7 +68,7 @@ class _RequestSubmitScreenState extends State { } void submitRequest() async { - // try { + try { Utils.showLoading(context); List> list = []; if (attachmentFiles.isNotEmpty) { @@ -90,28 +90,28 @@ class _RequestSubmitScreenState extends State { if (params!.approvalFlag == 'phone_numbers') { await ProfileApiClient().startPhoneApprovalProcess( - LocaleKeys.submit.tr(), + "SUBMIT", comments.text, params!.pItemId, params!.transactionId, ); } else if (params!.approvalFlag == 'address') { await ProfileApiClient().startAddressApprovalProcess( - LocaleKeys.submit.tr(), + "SUBMIT", comments.text, params!.pItemId, params!.transactionId, ); } else if (params!.approvalFlag == 'family_member') { await ProfileApiClient().getApproves( - LocaleKeys.submit.tr(), + "SUBMIT", comments.text, params!.transactionId!.toInt(), params!.pItemId.toString(), ); } else if (params!.approvalFlag == 'basicDetails') { await ProfileApiClient().startBasicDetailsApprovalProcess( - LocaleKeys.submit.tr(), + "SUBMIT", comments.text, params!.pItemId, params!.transactionId, @@ -124,15 +124,14 @@ class _RequestSubmitScreenState extends State { ); } else if (params!.approvalFlag == 'eit') { await MyAttendanceApiClient().startEitApprovalProcess( - LocaleKeys.submit.tr(), + "SUBMIT", comments.text, params!.pItemId, params!.transactionId, ); }else if (params!.approvalFlag == 'endEmployment') { await TerminationDffApiClient().startTermApprovalProcess( - // "SUBMIT", - LocaleKeys.submit.tr(), + "SUBMIT", comments.text, params!.pItemId, params!.transactionId, @@ -143,10 +142,10 @@ class _RequestSubmitScreenState extends State { Utils.showToast(LocaleKeys.yourRequestHasBeenSubmittedForApprovals.tr(), longDuration: true); Navigator.of(context).popUntil((route) => route.settings.name == AppRoutes.dashboard); Navigator.pushNamed(context, AppRoutes.workList); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } @override diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 045b808..519bb6c 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -48,17 +48,6 @@ class _DynamicInputScreenState extends State { descFlexConTextTitle = genericResponseModel!.pDESCFLEXCONTEXTNAME ?? ""; getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); - if (dynamicParams!.collectionNotificationList != null && dynamicParams!.collectionNotificationList!.isNotEmpty) { - getEitDffStructureList!.forEach((element) { - dynamicParams!.collectionNotificationList!.forEach((element2) { - if (element.sEGMENTNAME == element2.segmentName) { - element.fieldAnswer = element2.varchar2Value; - element.eSERVICESDV ??= ESERVICESDV(); - element.eSERVICESDV!.pIDCOLUMNNAME = element2.varchar2Value; - } - }); - }); - } Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -68,7 +57,7 @@ class _DynamicInputScreenState extends State { } void validateTransaction() async { - // try { + try { Utils.showLoading(context); List> values = getEitDffStructureList!.map((e) { String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; @@ -102,11 +91,6 @@ class _DynamicInputScreenState extends State { values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); - if (dynamicParams!.collectionNotificationList != null && dynamicParams!.collectionNotificationList!.isNotEmpty) { - Utils.hideLoading(context); - Navigator.pop(context, values); - return; - } SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); Utils.hideLoading(context); await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, @@ -114,10 +98,10 @@ class _DynamicInputScreenState extends State { Utils.showLoading(context); await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); Utils.hideLoading(context); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } String dESCFLEXCONTEXTCODE = ""; @@ -126,42 +110,19 @@ class _DynamicInputScreenState extends State { Future calGetValueSetValues(GetEITDFFStructureList structureList) async { try { Utils.showLoading(context); - List> values = []; String segmentId = structureList.cHILDSEGMENTSVS!; - if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!; List filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; - - if (filteredList.isEmpty && structureList.cHILDSEGMENTSVSSplited!.isNotEmpty) { - segmentId = structureList.cHILDSEGMENTSVSSplited![0]; - filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; - } - values = filteredList + List> values = filteredList .map((e) => GetSetValuesRequestModel( sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) .toJson()) .toList(); - - // if (parentValue.isNotEmpty && (structureList.vALIDATIONTYPE == "F")) { - // values = getDependenciesParams(parentValue); - // } - // if (structureList.pARENTSEGMENTSVSSplitedVS!.isNotEmpty) { - // structureList.pARENTSEGMENTSVSSplitedVS!.forEach((element2) { - // filteredList = getEitDffStructureList?.where((element) => element.sEGMENTNAME == element2.name).toList() ?? []; - // values = filteredList - // .map((e) => GetSetValuesRequestModel( - // sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) - // .toJson()) - // .toList(); - // }); - // List filteredList2 = getEitDffStructureList?.where((element) => element.fLEXVALUESETNAME == structureList.fLEXVALUESETNAME).toList() ?? []; - // } - List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); List abc = genericResponseModel?.getEITDFFStructureList ?? []; getEitDffStructureList = abc; - int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == structureList.cHILDSEGMENTSVS); getEitDffStructureList![index].eSERVICESVS!.clear(); if (eServicesResponseModel.isNotEmpty) getEitDffStructureList![index].eSERVICESVS!.addAll(eServicesResponseModel); // getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; @@ -175,7 +136,7 @@ class _DynamicInputScreenState extends State { } Future getDefaultValues(GetEITDFFStructureList structureList) async { - // try { + try { Utils.showLoading(context); for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; @@ -197,34 +158,15 @@ class _DynamicInputScreenState extends State { ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, getSetList); int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); getEitDffStructureList![index].eSERVICESDV = defaultValue; - GetEITDFFStructureList defaultValueCheck = getEitDffStructureList!.where((GetEITDFFStructureList element) => element.sEGMENTNAME == segmentId).toList().first; - - if (defaultValueCheck.cHILDSEGMENTSDVSplited!.isNotEmpty && defaultValueCheck.rEADONLY == 'Y') { - getDefaultValues(defaultValueCheck); - Utils.hideLoading(context); - - // GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); - // List> getSetList = getDefaultValuesIonicLogic(parent); - // ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, defaultValueCheck.dESCFLEXCONTEXTCODE!, defaultValueCheck.dESCFLEXNAME!, getSetList); - // int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); - // getEitDffStructureList![index].eSERVICESDV = defaultValue; - } else if (defaultValueCheck.cHILDSEGMENTSVSSplited!.isNotEmpty && defaultValueCheck.rEADONLY == 'Y') { - calGetValueSetValues(defaultValueCheck); - Utils.hideLoading(context); - } - } else if (values.isNotEmpty) { - ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); - int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); - getEitDffStructureList![index].eSERVICESDV = defaultValue; } } await Future.delayed(const Duration(seconds: 1)); Utils.hideLoading(context); setState(() {}); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } // List> calGetValueSetValuesIonicLogic(GetEITDFFStructureList structureElement) { @@ -238,79 +180,79 @@ class _DynamicInputScreenState extends State { // } List> getDefaultValuesIonicLogic(GetEITDFFStructureList structureElement) { - //try { - List parentValue = structureElement.pARENTSEGMENTSVSSplitedVS ?? []; - List parentsList = structureElement.pARENTSEGMENTSDVSplited ?? []; - - List> dependenciesList = []; - String? parentVal; - bool isStandardDate = false; - bool isStandardTimeDate = false; - bool isStandardTime = false; - bool isHidden = false; - bool isReadOnlyList = false; - bool isSelectElement = false; - - // isStandardDate = this.isStandardDate(obj); - // isStandardTimeDate = this.isStandardDateTime(obj); - // isStandardTime = this.isStandardTime(obj); - if (structureElement.dISPLAYFLAG == "N") isHidden = true; - if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "Y") { - isReadOnlyList = true; - } - if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "N") { - isSelectElement = true; - } + try { + List parentValue = structureElement.pARENTSEGMENTSVSSplitedVS ?? []; + List parentsList = structureElement.pARENTSEGMENTSDVSplited ?? []; + + List> dependenciesList = []; + String? parentVal; + bool isStandardDate = false; + bool isStandardTimeDate = false; + bool isStandardTime = false; + bool isHidden = false; + bool isReadOnlyList = false; + bool isSelectElement = false; + + // isStandardDate = this.isStandardDate(obj); + // isStandardTimeDate = this.isStandardDateTime(obj); + // isStandardTime = this.isStandardTime(obj); + if (structureElement.dISPLAYFLAG == "N") isHidden = true; + if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "Y") { + isReadOnlyList = true; + } + if (structureElement.vALIDATIONTYPE != "N" && structureElement.rEADONLY == "N") { + isSelectElement = true; + } - if (parentValue.isNotEmpty && (structureElement.vALIDATIONTYPE == "D" || structureElement.vALIDATIONTYPE == "Y")) { - List parValue = getDependenciesParams(parentValue); + if (parentValue.isNotEmpty && (structureElement.vALIDATIONTYPE == "D" || structureElement.vALIDATIONTYPE == "Y")) { + List parValue = getDependenciesParams(parentValue); - if (parValue.isNotEmpty) { - parentVal = parValue.first.ID_COLUMN_NAME; - } + if (parValue.isNotEmpty) { + parentVal = parValue.first.ID_COLUMN_NAME; + } - if (parentVal == null) { - return []; + if (parentVal == null) { + return []; + } } - } - if (parentsList.isNotEmpty) { - if (parentValue.isNotEmpty) { - parentsList = parentsList + parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson())).toList(); - // parentsList.addAll(parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson()))); - // parentsList.concat(parentValue); + if (parentsList.isNotEmpty) { + if (parentValue.isNotEmpty) { + parentsList = parentsList + parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson())).toList(); + // parentsList.addAll(parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson()))); + // parentsList.concat(parentValue); + } + dependenciesList = getDependenciesParams(parentsList); } - dependenciesList = getDependenciesParams(parentsList); + return dependenciesList; + // for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { + // String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; + // print("segmentId:$segmentId"); + // print("segmentName:${structureList.sEGMENTNAME}"); + // GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); + // List parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? []; + // List parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? []; + // + // List filteredList = + // getEitDffStructureList!.where((outerElement) => parentDvRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList(); + // + // List> values = filteredList + // .map((e) => GetSetValuesRequestModel( + // sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) + // .toJson()) + // .toList(); + // print("values:$values"); + // + // ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); + // int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + // getEitDffStructureList![index].eSERVICESDV = defaultValue; + // } + // Utils.hideLoading(context); + // setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + return []; } - return dependenciesList; - // for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { - // String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; - // print("segmentId:$segmentId"); - // print("segmentName:${structureList.sEGMENTNAME}"); - // GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); - // List parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? []; - // List parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? []; - // - // List filteredList = - // getEitDffStructureList!.where((outerElement) => parentDvRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList(); - // - // List> values = filteredList - // .map((e) => GetSetValuesRequestModel( - // sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) - // .toJson()) - // .toList(); - // print("values:$values"); - // - // ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); - // int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); - // getEitDffStructureList![index].eSERVICESDV = defaultValue; - // } - // Utils.hideLoading(context); - // setState(() {}); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // return []; - // } } List> getDependenciesParams(parentsList) { @@ -318,7 +260,7 @@ class _DynamicInputScreenState extends State { for (int i = 0; i < parentsList.length; i++) { for (int j = 0; j < (getEitDffStructureList?.length ?? 0); j++) { - if (getEitDffStructureList![j].sEGMENTNAME == parentsList[i]?.name) { + if (getEitDffStructureList![j].sEGMENTNAME == parentsList[i].name) { if (getEitDffStructureList![j].dISPLAYFLAG != "N") { if (getEitDffStructureList![j].vALIDATIONTYPE == "N") { String? idColName; @@ -398,7 +340,7 @@ class _DynamicInputScreenState extends State { String? text = data?.pVALUECOLUMNNAME; String? val = data?.pIDCOLUMNNAME; - if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { + if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { //alert(parentsList[i].Name +" Is required"); return []; } else {} @@ -420,8 +362,7 @@ class _DynamicInputScreenState extends State { String? text = data?.pVALUECOLUMNNAME; String? val = data?.pIDCOLUMNNAME; - /// - if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { + if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { //alert(parentsList[i].Name +" Is required"); return []; } else {} @@ -514,11 +455,6 @@ class _DynamicInputScreenState extends State { model.eSERVICESDV ??= ESERVICESDV(); model.eSERVICESDV!.pIDCOLUMNNAME = text; }, - onTap: () async { - if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) { - await getDefaultValues(model); - } - }, ).paddingOnly(bottom: 12); } else if (model.fORMATTYPE == "X") { String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? (getEitDffStructureList![index].fieldAnswer ?? ""); From 29626ea408b1f2f6905b02c6cd93a7daf53b20ba Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 14 Nov 2022 12:26:50 +0300 Subject: [PATCH 058/302] Chat Fixes --- ios/Runner.xcodeproj/project.pbxproj | 6 +-- lib/api/chat/chat_provider_model.dart | 64 ++++++++++++++++++++++---- lib/classes/consts.dart | 4 +- lib/ui/chat/chat_bubble.dart | 2 +- lib/ui/chat/chat_detailed_screen.dart | 60 +++--------------------- lib/ui/chat/chat_home.dart | 6 +++ lib/ui/chat/chat_home_screen.dart | 4 +- lib/ui/chat/favorite_users_screen.dart | 2 +- 8 files changed, 76 insertions(+), 72 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 9daee21..43841a1 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -383,7 +383,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 3A359E86ZF; + DEVELOPMENT_TEAM = 99Z3UD3LJM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Mohemm; @@ -520,7 +520,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 3A359E86ZF; + DEVELOPMENT_TEAM = 99Z3UD3LJM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Mohemm; @@ -549,7 +549,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 3A359E86ZF; + DEVELOPMENT_TEAM = 99Z3UD3LJM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Mohemm; diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index fb9e6c5..0f0e94c 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -1,10 +1,12 @@ +import 'dart:async'; import 'dart:convert'; import 'dart:io'; -import 'dart:math'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; +import 'package:logger/logger.dart' as L; import 'package:logging/logging.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; @@ -15,17 +17,17 @@ import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.da import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as login; import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; import 'package:mohem_flutter_app/widgets/image_picker.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:signalr_netcore/signalr_client.dart'; -import 'package:logger/logger.dart' as L; import 'package:uuid/uuid.dart'; class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { + ScrollController scrollController = ScrollController(); + TextEditingController message = TextEditingController(); List userChatHistory = []; List? pChatHistory, searchedChats; late HubConnection hubConnection; L.Logger logger = L.Logger(); - TextEditingController message = TextEditingController(); + bool isLoading = true; bool isChatScreenActive = false; late File selectedFile; @@ -36,6 +38,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List favUsersList = []; int paginationVal = 0; + //Scroll + bool _firstAutoscrollExecuted = false; + bool _shouldAutoscroll = false; + Future getUserAutoLoginToken() async { String userName = AppState().memberInformationList!.eMPLOYEEEMAILADDRESS!.split("@").first.toString(); Response response = @@ -87,12 +93,20 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void getSingleUserChatHistory({required String senderUID, required int receiverUID, required bool loadMore}) async { isLoading = true; + print(loadMore); + print(senderUID); + print(receiverUID); if (!loadMore) paginationVal = 0; + print(paginationVal); isChatScreenActive = true; Response response = await ApiClient().getJsonForResponse( "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal", token: AppState().chatDetails!.response!.token, ); + logger.d("${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal"); + logger.d("${AppState().chatDetails!.response!.token}"); + logger.d(jsonEncode(response.body)); + logger.d(jsonEncode(response.statusCode)); if (response.statusCode == 204) { if (!loadMore) userChatHistory = []; Utils.showToast("No More Data To Load"); @@ -105,7 +119,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } isLoading = false; + //Timer(const Duration(milliseconds: 100),() => scrollToBottom()); notifyListeners(); + + // scrollToBottom(); } List getSingleUserChatModel(String str) => List.from(json.decode(str).map((x) => SingleUserChatModel.fromJson(x))); @@ -218,9 +235,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void changeStatus(List? args) { - if (kDebugMode) { - // print("================= Status Online // Offline ===================="); - } + if (kDebugMode) { + // print("================= Status Online // Offline ===================="); + } dynamic items = args!.toList(); // logger.d(items); for (ChatUser user in searchedChats!) { @@ -258,6 +275,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { data.first.currentUserName = temp.first.targetUserName; } userChatHistory.add(data.first); + scrollToBottom(); notifyListeners(); // if (isChatScreenActive) scrollDown(); } @@ -356,7 +374,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // } Future sendChatToServer( - {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { + {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { Uuid uuid = const Uuid(); SingleUserChatModel data = SingleUserChatModel( chatEventId: chatEventId, @@ -390,6 +408,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isMsgReply = false; sFileType = ""; message.clear(); + scrollToBottom(); notifyListeners(); } @@ -575,4 +594,33 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { repliedMsg = []; sFileType = ""; } + + void scrollListener() { + _firstAutoscrollExecuted = true; + if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { + _shouldAutoscroll = true; + } else { + _shouldAutoscroll = false; + } + } + + void scrollToBottom() { + //scrollController.jumpTo(scrollController.position.maxScrollExtent + 100 ); + scrollController.animateTo( + scrollController.position.maxScrollExtent + 100, + duration: const Duration(milliseconds: 500), + curve: Curves.easeIn, + ); + } + +// void scrollToMaxExtent() { +// WidgetsBinding.instance.addPostFrameCallback((_) { +// scrollController.animateTo( +// scrollController.position.maxScrollExtent, +// duration: const Duration(milliseconds: 100), +// curve: Curves.easeIn, +// ); +// }); +// } + } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c5788f9..ede22e3 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + //static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index d9bd599..c638b34 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -89,7 +89,7 @@ class ChatBubble extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, children: [ - dateTime.toText12(color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : MyColors.white.withOpacity(0.7)), + dateTime.toText12(color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : MyColors.white.withOpacity(0.7),), if (isCurrentUser) 5.width, if (isCurrentUser) Icon( diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index e2d0bd7..b4838f3 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -17,23 +16,14 @@ import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:swipe_to/swipe_to.dart'; -class ChatDetailScreen extends StatefulWidget { +class ChatDetailScreen extends StatelessWidget { // ignore: prefer_const_constructors_in_immutables ChatDetailScreen({Key? key}) : super(key: key); - @override - State createState() => _ChatDetailScreenState(); -} - -class _ChatDetailScreenState extends State { dynamic userDetails; - bool _firstAutoscrollExecuted = false; - bool _shouldAutoscroll = false; late ChatProviderModel data; - ScrollController scrollController = ScrollController(); - final RefreshController _refreshController = RefreshController(initialRefresh: false); void getMoreChat() async { @@ -44,53 +34,13 @@ class _ChatDetailScreenState extends State { await Future.delayed(const Duration(milliseconds: 1000)); _refreshController.refreshCompleted(); } - // - // void _scrollListener() { - // _firstAutoscrollExecuted = true; - // if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { - // _shouldAutoscroll = true; - // } else { - // _shouldAutoscroll = false; - // } - // } - // - // void _scrollToBottom() { - // scrollController.jumpTo(scrollController.position.maxScrollExtent); - // } - - // void scrollToMaxExtent() { - // WidgetsBinding.instance.addPostFrameCallback((_) { - // scrollController.animateTo( - // scrollController.position.maxScrollExtent, - // duration: const Duration(milliseconds: 100), - // curve: Curves.easeIn, - // ); - // }); - // } - - - - @override - void initState() { - // TODO: implement initState - super.initState(); - //scrollToMaxExtent(); - - // scrollController.addListener(_scrollListener); - } - - @override - void dispose() { - // TODO: implement dispose - //scrollController.removeListener(_scrollListener); - super.dispose(); - } @override Widget build(BuildContext context) { userDetails = ModalRoute.of(context)!.settings.arguments; data = Provider.of(context, listen: false); if (userDetails != null) data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: false); + data.scrollController.addListener(data.scrollListener); return Scaffold( backgroundColor: const Color(0xFFF8F8F8), appBar: AppBarWidget(context, title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, showHomeButton: false, image: userDetails["targetUser"].image), @@ -111,7 +61,7 @@ class _ChatDetailScreenState extends State { controller: _refreshController, onRefresh: getMoreChat, child: ListView.builder( - controller: scrollController, + controller: m.scrollController, shrinkWrap: true, reverse: false, itemCount: m.userChatHistory.length, @@ -150,7 +100,9 @@ class _ChatDetailScreenState extends State { height: 80, color: MyColors.black.withOpacity(0.10), child: ListTile( - title: (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString() ? "You" : m.repliedMsg.first.currentUserName.toString().replaceAll(".", " ")) + title: (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString() + ? "You" + : m.repliedMsg.first.currentUserName.toString().replaceAll(".", " ")) .toText14(color: MyColors.lightGreenColor), subtitle: (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12(color: MyColors.white, maxLine: 2), trailing: GestureDetector( diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 5176273..d3c4d62 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -1,5 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -11,6 +12,7 @@ import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; import 'package:mohem_flutter_app/ui/screens/items_for_sale/fragments/items_for_sale.dart'; import 'package:mohem_flutter_app/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:provider/provider.dart'; class ChatHome extends StatefulWidget { const ChatHome({Key? key}) : super(key: key); @@ -22,9 +24,13 @@ class ChatHome extends StatefulWidget { class _ChatHomeState extends State { int tabIndex = 0; PageController controller = PageController(); + late ChatProviderModel data; + @override Widget build(BuildContext context) { + data = Provider.of(context, listen: false); + data.getUserAutoLoginToken().whenComplete(() => null); return Scaffold( backgroundColor: MyColors.white, appBar: AppBarWidget( diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 32f97fa..e55f018 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -29,9 +29,7 @@ class _ChatHomeScreenState extends State { void initState() { super.initState(); data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().whenComplete(() { - data.getUserRecentChats(); - }); + data.getUserRecentChats(); } @override diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 8b5eba0..29d4ffa 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -56,7 +56,7 @@ class ChatFavoriteUsersScreen extends StatelessWidget { ) ], ), - title: (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor), + title: (m.favUsersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor), trailing: IconButton( alignment: Alignment.centerRight, padding: EdgeInsets.zero, From b18ebf7a54efc4c352f183303348de6a33a4712a Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 14 Nov 2022 15:34:31 +0300 Subject: [PATCH 059/302] Chat Favorite Screen & Fixes --- lib/api/chat/chat_provider_model.dart | 32 --------------------------- lib/classes/consts.dart | 2 +- lib/ui/chat/chat_home.dart | 4 +++- lib/ui/chat/chat_home_screen.dart | 4 ---- 4 files changed, 4 insertions(+), 38 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 0f0e94c..a61a57a 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -93,20 +93,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void getSingleUserChatHistory({required String senderUID, required int receiverUID, required bool loadMore}) async { isLoading = true; - print(loadMore); - print(senderUID); - print(receiverUID); if (!loadMore) paginationVal = 0; - print(paginationVal); isChatScreenActive = true; Response response = await ApiClient().getJsonForResponse( "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal", token: AppState().chatDetails!.response!.token, ); - logger.d("${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal"); - logger.d("${AppState().chatDetails!.response!.token}"); - logger.d(jsonEncode(response.body)); - logger.d(jsonEncode(response.statusCode)); if (response.statusCode == 204) { if (!loadMore) userChatHistory = []; Utils.showToast("No More Data To Load"); @@ -119,10 +111,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } isLoading = false; - //Timer(const Duration(milliseconds: 100),() => scrollToBottom()); notifyListeners(); - - // scrollToBottom(); } List getSingleUserChatModel(String str) => List.from(json.decode(str).map((x) => SingleUserChatModel.fromJson(x))); @@ -364,15 +353,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } - // void scrollDown() { - // scrollController.animateTo( - // scrollController.position.maxScrollExtent + 100, - // curve: Curves.easeOut, - // duration: const Duration(milliseconds: 300), - // ); - // notifyListeners(); - // } - Future sendChatToServer( {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { Uuid uuid = const Uuid(); @@ -605,22 +585,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void scrollToBottom() { - //scrollController.jumpTo(scrollController.position.maxScrollExtent + 100 ); scrollController.animateTo( scrollController.position.maxScrollExtent + 100, duration: const Duration(milliseconds: 500), curve: Curves.easeIn, ); } - -// void scrollToMaxExtent() { -// WidgetsBinding.instance.addPostFrameCallback((_) { -// scrollController.animateTo( -// scrollController.position.maxScrollExtent, -// duration: const Duration(milliseconds: 100), -// curve: Curves.easeIn, -// ); -// }); -// } - } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ede22e3..93b4ea8 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - //static String baseUrl = "https://hmgwebservices.com"; // Live server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index d3c4d62..ea53d2e 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -30,7 +30,9 @@ class _ChatHomeState extends State { @override Widget build(BuildContext context) { data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().whenComplete(() => null); + data.getUserAutoLoginToken().then((value){ + data.getUserRecentChats(); + }); return Scaffold( backgroundColor: MyColors.white, appBar: AppBarWidget( diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index e55f018..1b351e5 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -23,19 +23,15 @@ class ChatHomeScreen extends StatefulWidget { class _ChatHomeScreenState extends State { TextEditingController search = TextEditingController(); - late ChatProviderModel data; @override void initState() { super.initState(); - data = Provider.of(context, listen: false); - data.getUserRecentChats(); } @override void dispose() { super.dispose(); - data.hubConnection.stop(); } @override From 4433f538b78d636d86508cf633ab998473d31df6 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 14 Nov 2022 15:38:15 +0300 Subject: [PATCH 060/302] Chat Favorite Screen & Fixes --- lib/api/chat/chat_provider_model.dart | 4 ---- lib/ui/chat/chat_home_screen.dart | 23 ++--------------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index a61a57a..d033eba 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -154,9 +154,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ({String? connectionId}) {}, ); if (hubConnection.state != HubConnectionState.Connected) { - if (kDebugMode) { - print("================= Connection Established =========================="); - } await hubConnection.start(); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); @@ -167,7 +164,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); } - // notifyListeners(); } void updateUserChatStatus(List? args) { diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 1b351e5..540a212 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -14,26 +14,9 @@ import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_s import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; -class ChatHomeScreen extends StatefulWidget { - const ChatHomeScreen({Key? key}) : super(key: key); - - @override - State createState() => _ChatHomeScreenState(); -} - -class _ChatHomeScreenState extends State { +class ChatHomeScreen extends StatelessWidget { TextEditingController search = TextEditingController(); - @override - void initState() { - super.initState(); - } - - @override - void dispose() { - super.dispose(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -211,9 +194,7 @@ class _ChatHomeScreenState extends State { title: LocaleKeys.searchForEmployee.tr(), apiMode: LocaleKeys.delegate.tr(), fromChat: true, - onSelectEmployee: (_selectedEmployee) { - setState(() {}); - }, + onSelectEmployee: (_selectedEmployee) {}, ), ); }, From 8f80c396d132d5d38227d996f9184e03f23fe313 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 14 Nov 2022 15:50:27 +0300 Subject: [PATCH 061/302] Chat Fixes --- lib/api/chat/chat_provider_model.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index d033eba..00691ec 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -260,9 +260,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { data.first.currentUserName = temp.first.targetUserName; } userChatHistory.add(data.first); - scrollToBottom(); notifyListeners(); - // if (isChatScreenActive) scrollDown(); + if (isChatScreenActive) scrollToBottom(); } void onUserTyping(List? parameters) { From b8e20633c9acb6d28f1d27582f1e3c8816f3ade9 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 14 Nov 2022 16:20:40 +0300 Subject: [PATCH 062/302] Chat Fixes --- lib/ui/chat/chat_home_screen.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 540a212..7fb6965 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -128,7 +128,7 @@ class ChatHomeScreen extends StatelessWidget { child: IconButton( alignment: Alignment.centerRight, padding: EdgeInsets.zero, - icon: Icon(m.searchedChats![index].isFav! ? Icons.star : Icons.star_border), + icon: Icon(m.searchedChats![index].isFav! ? Icons.star_sharp : Icons.star_border), color: m.searchedChats![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, onPressed: () { if (m.searchedChats![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); From fb5440358430fb6d27558384504f56bb5fb7ab03 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 15 Nov 2022 09:32:30 +0300 Subject: [PATCH 063/302] Chat Favorite Screen & Fixes --- lib/api/chat/chat_provider_model.dart | 38 ++++++++++++++----- lib/ui/chat/chat_detailed_screen.dart | 5 ++- lib/ui/chat/chat_home_screen.dart | 2 +- lib/ui/chat/favorite_users_screen.dart | 2 +- .../search_employee_bottom_sheet.dart | 2 +- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 00691ec..3cfee4f 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -91,7 +91,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } - void getSingleUserChatHistory({required String senderUID, required int receiverUID, required bool loadMore}) async { + void getSingleUserChatHistory({required String senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false}) async { isLoading = true; if (!loadMore) paginationVal = 0; isChatScreenActive = true; @@ -100,8 +100,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { token: AppState().chatDetails!.response!.token, ); if (response.statusCode == 204) { - if (!loadMore) userChatHistory = []; - Utils.showToast("No More Data To Load"); + if (isNewChat) { + userChatHistory = []; + } else if (loadMore) { + // userChatHistory = []; + Utils.showToast("No More Data To Load"); + } } else { if (loadMore) { List temp = getSingleUserChatModel(response.body); @@ -131,7 +135,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } else { result = []; } - } catch (e) {} + } catch (e) { + if (kDebugMode) { + print(e); + } + } + ; return result; } @@ -139,11 +148,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); hubConnection = HubConnectionBuilder() .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) - .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]) - .configureLogging( - Logger("Logs Enabled"), - ) - .build(); + .withAutomaticReconnect( + retryDelays: [2000, 5000, 10000, 20000], + ).build(); hubConnection.onclose( ({Exception? error}) {}, ); @@ -157,6 +164,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await hubConnection.start(); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); + hubConnection.on("OnSeenChatUserAsync", onChatSeen); //hubConnection.on("OnUserTypingAsync", onUserTyping); // hubConnection.on("OnUserCountAsync", userCountAsync); @@ -179,6 +187,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } + void onChatSeen(List? args) { + dynamic items = args!.toList(); + logger.d("---------------------------------Chat Seen -------------------------------------"); + logger.d(items); + // for (var user in searchedChats!) { + // if (user.id == items.first["id"]) { + // user.userStatus = items.first["userStatus"]; + // } + // } + // notifyListeners(); + } + void userCountAsync(List? args) { dynamic items = args!.toList(); //logger.d("---------------------------------User Count Async -------------------------------------"); diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index b4838f3..5c05173 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -29,7 +29,7 @@ class ChatDetailScreen extends StatelessWidget { void getMoreChat() async { if (userDetails != null) { data.paginationVal = data.paginationVal + 10; - data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true); + data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true, isNewChat: false); } await Future.delayed(const Duration(milliseconds: 1000)); _refreshController.refreshCompleted(); @@ -39,7 +39,8 @@ class ChatDetailScreen extends StatelessWidget { Widget build(BuildContext context) { userDetails = ModalRoute.of(context)!.settings.arguments; data = Provider.of(context, listen: false); - if (userDetails != null) data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: false); + if (userDetails != null) + data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: false, isNewChat: userDetails["isNewChat"]); data.scrollController.addListener(data.scrollListener); return Scaffold( backgroundColor: const Color(0xFFF8F8F8), diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 7fb6965..ce866f8 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -144,7 +144,7 @@ class ChatHomeScreen extends StatelessWidget { Navigator.pushNamed( context, AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index]}, + arguments: {"targetUser": m.searchedChats![index], "isNewChat" : false}, ).then((Object? value) { m.clearSelections(); }); diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 29d4ffa..fd118de 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -71,7 +71,7 @@ class ChatFavoriteUsersScreen extends StatelessWidget { Navigator.pushNamed( context, AppRoutes.chatDetailed, - arguments: {"targetUser": m.favUsersList![index]}, + arguments: {"targetUser": m.favUsersList![index], "isNewChat": false}, ).then( (Object? value) { m.clearSelections(); diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index 63ce88b..a30b33d 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -233,7 +233,7 @@ class _SearchEmployeeBottomSheetState extends State { Navigator.pushNamed( context, AppRoutes.chatDetailed, - arguments: {"targetUser": chatUsersList![index]}, + arguments: {"targetUser": chatUsersList![index], "isNewChat": true}, ); }, onLongPress: () {}, From 670a5fbc03a94976e922bfb7bcb8f39806cf1f9d Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 15 Nov 2022 10:18:42 +0300 Subject: [PATCH 064/302] Chat Favorite Screen & Fixes --- assets/langs/ar-SA.json | 2 +- assets/langs/en-US.json | 2 +- lib/api/chat/chat_provider_model.dart | 4 +++ lib/generated/codegen_loader.g.dart | 4 +-- lib/ui/chat/chat_home_screen.dart | 37 ++++++++++++--------------- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index bdec4f0..000e111 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -499,7 +499,7 @@ "resend": "إعادة إرسال", "codeExpire": "انتهت صلاحية رمز التحقق", "typeheretoreply": "اكتب هنا للرد", - "favorite" : "مفضل", + "favorite" : "أُفضله", "searchfromchat": "البحث من الدردشة" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 1cd1a33..c8b8322 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -499,7 +499,7 @@ "codeExpire": "The verification code has been expired", "allQuestionsCorrect": "You have answered all questions correct", "typeheretoreply": "Type here to reply", - "favorite" : "Favorite", + "favorite" : "My Favorite", "searchfromchat": "Search from chat" } \ No newline at end of file diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 3cfee4f..3498a17 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -23,6 +23,7 @@ import 'package:uuid/uuid.dart'; class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ScrollController scrollController = ScrollController(); TextEditingController message = TextEditingController(); + TextEditingController search = TextEditingController(); List userChatHistory = []; List? pChatHistory, searchedChats; late HubConnection hubConnection; @@ -582,12 +583,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void clearSelections() { + searchedChats = pChatHistory; + search.clear(); isChatScreenActive = false; paginationVal = 0; message.text = ''; isFileSelected = false; repliedMsg = []; sFileType = ""; + notifyListeners(); } void scrollListener() { diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 49dac5c..3d35ccc 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -515,7 +515,7 @@ class CodegenLoader extends AssetLoader{ "resend": "إعادة إرسال", "codeExpire": "انتهت صلاحية رمز التحقق", "typeheretoreply": "اكتب هنا للرد", - "favorite": "مفضل", + "favorite": "أُفضله", "searchfromchat": "البحث من الدردشة" }; static const Map en_US = { @@ -1019,7 +1019,7 @@ static const Map en_US = { "codeExpire": "The verification code has been expired", "allQuestionsCorrect": "You have answered all questions correct", "typeheretoreply": "Type here to reply", - "favorite": "Favorite", + "favorite": "My Favorite", "searchfromchat": "Search from chat" }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index ce866f8..f66f3d5 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -32,28 +32,14 @@ class ChatHomeScreen extends StatelessWidget { Padding( padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), child: TextField( + controller: m.search, onChanged: (String val) { m.filter(val); }, decoration: InputDecoration( - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide( - color: Color(0xFFE5E5E5), - ), - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide( - color: Color(0xFFE5E5E5), - ), - ), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide( - color: Color(0xFFE5E5E5), - ), - ), + border: fieldBorder(radius: 5, color: 0xFFE5E5E5), + focusedBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), + enabledBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), contentPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 10), hintText: LocaleKeys.searchfromchat.tr(), hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic), @@ -73,7 +59,7 @@ class ChatHomeScreen extends StatelessWidget { height: 55, child: ListTile( leading: Stack( - children: [ + children: [ SvgPicture.asset( "assets/images/user.svg", height: 48, @@ -144,12 +130,12 @@ class ChatHomeScreen extends StatelessWidget { Navigator.pushNamed( context, AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index], "isNewChat" : false}, + arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, ).then((Object? value) { m.clearSelections(); + m.notifyListeners(); }); }, - onLongPress: () {}, ), ); }, @@ -201,4 +187,13 @@ class ChatHomeScreen extends StatelessWidget { ), ); } + + OutlineInputBorder fieldBorder({required double radius, required int color}) { + return OutlineInputBorder( + borderRadius: BorderRadius.circular(radius), + borderSide: BorderSide( + color: Color(color), + ), + ); + } } From c190fbf5ca5fadeb8fd680ef8660dbb8cceed372 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 15 Nov 2022 11:14:52 +0300 Subject: [PATCH 065/302] Chat Favorite Screen & Fixes --- lib/api/chat/chat_provider_model.dart | 16 ++++++++++++++-- lib/ui/chat/chat_detailed_screen.dart | 14 +++++++++----- lib/ui/chat/chat_home.dart | 18 +++++++++--------- lib/ui/chat/chat_home_screen.dart | 25 ++++++++++++++++++++++++- 4 files changed, 56 insertions(+), 17 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 3498a17..0cb67e6 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -109,10 +109,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } else { if (loadMore) { - List temp = getSingleUserChatModel(response.body); - userChatHistory.insertAll(0, temp); + List temp = getSingleUserChatModel(response.body).reversed.toList(); + userChatHistory.addAll(temp); } else { userChatHistory = getSingleUserChatModel(response.body); + userChatHistory = userChatHistory.reversed.toList(); } } isLoading = false; @@ -594,6 +595,17 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } + void clearAll() { + searchedChats = pChatHistory; + search.clear(); + isChatScreenActive = false; + paginationVal = 0; + message.text = ''; + isFileSelected = false; + repliedMsg = []; + sFileType = ""; + } + void scrollListener() { _firstAutoscrollExecuted = true; if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 5c05173..04e84e0 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -32,7 +32,7 @@ class ChatDetailScreen extends StatelessWidget { data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true, isNewChat: false); } await Future.delayed(const Duration(milliseconds: 1000)); - _refreshController.refreshCompleted(); + _refreshController.loadComplete(); } @override @@ -54,17 +54,21 @@ class ChatDetailScreen extends StatelessWidget { Expanded( flex: 2, child: SmartRefresher( - enablePullDown: true, - enablePullUp: false, + enablePullDown: false, + enablePullUp: true, + onLoading: () { + getMoreChat(); + }, header: const MaterialClassicHeader( color: MyColors.gradiantEndColor, ), controller: _refreshController, - onRefresh: getMoreChat, + reverse: true, child: ListView.builder( controller: m.scrollController, shrinkWrap: true, - reverse: false, + physics: const BouncingScrollPhysics(), + reverse: true, itemCount: m.userChatHistory.length, padding: const EdgeInsets.only(top: 20), itemBuilder: (BuildContext context, int i) { diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index ea53d2e..86356bb 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -26,11 +26,16 @@ class _ChatHomeState extends State { PageController controller = PageController(); late ChatProviderModel data; + @override + void dispose() { + data.clearAll(); + super.dispose(); + } @override Widget build(BuildContext context) { data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().then((value){ + data.getUserAutoLoginToken().then((value) { data.getUserRecentChats(); }); return Scaffold( @@ -41,7 +46,7 @@ class _ChatHomeState extends State { showHomeButton: true, ), body: Column( - children: [ + children: [ Container( padding: const EdgeInsets.only(left: 21, right: 21, top: 16, bottom: 16), decoration: const BoxDecoration( @@ -60,12 +65,7 @@ class _ChatHomeState extends State { ), ), child: Row( - children: [ - myTab(LocaleKeys.mychats.tr(), 0), - myTab( - LocaleKeys.favorite.tr(), - 1) - ], + children: [myTab(LocaleKeys.mychats.tr(), 0), myTab(LocaleKeys.favorite.tr(), 1)], ), ), PageView( @@ -76,7 +76,7 @@ class _ChatHomeState extends State { tabIndex = pageIndex; }); }, - children: [ChatHomeScreen(), ChatFavoriteUsersScreen()], + children: [ChatHomeScreen(), ChatFavoriteUsersScreen()], ).expanded, ], ), diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index f66f3d5..3ac291c 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -14,9 +14,20 @@ import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_s import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; -class ChatHomeScreen extends StatelessWidget { +class ChatHomeScreen extends StatefulWidget { + @override + State createState() => _ChatHomeScreenState(); +} + +class _ChatHomeScreenState extends State { TextEditingController search = TextEditingController(); + @override + void dispose() { + super.dispose(); + search.clear(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -45,6 +56,18 @@ class ChatHomeScreen extends StatelessWidget { hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic), filled: true, fillColor: const Color(0xFFF7F7F7), + suffixIcon: m.search.text.isNotEmpty + ? IconButton( + onPressed: () { + m.clearSelections(); + }, + icon: const Icon( + Icons.clear, + size: 22, + ), + color: MyColors.redA3Color, + ) + : null, ), ), ), From 70dd6e1c991eb5a29eb5e59080bfb5407bba1d27 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 15 Nov 2022 11:55:08 +0300 Subject: [PATCH 066/302] Chat Fixes --- lib/api/chat/chat_provider_model.dart | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 0cb67e6..727fd12 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -7,7 +7,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; import 'package:logger/logger.dart' as L; -import 'package:logging/logging.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; @@ -112,8 +111,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List temp = getSingleUserChatModel(response.body).reversed.toList(); userChatHistory.addAll(temp); } else { - userChatHistory = getSingleUserChatModel(response.body); - userChatHistory = userChatHistory.reversed.toList(); + userChatHistory = getSingleUserChatModel(response.body).reversed.toList(); } } isLoading = false; @@ -400,12 +398,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String chatData = '{"contant":"${message.text}","contantNo":"${uuid.v4()}","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"${uuid.v4()}"}'; await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); - userChatHistory.add(data); + + userChatHistory.insert(0, data); + isFileSelected = false; isMsgReply = false; sFileType = ""; message.clear(); - scrollToBottom(); notifyListeners(); } @@ -622,4 +621,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { curve: Curves.easeIn, ); } + + void msgScroll() { + scrollController.animateTo( + scrollController.position.minScrollExtent - 100, + duration: const Duration(milliseconds: 500), + curve: Curves.easeIn, + ); + } } From ae917a415476f6eec33814b6ad3d550508b7a955 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 15 Nov 2022 12:44:09 +0300 Subject: [PATCH 067/302] Chat Favorite Screen & Fixes --- lib/api/chat/chat_provider_model.dart | 13 ++++++++++--- lib/ui/chat/chat_home.dart | 17 +++++++++++++---- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 727fd12..be5b68c 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -164,7 +164,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await hubConnection.start(); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - hubConnection.on("OnSeenChatUserAsync", onChatSeen); + // hubConnection.on("OnSeenChatUserAsync", onChatSeen); //hubConnection.on("OnUserTypingAsync", onUserTyping); // hubConnection.on("OnUserCountAsync", userCountAsync); @@ -269,6 +269,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future onMsgReceived(List? parameters) async { + print("msg Received"); List data = []; List temp = []; for (dynamic msg in parameters!) { @@ -279,9 +280,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { data.first.currentUserId = temp.first.targetUserId; data.first.currentUserName = temp.first.targetUserName; } - userChatHistory.add(data.first); + userChatHistory.insert(0, data.first); + // searchedChats!.forEach((element) { + // if (element.id == data.first.currentUserId) { + // var val = element.unreadMessageCount == null ? 0 : element.unreadMessageCount; + // element.unreadMessageCount = val! + 1; + // } + // }); notifyListeners(); - if (isChatScreenActive) scrollToBottom(); + // if (isChatScreenActive) scrollToBottom(); } void onUserTyping(List? parameters) { diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 86356bb..1fdcb33 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -26,18 +26,27 @@ class _ChatHomeState extends State { PageController controller = PageController(); late ChatProviderModel data; + + @override + void initState() { + // TODO: implement initState + super.initState(); + data = Provider.of(context, listen: false); + data.getUserAutoLoginToken().then((value) { + data.getUserRecentChats(); + }); + } + @override void dispose() { data.clearAll(); + data.hubConnection.stop(); super.dispose(); } @override Widget build(BuildContext context) { - data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().then((value) { - data.getUserRecentChats(); - }); + return Scaffold( backgroundColor: MyColors.white, appBar: AppBarWidget( From c436908d2509c72cbf754245798c7763263e7169 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 15 Nov 2022 14:23:51 +0300 Subject: [PATCH 068/302] updates & fixes --- lib/api/worklist/worklist_api_client.dart | 18 +++ .../attendance/monthly_attendance_screen.dart | 2 +- lib/ui/landing/today_attendance_screen2.dart | 2 +- lib/ui/landing/widget/services_widget.dart | 2 +- lib/ui/marathon/widgets/marathon_banner.dart | 4 +- .../dynamic_screens/dynamic_input_screen.dart | 10 +- lib/ui/my_team/view_attendance.dart | 2 +- lib/ui/profile/add_update_family_member.dart | 2 +- lib/ui/profile/family_members.dart | 3 +- lib/ui/screens/my_requests/my_requests.dart | 6 +- .../offers_and_discounts_details.dart | 4 +- lib/ui/work_list/itg_detail_screen.dart | 29 +++++ lib/ui/work_list/work_list_screen.dart | 1 - lib/ui/work_list/worklist_detail_screen.dart | 11 ++ .../worklist_fragments/actions_fragment.dart | 2 - lib/widgets/app_bar_widget.dart | 110 ++++++++++-------- 16 files changed, 135 insertions(+), 73 deletions(-) diff --git a/lib/api/worklist/worklist_api_client.dart b/lib/api/worklist/worklist_api_client.dart index d999d18..75992e7 100644 --- a/lib/api/worklist/worklist_api_client.dart +++ b/lib/api/worklist/worklist_api_client.dart @@ -403,6 +403,24 @@ class WorkListApiClient { }, url, postParams); } + Future grantITGRequest(String requestType, int taskId, int itemId, String employeeNumber, String newUserEMPId, String comments) async { + String url = "${ApiConsts.cocRest}ITGGrantAccess"; + Map postParams = { + "RequestType": requestType, + "TaskID": taskId, + "ItemID": itemId, + "EmployeeNumber": employeeNumber, + "Comments": "", + "AdditionalFields": null, + "NewUserEMPId":newUserEMPId + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + ItgFormsModel responseData = ItgFormsModel.fromJson(json); + return responseData.itgRequest; + }, url, postParams); + } + Future informationITGRequest(String requestType, int taskId, int itemId, String employeeNumber, String newUserEMPId, String comments) async { String url = "${ApiConsts.cocRest}ITGRequestInformation"; Map postParams = { diff --git a/lib/ui/attendance/monthly_attendance_screen.dart b/lib/ui/attendance/monthly_attendance_screen.dart index de35da0..8b62b7f 100644 --- a/lib/ui/attendance/monthly_attendance_screen.dart +++ b/lib/ui/attendance/monthly_attendance_screen.dart @@ -431,7 +431,7 @@ class _MonthlyAttendanceScreenState extends State { expand: false, builder: (_, controller) { dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE; - DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss a").parse(dmyString); + DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss").parse(dmyString); return Column( children: [ Container( diff --git a/lib/ui/landing/today_attendance_screen2.dart b/lib/ui/landing/today_attendance_screen2.dart index 17bb03a..ada652c 100644 --- a/lib/ui/landing/today_attendance_screen2.dart +++ b/lib/ui/landing/today_attendance_screen2.dart @@ -86,7 +86,7 @@ class _TodayAttendanceScreenState extends State { child: CircularStepProgressBar( totalSteps: 16 * 4, currentStep: (model.progress * 100).toInt(), - selectedColor: MyColors.gradiantEndColor, + selectedColor: MyColors.gradiantStartColor, unselectedColor: MyColors.grey70Color, child: Center( child: Padding( diff --git a/lib/ui/landing/widget/services_widget.dart b/lib/ui/landing/widget/services_widget.dart index ae24dde..2333c18 100644 --- a/lib/ui/landing/widget/services_widget.dart +++ b/lib/ui/landing/widget/services_widget.dart @@ -74,7 +74,7 @@ class ServicesWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, children: [ Expanded( - child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText10(isBold: true), + child: data.homeMenus![parentIndex].menuEntiesList[index].prompt!.toText11(isBold: true), ), RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4)), ], diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 5da5ed2..55ff715 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -142,7 +142,7 @@ class MarathonBanner extends StatelessWidget { bottom: 0, child: RotatedBox( quarterTurns: 4, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.darkDigitColor), + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), ).paddingAll(15), ) : Positioned( @@ -150,7 +150,7 @@ class MarathonBanner extends StatelessWidget { left: 0, child: RotatedBox( quarterTurns: 2, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.darkDigitColor), + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), ).paddingAll(15), ), ], diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 045b808..e602c21 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -68,7 +68,7 @@ class _DynamicInputScreenState extends State { } void validateTransaction() async { - // try { + try { Utils.showLoading(context); List> values = getEitDffStructureList!.map((e) { String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; @@ -114,10 +114,10 @@ class _DynamicInputScreenState extends State { Utils.showLoading(context); await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); Utils.hideLoading(context); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } String dESCFLEXCONTEXTCODE = ""; diff --git a/lib/ui/my_team/view_attendance.dart b/lib/ui/my_team/view_attendance.dart index 90414d1..0896d5e 100644 --- a/lib/ui/my_team/view_attendance.dart +++ b/lib/ui/my_team/view_attendance.dart @@ -439,7 +439,7 @@ class _ViewAttendanceState extends State { expand: false, builder: (_, controller) { dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE; - DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss a").parse(dmyString); + DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss").parse(dmyString); return Column( children: [ Container( diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index 528e38d..36a8394 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -383,7 +383,7 @@ class _AddUpdateFamilyMemberState extends State { ), ); } else { - DateTime? picked = await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); + DateTime? picked = await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(1920, 1), lastDate: DateTime.now()); if (picked != null && picked != selectedDate) { time = picked; } diff --git a/lib/ui/profile/family_members.dart b/lib/ui/profile/family_members.dart index fd7bd13..25f62c0 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -128,7 +128,8 @@ class _FamilyMembersState extends State { ), DefaultButton(LocaleKeys.addNewFamilyMember.tr(), menuEntries.updateButton == 'Y' - ? () async { + ? + () async { Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID": relationId, "flag": 1, "actionType": "ADD"}); // ProfileScreen(); } : null).insideContainer, diff --git a/lib/ui/screens/my_requests/my_requests.dart b/lib/ui/screens/my_requests/my_requests.dart index f9d8d39..dd6147f 100644 --- a/lib/ui/screens/my_requests/my_requests.dart +++ b/lib/ui/screens/my_requests/my_requests.dart @@ -76,9 +76,7 @@ class _MyRequestsState extends State { }), ), 12.height, - Expanded( - // todo list don't have data, need to confirm later , because have issues, need fixes - + getCCPTransactionsList.isNotEmpty ? Expanded( child: ListView.separated( physics: const BouncingScrollPhysics(), shrinkWrap: true, @@ -141,7 +139,7 @@ class _MyRequestsState extends State { }, separatorBuilder: (BuildContext context, int index) => 12.height, itemCount: getCCPTransactionsList.length), - ), + ) : Container(), ], ).expanded, 1.divider, diff --git a/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart b/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart index 9a308ba..325f4f3 100644 --- a/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart +++ b/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart @@ -176,8 +176,8 @@ class _OffersAndDiscountsDetailsState extends State { // // launchUrl(Uri.parse(url!)); // // } // ), - getOffersList.description!.toText12(maxLine: 2, color: const Color(0xff535353)), - 16.height, + // getOffersList.description!.toText12(maxLine: 2, color: const Color(0xff535353)), + // 16.height, getOffersList.discount!.toText14(isBold: true, maxlines: 1), 8.height, Row( diff --git a/lib/ui/work_list/itg_detail_screen.dart b/lib/ui/work_list/itg_detail_screen.dart index bbb0267..cf33648 100644 --- a/lib/ui/work_list/itg_detail_screen.dart +++ b/lib/ui/work_list/itg_detail_screen.dart @@ -367,6 +367,12 @@ class _ItgDetailScreenState extends State { case "Answer": performAction("Answer"); break; + case "ReportGenerated": + performDataCorrectionORReportGeneratedAction(requestDetails!.requestType!, requestDetails!.iD!, requestDetails!.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? ""); + break; + case "DataCorrected": + performDataCorrectionORReportGeneratedAction(requestDetails!.requestType!, requestDetails!.iD!, requestDetails!.itemID!, AppState().memberInformationList?.eMPLOYEENUMBER ?? ""); + break; } setState(() { showFabOptions = false; @@ -525,6 +531,29 @@ class _ItgDetailScreenState extends State { } } + void performDataCorrectionORReportGeneratedAction(String requestType, int taskId, int itemId, String employeeNumber) async { + try { + Utils.showLoading(context); + ITGRequest? itgRequest = await WorkListApiClient().grantITGRequest(requestType, taskId, itemId, employeeNumber, "", ""); + Utils.hideLoading(context); + Utils.showToast(LocaleKeys.yourChangeHasBeenSavedSuccessfully.tr()); + AppState().requestAllList!.removeAt(AppState().itgWorkListIndex!); + if (AppState().requestAllList!.isEmpty) { + Navigator.pop(context, "delegate_reload"); + } else { + if (AppState().requestAllList!.length <= AppState().itgWorkListIndex!) { + Navigator.pop(context, "delegate_reload"); + } else { + requestDetails = null; + getDataFromState(); + } + } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + void reloadITG() { AppState().requestAllList!.removeAt(AppState().itgWorkListIndex!); if (AppState().requestAllList!.isEmpty) { diff --git a/lib/ui/work_list/work_list_screen.dart b/lib/ui/work_list/work_list_screen.dart index 8efd789..f9f8d91 100644 --- a/lib/ui/work_list/work_list_screen.dart +++ b/lib/ui/work_list/work_list_screen.dart @@ -226,7 +226,6 @@ class _WorkListScreenState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor), SizedBox( height: 40, child: ListView.separated( diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 3c05204..824edc3 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -476,6 +476,17 @@ class _WorkListDetailScreenState extends State { isUpdate: true, collectionNotificationList: getEitCollectionNotificationBodyList![0].collectionNotification)), ); break; + case "CONTINUE_ACTION": + showMyBottomSheet( + context, + callBackFunc: reloadWorkList, + child: UpdateContinueSheet( + workListData: workListData, + getEitCollectionNotificationBodyList: getEitCollectionNotificationBodyList, + dynamicParams: DynamicListViewParams(workListData!.sUBJECT!, workListData!.fUNCTIONNAME!, + isUpdate: true, collectionNotificationList: getEitCollectionNotificationBodyList![0].collectionNotification)), + ); + break; case "APPROVE_AND_FORWARD": showMyBottomSheet(context, callBackFunc: reloadWorkList, diff --git a/lib/ui/work_list/worklist_fragments/actions_fragment.dart b/lib/ui/work_list/worklist_fragments/actions_fragment.dart index 439888b..58e9ac7 100644 --- a/lib/ui/work_list/worklist_fragments/actions_fragment.dart +++ b/lib/ui/work_list/worklist_fragments/actions_fragment.dart @@ -140,8 +140,6 @@ class ActionsFragment extends StatelessWidget { DateTime dateTimeTo = DateUtil.convertSimpleStringDateToDate(actionHistoryList[index].nOTIFICATIONDATE!); DateTime dateTimeFrom = DateUtil.convertSimpleStringDateToDate(actionHistoryList[++index].nOTIFICATIONDATE!); Duration duration = dateTimeTo.difference(dateTimeFrom); - print(dateTimeTo); - print(dateTimeFrom); return "Action duration: " + DateUtil.formatDuration(duration); } } diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index 745dedf..35c93ba 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -6,65 +6,73 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; -AppBar AppBarWidget(BuildContext context, +PreferredSize AppBarWidget(BuildContext context, {required String title, bool showHomeButton = true, bool showNotificationButton = false, bool showMemberButton = false, String? image}) { - return AppBar( - leadingWidth: 0, - // leading: GestureDetector( - // behavior: HitTestBehavior.opaque, - // onTap: Feedback.wrapForTap(() => Navigator.maybePop(context), context), - // child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), - // ), - //titleSpacing: -1.44, - title: Row( + return PreferredSize( + preferredSize: const Size.fromHeight(57.0), + child: Column( children: [ - GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: - Feedback.wrapForTap(() => Navigator.maybePop(context), context), - child: - const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), + AppBar( + leadingWidth: 0, + // leading: GestureDetector( + // behavior: HitTestBehavior.opaque, + // onTap: Feedback.wrapForTap(() => Navigator.maybePop(context), context), + // child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), + // ), + //titleSpacing: -1.44, + title: Row( + children: [ + GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: + Feedback.wrapForTap(() => Navigator.maybePop(context), context), + child: + const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), + ), + 4.width, + if (image != null) SvgPicture.asset( + image, + height: 40, + width: 40, + ), + if (image != null) 14.width, + title.toText24(color: MyColors.darkTextColor, isBold: true).expanded, + ], + ), + centerTitle: false, + elevation: 0, + backgroundColor: Colors.white, + actions: [ + if (showHomeButton) + IconButton( + onPressed: () { + Navigator.popUntil( + context, ModalRoute.withName(AppRoutes.dashboard)); + }, + icon: const Icon(Icons.home, color: MyColors.darkIconColor), + ), + if (showNotificationButton) + IconButton( + onPressed: () { + Navigator.pushNamed(context, AppRoutes.worklistSettings); + }, + icon: const Icon(Icons.notifications, color: MyColors.textMixColor), + ), + if (showMemberButton) + IconButton( + onPressed: () { + Navigator.pushNamed(context, AppRoutes.subordinateLeave); + }, + icon: const Icon(Icons.people, color: MyColors.textMixColor), + ), + ], ), - 4.width, - if (image != null) SvgPicture.asset( - image, - height: 40, - width: 40, - ), - if (image != null) 14.width, - title.toText24(color: MyColors.darkTextColor, isBold: true).expanded, + Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor), ], ), - centerTitle: false, - elevation: 0, - backgroundColor: Colors.white, - actions: [ - if (showHomeButton) - IconButton( - onPressed: () { - Navigator.popUntil( - context, ModalRoute.withName(AppRoutes.dashboard)); - }, - icon: const Icon(Icons.home, color: MyColors.darkIconColor), - ), - if (showNotificationButton) - IconButton( - onPressed: () { - Navigator.pushNamed(context, AppRoutes.worklistSettings); - }, - icon: const Icon(Icons.notifications, color: MyColors.textMixColor), - ), - if (showMemberButton) - IconButton( - onPressed: () { - Navigator.pushNamed(context, AppRoutes.subordinateLeave); - }, - icon: const Icon(Icons.people, color: MyColors.textMixColor), - ), - ], ); } From 7c00f7dce8efef654c18167bcd389723c062e2f8 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 15 Nov 2022 15:26:34 +0300 Subject: [PATCH 069/302] Chat Fixes --- lib/api/chat/chat_provider_model.dart | 19 ++++----- lib/ui/chat/chat_home_screen.dart | 57 +++++++++++++++------------ 2 files changed, 42 insertions(+), 34 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index be5b68c..c9767b4 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -44,6 +44,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future getUserAutoLoginToken() async { String userName = AppState().memberInformationList!.eMPLOYEEEMAILADDRESS!.split("@").first.toString(); + //userName Response response = await ApiClient().postJsonForResponse("${ApiConsts.chatServerBaseApiUrl}user/desktopuserlogin", {"userName": userName, "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG", "loginType": 2}); login.UserAutoLoginModel userLoginResponse = login.userAutoLoginModelFromJson(response.body); @@ -84,8 +85,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } - pChatHistory = recentChat.response; - pChatHistory!.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase())); + pChatHistory = recentChat.response == null ? [] : recentChat.response; + if (pChatHistory != null) pChatHistory!.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase())); + searchedChats = pChatHistory; isLoading = false; notifyListeners(); @@ -164,7 +166,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await hubConnection.start(); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - // hubConnection.on("OnSeenChatUserAsync", onChatSeen); + // hubConnection.on("OnSeenChatUserAsync", onChatSeen); //hubConnection.on("OnUserTypingAsync", onUserTyping); // hubConnection.on("OnUserCountAsync", userCountAsync); @@ -288,7 +290,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // } // }); notifyListeners(); - // if (isChatScreenActive) scrollToBottom(); + // if (isChatScreenActive) scrollToBottom(); } void onUserTyping(List? parameters) { @@ -402,17 +404,16 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ) : null, ); - String chatData = - '{"contant":"${message.text}","contantNo":"${uuid.v4()}","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"${uuid.v4()}"}'; - await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); - userChatHistory.insert(0, data); - isFileSelected = false; isMsgReply = false; sFileType = ""; message.clear(); notifyListeners(); + + String chatData = + '{"contant":"${message.text}","contantNo":"${uuid.v4()}","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"${uuid.v4()}"}'; + await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); } void sendChatMessage(int targetUserId, String targetUserName) async { diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 3ac291c..d146891 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -7,7 +9,6 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; -import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; @@ -113,35 +114,41 @@ class _ChatHomeScreenState extends State { mainAxisAlignment: MainAxisAlignment.end, mainAxisSize: MainAxisSize.max, children: [ - if (m.searchedChats![index].unreadMessageCount! > 0) - Flexible( - child: Container( - padding: EdgeInsets.zero, - alignment: Alignment.centerRight, - width: 18, - height: 18, - decoration: const BoxDecoration( - color: MyColors.redColor, - borderRadius: BorderRadius.all( - Radius.circular(20), - ), - ), - child: (m.searchedChats![index].unreadMessageCount!.toString()) - .toText10( - color: MyColors.white, - ) - .center, - ), - ), + // if (m.searchedChats![index].unreadMessageCount != null) + // Flexible( + // child: Container( + // padding: EdgeInsets.zero, + // alignment: Alignment.centerRight, + // width: 18, + // height: 18, + // decoration: const BoxDecoration( + // color: MyColors.redColor, + // borderRadius: BorderRadius.all( + // Radius.circular(20), + // ), + // ), + // child: (m.searchedChats![index].unreadMessageCount!.toString()) + // .toText10( + // color: MyColors.white, + // ) + // .center, + // ), + // ), Flexible( child: IconButton( alignment: Alignment.centerRight, padding: EdgeInsets.zero, - icon: Icon(m.searchedChats![index].isFav! ? Icons.star_sharp : Icons.star_border), - color: m.searchedChats![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, + icon: Icon(m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp), + color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, onPressed: () { - if (m.searchedChats![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); - if (!m.searchedChats![index].isFav!) m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + + if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { + m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + }else if( m.searchedChats![index].isFav == true){ + m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + } else{ + m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + } }, ), ) From f19d734dbb3cdbd8606d9fb1235566bdb69bc771 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 15 Nov 2022 15:32:17 +0300 Subject: [PATCH 070/302] Chat Fixes --- assets/langs/ar-SA.json | 3 +-- assets/langs/en-US.json | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 000e111..1c5851a 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -499,7 +499,6 @@ "resend": "إعادة إرسال", "codeExpire": "انتهت صلاحية رمز التحقق", "typeheretoreply": "اكتب هنا للرد", - "favorite" : "أُفضله", + "favorite": "مفضلتي", "searchfromchat": "البحث من الدردشة" - } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index c8b8322..b4b06f0 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -499,7 +499,7 @@ "codeExpire": "The verification code has been expired", "allQuestionsCorrect": "You have answered all questions correct", "typeheretoreply": "Type here to reply", - "favorite" : "My Favorite", + "favorite" : "My Favorites", "searchfromchat": "Search from chat" } \ No newline at end of file From 1fb585a438fe398978af9d1307bd82630232edaa Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 15 Nov 2022 15:36:28 +0300 Subject: [PATCH 071/302] Chat Fixes --- lib/generated/codegen_loader.g.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 3d35ccc..a54ff37 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -515,7 +515,7 @@ class CodegenLoader extends AssetLoader{ "resend": "إعادة إرسال", "codeExpire": "انتهت صلاحية رمز التحقق", "typeheretoreply": "اكتب هنا للرد", - "favorite": "أُفضله", + "favorite": "مفضلتي", "searchfromchat": "البحث من الدردشة" }; static const Map en_US = { @@ -1019,7 +1019,7 @@ static const Map en_US = { "codeExpire": "The verification code has been expired", "allQuestionsCorrect": "You have answered all questions correct", "typeheretoreply": "Type here to reply", - "favorite": "My Favorite", + "favorite": "My Favorites", "searchfromchat": "Search from chat" }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; From 55187f4e36688bcfb2006e5d38409a82a474f9b1 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 15 Nov 2022 15:52:59 +0300 Subject: [PATCH 072/302] Chat Fixes --- lib/api/chat/chat_provider_model.dart | 4 +++- lib/classes/consts.dart | 4 ++-- lib/ui/chat/chat_detailed_screen.dart | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index c9767b4..b09ad50 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -416,7 +416,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); } - void sendChatMessage(int targetUserId, String targetUserName) async { + void sendChatMessage(int targetUserId, String targetUserName, BuildContext context) async { dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { searchedChats!.add( @@ -435,9 +435,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sendChatToServer(chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: false, chatReplyId: null, isReply: false); } if (isFileSelected && !isMsgReply) { + Utils.showLoading(context); logger.d("Normal Attachment Message"); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); + Utils.hideLoading(context); sendChatToServer(chatEventId: 2, fileTypeId: getFileType(ext.toString()), targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: true, chatReplyId: null, isReply: false); } if (!isFileSelected && isMsgReply) { diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 93b4ea8..c5788f9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 04e84e0..782e4e2 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -252,7 +252,7 @@ class ChatDetailScreen extends StatelessWidget { width: 26, ), onPressed: () { - m.sendChatMessage(userDetails["targetUser"].id, userDetails["targetUser"].userName); + m.sendChatMessage(userDetails["targetUser"].id, userDetails["targetUser"].userName, context); }, ) ], From ab6f265ef45e94fa60ad15cd8de85f9ecd611fd8 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 15 Nov 2022 16:09:34 +0300 Subject: [PATCH 073/302] Chat Favorite Screen & Fixes --- lib/api/chat/chat_provider_model.dart | 8 +++++--- lib/classes/consts.dart | 4 ++-- lib/ui/chat/chat_home.dart | 2 -- lib/ui/chat/chat_home_screen.dart | 5 ++--- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index b09ad50..ead29d7 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -380,10 +380,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future sendChatToServer( {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { Uuid uuid = const Uuid(); + String msg = message.text; SingleUserChatModel data = SingleUserChatModel( chatEventId: chatEventId, chatSource: 1, - contant: message.text, + contant: msg, contantNo: uuid.v4(), conversationId: uuid.v4(), createdDate: DateTime.now(), @@ -412,7 +413,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); String chatData = - '{"contant":"${message.text}","contantNo":"${uuid.v4()}","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"${uuid.v4()}"}'; + '{"contant":"$msg","contantNo":"${uuid.v4()}","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"${uuid.v4()}"}'; await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); } @@ -452,9 +453,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } if (isFileSelected && isMsgReply) { logger.d("Attachment Message With Reply"); - logger.d(repliedMsg.first.userChatHistoryId); + Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); + Utils.hideLoading(context); sendChatToServer( chatEventId: 2, fileTypeId: getFileType(ext.toString()), diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c5788f9..ede22e3 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + //static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 1fdcb33..738fc17 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -26,7 +26,6 @@ class _ChatHomeState extends State { PageController controller = PageController(); late ChatProviderModel data; - @override void initState() { // TODO: implement initState @@ -46,7 +45,6 @@ class _ChatHomeState extends State { @override Widget build(BuildContext context) { - return Scaffold( backgroundColor: MyColors.white, appBar: AppBarWidget( diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index d146891..38bf42c 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -141,12 +141,11 @@ class _ChatHomeScreenState extends State { icon: Icon(m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp), color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, onPressed: () { - if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); - }else if( m.searchedChats![index].isFav == true){ + } else if (m.searchedChats![index].isFav == true) { m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); - } else{ + } else { m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); } }, From bb583def642aa6aeddff9a9af9b3e2834d245569 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 15 Nov 2022 16:16:40 +0300 Subject: [PATCH 074/302] Chat Favorite Screen & Fixes --- lib/ui/chat/chat_home_screen.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 38bf42c..a22c7e0 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -1,5 +1,3 @@ -import 'dart:convert'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; From 68939f6256c1305c19c523da47314172e0acf5d0 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 16 Nov 2022 12:07:13 +0300 Subject: [PATCH 075/302] Chat Call UI --- lib/models/chat/call.dart | 117 ++++++++ lib/ui/chat/call/chat_call_screen.dart | 379 +++++++++++++++++++++++++ lib/ui/chat/chat_detailed_screen.dart | 116 +++++++- lib/widgets/app_bar_widget.dart | 29 +- pubspec.yaml | 2 + 5 files changed, 614 insertions(+), 29 deletions(-) create mode 100644 lib/models/chat/call.dart create mode 100644 lib/ui/chat/call/chat_call_screen.dart diff --git a/lib/models/chat/call.dart b/lib/models/chat/call.dart new file mode 100644 index 0000000..eacdd03 --- /dev/null +++ b/lib/models/chat/call.dart @@ -0,0 +1,117 @@ +class IncomingCallData { + String? callerID; + String? receiverID; + String? msgID; + String? notfID; + String? notificationForeground; + String? count; + String? message; + String? appointmentNo; + String? title; + String? projectID; + String? notificationType; + String? background; + String? doctorname; + String? clinicname; + String? speciality; + String? appointmentdate; + String? appointmenttime; + String? type; + String? sessionId; + String? identity; + String? name; + String? videoUrl; + String? picture; + String? token; + String? isCall; + String? sound; + String? server; + String? isWebRTC; + + IncomingCallData( + {this.msgID, + this.notfID, + this.notificationForeground, + this.count, + this.message, + this.appointmentNo, + this.title, + this.projectID, + this.notificationType, + this.background, + this.doctorname, + this.clinicname, + this.speciality, + this.appointmentdate, + this.appointmenttime, + this.type, + this.sessionId, + this.identity, + this.name, + this.videoUrl, + this.picture, + this.isCall, + this.sound}); + + IncomingCallData.fromJson(Map json) { + callerID = json['callerID']; + receiverID = json['PatientID']; + msgID = json['msgID']; + notfID = json['notfID']; + notificationForeground = json['notification_foreground']; + count = json['count']; + message = json['message']; + appointmentNo = json['AppointmentNo']; + title = json['title']; + projectID = json['ProjectID']; + notificationType = json['NotificationType']; + background = json['background']; + doctorname = json['doctorname']; + clinicname = json['clinicname']; + speciality = json['speciality']; + appointmentdate = json['appointmentdate']; + appointmenttime = json['appointmenttime']; + type = json['type']; + sessionId = json['session_id']; + token = json['token']; + identity = json['identity']; + name = json['name']; + videoUrl = json['videoUrl']; + picture = json['picture']; + isCall = json['is_call']; + sound = json['sound']; + server = json['server']; + isWebRTC = json['is_webrtc'] ?? "true"; + } + + Map toJson() { + Map data = Map(); + data['msgID'] = this.msgID; + data['notfID'] = this.notfID; + data['notification_foreground'] = this.notificationForeground; + data['count'] = this.count; + data['message'] = this.message; + data['AppointmentNo'] = this.appointmentNo; + data['title'] = this.title; + data['ProjectID'] = this.projectID; + data['NotificationType'] = this.notificationType; + data['background'] = this.background; + data['doctorname'] = this.doctorname; + data['clinicname'] = this.clinicname; + data['speciality'] = this.speciality; + data['appointmentdate'] = this.appointmentdate; + data['appointmenttime'] = this.appointmenttime; + data['type'] = this.type; + data['session_id'] = this.sessionId; + data['token'] = this.token; + data['identity'] = this.identity; + data['name'] = this.name; + data['videoUrl'] = this.videoUrl; + data['picture'] = this.picture; + data['is_call'] = this.isCall; + data['sound'] = this.sound; + data['server'] = this.server; + data['is_webrtc'] = this.isWebRTC; + return data; + } +} diff --git a/lib/ui/chat/call/chat_call_screen.dart b/lib/ui/chat/call/chat_call_screen.dart new file mode 100644 index 0000000..0bec1f0 --- /dev/null +++ b/lib/ui/chat/call/chat_call_screen.dart @@ -0,0 +1,379 @@ +import 'dart:ui'; + +import 'package:camera/camera.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/models/chat/call.dart'; + +class IncomingCall extends StatefulWidget { + IncomingCallData incomingCallData; + bool? isVideoCall; + + IncomingCall({Key? key, required this.incomingCallData, this.isVideoCall}) : super(key: key); + + @override + _IncomingCallState createState() => _IncomingCallState(); +} + +class _IncomingCallState extends State with SingleTickerProviderStateMixin { + AnimationController? _animationController; + CameraController? _controller; + Future? _initializeControllerFuture; + bool isCameraReady = false; + + @override + void initState() { + _animationController = AnimationController( + vsync: this, + duration: const Duration( + milliseconds: 500, + ), + ); + //_runAnimation(); + // connectSignaling(); + WidgetsBinding.instance.addPostFrameCallback( + (_) => _runAnimation(), + ); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: FutureBuilder( + future: _initializeControllerFuture, + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + return Stack( + alignment: FractionalOffset.center, + children: [ + if (widget.isVideoCall!) + Positioned.fill( + child: AspectRatio( + aspectRatio: _controller!.value.aspectRatio, + child: CameraPreview( + _controller!, + ), + ), + ), + Positioned.fill( + child: ClipRect( + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration( + color: MyColors.grey57Color.withOpacity( + 0.7, + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: const EdgeInsets.all(21.0), + child: Row( + children: [ + Image.asset( + "assets/images/logos/main_mohemm_logo.png", + height: 70, + width: 70, + ), + Container( + margin: const EdgeInsets.only( + left: 10.0, + right: 10.0, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: const [ + Text( + "Aamir Saleem Ahmad", + style: TextStyle( + fontSize: 21, + fontWeight: FontWeight.bold, + color: MyColors.white, + letterSpacing: -1.26, + height: 23 / 12, + ), + ), + Text( + "Calling...", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: Color( + 0xffC6C6C6, + ), + letterSpacing: -0.48, + height: 23 / 24, + ), + ), + SizedBox( + height: 2, + ), + ], + ), + ), + ], + ), + ), + // Container( + // margin: const EdgeInsets.all(21.0), + // width: MediaQuery.of(context).size.width, + // decoration: cardRadius(15.0, color: MyColors.black, elevation: null), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisSize: MainAxisSize.min, + // children: [ + // Container( + // padding: const EdgeInsets.fromLTRB(16.0, 16.0, 16.0, 6.0), + // child: Text( + // "TranslationBase.of(context).appoInfo", + // style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.white, letterSpacing: -0.64, height: 23 / 12), + // ), + // ), + // Container( + // padding: const EdgeInsets.only(left: 16.0, right: 16.0), + // child: Text( + // "widget.incomingCallData.appointmentdate + widget.incomingCallData.appointmenttime", + // style: TextStyle(fontSize: 12.0, letterSpacing: -0.48, color: Color(0xff8E8E8E), fontWeight: FontWeight.w600), + // ), + // ), + // Container( + // padding: const EdgeInsets.only(left: 16.0, right: 16.0, bottom: 21.0), + // child: Text( + // "widget.incomingCallData.clinicname", + // style: TextStyle(fontSize: 12.0, letterSpacing: -0.48, color: Color(0xff8E8E8E), fontWeight: FontWeight.w600), + // ), + // ), + // ], + // ), + // ), + const Spacer(), + Container( + margin: const EdgeInsets.only( + bottom: 70.0, + left: 49, + right: 49, + ), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + RotationTransition( + turns: Tween( + begin: 0.0, + end: -.1, + ) + .chain( + CurveTween( + curve: Curves.elasticIn, + ), + ) + .animate( + _animationController!, + ), + child: RawMaterialButton( + onPressed: () { + _submit(); + }, + elevation: 2.0, + fillColor: MyColors.green2DColor, + padding: const EdgeInsets.all( + 15.0, + ), + shape: const CircleBorder(), + child: const Icon( + Icons.call, + color: MyColors.white, + size: 35.0, + ), + ), + ), + RawMaterialButton( + onPressed: () { + backToHome(); + }, + elevation: 2.0, + fillColor: MyColors.redA3Color, + padding: const EdgeInsets.all( + 15.0, + ), + shape: const CircleBorder(), + child: const Icon( + Icons.call_end, + color: MyColors.white, + size: 35.0, + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ], + ); + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, + ), + ); + } + + void _runAnimation() async { + List cameras = await availableCameras(); + CameraDescription firstCamera = cameras[1]; + _controller = CameraController( + firstCamera, + ResolutionPreset.medium, + ); + _initializeControllerFuture = _controller!.initialize(); + setState(() {}); + // setAudioFile(); + for (int i = 0; i < 100; i++) { + await _animationController!.forward(); + await _animationController!.reverse(); + } + } + + Future _submit() async { + try { + // backToHome(); + // final roomModel = RoomModel(name: widget.incomingCallData.name, token: widget.incomingCallData.sessionId, identity: widget.incomingCallData.identity); + await _controller?.dispose(); + // changeCallStatusAPI(4); + + // if (_session != null && _signaling != null) { + // await Navigator.of(context).pushReplacement( + // MaterialPageRoute( + // // fullscreenDialog: true, + // builder: (BuildContext context) { + // // if (widget.incomingCallData.isWebRTC == "true") { + // return StartVideoCall(signaling: _signaling, session: _session); + // + // // else { + // // return OpenTokConnectCallPage(apiKey: OPENTOK_API_KEY, sessionId: widget.incomingCallData.sessionId, token: widget.incomingCallData.token); + // // } + // + // // return VideoCallWebPage(receiverId: widget.incomingCallData.receiverID, callerId: widget.incomingCallData.callerID); // Web WebRTC VideoCall + // + // // return CallHomePage(receiverId: widget.incomingCallData.receiverID, callerId: widget.incomingCallData.callerID); // App WebRTC VideoCall + // }, + // ), + // ); + // } else { + // // Invalid Params/Data + // Utils.showToast("Failed to establish connection with server"); + // } + } catch (err) { + print(err); + // await PlatformExceptionAlertDialog( + // exception: err, + // ).show(context); + + Utils.showToast(err.toString()); + } + } + + // void changeCallStatusAPI(int sessionStatus) { + // LiveCareService service = new LiveCareService(); + // service.endCallAPI(widget.incomingCallData.sessionId, sessionStatus, context).then((res) {}).catchError((err) { + // print(err); + // }); + // } + + void backToHome() async { + // final connected = await signaling.declineCall(widget.incomingCallData.callerID, widget.incomingCallData.receiverID); + // LandingPage.isOpenCallPage = false; + // _signaling + // player.stop(); + // changeCallStatusAPI(3); + // _signaling.bye(_session, callRejected: true); + // _signaling.callDisconnected(_session, callRejected: true); + Navigator.of(context).pop(); + } + + // + // void disposeAudioResources() async { + // await player.dispose(); + // } + // + // void setAudioFile() async { + // player.stop(); + // await player.setVolume(1.0); // full volume + // try { + // await player.setAsset('assets/sounds/ring_60Sec.mp3').then((value) { + // player.setLoopMode(LoopMode.one); // loop ring sound + // player.play(); + // }).catchError((err) { + // print("Error: $err"); + // }); + // } catch (e) { + // print("Error: $e"); + // } + // } + // + // void connectSignaling({@required bool iAmCaller = false}) async { + // print("----------------- + Signaling Connection Started ---------------------------"); + // var caller = widget.incomingCallData.callerID; + // var receiver = widget.incomingCallData.receiverID; + // var host = widget.incomingCallData.server; + // + // var selfRole = iAmCaller ? "Caller" : "Receiver"; + // var selfId = iAmCaller ? caller : receiver; + // var selfUser = SocketUser(id: selfId, name: "$selfRole-$selfId", userAgent: DeviceInfo.userAgent, moreInfo: {}); + // + // var remoteRole = !iAmCaller ? "Caller" : "Receiver"; + // var remoteId = !iAmCaller ? caller : receiver; + // var remoteUser = SocketUser(id: remoteId, name: "$remoteRole-$remoteId", userAgent: DeviceInfo.userAgent, moreInfo: {}); + // + // var sessionId = "$caller-$receiver"; + // _session = SessionOneToOne(id: sessionId, local_user: selfUser, remote_user: remoteUser); + // + // _signaling = Signaling(host, session: _session); + // await _signaling.connect(); + // + // if (_signaling.state == SignalingState.Open) { + // return; + // } + // } + + BoxDecoration cardRadius(double radius, {required Color color, double? elevation}) { + return BoxDecoration( + shape: BoxShape.rectangle, + color: color ?? Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(radius), + ), + boxShadow: [ + BoxShadow( + color: const Color( + 0xff000000, + ).withOpacity( + .05, + ), + //spreadRadius: 5, + blurRadius: elevation ?? 27, + offset: const Offset( + -2, + 3, + ), + ), + ], + ); + } +} diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 782e4e2..6ddd19e 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -9,6 +9,8 @@ import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/chat/call.dart'; +import 'package:mohem_flutter_app/ui/chat/call/chat_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; @@ -16,15 +18,18 @@ import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:swipe_to/swipe_to.dart'; -class ChatDetailScreen extends StatelessWidget { +class ChatDetailScreen extends StatefulWidget { // ignore: prefer_const_constructors_in_immutables ChatDetailScreen({Key? key}) : super(key: key); - dynamic userDetails; + @override + State createState() => _ChatDetailScreenState(); +} +class _ChatDetailScreenState extends State { + dynamic userDetails; late ChatProviderModel data; - - final RefreshController _refreshController = RefreshController(initialRefresh: false); + final RefreshController _rc = RefreshController(initialRefresh: false); void getMoreChat() async { if (userDetails != null) { @@ -32,19 +37,54 @@ class ChatDetailScreen extends StatelessWidget { data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true, isNewChat: false); } await Future.delayed(const Duration(milliseconds: 1000)); - _refreshController.loadComplete(); + _rc.loadComplete(); } @override - Widget build(BuildContext context) { - userDetails = ModalRoute.of(context)!.settings.arguments; + void initState() { + super.initState(); data = Provider.of(context, listen: false); if (userDetails != null) - data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: false, isNewChat: userDetails["isNewChat"]); - data.scrollController.addListener(data.scrollListener); + data.getSingleUserChatHistory( + senderUID: AppState().chatDetails!.response!.id.toString(), + receiverUID: userDetails["targetUser"].id, + loadMore: false, + isNewChat: userDetails["isNewChat"], + ); + //data.scrollController.addListener(data.scrollListener); + } + + @override + Widget build(BuildContext context) { + userDetails = ModalRoute.of(context)!.settings.arguments; return Scaffold( backgroundColor: const Color(0xFFF8F8F8), - appBar: AppBarWidget(context, title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, showHomeButton: false, image: userDetails["targetUser"].image), + appBar: AppBarWidget(context, + title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, + showHomeButton: false, + image: userDetails["targetUser"].image, + actions: [ + IconButton( + onPressed: () { + makeCall("AUDIO"); + }, + icon: SvgPicture.asset( + "assets/images/call.svg", + width: 25, + height: 25, + ), + ), + IconButton( + onPressed: () { + makeCall("VIDEO"); + }, + icon: SvgPicture.asset( + "assets/images/call.svg", + width: 25, + height: 25, + ), + ), + ]), body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { return (m.isLoading @@ -62,7 +102,7 @@ class ChatDetailScreen extends StatelessWidget { header: const MaterialClassicHeader( color: MyColors.gradiantEndColor, ), - controller: _refreshController, + controller: _rc, reverse: true, child: ListView.builder( controller: m.scrollController, @@ -136,11 +176,11 @@ class ChatDetailScreen extends StatelessWidget { margin: EdgeInsets.zero, elevation: 0, child: Padding( - padding: const EdgeInsets.only(left: 20.0, right: 20, top: 20, bottom: 0), + padding: const EdgeInsets.only(left: 20, right: 20, top: 20, bottom: 0), child: Card( margin: EdgeInsets.zero, shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(0.0), + borderRadius: BorderRadius.circular(0), ), elevation: 0, child: Container( @@ -267,4 +307,54 @@ class ChatDetailScreen extends StatelessWidget { ), ); } + + void makeCall(String callType) async { + // final server = await SelectionDialog( + // context, + // title: "Select Server", + // items: ["https://livecareturn.hmg.com:8086", "https://104.197.179.1:8086"] + // ).show(); + + Map json = { + "callerID": "9920", + "PatientID": "1231755", + "msgID": "123", + "notfID": "123", + "notification_foreground": "true", + "count": "1", + "message": "Doctor is calling ", + "AppointmentNo": "123", + "title": "Rayyan Hospital", + "ProjectID": "123", + "NotificationType": "10", + "background": "1", + "doctorname": "Dr Sulaiman Al Habib", + "clinicname": "ENT Clinic", + "speciality": "Speciality", + "appointmentdate": "Sun, 15th Dec, 2019", + "appointmenttime": "09:00", + "type": "video", + "session_id": + "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImN0eSI6InR3aWxpby1mcGE7dj0xIn0.eyJqdGkiOiJTS2I2NjYyOWMzN2ZhOTM3YjFjNDI2Zjg1MTgyNWFmN2M0LTE1OTg3NzQ1MDYiLCJpc3MiOiJTS2I2NjYyOWMzN2ZhOTM3YjFjNDI2Zjg1MTgyNWFmN2M0Iiwic3ViIjoiQUNhYWQ1YTNmOGM2NGZhNjczNTY3NTYxNTc0N2YyNmMyYiIsImV4cCI6MTU5ODc3ODEwNiwiZ3JhbnRzIjp7ImlkZW50aXR5IjoiSGFyb29uMSIsInZpZGVvIjp7InJvb20iOiJTbWFsbERhaWx5U3RhbmR1cCJ9fX0.7XUS5uMQQJfkrBZu9EjQ6STL6R7iXkso6BtO1HmrQKk", + "identity": "Haroon1", + "name": "SmallDailyStandup", + "videoUrl": "video", + "picture": "video", + "is_call": "true", + "is_webrtc": "true", + // "server": "https://192.168.8.163:8086", + "server": "https://livecareturn.hmg.com:8086", + }; + + IncomingCallData incomingCallData = IncomingCallData.fromJson(json); + await Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => IncomingCall( + incomingCallData: incomingCallData, + isVideoCall: callType == "VIDEO" ? true : false, + ), + ), + ); + } } diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index 745dedf..d3e7c97 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -7,11 +7,7 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; AppBar AppBarWidget(BuildContext context, - {required String title, - bool showHomeButton = true, - bool showNotificationButton = false, - bool showMemberButton = false, - String? image}) { + {required String title, bool showHomeButton = true, bool showNotificationButton = false, bool showMemberButton = false, String? image, bool, List? actions}) { return AppBar( leadingWidth: 0, // leading: GestureDetector( @@ -24,17 +20,16 @@ AppBar AppBarWidget(BuildContext context, children: [ GestureDetector( behavior: HitTestBehavior.opaque, - onTap: - Feedback.wrapForTap(() => Navigator.maybePop(context), context), - child: - const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), + onTap: Feedback.wrapForTap(() => Navigator.maybePop(context), context), + child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), ), 4.width, - if (image != null) SvgPicture.asset( - image, - height: 40, - width: 40, - ), + if (image != null) + SvgPicture.asset( + image, + height: 40, + width: 40, + ), if (image != null) 14.width, title.toText24(color: MyColors.darkTextColor, isBold: true).expanded, ], @@ -46,8 +41,7 @@ AppBar AppBarWidget(BuildContext context, if (showHomeButton) IconButton( onPressed: () { - Navigator.popUntil( - context, ModalRoute.withName(AppRoutes.dashboard)); + Navigator.popUntil(context, ModalRoute.withName(AppRoutes.dashboard)); }, icon: const Icon(Icons.home, color: MyColors.darkIconColor), ), @@ -65,6 +59,9 @@ AppBar AppBarWidget(BuildContext context, }, icon: const Icon(Icons.people, color: MyColors.textMixColor), ), + + + ...actions??[] ], ); } diff --git a/pubspec.yaml b/pubspec.yaml index 8947c12..5a7c1c5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -91,6 +91,8 @@ dependencies: signalr_netcore: ^1.3.3 logging: ^1.0.1 swipe_to: ^1.0.2 + flutter_webrtc: ^0.9.16 + camera: ^0.10.0+4 From 00dee97bca969b495a5568fcbc96022f287f2904 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 16 Nov 2022 16:44:46 +0300 Subject: [PATCH 076/302] Chat Count Api / Chat Token Updates / Chat Call UI --- lib/api/chat/chat_provider_model.dart | 42 +++++++--- lib/api/dashboard_api_client.dart | 10 ++- lib/classes/consts.dart | 4 +- .../chat/chat_count_conversation_model.dart | 25 ++++++ .../chat/get_user_login_token_model.dart | 81 ++++++++++++------- lib/provider/dashboard_provider_model.dart | 22 ++++- lib/ui/chat/call/chat_call_screen.dart | 2 + lib/ui/chat/chat_detailed_screen.dart | 28 ++++--- lib/ui/chat/chat_home.dart | 9 ++- lib/ui/landing/dashboard_screen.dart | 33 ++++++-- .../search_employee_bottom_sheet.dart | 2 +- 11 files changed, 191 insertions(+), 67 deletions(-) create mode 100644 lib/models/chat/chat_count_conversation_model.dart diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index ead29d7..cedc158 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -7,6 +7,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; import 'package:logger/logger.dart' as L; +import 'package:logging/logging.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; @@ -27,6 +28,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List? pChatHistory, searchedChats; late HubConnection hubConnection; L.Logger logger = L.Logger(); + bool hubConInitialized = false; bool isLoading = true; bool isChatScreenActive = false; @@ -43,13 +45,27 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { bool _shouldAutoscroll = false; Future getUserAutoLoginToken() async { - String userName = AppState().memberInformationList!.eMPLOYEEEMAILADDRESS!.split("@").first.toString(); - //userName - Response response = - await ApiClient().postJsonForResponse("${ApiConsts.chatServerBaseApiUrl}user/desktopuserlogin", {"userName": userName, "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG", "loginType": 2}); - login.UserAutoLoginModel userLoginResponse = login.userAutoLoginModelFromJson(response.body); - AppState().setchatUserDetails = userLoginResponse; - await buildHubConnection(); + Response response = await ApiClient().postJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", + { + "employeeNumber": int.parse( + AppState().memberInformationList!.eMPLOYEENUMBER.toString(), + ), + "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG" + }, + ); + login.UserAutoLoginModel userLoginResponse = login.userAutoLoginModelFromJson( + response.body, + ); + + if (userLoginResponse.response != null) { + hubConInitialized = true; + AppState().setchatUserDetails = userLoginResponse; + await buildHubConnection(); + } else { + Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); + return; + } } Future?> getChatMemberFromSearch(String sName, int cUserId) async { @@ -95,6 +111,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void getSingleUserChatHistory({required String senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false}) async { isLoading = true; + if (isNewChat) userChatHistory = []; if (!loadMore) paginationVal = 0; isChatScreenActive = true; Response response = await ApiClient().getJsonForResponse( @@ -151,8 +168,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { hubConnection = HubConnectionBuilder() .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) .withAutomaticReconnect( - retryDelays: [2000, 5000, 10000, 20000], - ).build(); + retryDelays: [2000, 5000, 10000, 20000], + ) + .configureLogging(Logger("Loggin")) + .build(); hubConnection.onclose( ({Exception? error}) {}, ); @@ -173,6 +192,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); + } } @@ -215,9 +235,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void updateChatHistoryWindow(List? args) { dynamic items = args!.toList(); - if (kDebugMode) { - print("---------------------------------Update Chat History Windows Async -------------------------------------"); - } + print("---------------------------------Update Chat History Windows Async -------------------------------------"); logger.d(items); // for (var user in searchedChats!) { // if (user.id == items.first["id"]) { diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index cce2207..9747e5c 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -1,10 +1,12 @@ import 'dart:async'; import 'dart:convert'; +import 'package:http/http.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; +import 'package:mohem_flutter_app/models/chat/chat_count_conversation_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart'; @@ -15,7 +17,6 @@ import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:uuid/uuid.dart'; - class DashboardApiClient { static final DashboardApiClient _instance = DashboardApiClient._internal(); @@ -178,4 +179,11 @@ class DashboardApiClient { return responseData; }, url, postParams); } + + Future getChatCount() async { + Response response = await ApiClient().getJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}user/unreadconversationcount/${AppState().getUserName}", + ); + return chatUnreadCovnCountModelFromJson(response.body); + } } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ede22e3..c5788f9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - //static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/models/chat/chat_count_conversation_model.dart b/lib/models/chat/chat_count_conversation_model.dart new file mode 100644 index 0000000..e584d32 --- /dev/null +++ b/lib/models/chat/chat_count_conversation_model.dart @@ -0,0 +1,25 @@ +import 'dart:convert'; + +ChatUnreadCovnCountModel chatUnreadCovnCountModelFromJson(String str) => ChatUnreadCovnCountModel.fromJson(json.decode(str)); + +String chatUnreadCovnCountModelToJson(ChatUnreadCovnCountModel data) => json.encode(data.toJson()); + +class ChatUnreadCovnCountModel { + ChatUnreadCovnCountModel({ + this.singleChatCount, + this.groupChatCount, + }); + + int? singleChatCount; + int? groupChatCount; + + factory ChatUnreadCovnCountModel.fromJson(Map json) => ChatUnreadCovnCountModel( + singleChatCount: json["singleChatCount"] == null ? null : json["singleChatCount"], + groupChatCount: json["groupChatCount"] == null ? null : json["groupChatCount"], + ); + + Map toJson() => { + "singleChatCount": singleChatCount == null ? null : singleChatCount, + "groupChatCount": groupChatCount == null ? null : groupChatCount, + }; +} diff --git a/lib/models/chat/get_user_login_token_model.dart b/lib/models/chat/get_user_login_token_model.dart index 8afd3a9..8d55461 100644 --- a/lib/models/chat/get_user_login_token_model.dart +++ b/lib/models/chat/get_user_login_token_model.dart @@ -1,4 +1,3 @@ - import 'dart:convert'; UserAutoLoginModel userAutoLoginModelFromJson(String str) => UserAutoLoginModel.fromJson(json.decode(str)); @@ -7,22 +6,22 @@ String userAutoLoginModelToJson(UserAutoLoginModel data) => json.encode(data.toJ class UserAutoLoginModel { UserAutoLoginModel({ - this.response, + this.response, this.errorResponses, }); Response? response; - dynamic? errorResponses; + List? errorResponses; factory UserAutoLoginModel.fromJson(Map json) => UserAutoLoginModel( - response: json["response"] == null ? null : Response.fromJson(json["response"]), - errorResponses: json["errorResponses"], - ); + response: json["response"] == null ? null : Response.fromJson(json["response"]), + errorResponses: json["errorResponses"] == null ? null : List.from(json["errorResponses"].map((x) => ErrorResponse.fromJson(x))), + ); Map toJson() => { - "response": response == null ? null : response!.toJson(), - "errorResponses": errorResponses, - }; + "response": response == null ? null : response!.toJson(), + "errorResponses": errorResponses == null ? null : List.from(errorResponses!.map((x) => x.toJson())), + }; } class Response { @@ -51,28 +50,48 @@ class Response { String? encryptedUserName; factory Response.fromJson(Map json) => Response( - id: json["id"] == null ? null : json["id"], - userName: json["userName"] == null ? null : json["userName"], - email: json["email"] == null ? null : json["email"], - phone: json["phone"] == null ? null : json["phone"], - title: json["title"] == null ? null : json["title"], - token: json["token"] == null ? null : json["token"], - isDomainUser: json["isDomainUser"] == null ? null : json["isDomainUser"], - isActiveCode: json["isActiveCode"] == null ? null : json["isActiveCode"], - encryptedUserId: json["encryptedUserId"] == null ? null : json["encryptedUserId"], - encryptedUserName: json["encryptedUserName"] == null ? null : json["encryptedUserName"], - ); + id: json["id"] == null ? null : json["id"], + userName: json["userName"] == null ? null : json["userName"], + email: json["email"] == null ? null : json["email"], + phone: json["phone"] == null ? null : json["phone"], + title: json["title"] == null ? null : json["title"], + token: json["token"] == null ? null : json["token"], + isDomainUser: json["isDomainUser"] == null ? null : json["isDomainUser"], + isActiveCode: json["isActiveCode"] == null ? null : json["isActiveCode"], + encryptedUserId: json["encryptedUserId"] == null ? null : json["encryptedUserId"], + encryptedUserName: json["encryptedUserName"] == null ? null : json["encryptedUserName"], + ); + + Map toJson() => { + "id": id == null ? null : id, + "userName": userName == null ? null : userName, + "email": email == null ? null : email, + "phone": phone == null ? null : phone, + "title": title == null ? null : title, + "token": token == null ? null : token, + "isDomainUser": isDomainUser == null ? null : isDomainUser, + "isActiveCode": isActiveCode == null ? null : isActiveCode, + "encryptedUserId": encryptedUserId == null ? null : encryptedUserId, + "encryptedUserName": encryptedUserName == null ? null : encryptedUserName, + }; +} + +class ErrorResponse { + ErrorResponse({ + this.fieldName, + this.message, + }); + + String? fieldName; + String? message; + + factory ErrorResponse.fromJson(Map json) => ErrorResponse( + fieldName: json["fieldName"] == null ? null : json["fieldName"], + message: json["message"] == null ? null : json["message"], + ); Map toJson() => { - "id": id == null ? null : id, - "userName": userName == null ? null : userName, - "email": email == null ? null : email, - "phone": phone == null ? null : phone, - "title": title == null ? null : title, - "token": token == null ? null : token, - "isDomainUser": isDomainUser == null ? null : isDomainUser, - "isActiveCode": isActiveCode == null ? null : isActiveCode, - "encryptedUserId": encryptedUserId == null ? null : encryptedUserId, - "encryptedUserName": encryptedUserName == null ? null : encryptedUserName, - }; + "fieldName": fieldName == null ? null : fieldName, + "message": message == null ? null : message, + }; } diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index 5b9f8f1..b38536c 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -7,6 +7,7 @@ import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/models/chat/chat_count_conversation_model.dart'; import 'package:mohem_flutter_app/models/dashboard/drawer_menu_item_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; @@ -34,6 +35,10 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { bool isWorkListLoading = true; int workListCounter = 0; + //Chat + bool isChatCounterLoding = true; + int chatUConvCounter = 0; + //Misssing Swipe bool isMissingSwipeLoading = true; int missingSwipeCounter = 0; @@ -91,6 +96,9 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { accrualList = null; leaveBalanceAccrual = null; + isChatCounterLoding = true; + chatUConvCounter = 0; + ticketBalance = 0; isServicesMenusLoading = true; homeMenus = null; @@ -266,7 +274,19 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return res; } - + void fetchChatCounts() async { + print("----------------------- Fetch Count ____________________________________"); + try { + ChatUnreadCovnCountModel response = await DashboardApiClient().getChatCount(); + chatUConvCounter = response.singleChatCount!; + isChatCounterLoding = false; + notifyListeners(); + } catch (ex) { + logger.wtf(ex); + notifyListeners(); + Utils.handleException(ex, null, null); + } + } void notify() { notifyListeners(); diff --git a/lib/ui/chat/call/chat_call_screen.dart b/lib/ui/chat/call/chat_call_screen.dart index 0bec1f0..3fce65b 100644 --- a/lib/ui/chat/call/chat_call_screen.dart +++ b/lib/ui/chat/call/chat_call_screen.dart @@ -255,6 +255,7 @@ class _IncomingCallState extends State with SingleTickerProviderSt // backToHome(); // final roomModel = RoomModel(name: widget.incomingCallData.name, token: widget.incomingCallData.sessionId, identity: widget.incomingCallData.identity); await _controller?.dispose(); + // changeCallStatusAPI(4); // if (_session != null && _signaling != null) { @@ -300,6 +301,7 @@ class _IncomingCallState extends State with SingleTickerProviderSt // final connected = await signaling.declineCall(widget.incomingCallData.callerID, widget.incomingCallData.receiverID); // LandingPage.isOpenCallPage = false; // _signaling + _animationController!.dispose(); // player.stop(); // changeCallStatusAPI(3); // _signaling.bye(_session, callRejected: true); diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 6ddd19e..2ef61f0 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -34,15 +34,25 @@ class _ChatDetailScreenState extends State { void getMoreChat() async { if (userDetails != null) { data.paginationVal = data.paginationVal + 10; - data.getSingleUserChatHistory(senderUID: AppState().chatDetails!.response!.id.toString(), receiverUID: userDetails["targetUser"].id, loadMore: true, isNewChat: false); + if (userDetails != null) + data.getSingleUserChatHistory( + senderUID: AppState().chatDetails!.response!.id.toString(), + receiverUID: userDetails["targetUser"].id, + loadMore: true, + isNewChat: false, + ); } - await Future.delayed(const Duration(milliseconds: 1000)); + await Future.delayed( + const Duration( + milliseconds: 1000, + ), + ); _rc.loadComplete(); } @override - void initState() { - super.initState(); + Widget build(BuildContext context) { + userDetails = ModalRoute.of(context)!.settings.arguments; data = Provider.of(context, listen: false); if (userDetails != null) data.getSingleUserChatHistory( @@ -51,12 +61,6 @@ class _ChatDetailScreenState extends State { loadMore: false, isNewChat: userDetails["isNewChat"], ); - //data.scrollController.addListener(data.scrollListener); - } - - @override - Widget build(BuildContext context) { - userDetails = ModalRoute.of(context)!.settings.arguments; return Scaffold( backgroundColor: const Color(0xFFF8F8F8), appBar: AppBarWidget(context, @@ -66,7 +70,7 @@ class _ChatDetailScreenState extends State { actions: [ IconButton( onPressed: () { - makeCall("AUDIO"); + // makeCall("AUDIO"); }, icon: SvgPicture.asset( "assets/images/call.svg", @@ -76,7 +80,7 @@ class _ChatDetailScreenState extends State { ), IconButton( onPressed: () { - makeCall("VIDEO"); + // makeCall("VIDEO"); }, icon: SvgPicture.asset( "assets/images/call.svg", diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 738fc17..744188f 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -1,6 +1,9 @@ +import 'dart:convert'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -31,7 +34,7 @@ class _ChatHomeState extends State { // TODO: implement initState super.initState(); data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().then((value) { + data.getUserAutoLoginToken().then((Object? value) { data.getUserRecentChats(); }); } @@ -39,7 +42,9 @@ class _ChatHomeState extends State { @override void dispose() { data.clearAll(); - data.hubConnection.stop(); + if (data.hubConInitialized) { + data.hubConnection.stop(); + } super.dispose(); } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index d342072..7453603 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -71,6 +71,7 @@ class _DashboardScreenState extends State { data.fetchLeaveTicketBalance(context, DateTime.now()); data.fetchMenuEntries(); data.getCategoryOffersListAPI(context); + data.fetchChatCounts(); _refreshController.refreshCompleted(); } @@ -268,7 +269,7 @@ class _DashboardScreenState extends State { ).onPress(() { showMyBottomSheet( context, - callBackFunc: (){}, + callBackFunc: () {}, child: MarkAttendanceWidget(model, isFromDashboard: true), ); }), @@ -469,10 +470,32 @@ class _DashboardScreenState extends State { label: LocaleKeys.itemsForSale.tr(), ), BottomNavigationBarItem( - icon: SvgPicture.asset( - "assets/icons/chat/chat.svg", - color: currentIndex == 4 ? MyColors.grey3AColor : MyColors.grey98Color, - ).paddingAll(4), + icon: Stack( + alignment: Alignment.centerLeft, + children: [ + SvgPicture.asset( + "assets/icons/chat/chat.svg", + color: currentIndex == 4 ? MyColors.grey3AColor : MyColors.grey98Color, + ).paddingAll(4), + Consumer( + builder: (BuildContext cxt, DashboardProviderModel data, Widget? child) { + if (data.chatUConvCounter == 0) { + return const SizedBox(); + } + return Positioned( + right: 0, + top: 0, + child: Container( + padding: const EdgeInsets.only(left: 4, right: 4), + alignment: Alignment.center, + decoration: BoxDecoration(color: MyColors.redColor, borderRadius: BorderRadius.circular(17)), + child: data.chatUConvCounter.toString().toText10(color: Colors.white), + ), + ); + }, + ), + ], + ), label: LocaleKeys.chat.tr(), ), ], diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index a30b33d..b88b96f 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -236,7 +236,7 @@ class _SearchEmployeeBottomSheetState extends State { arguments: {"targetUser": chatUsersList![index], "isNewChat": true}, ); }, - onLongPress: () {}, + ), ); }, From d7c0ef7bfbaef8afb6f82eb21fc7d44634091a82 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 16 Nov 2022 16:50:34 +0300 Subject: [PATCH 077/302] Chat Count Api / Chat Token Updates / Chat Call UI --- lib/ui/chat/chat_home.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 744188f..ed6b155 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -34,8 +34,11 @@ class _ChatHomeState extends State { // TODO: implement initState super.initState(); data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().then((Object? value) { + data.getUserAutoLoginToken().then((value) { data.getUserRecentChats(); + // var datae = [int.parse(AppState().memberInformationList!.eMPLOYEENUMBER.toString())]; + + // data.hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [int.parse(AppState().memberInformationList!.eMPLOYEENUMBER.toString())]); }); } From 44d76f068781e7ef22665d39fd16f3146025daeb Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 09:26:11 +0300 Subject: [PATCH 078/302] Chat Count Api / Chat Token Updates / Chat Call UI --- lib/api/chat/chat_provider_model.dart | 46 ++++++++++++++++++++++----- lib/ui/chat/chat_detailed_screen.dart | 5 +-- 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index cedc158..b336ace 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -109,7 +109,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } - void getSingleUserChatHistory({required String senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false}) async { + Future GetUserChatHistoryNotDeliveredAsync(int userId) async { + await hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [userId]); + return ""; + } + + void getSingleUserChatHistory({required int senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false}) async { isLoading = true; if (isNewChat) userChatHistory = []; if (!loadMore) paginationVal = 0; @@ -134,9 +139,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } isLoading = false; + await GetUserChatHistoryNotDeliveredAsync(senderUID); notifyListeners(); } + void updateUserChatHistoryStatusAsync(List data) { + hubConnection.invoke("UpdateUserChatHistoryStatusAsync", args: [data]); + } + List getSingleUserChatModel(String str) => List.from(json.decode(str).map((x) => SingleUserChatModel.fromJson(x))); ChatUserModel userToList(String str) => ChatUserModel.fromJson(json.decode(str)); @@ -170,7 +180,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { .withAutomaticReconnect( retryDelays: [2000, 5000, 10000, 20000], ) - .configureLogging(Logger("Loggin")) + .configureLogging( + Logger("Loggin"), + ) .build(); hubConnection.onclose( ({Exception? error}) {}, @@ -188,11 +200,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // hubConnection.on("OnSeenChatUserAsync", onChatSeen); //hubConnection.on("OnUserTypingAsync", onUserTyping); - // hubConnection.on("OnUserCountAsync", userCountAsync); + hubConnection.on("OnUserCountAsync", userCountAsync); hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); - } } @@ -223,6 +234,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void userCountAsync(List? args) { dynamic items = args!.toList(); + // logger.d(items); //logger.d("---------------------------------User Count Async -------------------------------------"); //logger.d(items); // for (var user in searchedChats!) { @@ -247,10 +259,17 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void chatNotDelivered(List? args) { dynamic items = args!.toList(); - if (kDebugMode) { - print("--------------------------------- Chat Not Delivered Windows Async -------------------------------------"); + for (dynamic item in items[0]) { + dynamic data = [ + { + "userChatHistoryId": item["userChatHistoryId"], + "TargetUserId": item["targetUserId"], + "isDelivered": true, + "isSeen": true, + } + ]; + updateUserChatHistoryStatusAsync(data); } - logger.d(items); // for (var user in searchedChats!) { // if (user.id == items.first["id"]) { // user.userStatus = items.first["userStatus"]; @@ -289,7 +308,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future onMsgReceived(List? parameters) async { - print("msg Received"); List data = []; List temp = []; for (dynamic msg in parameters!) { @@ -307,6 +325,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // element.unreadMessageCount = val! + 1; // } // }); + logger.d(jsonEncode(data)); + + var list = [ + { + "userChatHistoryId": data.first.userChatHistoryId, + "TargetUserId": data.first.targetUserId, + "isDelivered": true, + "isSeen": isChatScreenActive ? true : false, + } + ]; + updateUserChatHistoryStatusAsync(list); + notifyListeners(); // if (isChatScreenActive) scrollToBottom(); } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 2ef61f0..71a95b5 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -36,7 +36,7 @@ class _ChatDetailScreenState extends State { data.paginationVal = data.paginationVal + 10; if (userDetails != null) data.getSingleUserChatHistory( - senderUID: AppState().chatDetails!.response!.id.toString(), + senderUID: AppState().chatDetails!.response!.id!.toInt(), receiverUID: userDetails["targetUser"].id, loadMore: true, isNewChat: false, @@ -56,11 +56,12 @@ class _ChatDetailScreenState extends State { data = Provider.of(context, listen: false); if (userDetails != null) data.getSingleUserChatHistory( - senderUID: AppState().chatDetails!.response!.id.toString(), + senderUID: AppState().chatDetails!.response!.id!.toInt(), receiverUID: userDetails["targetUser"].id, loadMore: false, isNewChat: userDetails["isNewChat"], ); + return Scaffold( backgroundColor: const Color(0xFFF8F8F8), appBar: AppBarWidget(context, From 5aa56450d9db89aa4660e38802cca8ba0ded2ba3 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 15 Nov 2022 16:04:19 +0300 Subject: [PATCH 079/302] Chat Fixes --- lib/api/chat/chat_provider_model.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index b336ace..bf4c33a 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -270,6 +270,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ]; updateUserChatHistoryStatusAsync(data); } + logger.d(items); // for (var user in searchedChats!) { // if (user.id == items.first["id"]) { // user.userStatus = items.first["userStatus"]; @@ -308,6 +309,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future onMsgReceived(List? parameters) async { + print("msg Received"); List data = []; List temp = []; for (dynamic msg in parameters!) { @@ -428,11 +430,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future sendChatToServer( {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { Uuid uuid = const Uuid(); - String msg = message.text; SingleUserChatModel data = SingleUserChatModel( chatEventId: chatEventId, chatSource: 1, - contant: msg, + contant: message.text, contantNo: uuid.v4(), conversationId: uuid.v4(), createdDate: DateTime.now(), From 33609ea773dd77c2123b02b0a8fadd0688426d89 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 17 Nov 2022 09:49:31 +0300 Subject: [PATCH 080/302] Chat Fixes --- lib/api/chat/chat_provider_model.dart | 4 +++- lib/ui/chat/chat_detailed_screen.dart | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index bf4c33a..ff02c4d 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -50,6 +50,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { { "employeeNumber": int.parse( AppState().memberInformationList!.eMPLOYEENUMBER.toString(), + // "" ), "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG" }, @@ -430,10 +431,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future sendChatToServer( {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { Uuid uuid = const Uuid(); + var msg = message.text; SingleUserChatModel data = SingleUserChatModel( chatEventId: chatEventId, chatSource: 1, - contant: message.text, + contant: msg, contantNo: uuid.v4(), conversationId: uuid.v4(), createdDate: DateTime.now(), diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 71a95b5..ff661f1 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -71,7 +71,7 @@ class _ChatDetailScreenState extends State { actions: [ IconButton( onPressed: () { - // makeCall("AUDIO"); + makeCall("AUDIO"); }, icon: SvgPicture.asset( "assets/images/call.svg", @@ -81,7 +81,7 @@ class _ChatDetailScreenState extends State { ), IconButton( onPressed: () { - // makeCall("VIDEO"); + makeCall("VIDEO"); }, icon: SvgPicture.asset( "assets/images/call.svg", From 3cac5eebbc7fbc92f675600b7596a890b96d8c45 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 17 Nov 2022 10:49:37 +0300 Subject: [PATCH 081/302] Chat Fixes --- assets/icons/chat/call.svg | 3 + assets/icons/chat/video_call.svg | 6 + lib/api/chat/chat_provider_model.dart | 4 +- lib/classes/consts.dart | 4 +- lib/provider/dashboard_provider_model.dart | 1 - ...en.dart => chat_incoming_call_screen.dart} | 1 + .../chat/call/chat_outgoing_call_screen.dart | 470 ++++++++++++++++++ lib/ui/chat/chat_bubble.dart | 12 +- lib/ui/chat/chat_detailed_screen.dart | 22 +- 9 files changed, 502 insertions(+), 21 deletions(-) create mode 100644 assets/icons/chat/call.svg create mode 100644 assets/icons/chat/video_call.svg rename lib/ui/chat/call/{chat_call_screen.dart => chat_incoming_call_screen.dart} (99%) create mode 100644 lib/ui/chat/call/chat_outgoing_call_screen.dart diff --git a/assets/icons/chat/call.svg b/assets/icons/chat/call.svg new file mode 100644 index 0000000..843daf4 --- /dev/null +++ b/assets/icons/chat/call.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/icons/chat/video_call.svg b/assets/icons/chat/video_call.svg new file mode 100644 index 0000000..2fceee6 --- /dev/null +++ b/assets/icons/chat/video_call.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index ff02c4d..f5d896c 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -49,8 +49,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", { "employeeNumber": int.parse( - AppState().memberInformationList!.eMPLOYEENUMBER.toString(), - // "" + //AppState().memberInformationList!.eMPLOYEENUMBER.toString(), + "210919" ), "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG" }, diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c5788f9..ede22e3 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + //static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index b38536c..948e5b4 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -275,7 +275,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void fetchChatCounts() async { - print("----------------------- Fetch Count ____________________________________"); try { ChatUnreadCovnCountModel response = await DashboardApiClient().getChatCount(); chatUConvCounter = response.singleChatCount!; diff --git a/lib/ui/chat/call/chat_call_screen.dart b/lib/ui/chat/call/chat_incoming_call_screen.dart similarity index 99% rename from lib/ui/chat/call/chat_call_screen.dart rename to lib/ui/chat/call/chat_incoming_call_screen.dart index 3fce65b..923a4bd 100644 --- a/lib/ui/chat/call/chat_call_screen.dart +++ b/lib/ui/chat/call/chat_incoming_call_screen.dart @@ -1,3 +1,4 @@ +import 'dart:convert'; import 'dart:ui'; import 'package:camera/camera.dart'; diff --git a/lib/ui/chat/call/chat_outgoing_call_screen.dart b/lib/ui/chat/call/chat_outgoing_call_screen.dart new file mode 100644 index 0000000..b5a47a6 --- /dev/null +++ b/lib/ui/chat/call/chat_outgoing_call_screen.dart @@ -0,0 +1,470 @@ +import 'dart:ui'; + +import 'package:camera/camera.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/models/chat/call.dart'; + +class OutGoingCall extends StatefulWidget { + IncomingCallData OutGoingCallData; + bool? isVideoCall; + + OutGoingCall({Key? key, required this.OutGoingCallData, this.isVideoCall}) : super(key: key); + + @override + _OutGoingCallState createState() => _OutGoingCallState(); +} + +class _OutGoingCallState extends State with SingleTickerProviderStateMixin { + AnimationController? _animationController; + CameraController? _controller; + Future? _initializeControllerFuture; + bool isCameraReady = false; + bool isMicOff = false; + bool isLoudSpeaker = false; + bool isCamOff = false; + + @override + void initState() { + _animationController = AnimationController( + vsync: this, + duration: const Duration( + milliseconds: 500, + ), + ); + //_runAnimation(); + // connectSignaling(); + WidgetsBinding.instance.addPostFrameCallback( + (_) => _runAnimation(), + ); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: FutureBuilder( + future: _initializeControllerFuture, + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + return Stack( + alignment: FractionalOffset.center, + children: [ + if (widget.isVideoCall!) + Positioned.fill( + child: AspectRatio( + aspectRatio: _controller!.value.aspectRatio, + child: CameraPreview( + _controller!, + ), + ), + ), + Positioned.fill( + child: ClipRect( + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration( + color: MyColors.grey57Color.withOpacity( + 0.7, + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + 40.height, + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + margin: const EdgeInsets.all(21.0), + child: Container( + margin: const EdgeInsets.only( + left: 10.0, + right: 10.0, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 70, + width: 70, + fit: BoxFit.cover, + ), + 10.height, + Text( + "Aamir Saleem Ahmad", + style: TextStyle( + fontSize: 21, + fontWeight: FontWeight.bold, + color: MyColors.white, + letterSpacing: -1.26, + height: 23 / 12, + ), + ), + Text( + "Ringing...", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w600, + color: Color( + 0xffC6C6C6, + ), + letterSpacing: -0.48, + height: 23 / 24, + ), + ), + SizedBox( + height: 2, + ), + ], + ), + ), + ), + ], + ), + // Container( + // margin: const EdgeInsets.all(21.0), + // width: MediaQuery.of(context).size.width, + // decoration: cardRadius(15.0, color: MyColors.black, elevation: null), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisSize: MainAxisSize.min, + // children: [ + // Container( + // padding: const EdgeInsets.fromLTRB(16.0, 16.0, 16.0, 6.0), + // child: Text( + // "TranslationBase.of(context).appoInfo", + // style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.white, letterSpacing: -0.64, height: 23 / 12), + // ), + // ), + // Container( + // padding: const EdgeInsets.only(left: 16.0, right: 16.0), + // child: Text( + // "widget.OutGoingCallData.appointmentdate + widget.OutGoingCallData.appointmenttime", + // style: TextStyle(fontSize: 12.0, letterSpacing: -0.48, color: Color(0xff8E8E8E), fontWeight: FontWeight.w600), + // ), + // ), + // Container( + // padding: const EdgeInsets.only(left: 16.0, right: 16.0, bottom: 21.0), + // child: Text( + // "widget.OutGoingCallData.clinicname", + // style: TextStyle(fontSize: 12.0, letterSpacing: -0.48, color: Color(0xff8E8E8E), fontWeight: FontWeight.w600), + // ), + // ), + // ], + // ), + // ), + const Spacer(), + Container( + margin: const EdgeInsets.only( + bottom: 70.0, + left: 49, + right: 49, + ), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (widget.isVideoCall!) + RotationTransition( + turns: Tween( + begin: 0.0, + end: -.1, + ) + .chain( + CurveTween( + curve: Curves.elasticIn, + ), + ) + .animate( + _animationController!, + ), + child: RawMaterialButton( + onPressed: () { + _camOff(); + }, + elevation: 2.0, + fillColor: isCamOff ? MyColors.green2DColor : Colors.grey, + padding: const EdgeInsets.all( + 15.0, + ), + shape: const CircleBorder(), + child: Icon( + isCamOff ? Icons.videocam_off : Icons.videocam, + color: MyColors.white, + size: 35.0, + ), + ), + ) + else + RotationTransition( + turns: Tween( + begin: 0.0, + end: -.1, + ) + .chain( + CurveTween( + curve: Curves.elasticIn, + ), + ) + .animate( + _animationController!, + ), + child: RawMaterialButton( + onPressed: () { + _loudOn(); + }, + elevation: 2.0, + fillColor: isLoudSpeaker ? MyColors.green2DColor : Colors.grey, + padding: const EdgeInsets.all( + 15.0, + ), + shape: const CircleBorder(), + child: const Icon( + Icons.volume_up, + color: MyColors.white, + size: 35.0, + ), + ), + ), + RotationTransition( + turns: Tween( + begin: 0.0, + end: -.1, + ) + .chain( + CurveTween( + curve: Curves.elasticIn, + ), + ) + .animate( + _animationController!, + ), + child: RawMaterialButton( + onPressed: () { + _micOff(); + }, + elevation: 2.0, + fillColor: isMicOff ? MyColors.green2DColor : Colors.grey, + padding: const EdgeInsets.all( + 15.0, + ), + shape: const CircleBorder(), + child: Icon( + isMicOff ? Icons.mic_off : Icons.mic, + color: MyColors.white, + size: 35.0, + ), + ), + ), + RawMaterialButton( + onPressed: () { + backToHome(); + }, + elevation: 2.0, + fillColor: MyColors.redA3Color, + padding: const EdgeInsets.all( + 15.0, + ), + shape: const CircleBorder(), + child: const Icon( + Icons.call_end, + color: MyColors.white, + size: 35.0, + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ], + ); + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, + ), + ); + } + + void _runAnimation() async { + List cameras = await availableCameras(); + CameraDescription firstCamera = cameras[1]; + _controller = CameraController( + firstCamera, + ResolutionPreset.medium, + ); + _initializeControllerFuture = _controller!.initialize(); + setState(() {}); + // setAudioFile(); + for (int i = 0; i < 100; i++) { + await _animationController!.forward(); + await _animationController!.reverse(); + } + } + + void _micOff() { + setState(() { + isMicOff = !isMicOff; + }); + } + + void _camOff() { + setState(() { + isCamOff = !isCamOff; + }); + } + + void _loudOn() { + setState(() { + isLoudSpeaker = !isLoudSpeaker; + }); + } + + Future _submit() async { + try { + // backToHome(); + // final roomModel = RoomModel(name: widget.OutGoingCallData.name, token: widget.OutGoingCallData.sessionId, identity: widget.OutGoingCallData.identity); + await _controller?.dispose(); + + // changeCallStatusAPI(4); + + // if (_session != null && _signaling != null) { + // await Navigator.of(context).pushReplacement( + // MaterialPageRoute( + // // fullscreenDialog: true, + // builder: (BuildContext context) { + // // if (widget.OutGoingCallData.isWebRTC == "true") { + // return StartVideoCall(signaling: _signaling, session: _session); + // + // // else { + // // return OpenTokConnectCallPage(apiKey: OPENTOK_API_KEY, sessionId: widget.OutGoingCallData.sessionId, token: widget.OutGoingCallData.token); + // // } + // + // // return VideoCallWebPage(receiverId: widget.OutGoingCallData.receiverID, callerId: widget.OutGoingCallData.callerID); // Web WebRTC VideoCall + // + // // return CallHomePage(receiverId: widget.OutGoingCallData.receiverID, callerId: widget.OutGoingCallData.callerID); // App WebRTC VideoCall + // }, + // ), + // ); + // } else { + // // Invalid Params/Data + // Utils.showToast("Failed to establish connection with server"); + // } + } catch (err) { + print(err); + // await PlatformExceptionAlertDialog( + // exception: err, + // ).show(context); + + Utils.showToast(err.toString()); + } + } + + // void changeCallStatusAPI(int sessionStatus) { + // LiveCareService service = new LiveCareService(); + // service.endCallAPI(widget.OutGoingCallData.sessionId, sessionStatus, context).then((res) {}).catchError((err) { + // print(err); + // }); + // } + + void backToHome() async { + // final connected = await signaling.declineCall(widget.OutGoingCallData.callerID, widget.OutGoingCallData.receiverID); + // LandingPage.isOpenCallPage = false; + // _signaling + _animationController!.dispose(); + // player.stop(); + // changeCallStatusAPI(3); + // _signaling.bye(_session, callRejected: true); + // _signaling.callDisconnected(_session, callRejected: true); + Navigator.of(context).pop(); + } + + // + // void disposeAudioResources() async { + // await player.dispose(); + // } + // + // void setAudioFile() async { + // player.stop(); + // await player.setVolume(1.0); // full volume + // try { + // await player.setAsset('assets/sounds/ring_60Sec.mp3').then((value) { + // player.setLoopMode(LoopMode.one); // loop ring sound + // player.play(); + // }).catchError((err) { + // print("Error: $err"); + // }); + // } catch (e) { + // print("Error: $e"); + // } + // } + // + // void connectSignaling({@required bool iAmCaller = false}) async { + // print("----------------- + Signaling Connection Started ---------------------------"); + // var caller = widget.OutGoingCallData.callerID; + // var receiver = widget.OutGoingCallData.receiverID; + // var host = widget.OutGoingCallData.server; + // + // var selfRole = iAmCaller ? "Caller" : "Receiver"; + // var selfId = iAmCaller ? caller : receiver; + // var selfUser = SocketUser(id: selfId, name: "$selfRole-$selfId", userAgent: DeviceInfo.userAgent, moreInfo: {}); + // + // var remoteRole = !iAmCaller ? "Caller" : "Receiver"; + // var remoteId = !iAmCaller ? caller : receiver; + // var remoteUser = SocketUser(id: remoteId, name: "$remoteRole-$remoteId", userAgent: DeviceInfo.userAgent, moreInfo: {}); + // + // var sessionId = "$caller-$receiver"; + // _session = SessionOneToOne(id: sessionId, local_user: selfUser, remote_user: remoteUser); + // + // _signaling = Signaling(host, session: _session); + // await _signaling.connect(); + // + // if (_signaling.state == SignalingState.Open) { + // return; + // } + // } + + BoxDecoration cardRadius(double radius, {required Color color, double? elevation}) { + return BoxDecoration( + shape: BoxShape.rectangle, + color: color ?? Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(radius), + ), + boxShadow: [ + BoxShadow( + color: const Color( + 0xff000000, + ).withOpacity( + .05, + ), + //spreadRadius: 5, + blurRadius: elevation ?? 27, + offset: const Offset( + -2, + 3, + ), + ), + ], + ); + } +} diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index c638b34..6dcd6d2 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -91,12 +91,12 @@ class ChatBubble extends StatelessWidget { children: [ dateTime.toText12(color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : MyColors.white.withOpacity(0.7),), if (isCurrentUser) 5.width, - if (isCurrentUser) - Icon( - isDelivered ? Icons.done_all : Icons.done_all, - color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor, - size: 14, - ), + // if (isCurrentUser) + // Icon( + // isDelivered ? Icons.done_all : Icons.done_all, + // color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor, + // size: 14, + // ), ], ), ], diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index ff661f1..2c8b2d8 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -6,11 +6,12 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/chat/call.dart'; -import 'package:mohem_flutter_app/ui/chat/call/chat_call_screen.dart'; +import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; @@ -71,12 +72,12 @@ class _ChatDetailScreenState extends State { actions: [ IconButton( onPressed: () { - makeCall("AUDIO"); + makeCall("AUDIO"); }, icon: SvgPicture.asset( - "assets/images/call.svg", - width: 25, - height: 25, + "assets/icons/chat/call.svg", + width: 22, + height: 22, ), ), IconButton( @@ -84,11 +85,12 @@ class _ChatDetailScreenState extends State { makeCall("VIDEO"); }, icon: SvgPicture.asset( - "assets/images/call.svg", - width: 25, - height: 25, + "assets/icons/chat/video_call.svg", + width: 20, + height: 20, ), ), + 10.width, ]), body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { @@ -355,9 +357,9 @@ class _ChatDetailScreenState extends State { await Navigator.push( context, MaterialPageRoute( - builder: (BuildContext context) => IncomingCall( - incomingCallData: incomingCallData, + builder: (BuildContext context) => OutGoingCall( isVideoCall: callType == "VIDEO" ? true : false, + OutGoingCallData: incomingCallData, ), ), ); From 451b381acf34370470ac8636c96c29f6e7e8051b Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 10:52:08 +0300 Subject: [PATCH 082/302] Chat Count Api / Chat Token Updates / Chat Call UI --- lib/api/chat/chat_provider_model.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index f5d896c..bf69d58 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -49,8 +49,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", { "employeeNumber": int.parse( - //AppState().memberInformationList!.eMPLOYEENUMBER.toString(), - "210919" + AppState().memberInformationList!.eMPLOYEENUMBER.toString(), ), "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG" }, From 5ec6fbdf421fb5304cbcf2172817d9de29b25601 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 17 Nov 2022 11:07:43 +0300 Subject: [PATCH 083/302] Chat Fixes --- .gitignore | 1 - lib/api/chat/chat_provider_model.dart | 4 ++-- lib/classes/consts.dart | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 034a5be..a841580 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,6 @@ pubspec.lock /build/ # Web related -lib/generated_plugin_registrant.dart # Symbolication related app.*.symbols diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index f5d896c..7227c99 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -49,8 +49,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", { "employeeNumber": int.parse( - //AppState().memberInformationList!.eMPLOYEENUMBER.toString(), - "210919" + AppState().memberInformationList!.eMPLOYEENUMBER.toString(), + //"210919" ), "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG" }, diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ede22e3..c5788f9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - //static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; From c6cd550dbced3b1462a69d247be0687556d925c3 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 17 Nov 2022 11:32:10 +0300 Subject: [PATCH 084/302] Chat Fixes --- ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme | 2 +- lib/ui/chat/chat_detailed_screen.dart | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a..ac88fca 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -40,7 +40,7 @@ { actions: [ IconButton( onPressed: () { - makeCall("AUDIO"); + // makeCall("AUDIO"); }, icon: SvgPicture.asset( "assets/icons/chat/call.svg", @@ -82,7 +82,7 @@ class _ChatDetailScreenState extends State { ), IconButton( onPressed: () { - makeCall("VIDEO"); + // makeCall("VIDEO"); }, icon: SvgPicture.asset( "assets/icons/chat/video_call.svg", From 2546fb52a9100987b2ffe40033f4da1dba7b4646 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 11:32:24 +0300 Subject: [PATCH 085/302] Chat Count Api / Chat Token Updates / Chat Call UI --- lib/classes/consts.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ede22e3..c5788f9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - //static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; From 5913452a439d135dec80841635c821ec60f88afc Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 11:34:54 +0300 Subject: [PATCH 086/302] Chat Count Api / Chat Token Updates / Chat Call UI --- lib/api/chat/chat_provider_model.dart | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 7227c99..7439b98 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -50,7 +50,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { { "employeeNumber": int.parse( AppState().memberInformationList!.eMPLOYEENUMBER.toString(), - //"210919" ), "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG" }, @@ -310,7 +309,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future onMsgReceived(List? parameters) async { - print("msg Received"); List data = []; List temp = []; for (dynamic msg in parameters!) { @@ -328,7 +326,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // element.unreadMessageCount = val! + 1; // } // }); - logger.d(jsonEncode(data)); var list = [ { From efce6dbd0f0e7b1142737a043e9fed1b39dffb84 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 11:50:37 +0300 Subject: [PATCH 087/302] Chat Count Api / Chat Token Updates / Chat Call UI --- ios/Runner/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 2ac7a44..2797543 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -44,6 +44,8 @@ This App requires access to your location to mark your attendance. NSPhotoLibraryUsageDescription This app requires photo library access to select image as document & upload it. + NSMicrophoneUsageDescription + This app requires microphone access to for call. UIBackgroundModes remote-notification From 4d35767784b2d1264bdf3125883c09e00e2dcf50 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 12:37:03 +0300 Subject: [PATCH 088/302] Revert "Chat Count Api / Chat Token Updates / Chat Call UI" This reverts commit 826c39bafc72f27eceb7a2fbb975740e2a18c7db. --- ios/Runner/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 2ac7a44..2797543 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -44,6 +44,8 @@ This App requires access to your location to mark your attendance. NSPhotoLibraryUsageDescription This app requires photo library access to select image as document & upload it. + NSMicrophoneUsageDescription + This app requires microphone access to for call. UIBackgroundModes remote-notification From e2a1eb3c812686767225f3e59cdf958da6d90466 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 15:05:49 +0300 Subject: [PATCH 089/302] Chat Count Api / Chat Token Updates / Chat Call UI --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a841580..4a374d7 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release +/ios/ From 8cb5d9a0610f397ea0dcb8a3d9e563f6ccb928e5 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 15:15:33 +0300 Subject: [PATCH 090/302] Chat Count Api / Chat Token Updates / Chat Call UI --- lib/ui/chat/chat_detailed_screen.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index be34d7a..2c8b2d8 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -72,7 +72,7 @@ class _ChatDetailScreenState extends State { actions: [ IconButton( onPressed: () { - // makeCall("AUDIO"); + makeCall("AUDIO"); }, icon: SvgPicture.asset( "assets/icons/chat/call.svg", @@ -82,7 +82,7 @@ class _ChatDetailScreenState extends State { ), IconButton( onPressed: () { - // makeCall("VIDEO"); + makeCall("VIDEO"); }, icon: SvgPicture.asset( "assets/icons/chat/video_call.svg", From 42287f24d18b4a63377c0d62a09a17334de1bfc4 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 15:16:16 +0300 Subject: [PATCH 091/302] Chat Count Api / Chat Token Updates / Chat Call UI --- ios/Runner/Info.plist | 2 -- 1 file changed, 2 deletions(-) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 2797543..2ac7a44 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -44,8 +44,6 @@ This App requires access to your location to mark your attendance. NSPhotoLibraryUsageDescription This app requires photo library access to select image as document & upload it. - NSMicrophoneUsageDescription - This app requires microphone access to for call. UIBackgroundModes remote-notification From 1fcb6250f5264612c7062c3c9a9f13a234dd12a0 Mon Sep 17 00:00:00 2001 From: Aamir Saleem Ahmad Date: Thu, 17 Nov 2022 12:22:59 +0000 Subject: [PATCH 092/302] Revert "Chat Fixes" This reverts commit c6cd550dbced3b1462a69d247be0687556d925c3 --- ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index ac88fca..c87d15a 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -40,7 +40,7 @@ Date: Thu, 17 Nov 2022 12:24:46 +0000 Subject: [PATCH 093/302] Revert "Chat Count Api / Chat Token Updates / Chat Call UI" This reverts commit 42287f24d18b4a63377c0d62a09a17334de1bfc4 --- ios/Runner/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 2ac7a44..2797543 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -44,6 +44,8 @@ This App requires access to your location to mark your attendance. NSPhotoLibraryUsageDescription This app requires photo library access to select image as document & upload it. + NSMicrophoneUsageDescription + This app requires microphone access to for call. UIBackgroundModes remote-notification From 06e7a913dae9f92a531074dd8bd5079742cf86c6 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 17 Nov 2022 15:57:29 +0300 Subject: [PATCH 094/302] Chat Count Api / Chat Token Updates / Chat Call UI --- .../chat/call/chat_outgoing_call_screen.dart | 2 +- lib/ui/chat/chat_bubble.dart | 65 +++++++++++++--- lib/ui/chat/chat_detailed_screen.dart | 46 ++++++++++-- lib/ui/chat/chat_home.dart | 22 ++++-- lib/ui/chat/chat_home_screen.dart | 74 +++++++++++++++---- lib/ui/chat/favorite_users_screen.dart | 21 ++++-- 6 files changed, 180 insertions(+), 50 deletions(-) diff --git a/lib/ui/chat/call/chat_outgoing_call_screen.dart b/lib/ui/chat/call/chat_outgoing_call_screen.dart index b5a47a6..f049059 100644 --- a/lib/ui/chat/call/chat_outgoing_call_screen.dart +++ b/lib/ui/chat/call/chat_outgoing_call_screen.dart @@ -82,7 +82,7 @@ class _OutGoingCallState extends State with SingleTickerProviderSt Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, - children: [ + children: [ Container( margin: const EdgeInsets.all(21.0), child: Container( diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 6dcd6d2..1696a49 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -30,7 +30,11 @@ class ChatBubble extends StatelessWidget { Widget build(BuildContext context) { return Padding( // padding: EdgeInsets.zero, - padding: EdgeInsets.only(left: isCurrentUser ? 110 : 20, right: isCurrentUser ? 20 : 110, bottom: 9), + padding: EdgeInsets.only( + left: isCurrentUser ? 110 : 20, + right: isCurrentUser ? 20 : 110, + bottom: 9, + ), child: Align( alignment: isCurrentUser ? Alignment.centerRight : Alignment.centerLeft, @@ -40,7 +44,9 @@ class ChatBubble extends StatelessWidget { gradient: isCurrentUser ? null : const LinearGradient( - transform: GradientRotation(.46), + transform: GradientRotation( + .46, + ), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ @@ -48,21 +54,33 @@ class ChatBubble extends StatelessWidget { MyColors.gradiantStartColor, ], ), - borderRadius: BorderRadius.circular(10), + borderRadius: BorderRadius.circular( + 10, + ), ), child: Padding( - padding: EdgeInsets.only(top: isReplied ? 8 : 5, right: 8, left: 8, bottom: 5), + padding: EdgeInsets.only( + top: isReplied ? 8 : 5, + right: 8, + left: 8, + bottom: 5, + ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ if (isReplied) ClipRRect( - borderRadius: BorderRadius.circular(5.0), + borderRadius: BorderRadius.circular( + 5.0, + ), child: Container( decoration: BoxDecoration( border: Border( - left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), + left: BorderSide( + width: 6, + color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white, + ), ), color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), ), @@ -72,10 +90,29 @@ class ChatBubble extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - (userName).toText12(color: MyColors.gradiantStartColor, isBold: false).paddingOnly(right: 5, top: 5, bottom: 0, left: 5), + (userName) + .toText12( + color: MyColors.gradiantStartColor, + isBold: false, + ) + .paddingOnly( + right: 5, + top: 5, + bottom: 0, + left: 5, + ), replyText - .toText10(color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), isBold: false, maxlines: 4) - .paddingOnly(right: 5, top: 5, bottom: 8, left: 5), + .toText10( + color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), + isBold: false, + maxlines: 4, + ) + .paddingOnly( + right: 5, + top: 5, + bottom: 8, + left: 5, + ), ], ), ), @@ -84,12 +121,16 @@ class ChatBubble extends StatelessWidget { ), ), if (isReplied) 8.height, - text.toText12(color: isCurrentUser ? MyColors.grey57Color : MyColors.white), + text.toText12( + color: isCurrentUser ? MyColors.grey57Color : MyColors.white, + ), Row( crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, - children: [ - dateTime.toText12(color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : MyColors.white.withOpacity(0.7),), + children: [ + dateTime.toText12( + color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : MyColors.white.withOpacity(0.7), + ), if (isCurrentUser) 5.width, // if (isCurrentUser) // Icon( diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 2c8b2d8..347c573 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -132,7 +132,9 @@ class _ChatDetailScreenState extends State { userName: AppState().chatDetails!.response!.userName == m.userChatHistory[i].currentUserName.toString() ? "You" : m.userChatHistory[i].currentUserName.toString(), ), onRightSwipe: () { - m.chatReply(m.userChatHistory[i]); + m.chatReply( + m.userChatHistory[i], + ); }, ); }, @@ -156,7 +158,10 @@ class _ChatDetailScreenState extends State { ? "You" : m.repliedMsg.first.currentUserName.toString().replaceAll(".", " ")) .toText14(color: MyColors.lightGreenColor), - subtitle: (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12(color: MyColors.white, maxLine: 2), + subtitle: (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12( + color: MyColors.white, + maxLine: 2, + ), trailing: GestureDetector( onTap: m.closeMe, child: Container( @@ -183,7 +188,12 @@ class _ChatDetailScreenState extends State { margin: EdgeInsets.zero, elevation: 0, child: Padding( - padding: const EdgeInsets.only(left: 20, right: 20, top: 20, bottom: 0), + padding: const EdgeInsets.only( + left: 20, + right: 20, + top: 20, + bottom: 0, + ), child: Card( margin: EdgeInsets.zero, shape: RoundedRectangleBorder( @@ -217,13 +227,21 @@ class _ChatDetailScreenState extends State { controller: m.message, decoration: InputDecoration( hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), - hintStyle: TextStyle(color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14), + hintStyle: TextStyle( + color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, + fontSize: 14, + ), border: InputBorder.none, focusedBorder: InputBorder.none, enabledBorder: InputBorder.none, errorBorder: InputBorder.none, disabledBorder: InputBorder.none, - contentPadding: EdgeInsets.only(left: m.sFileType.isNotEmpty ? 10 : 20, right: m.sFileType.isNotEmpty ? 0 : 5, top: 20, bottom: 20), + contentPadding: EdgeInsets.only( + left: m.sFileType.isNotEmpty ? 10 : 20, + right: m.sFileType.isNotEmpty ? 0 : 5, + top: 20, + bottom: 20, + ), prefixIcon: m.sFileType.isNotEmpty ? Row( mainAxisSize: MainAxisSize.min, @@ -267,7 +285,13 @@ class _ChatDetailScreenState extends State { color: MyColors.white, ), ), - ("Clear").toText11(color: MyColors.redA3Color).paddingOnly(left: 4), + ("Clear") + .toText11( + color: MyColors.redA3Color, + ) + .paddingOnly( + left: 4, + ), ], ), onPressed: () async { @@ -299,12 +323,18 @@ class _ChatDetailScreenState extends State { width: 26, ), onPressed: () { - m.sendChatMessage(userDetails["targetUser"].id, userDetails["targetUser"].userName, context); + m.sendChatMessage( + userDetails["targetUser"].id, + userDetails["targetUser"].userName, + context, + ); }, ) ], ), - ).paddingOnly(right: 20), + ).paddingOnly( + right: 20, + ), ), ), ), diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index ed6b155..9884d59 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -34,11 +34,8 @@ class _ChatHomeState extends State { // TODO: implement initState super.initState(); data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().then((value) { + data.getUserAutoLoginToken().then((Object? value) { data.getUserRecentChats(); - // var datae = [int.parse(AppState().memberInformationList!.eMPLOYEENUMBER.toString())]; - - // data.hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [int.parse(AppState().memberInformationList!.eMPLOYEENUMBER.toString())]); }); } @@ -73,14 +70,17 @@ class _ChatHomeState extends State { transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, - colors: [ + colors: [ MyColors.gradiantEndColor, MyColors.gradiantStartColor, ], ), ), child: Row( - children: [myTab(LocaleKeys.mychats.tr(), 0), myTab(LocaleKeys.favorite.tr(), 1)], + children: [ + myTab(LocaleKeys.mychats.tr(), 0), + myTab(LocaleKeys.favorite.tr(), 1), + ], ), ), PageView( @@ -91,7 +91,10 @@ class _ChatHomeState extends State { tabIndex = pageIndex; }); }, - children: [ChatHomeScreen(), ChatFavoriteUsersScreen()], + children: [ + ChatHomeScreen(), + ChatFavoriteUsersScreen(), + ], ).expanded, ], ), @@ -104,7 +107,10 @@ class _ChatHomeState extends State { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, children: [ - title.toText12(color: isSelected ? MyColors.white : MyColors.white.withOpacity(.74), isCenter: true), + title.toText12( + color: isSelected ? MyColors.white : MyColors.white.withOpacity(.74), + isCenter: true, + ), 4.height, Container( height: 8, diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index a22c7e0..05623f7 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -40,21 +40,41 @@ class _ChatHomeScreenState extends State { physics: const AlwaysScrollableScrollPhysics(), children: [ Padding( - padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), + padding: const EdgeInsets.symmetric( + vertical: 20, + horizontal: 20, + ), child: TextField( controller: m.search, onChanged: (String val) { m.filter(val); }, decoration: InputDecoration( - border: fieldBorder(radius: 5, color: 0xFFE5E5E5), - focusedBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), - enabledBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), - contentPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 10), + border: fieldBorder( + radius: 5, + color: 0xFFE5E5E5, + ), + focusedBorder: fieldBorder( + radius: 5, + color: 0xFFE5E5E5, + ), + enabledBorder: fieldBorder( + radius: 5, + color: 0xFFE5E5E5, + ), + contentPadding: const EdgeInsets.symmetric( + horizontal: 15, + vertical: 10, + ), hintText: LocaleKeys.searchfromchat.tr(), - hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic), + hintStyle: const TextStyle( + color: MyColors.lightTextColor, + fontStyle: FontStyle.italic, + ), filled: true, - fillColor: const Color(0xFFF7F7F7), + fillColor: const Color( + 0xFFF7F7F7, + ), suffixIcon: m.search.text.isNotEmpty ? IconButton( onPressed: () { @@ -73,7 +93,9 @@ class _ChatHomeScreenState extends State { if (m.searchedChats != null) ListView.separated( itemCount: m.searchedChats!.length, - padding: const EdgeInsets.only(bottom: 80), + padding: const EdgeInsets.only( + bottom: 80, + ), shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemBuilder: (BuildContext context, int index) { @@ -136,15 +158,26 @@ class _ChatHomeScreenState extends State { child: IconButton( alignment: Alignment.centerRight, padding: EdgeInsets.zero, - icon: Icon(m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp), + icon: Icon( + m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, + ), color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, onPressed: () { if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { - m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + m.favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); } else if (m.searchedChats![index].isFav == true) { - m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + m.unFavoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); } else { - m.favoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!); + m.favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); } }, ), @@ -167,9 +200,14 @@ class _ChatHomeScreenState extends State { ); }, separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only(right: 10, left: 70), + padding: EdgeInsets.only( + right: 10, + left: 70, + ), child: Divider( - color: Color(0xFFE5E5E5), + color: Color( + 0xFFE5E5E5, + ), ), ), ), @@ -217,9 +255,13 @@ class _ChatHomeScreenState extends State { OutlineInputBorder fieldBorder({required double radius, required int color}) { return OutlineInputBorder( - borderRadius: BorderRadius.circular(radius), + borderRadius: BorderRadius.circular( + radius, + ), borderSide: BorderSide( - color: Color(color), + color: Color( + color, + ), ), ); } diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index fd118de..7ef0f84 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -34,7 +34,7 @@ class ChatFavoriteUsersScreen extends StatelessWidget { height: 55, child: ListTile( leading: Stack( - children: [ + children: [ SvgPicture.asset( "assets/images/user.svg", height: 48, @@ -56,14 +56,22 @@ class ChatFavoriteUsersScreen extends StatelessWidget { ) ], ), - title: (m.favUsersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor), + title: (m.favUsersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14( + color: MyColors.darkTextColor, + ), trailing: IconButton( alignment: Alignment.centerRight, padding: EdgeInsets.zero, - icon: Icon(m.favUsersList![index].isFav! ? Icons.star : Icons.star_border), + icon: Icon( + m.favUsersList![index].isFav! ? Icons.star : Icons.star_border, + ), color: m.favUsersList![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, onPressed: () { - if (m.favUsersList![index].isFav!) m.unFavoriteUser(userID: AppState().chatDetails!.response!.id!, targetUserID: m.favUsersList![index].id!); + if (m.favUsersList![index].isFav!) + m.unFavoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.favUsersList![index].id!, + ); }, ), minVerticalPadding: 0, @@ -82,7 +90,10 @@ class ChatFavoriteUsersScreen extends StatelessWidget { ); }, separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only(right: 10, left: 70), + padding: EdgeInsets.only( + right: 10, + left: 70, + ), child: Divider( color: Color( 0xFFE5E5E5, From a64ae80a4ae76f8b4d48b47e828c765c0eaf0d7e Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 20 Nov 2022 10:10:08 +0300 Subject: [PATCH 095/302] Chat Updates --- .../chat/call/chat_outgoing_call_screen.dart | 116 ++++++------------ lib/ui/landing/dashboard_screen.dart | 6 +- 2 files changed, 42 insertions(+), 80 deletions(-) diff --git a/lib/ui/chat/call/chat_outgoing_call_screen.dart b/lib/ui/chat/call/chat_outgoing_call_screen.dart index f049059..25bc05d 100644 --- a/lib/ui/chat/call/chat_outgoing_call_screen.dart +++ b/lib/ui/chat/call/chat_outgoing_call_screen.dart @@ -102,7 +102,7 @@ class _OutGoingCallState extends State with SingleTickerProviderSt fit: BoxFit.cover, ), 10.height, - Text( + const Text( "Aamir Saleem Ahmad", style: TextStyle( fontSize: 21, @@ -112,7 +112,7 @@ class _OutGoingCallState extends State with SingleTickerProviderSt height: 23 / 12, ), ), - Text( + const Text( "Ringing...", style: TextStyle( fontSize: 16, @@ -124,7 +124,7 @@ class _OutGoingCallState extends State with SingleTickerProviderSt height: 23 / 24, ), ), - SizedBox( + const SizedBox( height: 2, ), ], @@ -177,96 +177,54 @@ class _OutGoingCallState extends State with SingleTickerProviderSt mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ if (widget.isVideoCall!) - RotationTransition( - turns: Tween( - begin: 0.0, - end: -.1, - ) - .chain( - CurveTween( - curve: Curves.elasticIn, - ), - ) - .animate( - _animationController!, - ), - child: RawMaterialButton( - onPressed: () { - _camOff(); - }, - elevation: 2.0, - fillColor: isCamOff ? MyColors.green2DColor : Colors.grey, - padding: const EdgeInsets.all( - 15.0, - ), - shape: const CircleBorder(), - child: Icon( - isCamOff ? Icons.videocam_off : Icons.videocam, - color: MyColors.white, - size: 35.0, - ), + RawMaterialButton( + onPressed: () { + _camOff(); + }, + elevation: 2.0, + fillColor: isCamOff ? MyColors.green2DColor : Colors.grey, + padding: const EdgeInsets.all( + 15.0, ), - ) - else - RotationTransition( - turns: Tween( - begin: 0.0, - end: -.1, - ) - .chain( - CurveTween( - curve: Curves.elasticIn, - ), - ) - .animate( - _animationController!, - ), - child: RawMaterialButton( - onPressed: () { - _loudOn(); - }, - elevation: 2.0, - fillColor: isLoudSpeaker ? MyColors.green2DColor : Colors.grey, - padding: const EdgeInsets.all( - 15.0, - ), - shape: const CircleBorder(), - child: const Icon( - Icons.volume_up, - color: MyColors.white, - size: 35.0, - ), + shape: const CircleBorder(), + child: Icon( + isCamOff ? Icons.videocam_off : Icons.videocam, + color: MyColors.white, + size: 35.0, ), - ), - RotationTransition( - turns: Tween( - begin: 0.0, - end: -.1, ) - .chain( - CurveTween( - curve: Curves.elasticIn, - ), - ) - .animate( - _animationController!, - ), - child: RawMaterialButton( + else + RawMaterialButton( onPressed: () { - _micOff(); + _loudOn(); }, elevation: 2.0, - fillColor: isMicOff ? MyColors.green2DColor : Colors.grey, + fillColor: isLoudSpeaker ? MyColors.green2DColor : Colors.grey, padding: const EdgeInsets.all( 15.0, ), shape: const CircleBorder(), - child: Icon( - isMicOff ? Icons.mic_off : Icons.mic, + child: const Icon( + Icons.volume_up, color: MyColors.white, size: 35.0, ), ), + RawMaterialButton( + onPressed: () { + _micOff(); + }, + elevation: 2.0, + fillColor: isMicOff ? MyColors.green2DColor : Colors.grey, + padding: const EdgeInsets.all( + 15.0, + ), + shape: const CircleBorder(), + child: Icon( + isMicOff ? Icons.mic_off : Icons.mic, + color: MyColors.white, + size: 35.0, + ), ), RawMaterialButton( onPressed: () { diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 7453603..a6c08c3 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -13,6 +13,7 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; @@ -515,7 +516,10 @@ class _DashboardScreenState extends State { } else if (index == 3) { Navigator.pushNamed(context, AppRoutes.itemsForSale); } else if (index == 4) { - Navigator.pushNamed(context, AppRoutes.chat); + Navigator.pushNamed(context, AppRoutes.chat).then((Object? value) { + logger.d("Again Api Call"); + data.fetchChatCounts(); + }); } }, ), From 5708c93ae5972c67c2b34513b81c8b5171466009 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 20 Nov 2022 10:20:46 +0300 Subject: [PATCH 096/302] Chat Updates --- lib/ui/landing/dashboard_screen.dart | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index a6c08c3..c568e6f 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -480,9 +480,6 @@ class _DashboardScreenState extends State { ).paddingAll(4), Consumer( builder: (BuildContext cxt, DashboardProviderModel data, Widget? child) { - if (data.chatUConvCounter == 0) { - return const SizedBox(); - } return Positioned( right: 0, top: 0, @@ -517,7 +514,6 @@ class _DashboardScreenState extends State { Navigator.pushNamed(context, AppRoutes.itemsForSale); } else if (index == 4) { Navigator.pushNamed(context, AppRoutes.chat).then((Object? value) { - logger.d("Again Api Call"); data.fetchChatCounts(); }); } From 4f88f30368740e8e671a78cda2738b675d060eb9 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 20 Nov 2022 10:26:14 +0300 Subject: [PATCH 097/302] updates --- lib/ui/landing/dashboard_screen.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 165793b..45eea24 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -479,9 +479,9 @@ class _DashboardScreenState extends State { ).paddingAll(4), Consumer( builder: (BuildContext cxt, DashboardProviderModel data, Widget? child) { - if (data.chatUConvCounter == 0) { - return const SizedBox(); - } + // if (data.chatUConvCounter == 0) { + // return const SizedBox(); + // } return Positioned( right: 0, top: 0, From 86ac29946fb2fea5ba17ea84d2e763f76064c170 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 20 Nov 2022 12:19:54 +0300 Subject: [PATCH 098/302] Chat Updates & Counter Event Modifications --- lib/api/chat/chat_provider_model.dart | 144 ++++++++++++++++++++------ lib/ui/chat/chat_home.dart | 2 +- lib/ui/chat/chat_home_screen.dart | 42 ++++---- 3 files changed, 134 insertions(+), 54 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 7439b98..2e8bcb8 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -44,7 +44,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { bool _firstAutoscrollExecuted = false; bool _shouldAutoscroll = false; - Future getUserAutoLoginToken() async { + Future getUserAutoLoginToken(BuildContext cxt) async { Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", { @@ -76,7 +76,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return searchUserJsonModel(response.body); } - List searchUserJsonModel(String str) => List.from(json.decode(str).map((x) => ChatUser.fromJson(x))); + List searchUserJsonModel(String str) => List.from( + json.decode(str).map( + (x) => ChatUser.fromJson(x), + ), + ); void getUserRecentChats() async { Response response = await ApiClient().getJsonForResponse( @@ -90,9 +94,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { token: AppState().chatDetails!.response!.token, ); ChatUserModel favUList = userToList(favRes.body); + GetUserChatHistoryNotDeliveredAsync( + userId: int.parse( + AppState().chatDetails!.response!.id.toString(), + ), + ); if (favUList.response != null) { favUsersList = favUList.response!; - favUsersList.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase())); + favUsersList.sort( + (ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo( + b.userName!.toLowerCase(), + ), + ); for (dynamic user in recentChat.response!) { for (dynamic favUser in favUList.response!) { if (user.id == favUser.id) { @@ -101,16 +114,23 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } - pChatHistory = recentChat.response == null ? [] : recentChat.response; - if (pChatHistory != null) pChatHistory!.sort((ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase())); + pChatHistory = recentChat.response ?? []; + pChatHistory!.sort( + (ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo( + b.userName!.toLowerCase(), + ), + ); searchedChats = pChatHistory; isLoading = false; notifyListeners(); } - Future GetUserChatHistoryNotDeliveredAsync(int userId) async { - await hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [userId]); + Future GetUserChatHistoryNotDeliveredAsync({required int userId}) async { + await hubConnection.invoke( + "GetUserChatHistoryNotDeliveredAsync", + args: [userId], + ); return ""; } @@ -132,35 +152,89 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } else { if (loadMore) { - List temp = getSingleUserChatModel(response.body).reversed.toList(); - userChatHistory.addAll(temp); + List temp = getSingleUserChatModel( + response.body, + ).reversed.toList(); + userChatHistory.addAll( + temp, + ); } else { - userChatHistory = getSingleUserChatModel(response.body).reversed.toList(); + userChatHistory = getSingleUserChatModel( + response.body, + ).reversed.toList(); } } + await GetUserChatHistoryNotDeliveredAsync( + userId: senderUID, + ); isLoading = false; - await GetUserChatHistoryNotDeliveredAsync(senderUID); notifyListeners(); + markRead( + userChatHistory, + receiverUID, + ); + } + + void markRead(List data, reciverID) { + for (SingleUserChatModel element in data!) { + if (!element.isSeen!) { + dynamic data = [ + { + "userChatHistoryId": element.userChatHistoryId, + "TargetUserId": element.targetUserId, + "isDelivered": true, + "isSeen": true, + } + ]; + updateUserChatHistoryStatusAsync(data); + } + } + for (ChatUser element in searchedChats!) { + if (element.id == reciverID) { + element.unreadMessageCount = 0; + notifyListeners(); + } + } } void updateUserChatHistoryStatusAsync(List data) { - hubConnection.invoke("UpdateUserChatHistoryStatusAsync", args: [data]); + hubConnection.invoke( + "UpdateUserChatHistoryStatusAsync", + args: [data], + ); } - List getSingleUserChatModel(String str) => List.from(json.decode(str).map((x) => SingleUserChatModel.fromJson(x))); + List getSingleUserChatModel(String str) => List.from( + json.decode(str).map( + (x) => SingleUserChatModel.fromJson(x), + ), + ); - ChatUserModel userToList(String str) => ChatUserModel.fromJson(json.decode(str)); + ChatUserModel userToList(String str) => ChatUserModel.fromJson( + json.decode(str), + ); Future uploadAttachments(String userId, File file) async { dynamic result; - dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatMediaImageUploadUrl}')); + dynamic request = MultipartRequest( + 'POST', + Uri.parse( + '${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatMediaImageUploadUrl}', + ), + ); request.fields.addAll({'userId': userId, 'fileSource': '1'}); request.files.add(await MultipartFile.fromPath('files', file.path)); - request.headers.addAll({'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}'}); + request.headers.addAll( + { + 'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}', + }, + ); try { StreamedResponse response = await request.send(); if (response.statusCode == 200) { - result = jsonDecode(await response.stream.bytesToString()); + result = jsonDecode( + await response.stream.bytesToString(), + ); } else { result = []; } @@ -176,7 +250,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future buildHubConnection() async { HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); hubConnection = HubConnectionBuilder() - .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) + .withUrl( + ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", + options: httpOp, + ) .withAutomaticReconnect( retryDelays: [2000, 5000, 10000, 20000], ) @@ -194,6 +271,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ({String? connectionId}) {}, ); if (hubConnection.state != HubConnectionState.Connected) { + print("Started"); await hubConnection.start(); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); @@ -260,23 +338,23 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void chatNotDelivered(List? args) { dynamic items = args!.toList(); for (dynamic item in items[0]) { - dynamic data = [ - { - "userChatHistoryId": item["userChatHistoryId"], - "TargetUserId": item["targetUserId"], - "isDelivered": true, - "isSeen": true, + searchedChats!.forEach((element) { + if (element.id == item["currentUserId"]) { + var val = element.unreadMessageCount == null ? 0 : element.unreadMessageCount; + element.unreadMessageCount = val! + 1; } - ]; - updateUserChatHistoryStatusAsync(data); + }); + // dynamic data = [ + // { + // "userChatHistoryId": item["userChatHistoryId"], + // "TargetUserId": item["targetUserId"], + // "isDelivered": true, + // "isSeen": true, + // } + // ]; + // updateUserChatHistoryStatusAsync(data); } - logger.d(items); - // for (var user in searchedChats!) { - // if (user.id == items.first["id"]) { - // user.userStatus = items.first["userStatus"]; - // } - // } - // notifyListeners();2 + notifyListeners(); } void changeStatus(List? args) { diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 9884d59..06a2c32 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -34,7 +34,7 @@ class _ChatHomeState extends State { // TODO: implement initState super.initState(); data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().then((Object? value) { + data.getUserAutoLoginToken(context).then((Object? value) { data.getUserRecentChats(); }); } diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 05623f7..816aaec 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -7,6 +7,7 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; @@ -134,26 +135,26 @@ class _ChatHomeScreenState extends State { mainAxisAlignment: MainAxisAlignment.end, mainAxisSize: MainAxisSize.max, children: [ - // if (m.searchedChats![index].unreadMessageCount != null) - // Flexible( - // child: Container( - // padding: EdgeInsets.zero, - // alignment: Alignment.centerRight, - // width: 18, - // height: 18, - // decoration: const BoxDecoration( - // color: MyColors.redColor, - // borderRadius: BorderRadius.all( - // Radius.circular(20), - // ), - // ), - // child: (m.searchedChats![index].unreadMessageCount!.toString()) - // .toText10( - // color: MyColors.white, - // ) - // .center, - // ), - // ), + if (m.searchedChats![index].unreadMessageCount! > 0) + Flexible( + child: Container( + padding: EdgeInsets.zero, + alignment: Alignment.centerRight, + width: 18, + height: 18, + decoration: const BoxDecoration( + color: MyColors.redColor, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: (m.searchedChats![index].unreadMessageCount!.toString()) + .toText10( + color: MyColors.white, + ) + .center, + ), + ), Flexible( child: IconButton( alignment: Alignment.centerRight, @@ -192,6 +193,7 @@ class _ChatHomeScreenState extends State { AppRoutes.chatDetailed, arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, ).then((Object? value) { + // m.GetUserChatHistoryNotDeliveredAsync(userId: int.parse(AppState().chatDetails!.response!.id.toString())); m.clearSelections(); m.notifyListeners(); }); From ba1a5c66ef76a24acc701b7fe0132d15395bb6d1 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Sun, 20 Nov 2022 12:34:32 +0300 Subject: [PATCH 099/302] fix issues --- lib/api/my_attendance_api_client.dart | 30 +++++++++++++++---- lib/models/generic_response_model.dart | 4 +-- .../dynamic_screens/dynamic_input_screen.dart | 21 ++++++++----- .../dynamic_listview_screen.dart | 7 +++-- .../services_menu_list_screen.dart | 8 +++-- lib/ui/my_team/create_request.dart | 5 ++-- lib/ui/my_team/team_members.dart | 6 ++-- .../dynamic_input_basic_details_screen.dart | 22 ++++++++++---- .../dynamic_listview_screen.dart | 7 +++-- 9 files changed, 77 insertions(+), 33 deletions(-) diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart index 72d9bcb..c11885c 100644 --- a/lib/api/my_attendance_api_client.dart +++ b/lib/api/my_attendance_api_client.dart @@ -18,47 +18,59 @@ class MyAttendanceApiClient { factory MyAttendanceApiClient() => _instance; - Future?> getEitTransaction(String pFunctionName) async { + Future?> getEitTransaction(String pFunctionName, String? empID) async { String url = "${ApiConsts.erpRest}GET_EIT_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName}; postParams.addAll(AppState().postParamsJson); + // postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty){ + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + // AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + print(empID); + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getEITTransactionList ?? []; }, url, postParams); } - Future getEitDffStructure(String pFunctionName) async { + Future getEitDffStructure(String pFunctionName, String? empID) async { String url = "${ApiConsts.erpRest}GET_EIT_DFF_STRUCTURE"; Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName}; postParams.addAll(AppState().postParamsJson); + if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; }, url, postParams); } - Future> getValueSetValues(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list) async { + Future> getValueSetValues(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list,{ String? empID, String? parentValue}) async { String url = "${ApiConsts.erpRest}GET_VALUE_SET_VALUES"; Map postParams = { "P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 1000, "P_PAGE_NUM": 1, - "P_PARENT_VALUE": null, + "P_PARENT_VALUE": empID!.isNotEmpty? parentValue : null, "P_SEGMENT_NAME": pSegmentName, "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_DESC_FLEX_NAME": pDescFlexName, "GetValueSetValuesTBL": list, }; postParams.addAll(AppState().postParamsJson); + if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getValueSetValuesList ?? []; }, url, postParams); } - Future getDefaultValue(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list) async { + Future getDefaultValue(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list, String? empID) async { String url = "${ApiConsts.erpRest}GET_DEFAULT_VALUE"; Map postParams = { "P_SELECTED_RESP_ID": -999, @@ -70,13 +82,16 @@ class MyAttendanceApiClient { "GetValueSetValuesTBL": list, }; postParams.addAll(AppState().postParamsJson); + if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); }, url, postParams); } - Future validateEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list) async { + Future validateEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list, { String? empID}) async { String url = "${ApiConsts.erpRest}VALIDATE_EIT_TRANSACTION"; Map postParams = { "P_SELECTED_RESP_ID": -999, @@ -86,6 +101,9 @@ class MyAttendanceApiClient { "EITTransactionTBL": list, }; postParams.addAll(AppState().postParamsJson); + if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 5cfc4aa..cd7043c 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -334,7 +334,7 @@ class GenericResponseModel { String? sFHGetPrNotificationBodyList; StartAbsenceApprovalProccess? startAbsenceApprovalProccess; StartAddressApprovalProcess? startAddressApprovalProcessList; - String? startBasicDetApprProcessList; + StartAddressApprovalProcess? startBasicDetApprProcessList; String? startCeiApprovalProcess; String? startContactApprovalProcessList; StartEitApprovalProcess? startEitApprovalProcess; @@ -1294,7 +1294,7 @@ class GenericResponseModel { startAbsenceApprovalProccess = json['StartAbsenceApprovalProccess'] != null ? StartAbsenceApprovalProccess.fromJson(json['StartAbsenceApprovalProccess']) : null; startAddressApprovalProcessList = json['StartAddressApprovalProcessList'] != null ? StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null; - startBasicDetApprProcessList = json['StartBasicDetApprProcessList']; + startBasicDetApprProcessList = json['StartAddressApprovalProcessList'] != null ? StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null; startCeiApprovalProcess = json['StartCeiApprovalProcess']; startContactApprovalProcessList = json['StartContactApprovalProcessList']; diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 519bb6c..6cda072 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -5,6 +5,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -43,7 +44,8 @@ class _DynamicInputScreenState extends State { void getTransactionsStructure() async { try { Utils.showLoading(context); - genericResponseModel = await MyAttendanceApiClient().getEitDffStructure(dynamicParams!.dynamicId); + + genericResponseModel = await MyAttendanceApiClient().getEitDffStructure(dynamicParams!.dynamicId, dynamicParams!.selectedEmp); dESCFLEXCONTEXTCODE = genericResponseModel!.pDESCFLEXCONTEXTCODE ?? ""; descFlexConTextTitle = genericResponseModel!.pDESCFLEXCONTEXTNAME ?? ""; getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; @@ -90,7 +92,7 @@ class _DynamicInputScreenState extends State { values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); - genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); + genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID:dynamicParams!.selectedEmp ??''); SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); Utils.hideLoading(context); await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, @@ -112,14 +114,14 @@ class _DynamicInputScreenState extends State { Utils.showLoading(context); String segmentId = structureList.cHILDSEGMENTSVS!; if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!; - List filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; - List> values = filteredList + List> values = filteredList .map((e) => GetSetValuesRequestModel( sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) .toJson()) .toList(); - List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); + List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, + values, empID:dynamicParams!.selectedEmp ??'', parentValue: structureList.eSERVICESDV!.pVALUECOLUMNNAME ); List abc = genericResponseModel?.getEITDFFStructureList ?? []; getEitDffStructureList = abc; int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == structureList.cHILDSEGMENTSVS); @@ -155,7 +157,7 @@ class _DynamicInputScreenState extends State { List> getSetList = getDefaultValuesIonicLogic(parent); if (getSetList.isNotEmpty) { - ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, getSetList); + ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, getSetList, dynamicParams!.selectedEmp); int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); getEitDffStructureList![index].eSERVICESDV = defaultValue; } @@ -340,7 +342,7 @@ class _DynamicInputScreenState extends State { String? text = data?.pVALUECOLUMNNAME; String? val = data?.pIDCOLUMNNAME; - if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { + if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { //alert(parentsList[i].Name +" Is required"); return []; } else {} @@ -362,7 +364,7 @@ class _DynamicInputScreenState extends State { String? text = data?.pVALUECOLUMNNAME; String? val = data?.pIDCOLUMNNAME; - if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { + if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { //alert(parentsList[i].Name +" Is required"); return []; } else {} @@ -392,6 +394,9 @@ class _DynamicInputScreenState extends State { Widget build(BuildContext context) { if (dynamicParams == null) { dynamicParams = ModalRoute.of(context)!.settings.arguments as DynamicListViewParams; + if(dynamicParams!.selectedEmp.isNotEmpty){ + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams!.selectedEmp; + } getTransactionsStructure(); } return Scaffold( diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index ec52304..5c4053c 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -18,9 +18,11 @@ class DynamicListViewParams { String requestID; String colsURL; bool isUpdate; + List? collectionNotificationList; + final String selectedEmp; - DynamicListViewParams(this.title, this.dynamicId, {this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.isUpdate = false, this.collectionNotificationList}); + DynamicListViewParams(this.title, this.dynamicId, {this.selectedEmp ='', this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.isUpdate = false, this.collectionNotificationList}); } class DynamicListViewScreen extends StatefulWidget { @@ -35,6 +37,7 @@ class DynamicListViewScreen extends StatefulWidget { class _DynamicListViewScreenState extends State { List? getEITTransactionList; DynamicListViewParams? dynamicParams; + // String? empId; @override void initState() { @@ -44,7 +47,7 @@ class _DynamicListViewScreenState extends State { void getTransactions() async { try { Utils.showLoading(context); - getEITTransactionList = await MyAttendanceApiClient().getEitTransaction(dynamicParams!.dynamicId); + getEITTransactionList = await MyAttendanceApiClient().getEitTransaction(dynamicParams!.dynamicId, dynamicParams!.selectedEmp); getEITTransactionList?.forEach((element) { element.collectionTransaction = element.collectionTransaction?.where((elemen) => elemen.dISPLAYFLAG == "Y").toList() ?? []; }); diff --git a/lib/ui/my_attendance/services_menu_list_screen.dart b/lib/ui/my_attendance/services_menu_list_screen.dart index c05e035..cd76132 100644 --- a/lib/ui/my_attendance/services_menu_list_screen.dart +++ b/lib/ui/my_attendance/services_menu_list_screen.dart @@ -8,6 +8,7 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; +import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; @@ -16,8 +17,9 @@ import 'package:provider/provider.dart'; class ServicesMenuListScreenParams { final String title; final List list; - - ServicesMenuListScreenParams(this.title, this.list); + final String selectedEmp; + GetEmployeeSubordinatesList? getEmployeeSubordinates; + ServicesMenuListScreenParams(this.title, this.list, {this.selectedEmp =''}); } class ServicesMenuListScreen extends StatelessWidget { @@ -56,7 +58,7 @@ class ServicesMenuListScreen extends StatelessWidget { return; } if (servicesMenuData.list[index].requestType == "EIT") { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(servicesMenuData.list[index].prompt!, servicesMenuData.list[index].functionName!)); + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(servicesMenuData.list[index].prompt!, servicesMenuData.list[index].functionName!, selectedEmp: servicesMenuData.selectedEmp)); } else { if (servicesMenuData.list[index].requestType == "TERMINATION") { Navigator.pushNamed(context, AppRoutes.endEmploymentScreen, diff --git a/lib/ui/my_team/create_request.dart b/lib/ui/my_team/create_request.dart index a4c6c83..53205c9 100644 --- a/lib/ui/my_team/create_request.dart +++ b/lib/ui/my_team/create_request.dart @@ -65,13 +65,14 @@ class _CreateRequestState extends State { return menus; } - void handleOnPress(context, Menus menu) { + void handleOnPress(context, Menus menu) { + if (menu.menuEntry.menuEntryType == "FUNCTION") { if (menu.menuEntry.requestType == "EIT") { Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!)); } else {} } else { - Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(menu.menuEntry.prompt!, menu.menuEntiesList)); + Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(menu.menuEntry.prompt!, menu.menuEntiesList, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); } return; } diff --git a/lib/ui/my_team/team_members.dart b/lib/ui/my_team/team_members.dart index 50bf7e7..e7336bb 100644 --- a/lib/ui/my_team/team_members.dart +++ b/lib/ui/my_team/team_members.dart @@ -14,7 +14,8 @@ import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:url_launcher/url_launcher.dart'; class TeamMembers extends StatefulWidget { - const TeamMembers({Key? key}) : super(key: key); + final String? selectedEmp; + const TeamMembers({this.selectedEmp, Key? key}) : super(key: key); @override _TeamMembersState createState() => _TeamMembersState(); @@ -25,6 +26,7 @@ class _TeamMembersState extends State { String searchEmpName =""; String searchEmpNo = ""; String? empId; + List getEmployeeSubordinatesList = []; GetEmployeeSubordinatesList? getEmployeeSubordinates; @@ -37,7 +39,7 @@ class _TeamMembersState extends State { try { Utils.showLoading(context); getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString()); - getEmployeeSubordinatesList = await MyTeamApiClient().employeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString(),getEmployeeSubordinates?.eMPLOYEENUMBER); + // getEmployeeSubordinatesList = await MyTeamApiClient().employeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString(),getEmployeeSubordinates?.eMPLOYEENUMBER); Utils.hideLoading(context); setState(() {}); } catch (ex) { diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart index 3127bec..444b83e 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart @@ -80,11 +80,23 @@ class _DynamicInputScreenState extends State { } }); } else { - getBasicDetDffStructureList?.forEach((element) { - element.userBasicDetail = new GetEmployeeBasicDetailsList(); + // getBasicDetDffStructureList?.forEach((element) { + // element.userBasicDetail = new GetEmployeeBasicDetailsList(); + // }); + // getBasicDetColsStructureList?.forEach((element) { + // element.userBasicDetail = GetEmployeeBasicDetailsList(); + // }); + getBasicDetDffStructureList?.forEach((GetBasicDetDffStructureList element) { + element.userBasicDetail = + dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((GetEmployeeBasicDetailsList userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); }); - getBasicDetColsStructureList?.forEach((element) { - element.userBasicDetail = GetEmployeeBasicDetailsList(); + getBasicDetColsStructureList?.forEach((GetBasicDetColsStructureList element) { + element.userBasicDetail = + dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((GetEmployeeBasicDetailsList userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); + if (element.objectValuesList != null) { + ObjectValuesList dropDownListValue = element.objectValuesList!.singleWhere((ObjectValuesList dropdown) => dropdown.cODE == element.userBasicDetail!.vARCHAR2VALUE); + element.userBasicDetail!.sEGMENTVALUEDSP = dropDownListValue.mEANING; + } }); } @@ -369,7 +381,7 @@ class _DynamicInputScreenState extends State { //values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); List> valuesCols = getBasicDetColsStructureList!.map((e) { if (e.dATATYPE == 'NUMBER') { - numberValue = e.userBasicDetail!.nUMBERVALUE!; + numberValue = e.userBasicDetail!.nUMBERVALUE ?? 0; } return ValidateEitTransactionModel( dATEVALUE: e.userBasicDetail!.dATEVALUE ?? "", nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberValue, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: e.userBasicDetail!.vARCHAR2VALUE ?? "") diff --git a/lib/ui/profile/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_listview_screen.dart index ed35527..dce4662 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_listview_screen.dart @@ -17,7 +17,8 @@ class DynamicListViewParams { String dynamicId; String uRL; String requestID; - DynamicListViewParams(this.title, this.dynamicId, {this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = ''}); + final String selectedEmp; + DynamicListViewParams(this.title, this.dynamicId, {this.selectedEmp ='', this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = ''}); } class DynamicListViewScreen extends StatefulWidget { @@ -38,9 +39,9 @@ class _DynamicListViewScreenState extends State { } void getTransactions() async { - try { + try { Utils.showLoading(context); - getEITTransactionList = await MyAttendanceApiClient().getEitTransaction(dynamicParams!.dynamicId); + getEITTransactionList = await MyAttendanceApiClient().getEitTransaction(dynamicParams!.dynamicId, dynamicParams!.selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { From aadc7203a6e66be3d901cf287ad629889e90aaa9 Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Sun, 20 Nov 2022 12:53:37 +0300 Subject: [PATCH 100/302] no message --- lib/extensions/widget_extensions.dart | 4 ++-- .../my_attendance/dynamic_screens/dynamic_input_screen.dart | 4 ++-- lib/ui/profile/personal_info.dart | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index 64aaae8..b52ef3e 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -44,7 +44,7 @@ extension WidgetExtensions on Widget { child: this, ); - Widget objectContainerView({String title = "", String note = "", bool disablePadding = false, double radius = 15}) { + Widget objectContainerView({String title = "", String note = "", bool disablePadding = false, double radius = 15, bool center = true}) { return Container( padding: disablePadding ? EdgeInsets.zero : const EdgeInsets.only(top: 15, bottom: 15, left: 14, right: 14), decoration: BoxDecoration( @@ -58,7 +58,7 @@ extension WidgetExtensions on Widget { ), ], ), - alignment: Alignment.center, + alignment: center == true ? Alignment.center : null, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index c0fbc2b..3f3a7e6 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -398,7 +398,7 @@ class _DynamicInputScreenState extends State { String? text = data?.pVALUECOLUMNNAME; String? val = data?.pIDCOLUMNNAME; - if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { + if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { //alert(parentsList[i].Name +" Is required"); return []; } else {} @@ -420,7 +420,7 @@ class _DynamicInputScreenState extends State { String? text = data?.pVALUECOLUMNNAME; String? val = data?.pIDCOLUMNNAME; - if ((val ?? "").isEmpty && parentsList[i].IsRequired == "REQUIRED") { + if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { //alert(parentsList[i].Name +" Is required"); return []; } else {} diff --git a/lib/ui/profile/personal_info.dart b/lib/ui/profile/personal_info.dart index bd7eebd..b715cdc 100644 --- a/lib/ui/profile/personal_info.dart +++ b/lib/ui/profile/personal_info.dart @@ -25,7 +25,8 @@ class PersonalInfo extends StatelessWidget { width: MediaQuery.of(context).size.width, child: Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, + // mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, children: [ LocaleKeys.category.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.eMPLOYMENTCATEGORYMEANING ?? "").toText16(), @@ -42,7 +43,7 @@ class PersonalInfo extends StatelessWidget { LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.pAYROLLNAME ?? "").toText16(), ], - ).objectContainerView().paddingAll(21), + ).objectContainerView(center: false).paddingAll(21), ), ); } From 468555046bccc7188fbfd5737180a69fc3df4ce3 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 20 Nov 2022 15:20:37 +0300 Subject: [PATCH 101/302] updates --- lib/ui/login/login_screen.dart | 1 + lib/widgets/mark_attendance_widget.dart | 60 ++++++++++++++++++------- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 20fa8bc..68f0c41 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -128,6 +128,7 @@ class _LoginScreenState extends State { Navigator.pushNamed(context, AppRoutes.verifyLogin, arguments: "$firebaseToken"); } + Utils.saveStringFromPrefs(SharedPrefsConsts.password, password.text); } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, (msg) { diff --git a/lib/widgets/mark_attendance_widget.dart b/lib/widgets/mark_attendance_widget.dart index c41b89c..a6b6cfc 100644 --- a/lib/widgets/mark_attendance_widget.dart +++ b/lib/widgets/mark_attendance_widget.dart @@ -14,6 +14,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/dialogs/success_dialog.dart'; +import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; import 'package:mohem_flutter_app/widgets/dialogs/dialogs.dart'; import 'package:mohem_flutter_app/widgets/location/Location.dart'; import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart'; @@ -144,14 +145,28 @@ class _MarkAttendanceWidgetState extends State { Utils.showLoading(context); try { GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 2, nfcValue: nfcId, isGpsRequired: isNfcLocationEnabled, lat: lat, long: lng); - bool status = await model.fetchAttendanceTracking(context); - Utils.hideLoading(context); - showMDialog( - context, - backgroundColor: Colors.transparent, - isDismissable: false, - child: SuccessDialog(widget.isFromDashboard), - ); + if(g?.messageStatus != 1) { + Utils.hideLoading(context); + showDialog( + context: context, + builder: (cxt) => ConfirmDialog( + message: g?.errorEndUserMessage ?? "Unexpected error occurred", + onTap: () { + Navigator.pop(context); + }, + ), + ); + } else { + bool status = await model.fetchAttendanceTracking(context); + Utils.hideLoading(context); + showMDialog( + context, + backgroundColor: Colors.transparent, + isDismissable: false, + child: SuccessDialog(widget.isFromDashboard), + ); + } + } catch (ex) { print(ex); Utils.hideLoading(context); @@ -166,14 +181,27 @@ class _MarkAttendanceWidgetState extends State { Utils.showLoading(context); try { GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 2, nfcValue: nfcId ?? "", isGpsRequired: isNfcLocationEnabled, lat: lat, long: lng); - bool status = await model.fetchAttendanceTracking(context); - Utils.hideLoading(context); - showMDialog( - context, - backgroundColor: Colors.transparent, - isDismissable: false, - child: SuccessDialog(widget.isFromDashboard), - ); + if(g?.messageStatus != 1) { + Utils.hideLoading(context); + showDialog( + context: context, + builder: (cxt) => ConfirmDialog( + message: g?.errorEndUserMessage ?? "Unexpected error occurred", + onTap: () { + Navigator.pop(context); + }, + ), + ); + } else { + bool status = await model.fetchAttendanceTracking(context); + Utils.hideLoading(context); + showMDialog( + context, + backgroundColor: Colors.transparent, + isDismissable: false, + child: SuccessDialog(widget.isFromDashboard), + ); + } } catch (ex) { print(ex); Utils.hideLoading(context); From fab16db8b3350f58eb67c6db381cc35c4f7033b4 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 20 Nov 2022 15:29:25 +0300 Subject: [PATCH 102/302] Chat Updates & Counter Event Modifications --- lib/api/chat/chat_provider_model.dart | 50 ++++++++++++++------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 2e8bcb8..7dbc0be 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -29,7 +29,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { late HubConnection hubConnection; L.Logger logger = L.Logger(); bool hubConInitialized = false; - + String chatCID = ''; bool isLoading = true; bool isChatScreenActive = false; late File selectedFile; @@ -40,17 +40,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List favUsersList = []; int paginationVal = 0; - //Scroll - bool _firstAutoscrollExecuted = false; - bool _shouldAutoscroll = false; - Future getUserAutoLoginToken(BuildContext cxt) async { Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", { - "employeeNumber": int.parse( + "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(), - ), "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG" }, ); @@ -173,6 +168,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { userChatHistory, receiverUID, ); + generateConvId(); + } + + void generateConvId() async { + Uuid uuid = const Uuid(); + chatCID = uuid.v4(); } void markRead(List data, reciverID) { @@ -506,13 +507,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future sendChatToServer( {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { Uuid uuid = const Uuid(); + var msg = message.text; SingleUserChatModel data = SingleUserChatModel( chatEventId: chatEventId, chatSource: 1, contant: msg, contantNo: uuid.v4(), - conversationId: uuid.v4(), + conversationId: chatCID, createdDate: DateTime.now(), currentUserId: AppState().chatDetails!.response!.id, currentUserName: AppState().chatDetails!.response!.userName, @@ -743,22 +745,22 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sFileType = ""; } - void scrollListener() { - _firstAutoscrollExecuted = true; - if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { - _shouldAutoscroll = true; - } else { - _shouldAutoscroll = false; - } - } - - void scrollToBottom() { - scrollController.animateTo( - scrollController.position.maxScrollExtent + 100, - duration: const Duration(milliseconds: 500), - curve: Curves.easeIn, - ); - } + // void scrollListener() { + // _firstAutoscrollExecuted = true; + // if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { + // _shouldAutoscroll = true; + // } else { + // _shouldAutoscroll = false; + // } + // } + // + // void scrollToBottom() { + // scrollController.animateTo( + // scrollController.position.maxScrollExtent + 100, + // duration: const Duration(milliseconds: 500), + // curve: Curves.easeIn, + // ); + // } void msgScroll() { scrollController.animateTo( From c1f3f17c89fbe496f16b794986a38db0fad275e8 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 20 Nov 2022 15:32:51 +0300 Subject: [PATCH 103/302] Chat Updates & Counter Event Modifications --- lib/api/chat/chat_provider_model.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 7dbc0be..ac26c38 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -541,7 +541,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); String chatData = - '{"contant":"$msg","contantNo":"${uuid.v4()}","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"${uuid.v4()}"}'; + '{"contant":"$msg","contantNo":"${uuid.v4()}","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"$chatCID"}'; await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); } From 2e88275285242704602d82b3e7e26758cf997f93 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 21 Nov 2022 09:31:53 +0300 Subject: [PATCH 104/302] Chat Updates & Counter Event Modifications --- lib/api/chat/chat_provider_model.dart | 18 +- lib/classes/consts.dart | 4 +- lib/models/chat/call.dart | 226 ++++++++++-------- .../chat/call/chat_incoming_call_screen.dart | 2 +- .../chat/call/chat_outgoing_call_screen.dart | 5 +- lib/ui/chat/chat_detailed_screen.dart | 69 +++--- lib/ui/chat/chat_home.dart | 4 +- 7 files changed, 173 insertions(+), 155 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index ac26c38..868aa7a 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -43,11 +43,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future getUserAutoLoginToken(BuildContext cxt) async { Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", - { - "employeeNumber": - AppState().memberInformationList!.eMPLOYEENUMBER.toString(), - "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG" - }, + {"employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(), "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG"}, ); login.UserAutoLoginModel userLoginResponse = login.userAutoLoginModelFromJson( response.body, @@ -58,7 +54,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { AppState().setchatUserDetails = userLoginResponse; await buildHubConnection(); } else { - Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); + Utils.showToast( + userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", + ); return; } } @@ -94,7 +92,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { AppState().chatDetails!.response!.id.toString(), ), ); - if (favUList.response != null) { + if (favUList.response != null && recentChat.response != null) { favUsersList = favUList.response!; favUsersList.sort( (ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo( @@ -249,7 +247,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future buildHubConnection() async { - HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); + HttpConnectionOptions httpOp = HttpConnectionOptions( + skipNegotiation: false, + logMessageContent: true, + ); hubConnection = HubConnectionBuilder() .withUrl( ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", @@ -272,7 +273,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ({String? connectionId}) {}, ); if (hubConnection.state != HubConnectionState.Connected) { - print("Started"); await hubConnection.start(); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ede22e3..c5788f9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - //static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/models/chat/call.dart b/lib/models/chat/call.dart index eacdd03..20f6a79 100644 --- a/lib/models/chat/call.dart +++ b/lib/models/chat/call.dart @@ -1,117 +1,133 @@ -class IncomingCallData { - String? callerID; - String? receiverID; - String? msgID; - String? notfID; +// To parse this JSON data, do +// +// final callDataModel = callDataModelFromJson(jsonString); + +import 'dart:convert'; + +class CallDataModel { + CallDataModel({ + this.callerId, + this.callReciverId, + this.notificationForeground, + this.message, + this.title, + this.type, + this.identity, + this.name, + this.isCall, + this.isWebrtc, + this.contant, + this.contantNo, + this.chatEventId, + this.fileTypeId, + this.currentUserId, + this.chatSource, + this.userChatHistoryLineRequestList, + this.server, + }); + + String? callerId; + String? callReciverId; String? notificationForeground; - String? count; String? message; - String? appointmentNo; String? title; - String? projectID; - String? notificationType; - String? background; - String? doctorname; - String? clinicname; - String? speciality; - String? appointmentdate; - String? appointmenttime; String? type; - String? sessionId; String? identity; String? name; - String? videoUrl; - String? picture; - String? token; String? isCall; - String? sound; + String? isWebrtc; + String? contant; + String? contantNo; + String? chatEventId; + dynamic? fileTypeId; + String? currentUserId; + String? chatSource; + List? userChatHistoryLineRequestList; String? server; - String? isWebRTC; - IncomingCallData( - {this.msgID, - this.notfID, - this.notificationForeground, - this.count, - this.message, - this.appointmentNo, - this.title, - this.projectID, - this.notificationType, - this.background, - this.doctorname, - this.clinicname, - this.speciality, - this.appointmentdate, - this.appointmenttime, - this.type, - this.sessionId, - this.identity, - this.name, - this.videoUrl, - this.picture, - this.isCall, - this.sound}); + factory CallDataModel.fromRawJson(String str) => CallDataModel.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory CallDataModel.fromJson(Map json) => CallDataModel( + callerId: json["callerID"] == null ? null : json["callerID"], + callReciverId: json["callReciverID"] == null ? null : json["callReciverID"], + notificationForeground: json["notification_foreground"] == null ? null : json["notification_foreground"], + message: json["message"] == null ? null : json["message"], + title: json["title"] == null ? null : json["title"], + type: json["type"] == null ? null : json["type"], + identity: json["identity"] == null ? null : json["identity"], + name: json["name"] == null ? null : json["name"], + isCall: json["is_call"] == null ? null : json["is_call"], + isWebrtc: json["is_webrtc"] == null ? null : json["is_webrtc"], + contant: json["contant"] == null ? null : json["contant"], + contantNo: json["contantNo"] == null ? null : json["contantNo"], + chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], + fileTypeId: json["fileTypeId"], + currentUserId: json["currentUserId"] == null ? null : json["currentUserId"], + chatSource: json["chatSource"] == null ? null : json["chatSource"], + userChatHistoryLineRequestList: json["userChatHistoryLineRequestList"] == null + ? null + : List.from( + json["userChatHistoryLineRequestList"].map( + (x) => UserChatHistoryLineRequestList.fromJson(x), + ), + ), + server: json["server"] == null ? null : json["server"], + ); + + Map toJson() => { + "callerID": callerId == null ? null : callerId, + "callReciverID": callReciverId == null ? null : callReciverId, + "notification_foreground": notificationForeground == null ? null : notificationForeground, + "message": message == null ? null : message, + "title": title == null ? null : title, + "type": type == null ? null : type, + "identity": identity == null ? null : identity, + "name": name == null ? null : name, + "is_call": isCall == null ? null : isCall, + "is_webrtc": isWebrtc == null ? null : isWebrtc, + "contant": contant == null ? null : contant, + "contantNo": contantNo == null ? null : contantNo, + "chatEventId": chatEventId == null ? null : chatEventId, + "fileTypeId": fileTypeId, + "currentUserId": currentUserId == null ? null : currentUserId, + "chatSource": chatSource == null ? null : chatSource, + "userChatHistoryLineRequestList": userChatHistoryLineRequestList == null + ? null + : List.from( + userChatHistoryLineRequestList!.map( + (x) => x.toJson(), + ), + ), + "server": server == null ? null : server, + }; +} + +class UserChatHistoryLineRequestList { + UserChatHistoryLineRequestList({ + this.isSeen, + this.isDelivered, + this.targetUserId, + this.targetUserStatus, + }); + + bool? isSeen; + bool? isDelivered; + int? targetUserId; + int? targetUserStatus; - IncomingCallData.fromJson(Map json) { - callerID = json['callerID']; - receiverID = json['PatientID']; - msgID = json['msgID']; - notfID = json['notfID']; - notificationForeground = json['notification_foreground']; - count = json['count']; - message = json['message']; - appointmentNo = json['AppointmentNo']; - title = json['title']; - projectID = json['ProjectID']; - notificationType = json['NotificationType']; - background = json['background']; - doctorname = json['doctorname']; - clinicname = json['clinicname']; - speciality = json['speciality']; - appointmentdate = json['appointmentdate']; - appointmenttime = json['appointmenttime']; - type = json['type']; - sessionId = json['session_id']; - token = json['token']; - identity = json['identity']; - name = json['name']; - videoUrl = json['videoUrl']; - picture = json['picture']; - isCall = json['is_call']; - sound = json['sound']; - server = json['server']; - isWebRTC = json['is_webrtc'] ?? "true"; - } + factory UserChatHistoryLineRequestList.fromJson(Map json) => UserChatHistoryLineRequestList( + isSeen: json["isSeen"] == null ? null : json["isSeen"], + isDelivered: json["isDelivered"] == null ? null : json["isDelivered"], + targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], + targetUserStatus: json["targetUserStatus"] == null ? null : json["targetUserStatus"], + ); - Map toJson() { - Map data = Map(); - data['msgID'] = this.msgID; - data['notfID'] = this.notfID; - data['notification_foreground'] = this.notificationForeground; - data['count'] = this.count; - data['message'] = this.message; - data['AppointmentNo'] = this.appointmentNo; - data['title'] = this.title; - data['ProjectID'] = this.projectID; - data['NotificationType'] = this.notificationType; - data['background'] = this.background; - data['doctorname'] = this.doctorname; - data['clinicname'] = this.clinicname; - data['speciality'] = this.speciality; - data['appointmentdate'] = this.appointmentdate; - data['appointmenttime'] = this.appointmenttime; - data['type'] = this.type; - data['session_id'] = this.sessionId; - data['token'] = this.token; - data['identity'] = this.identity; - data['name'] = this.name; - data['videoUrl'] = this.videoUrl; - data['picture'] = this.picture; - data['is_call'] = this.isCall; - data['sound'] = this.sound; - data['server'] = this.server; - data['is_webrtc'] = this.isWebRTC; - return data; - } + Map toJson() => { + "isSeen": isSeen == null ? null : isSeen, + "isDelivered": isDelivered == null ? null : isDelivered, + "targetUserId": targetUserId == null ? null : targetUserId, + "targetUserStatus": targetUserStatus == null ? null : targetUserStatus, + }; } diff --git a/lib/ui/chat/call/chat_incoming_call_screen.dart b/lib/ui/chat/call/chat_incoming_call_screen.dart index b98763a..a0b8247 100644 --- a/lib/ui/chat/call/chat_incoming_call_screen.dart +++ b/lib/ui/chat/call/chat_incoming_call_screen.dart @@ -7,7 +7,7 @@ import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/models/chat/call.dart'; class IncomingCall extends StatefulWidget { - IncomingCallData incomingCallData; + CallDataModel incomingCallData; bool? isVideoCall; IncomingCall({Key? key, required this.incomingCallData, this.isVideoCall}) : super(key: key); diff --git a/lib/ui/chat/call/chat_outgoing_call_screen.dart b/lib/ui/chat/call/chat_outgoing_call_screen.dart index 25bc05d..627c24a 100644 --- a/lib/ui/chat/call/chat_outgoing_call_screen.dart +++ b/lib/ui/chat/call/chat_outgoing_call_screen.dart @@ -1,3 +1,4 @@ +import 'dart:convert'; import 'dart:ui'; import 'package:camera/camera.dart'; @@ -7,10 +8,11 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/call.dart'; class OutGoingCall extends StatefulWidget { - IncomingCallData OutGoingCallData; + CallDataModel OutGoingCallData; bool? isVideoCall; OutGoingCall({Key? key, required this.OutGoingCallData, this.isVideoCall}) : super(key: key); @@ -36,6 +38,7 @@ class _OutGoingCallState extends State with SingleTickerProviderSt milliseconds: 500, ), ); + logger.d(jsonEncode(widget.OutGoingCallData)); //_runAnimation(); // connectSignaling(); WidgetsBinding.instance.addPostFrameCallback( diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 347c573..4a8e70c 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -10,6 +11,7 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/call.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; @@ -17,6 +19,7 @@ import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; +import 'package:signalr_netcore/signalr_client.dart'; import 'package:swipe_to/swipe_to.dart'; class ChatDetailScreen extends StatefulWidget { @@ -55,13 +58,14 @@ class _ChatDetailScreenState extends State { Widget build(BuildContext context) { userDetails = ModalRoute.of(context)!.settings.arguments; data = Provider.of(context, listen: false); - if (userDetails != null) + if (userDetails != null) { data.getSingleUserChatHistory( senderUID: AppState().chatDetails!.response!.id!.toInt(), receiverUID: userDetails["targetUser"].id, loadMore: false, isNewChat: userDetails["isNewChat"], ); + } return Scaffold( backgroundColor: const Color(0xFFF8F8F8), @@ -72,7 +76,10 @@ class _ChatDetailScreenState extends State { actions: [ IconButton( onPressed: () { - makeCall("AUDIO"); + // makeCall( + // callType: "AUDIO", + // con: data.hubConnection, + // ); }, icon: SvgPicture.asset( "assets/icons/chat/call.svg", @@ -82,7 +89,10 @@ class _ChatDetailScreenState extends State { ), IconButton( onPressed: () { - makeCall("VIDEO"); + // makeCall( + // callType: "VIDEO", + // con: data.hubConnection, + // ); }, icon: SvgPicture.asset( "assets/icons/chat/video_call.svg", @@ -345,45 +355,34 @@ class _ChatDetailScreenState extends State { ); } - void makeCall(String callType) async { - // final server = await SelectionDialog( - // context, - // title: "Select Server", - // items: ["https://livecareturn.hmg.com:8086", "https://104.197.179.1:8086"] - // ).show(); - - Map json = { - "callerID": "9920", - "PatientID": "1231755", - "msgID": "123", - "notfID": "123", + void makeCall({required String callType, required HubConnection con}) async { + print("================== Make call Triggered ============================"); + logger.d(jsonEncode(AppState().chatDetails!.response)); + Map json = { + "callerID": AppState().chatDetails!.response!.id!.toString(), + "callReciverID": userDetails["targetUser"].id.toString(), "notification_foreground": "true", - "count": "1", - "message": "Doctor is calling ", - "AppointmentNo": "123", - "title": "Rayyan Hospital", - "ProjectID": "123", - "NotificationType": "10", - "background": "1", - "doctorname": "Dr Sulaiman Al Habib", - "clinicname": "ENT Clinic", - "speciality": "Speciality", - "appointmentdate": "Sun, 15th Dec, 2019", - "appointmenttime": "09:00", - "type": "video", - "session_id": - "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImN0eSI6InR3aWxpby1mcGE7dj0xIn0.eyJqdGkiOiJTS2I2NjYyOWMzN2ZhOTM3YjFjNDI2Zjg1MTgyNWFmN2M0LTE1OTg3NzQ1MDYiLCJpc3MiOiJTS2I2NjYyOWMzN2ZhOTM3YjFjNDI2Zjg1MTgyNWFmN2M0Iiwic3ViIjoiQUNhYWQ1YTNmOGM2NGZhNjczNTY3NTYxNTc0N2YyNmMyYiIsImV4cCI6MTU5ODc3ODEwNiwiZ3JhbnRzIjp7ImlkZW50aXR5IjoiSGFyb29uMSIsInZpZGVvIjp7InJvb20iOiJTbWFsbERhaWx5U3RhbmR1cCJ9fX0.7XUS5uMQQJfkrBZu9EjQ6STL6R7iXkso6BtO1HmrQKk", - "identity": "Haroon1", - "name": "SmallDailyStandup", - "videoUrl": "video", - "picture": "video", + "message": "Aamir is calling ", + "title": "Video Call", + "type": callType == "VIDEO" ? "Video" : "Audio", + "identity": "Aamir.Muhammad", + "name": "Aamir Saleem Ahmad", "is_call": "true", "is_webrtc": "true", + "contant": "Start video Call Aamir.Muhammad", + "contantNo": "775d1f11-62d9-6fcc-91f6-21f8c14559fb", + "chatEventId": "3", + "fileTypeId": null, + "currentUserId": "266642", + "chatSource": "1", + "userChatHistoryLineRequestList": [ + {"isSeen": false, "isDelivered": false, "targetUserId": 341682, "targetUserStatus": 4} + ], // "server": "https://192.168.8.163:8086", "server": "https://livecareturn.hmg.com:8086", }; - IncomingCallData incomingCallData = IncomingCallData.fromJson(json); + CallDataModel incomingCallData = CallDataModel.fromJson(json); await Navigator.push( context, MaterialPageRoute( diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 06a2c32..b2db98a 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -34,18 +34,18 @@ class _ChatHomeState extends State { // TODO: implement initState super.initState(); data = Provider.of(context, listen: false); - data.getUserAutoLoginToken(context).then((Object? value) { + data.getUserAutoLoginToken(context).whenComplete(() { data.getUserRecentChats(); }); } @override void dispose() { + super.dispose(); data.clearAll(); if (data.hubConInitialized) { data.hubConnection.stop(); } - super.dispose(); } @override From 76169e5cb883f81e708ffcf46c18478723a06fd6 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 21 Nov 2022 09:53:27 +0300 Subject: [PATCH 105/302] Chat Updates & Counter Event Modifications --- lib/api/chat/chat_provider_model.dart | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 868aa7a..83827c3 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -87,11 +87,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { token: AppState().chatDetails!.response!.token, ); ChatUserModel favUList = userToList(favRes.body); - GetUserChatHistoryNotDeliveredAsync( - userId: int.parse( - AppState().chatDetails!.response!.id.toString(), - ), - ); + if (favUList.response != null && recentChat.response != null) { favUsersList = favUList.response!; favUsersList.sort( @@ -119,7 +115,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } - Future GetUserChatHistoryNotDeliveredAsync({required int userId}) async { + Future getUserChatHistoryNotDeliveredAsync({required int userId}) async { await hubConnection.invoke( "GetUserChatHistoryNotDeliveredAsync", args: [userId], @@ -157,7 +153,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ).reversed.toList(); } } - await GetUserChatHistoryNotDeliveredAsync( + await getUserChatHistoryNotDeliveredAsync( userId: senderUID, ); isLoading = false; @@ -274,6 +270,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); if (hubConnection.state != HubConnectionState.Connected) { await hubConnection.start(); + getUserChatHistoryNotDeliveredAsync( + userId: int.parse( + AppState().chatDetails!.response!.id.toString(), + ), + ); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); // hubConnection.on("OnSeenChatUserAsync", onChatSeen); @@ -565,14 +566,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } if (isFileSelected && !isMsgReply) { Utils.showLoading(context); - logger.d("Normal Attachment Message"); + //logger.d("Normal Attachment Message"); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); Utils.hideLoading(context); sendChatToServer(chatEventId: 2, fileTypeId: getFileType(ext.toString()), targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: true, chatReplyId: null, isReply: false); } if (!isFileSelected && isMsgReply) { - logger.d("Normal Text Message With Reply"); + // logger.d("Normal Text Message With Reply"); if (message.text == null || message.text.isEmpty) { return; } @@ -580,7 +581,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, chatReplyId: repliedMsg.first.userChatHistoryId, isAttachment: false, isReply: true); } if (isFileSelected && isMsgReply) { - logger.d("Attachment Message With Reply"); + // logger.d("Attachment Message With Reply"); Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); From 32ee7920412f618859eeb67da139bf7db3f30c9e Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 21 Nov 2022 09:54:14 +0300 Subject: [PATCH 106/302] Chat Updates & Counter Event Modifications --- lib/api/chat/chat_provider_model.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 83827c3..69f0fe5 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -573,7 +573,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sendChatToServer(chatEventId: 2, fileTypeId: getFileType(ext.toString()), targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: true, chatReplyId: null, isReply: false); } if (!isFileSelected && isMsgReply) { - // logger.d("Normal Text Message With Reply"); + // logger.d("Normal Text Message With Reply"); if (message.text == null || message.text.isEmpty) { return; } @@ -581,7 +581,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, chatReplyId: repliedMsg.first.userChatHistoryId, isAttachment: false, isReply: true); } if (isFileSelected && isMsgReply) { - // logger.d("Attachment Message With Reply"); + // logger.d("Attachment Message With Reply"); Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); From ab5de25c8118690f266877b7819f3872f333f578 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 21 Nov 2022 09:56:29 +0300 Subject: [PATCH 107/302] Chat Updates & Counter Event Modifications --- lib/api/chat/chat_provider_model.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 69f0fe5..7a27c1f 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -43,7 +43,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future getUserAutoLoginToken(BuildContext cxt) async { Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", - {"employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(), "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG"}, + { + "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(), + "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG", + }, ); login.UserAutoLoginModel userLoginResponse = login.userAutoLoginModelFromJson( response.body, From bcf4a9ec42454bd5fac2c54402ca02cbf8b08491 Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Mon, 21 Nov 2022 11:14:57 +0300 Subject: [PATCH 108/302] my team probation issue fixed --- lib/api/my_attendance_api_client.dart | 30 ++++++------- .../dynamic_screens/dynamic_input_screen.dart | 45 ++++++++++--------- 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart index c11885c..9bb16a8 100644 --- a/lib/api/my_attendance_api_client.dart +++ b/lib/api/my_attendance_api_client.dart @@ -22,8 +22,8 @@ class MyAttendanceApiClient { String url = "${ApiConsts.erpRest}GET_EIT_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName}; postParams.addAll(AppState().postParamsJson); - // postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty){ + // postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + if (empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; // AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = empID; print(empID); @@ -38,7 +38,7 @@ class MyAttendanceApiClient { String url = "${ApiConsts.erpRest}GET_EIT_DFF_STRUCTURE"; Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName}; postParams.addAll(AppState().postParamsJson); - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + if (empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { @@ -47,21 +47,21 @@ class MyAttendanceApiClient { }, url, postParams); } - Future> getValueSetValues(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list,{ String? empID, String? parentValue}) async { + Future> getValueSetValues(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list, {String? empID, String? parentValue}) async { String url = "${ApiConsts.erpRest}GET_VALUE_SET_VALUES"; Map postParams = { "P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 1000, "P_PAGE_NUM": 1, - "P_PARENT_VALUE": empID!.isNotEmpty? parentValue : null, + "P_PARENT_VALUE": empID!.isNotEmpty ? parentValue : null, "P_SEGMENT_NAME": pSegmentName, "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_DESC_FLEX_NAME": pDescFlexName, "GetValueSetValuesTBL": list, }; postParams.addAll(AppState().postParamsJson); - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + if (empID.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { @@ -82,7 +82,7 @@ class MyAttendanceApiClient { "GetValueSetValuesTBL": list, }; postParams.addAll(AppState().postParamsJson); - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + if (empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { @@ -91,7 +91,7 @@ class MyAttendanceApiClient { }, url, postParams); } - Future validateEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list, { String? empID}) async { + Future validateEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list, {String? empID}) async { String url = "${ApiConsts.erpRest}VALIDATE_EIT_TRANSACTION"; Map postParams = { "P_SELECTED_RESP_ID": -999, @@ -101,7 +101,7 @@ class MyAttendanceApiClient { "EITTransactionTBL": list, }; postParams.addAll(AppState().postParamsJson); - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + if (empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { @@ -110,7 +110,7 @@ class MyAttendanceApiClient { }, url, postParams); } - Future submitEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list) async { + Future submitEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list, {String? empID}) async { String url = "${ApiConsts.erpRest}SUBMIT_EIT_TRANSACTION"; Map postParams = { "P_SELECTED_RESP_ID": -999, @@ -121,6 +121,9 @@ class MyAttendanceApiClient { "EITTransactionTBLModel": list, }; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.submitEITTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); @@ -129,12 +132,7 @@ class MyAttendanceApiClient { Future reSubmitEitTransaction(String itemKey, var notifID, List> list) async { String url = "${ApiConsts.erpRest}RESUBMIT_EIT_TRANSACTION"; - Map postParams = { - "P_NOTIFICATION_ID": notifID, - "P_ITEM_KEY": itemKey, - "P_EMAIL_ADDRESS": AppState().memberInformationList!.eMPLOYEEEMAILADDRESS, - "EITTransactionTBL": list - }; + Map postParams = {"P_NOTIFICATION_ID": notifID, "P_ITEM_KEY": itemKey, "P_EMAIL_ADDRESS": AppState().memberInformationList!.eMPLOYEEEMAILADDRESS, "EITTransactionTBL": list}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 6cda072..ad7ad50 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -92,8 +92,9 @@ class _DynamicInputScreenState extends State { values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); - genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID:dynamicParams!.selectedEmp ??''); - SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); + genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp ?? ''); + SubmitEITTransactionList submitEITTransactionList = + await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp ?? ''); Utils.hideLoading(context); await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); @@ -112,23 +113,27 @@ class _DynamicInputScreenState extends State { Future calGetValueSetValues(GetEITDFFStructureList structureList) async { try { Utils.showLoading(context); - String segmentId = structureList.cHILDSEGMENTSVS!; - if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!; - List filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; - List> values = filteredList - .map((e) => GetSetValuesRequestModel( - sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) - .toJson()) - .toList(); - List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, - values, empID:dynamicParams!.selectedEmp ??'', parentValue: structureList.eSERVICESDV!.pVALUECOLUMNNAME ); - List abc = genericResponseModel?.getEITDFFStructureList ?? []; - getEitDffStructureList = abc; - int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == structureList.cHILDSEGMENTSVS); - getEitDffStructureList![index].eSERVICESVS!.clear(); - if (eServicesResponseModel.isNotEmpty) getEitDffStructureList![index].eSERVICESVS!.addAll(eServicesResponseModel); - // getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; - //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); + for (int i = 0; i < (structureList.cHILDSEGMENTSVSSplited?.length ?? 0); i++) { + String segmentId = structureList.cHILDSEGMENTSVSSplited![i]; + + if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!; + List filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; + List> values = filteredList + .map((e) => GetSetValuesRequestModel( + sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) + .toJson()) + .toList(); + List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values, + empID: dynamicParams!.selectedEmp ?? '', parentValue: structureList.eSERVICESDV!.pVALUECOLUMNNAME); + List abc = genericResponseModel?.getEITDFFStructureList ?? []; + getEitDffStructureList = abc; + int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + getEitDffStructureList![index].eSERVICESVS!.clear(); + if (eServicesResponseModel.isNotEmpty) getEitDffStructureList![index].eSERVICESVS!.addAll(eServicesResponseModel); + // getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; + //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); + } + await Future.delayed(const Duration(seconds: 1)); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -394,7 +399,7 @@ class _DynamicInputScreenState extends State { Widget build(BuildContext context) { if (dynamicParams == null) { dynamicParams = ModalRoute.of(context)!.settings.arguments as DynamicListViewParams; - if(dynamicParams!.selectedEmp.isNotEmpty){ + if (dynamicParams!.selectedEmp.isNotEmpty) { AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams!.selectedEmp; } getTransactionsStructure(); From f4f9b442c857eccf75b8b49a3b41ea732825a8e9 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 21 Nov 2022 15:47:42 +0300 Subject: [PATCH 109/302] Chat Updates & Counter Event Modifications --- lib/api/chat/chat_provider_model.dart | 57 +++++++++++-------- lib/models/chat/call.dart | 8 +-- .../chat/get_search_user_chat_model.dart | 32 ++++++----- lib/ui/chat/chat_detailed_screen.dart | 44 +++++++------- lib/ui/chat/chat_home_screen.dart | 18 +++++- 5 files changed, 96 insertions(+), 63 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 7a27c1f..a019294 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -115,6 +115,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { searchedChats = pChatHistory; isLoading = false; + getUserChatHistoryNotDeliveredAsync( + userId: int.parse( + AppState().chatDetails!.response!.id.toString(), + ), + ); notifyListeners(); } @@ -122,6 +127,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await hubConnection.invoke( "GetUserChatHistoryNotDeliveredAsync", args: [userId], + ).onError( + (Error error, StackTrace stackTrace) => { + logger.d(error), + }, ); return ""; } @@ -220,8 +229,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { '${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatMediaImageUploadUrl}', ), ); - request.fields.addAll({'userId': userId, 'fileSource': '1'}); - request.files.add(await MultipartFile.fromPath('files', file.path)); + request.fields.addAll( + {'userId': userId, 'fileSource': '1'}, + ); + request.files.add( + await MultipartFile.fromPath( + 'files', + file.path, + ), + ); request.headers.addAll( { 'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}', @@ -256,7 +272,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { options: httpOp, ) .withAutomaticReconnect( - retryDelays: [2000, 5000, 10000, 20000], + retryDelays: [ + 2000, + 5000, + 10000, + 20000, + ], ) .configureLogging( Logger("Loggin"), @@ -273,11 +294,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); if (hubConnection.state != HubConnectionState.Connected) { await hubConnection.start(); - getUserChatHistoryNotDeliveredAsync( - userId: int.parse( - AppState().chatDetails!.response!.id.toString(), - ), - ); + print("Connnnnn Stablished"); hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); // hubConnection.on("OnSeenChatUserAsync", onChatSeen); @@ -343,21 +360,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void chatNotDelivered(List? args) { dynamic items = args!.toList(); for (dynamic item in items[0]) { - searchedChats!.forEach((element) { - if (element.id == item["currentUserId"]) { - var val = element.unreadMessageCount == null ? 0 : element.unreadMessageCount; - element.unreadMessageCount = val! + 1; - } - }); - // dynamic data = [ - // { - // "userChatHistoryId": item["userChatHistoryId"], - // "TargetUserId": item["targetUserId"], - // "isDelivered": true, - // "isSeen": true, - // } - // ]; - // updateUserChatHistoryStatusAsync(data); + searchedChats!.forEach( + (ChatUser element) { + if (element.id == item["currentUserId"]) { + int? val = element.unreadMessageCount ?? 0; + element.unreadMessageCount = val! + 1; + } + element.isLoadingCounter = false; + }, + ); } notifyListeners(); } diff --git a/lib/models/chat/call.dart b/lib/models/chat/call.dart index 20f6a79..7f8f6eb 100644 --- a/lib/models/chat/call.dart +++ b/lib/models/chat/call.dart @@ -7,7 +7,7 @@ import 'dart:convert'; class CallDataModel { CallDataModel({ this.callerId, - this.callReciverId, + this.callReceiverID, this.notificationForeground, this.message, this.title, @@ -27,7 +27,7 @@ class CallDataModel { }); String? callerId; - String? callReciverId; + String? callReceiverID; String? notificationForeground; String? message; String? title; @@ -51,7 +51,7 @@ class CallDataModel { factory CallDataModel.fromJson(Map json) => CallDataModel( callerId: json["callerID"] == null ? null : json["callerID"], - callReciverId: json["callReciverID"] == null ? null : json["callReciverID"], + callReceiverID: json["callReceiverID"] == null ? null : json["callReceiverID"], notificationForeground: json["notification_foreground"] == null ? null : json["notification_foreground"], message: json["message"] == null ? null : json["message"], title: json["title"] == null ? null : json["title"], @@ -78,7 +78,7 @@ class CallDataModel { Map toJson() => { "callerID": callerId == null ? null : callerId, - "callReciverID": callReciverId == null ? null : callReciverId, + "callReceiverID": callReceiverID == null ? null : callReceiverID, "notification_foreground": notificationForeground == null ? null : notificationForeground, "message": message == null ? null : message, "title": title == null ? null : title, diff --git a/lib/models/chat/get_search_user_chat_model.dart b/lib/models/chat/get_search_user_chat_model.dart index ceee0de..31d1085 100644 --- a/lib/models/chat/get_search_user_chat_model.dart +++ b/lib/models/chat/get_search_user_chat_model.dart @@ -19,21 +19,21 @@ class ChatUserModel { } class ChatUser { - ChatUser({ - this.id, - this.userName, - this.email, - this.phone, - this.title, - this.userStatus, - this.image, - this.unreadMessageCount, - this.userAction, - this.isPin, - this.isFav, - this.isAdmin, - this.isTyping, - }); + ChatUser( + {this.id, + this.userName, + this.email, + this.phone, + this.title, + this.userStatus, + this.image, + this.unreadMessageCount, + this.userAction, + this.isPin, + this.isFav, + this.isAdmin, + this.isTyping, + this.isLoadingCounter}); int? id; String? userName; @@ -48,6 +48,7 @@ class ChatUser { bool? isFav; bool? isAdmin; bool? isTyping; + bool? isLoadingCounter; factory ChatUser.fromJson(Map json) => ChatUser( id: json["id"] == null ? null : json["id"], @@ -63,6 +64,7 @@ class ChatUser { isFav: json["isFav"] == null ? null : json["isFav"], isAdmin: json["isAdmin"] == null ? null : json["isAdmin"], isTyping: false, + isLoadingCounter: true, ); Map toJson() => { diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 4a8e70c..1374608 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -38,13 +38,14 @@ class _ChatDetailScreenState extends State { void getMoreChat() async { if (userDetails != null) { data.paginationVal = data.paginationVal + 10; - if (userDetails != null) + if (userDetails != null) { data.getSingleUserChatHistory( senderUID: AppState().chatDetails!.response!.id!.toInt(), receiverUID: userDetails["targetUser"].id, loadMore: true, isNewChat: false, ); + } } await Future.delayed( const Duration( @@ -76,10 +77,10 @@ class _ChatDetailScreenState extends State { actions: [ IconButton( onPressed: () { - // makeCall( - // callType: "AUDIO", - // con: data.hubConnection, - // ); + makeCall( + callType: "AUDIO", + con: data.hubConnection, + ); }, icon: SvgPicture.asset( "assets/icons/chat/call.svg", @@ -89,10 +90,10 @@ class _ChatDetailScreenState extends State { ), IconButton( onPressed: () { - // makeCall( - // callType: "VIDEO", - // con: data.hubConnection, - // ); + makeCall( + callType: "VIDEO", + con: data.hubConnection, + ); }, icon: SvgPicture.asset( "assets/icons/chat/video_call.svg", @@ -357,38 +358,41 @@ class _ChatDetailScreenState extends State { void makeCall({required String callType, required HubConnection con}) async { print("================== Make call Triggered ============================"); - logger.d(jsonEncode(AppState().chatDetails!.response)); Map json = { "callerID": AppState().chatDetails!.response!.id!.toString(), - "callReciverID": userDetails["targetUser"].id.toString(), + "callReceiverID": userDetails["targetUser"].id.toString(), "notification_foreground": "true", - "message": "Aamir is calling ", + "message": "Aamir is calling", "title": "Video Call", "type": callType == "VIDEO" ? "Video" : "Audio", - "identity": "Aamir.Muhammad", - "name": "Aamir Saleem Ahmad", + "identity": AppState().chatDetails!.response!.userName, + "name": AppState().chatDetails!.response!.title, "is_call": "true", "is_webrtc": "true", - "contant": "Start video Call Aamir.Muhammad", + "contant": "Start video Call ${AppState().chatDetails!.response!.userName}", "contantNo": "775d1f11-62d9-6fcc-91f6-21f8c14559fb", "chatEventId": "3", "fileTypeId": null, - "currentUserId": "266642", + "currentUserId": AppState().chatDetails!.response!.id!.toString(), "chatSource": "1", "userChatHistoryLineRequestList": [ - {"isSeen": false, "isDelivered": false, "targetUserId": 341682, "targetUserStatus": 4} + { + "isSeen": false, + "isDelivered": false, + "targetUserId": userDetails["targetUser"].id, + "targetUserStatus": 4, + } ], // "server": "https://192.168.8.163:8086", "server": "https://livecareturn.hmg.com:8086", }; - - CallDataModel incomingCallData = CallDataModel.fromJson(json); + CallDataModel callData = CallDataModel.fromJson(json); await Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => OutGoingCall( isVideoCall: callType == "VIDEO" ? true : false, - OutGoingCallData: incomingCallData, + OutGoingCallData: callData, ), ), ); diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 816aaec..63523f5 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -135,6 +135,22 @@ class _ChatHomeScreenState extends State { mainAxisAlignment: MainAxisAlignment.end, mainAxisSize: MainAxisSize.max, children: [ + if (m.searchedChats![index].isLoadingCounter!) + Flexible( + child: Container( + padding: EdgeInsets.zero, + alignment: Alignment.centerRight, + width: 18, + height: 18, + decoration: const BoxDecoration( + // color: MyColors.redColor, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: CircularProgressIndicator(), + ), + ), if (m.searchedChats![index].unreadMessageCount! > 0) Flexible( child: Container( @@ -193,7 +209,7 @@ class _ChatHomeScreenState extends State { AppRoutes.chatDetailed, arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, ).then((Object? value) { - // m.GetUserChatHistoryNotDeliveredAsync(userId: int.parse(AppState().chatDetails!.response!.id.toString())); + // m.GetUserChatHistoryNotDeliveredAsync(userId: int.parse(AppState().chatDetails!.response!.id.toString())); m.clearSelections(); m.notifyListeners(); }); From 622404896cf1df7f1e23323476bb7d8f4db76d48 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 21 Nov 2022 16:44:23 +0300 Subject: [PATCH 110/302] Chat Updates & Counter Event Modifications --- lib/ui/chat/chat_detailed_screen.dart | 2 +- lib/ui/chat/chat_home.dart | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 1374608..787582d 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -69,7 +69,7 @@ class _ChatDetailScreenState extends State { } return Scaffold( - backgroundColor: const Color(0xFFF8F8F8), + backgroundColor: MyColors.backgroundColor, appBar: AppBarWidget(context, title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, showHomeButton: false, diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index b2db98a..4286f52 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -36,6 +36,11 @@ class _ChatHomeState extends State { data = Provider.of(context, listen: false); data.getUserAutoLoginToken(context).whenComplete(() { data.getUserRecentChats(); + // GetUserChatHistoryNotDeliveredAsync( + // userId: int.parse( + // AppState().chatDetails!.response!.id.toString(), + // ), + // ); }); } From dc9d1715d9fa70619493fee3b5e32ee8ca1bc8ff Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 21 Nov 2022 16:44:55 +0300 Subject: [PATCH 111/302] Chat Updates & Counter Event Modifications --- lib/ui/chat/chat_home.dart | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 4286f52..b2db98a 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -36,11 +36,6 @@ class _ChatHomeState extends State { data = Provider.of(context, listen: false); data.getUserAutoLoginToken(context).whenComplete(() { data.getUserRecentChats(); - // GetUserChatHistoryNotDeliveredAsync( - // userId: int.parse( - // AppState().chatDetails!.response!.id.toString(), - // ), - // ); }); } From 35a4b780a74d157f87f6594715709d2824de5603 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 21 Nov 2022 17:50:15 +0300 Subject: [PATCH 112/302] Added initial APIs for Marathon --- ios/.gitignore | 5 ++ ios/Runner.xcodeproj/project.pbxproj | 6 +- ios/Runner/Runner.entitlements | 30 +++++++ lib/api/marathon/marathon_api_client.dart | 71 ++++++++++++++++ lib/app_state/app_state.dart | 12 +++ lib/classes/consts.dart | 8 ++ lib/classes/date_uitl.dart | 79 +++++++++++------- .../marathon/marathon_generic_model.dart | 31 +++++++ lib/models/marathon/marathon_model.dart | 83 +++++++++++++++++++ lib/ui/landing/dashboard_screen.dart | 10 ++- lib/ui/login/login_screen.dart | 10 +-- lib/ui/marathon/marathon_intro_screen.dart | 19 +++-- lib/ui/marathon/marathon_provider.dart | 30 +++++++ lib/ui/marathon/widgets/countdown_timer.dart | 2 +- lib/ui/marathon/widgets/marathon_banner.dart | 8 +- .../shimmer/dashboard_shimmer_widget.dart | 47 +++++++++++ 16 files changed, 397 insertions(+), 54 deletions(-) create mode 100644 ios/Runner/Runner.entitlements create mode 100644 lib/api/marathon/marathon_api_client.dart create mode 100644 lib/models/marathon/marathon_generic_model.dart create mode 100644 lib/models/marathon/marathon_model.dart diff --git a/ios/.gitignore b/ios/.gitignore index 151026b..d032e39 100644 --- a/ios/.gitignore +++ b/ios/.gitignore @@ -31,3 +31,8 @@ Runner/GeneratedPluginRegistrant.* !default.mode2v3 !default.pbxuser !default.perspectivev3 + +ios/Podfile +ios/Runner/Runner.entitlements + + diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 9daee21..43841a1 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -383,7 +383,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 3A359E86ZF; + DEVELOPMENT_TEAM = 99Z3UD3LJM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Mohemm; @@ -520,7 +520,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 3A359E86ZF; + DEVELOPMENT_TEAM = 99Z3UD3LJM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Mohemm; @@ -549,7 +549,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 3A359E86ZF; + DEVELOPMENT_TEAM = 99Z3UD3LJM; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = Mohemm; diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements new file mode 100644 index 0000000..304aa00 --- /dev/null +++ b/ios/Runner/Runner.entitlements @@ -0,0 +1,30 @@ + + + + + aps-environment + development + com.apple.developer.icloud-container-identifiers + + iCloud.com.cloudsolutions.mohemm + + com.apple.developer.icloud-services + + CloudDocuments + + com.apple.developer.networking.HotspotConfiguration + + com.apple.developer.networking.networkextension + + com.apple.developer.networking.wifi-info + + com.apple.developer.nfc.readersession.formats + + TAG + + com.apple.developer.ubiquity-container-identifiers + + iCloud.com.cloudsolutions.mohemm + + + diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart new file mode 100644 index 0000000..1b8a435 --- /dev/null +++ b/lib/api/marathon/marathon_api_client.dart @@ -0,0 +1,71 @@ +import 'dart:convert'; + +import 'package:http/http.dart'; +import 'package:mohem_flutter_app/api/api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; +import 'package:mohem_flutter_app/models/marathon/marathon_generic_model.dart'; +import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; + +class MarathonApiClient { + Future getMarathonToken() async { + String employeeUserName = AppState().getUserName ?? ""; + String employeeSession = AppState().postParamsObject?.pSessionId.toString() ?? ""; + + Map jsonObject = {"userName": employeeUserName, "password": employeeSession}; + Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonParticipantLoginUrl, jsonObject); + + var json = jsonDecode(response.body); + + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); + + if (marathonModel.statusCode == 200) { + if (marathonModel.data != null && marathonModel.isSuccessful == true) { + print("bearerToken: ${marathonModel.data["token"]}"); + AppState().setMarathonToken = marathonModel.data["token"] ?? ""; + return marathonModel.data["token"] ?? ""; + } else { + //TODO : DO ERROR HANDLING HERE + return ""; + } + } else { + //TODO : DO ERROR HANDLING HERE + return ""; + } + } + + Future getProjectId() async { + Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonProjectGetUrl, {}, token: AppState().getMarathonToken ?? await getMarathonToken()); + + var json = jsonDecode(response.body); + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); + + if (marathonModel.statusCode == 200) { + if (marathonModel.data != null && marathonModel.isSuccessful == true) { + print("projectID: ${marathonModel.data[0]["id"]}"); + AppState().setMarathonProjectId = marathonModel.data[0]["id"] ?? ""; + return marathonModel.data[0]["id"] ?? ""; + } else { + //TODO : DO ERROR HANDLING HERE + return ""; + } + } else { + //TODO : DO ERROR HANDLING HERE + return ""; + } + } + + Future getMarathonDetails() async { + String payrollString = AppState().postParamsObject?.payrollCodeStr.toString() ?? "CS"; + + Response response = await ApiClient().getJsonForResponse(ApiConsts.marathonUpcomingUrl + payrollString, token: AppState().getMarathonToken ?? await getMarathonToken()); + + var json = jsonDecode(response.body); + + MarathonGenericModel marathonGenericModel = MarathonGenericModel.fromJson(json); + + MarathonDetailModel marathonDetailModel = MarathonDetailModel.fromJson(marathonGenericModel.data); + + return marathonDetailModel; + } +} diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 44de36f..d0a8699 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -51,6 +51,18 @@ class AppState { String? get getMohemmWifiPassword => _mohemmWifiPassword; + String? _marathonToken ; + + set setMarathonToken(String token) => _marathonToken = token; + + String? get getMarathonToken => _marathonToken; + + String? _projectID ; + + set setMarathonProjectId(String token) => _projectID = token; + + String? get getMarathonProjectId => _projectID; + final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 5.0, mobileType: Platform.isAndroid ? "android" : "ios"); void setPostParamsInitConfig() { diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index e82c30a..bcf5add 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -16,9 +16,17 @@ class ApiConsts { static String chatSearchMember = "user/getUserWithStatusAndFavAsync/"; static String chatRecentUrl = "UserChatHistory/getchathistorybyuserid"; //For a Mem static String chatSingleUserHistoryUrl = "UserChatHistory/GetUserChatHistory"; + // 42062 is CurrentUserID and 36745 is targetUserID and 0 is For Pagination // static String chatSearchMember = "https://apiderichat.hmg.com/api/user/getUserWithStatusAndFavAsync/aamir.muhammad/36239"; +//Brain Marathon Constants + + static String marathonBaseUrl = "https://18.188.181.12/service/"; + static String marathonParticipantLoginUrl = marathonBaseUrl + "api/auth/participantlogin"; + static String marathonProjectGetUrl = marathonBaseUrl + "api/Project/Project_Get"; + static String marathonUpcomingUrl = marathonBaseUrl + "api/marathon/upcoming/"; + static String marathonHubConnectionUrl = "MarathonBroadCast"; } class SharedPrefsConsts { diff --git a/lib/classes/date_uitl.dart b/lib/classes/date_uitl.dart index 73945f8..44b85c3 100644 --- a/lib/classes/date_uitl.dart +++ b/lib/classes/date_uitl.dart @@ -3,6 +3,26 @@ import 'package:intl/intl.dart'; class DateUtil { /// convert String To Date function /// [date] String we want to convert + /// + /// + + + static DateTime convertStringToDateMarathon(String date) { + // /Date(1585774800000+0300)/ + if (date != null) { + const start = "/Date("; + const end = "+0300)"; + int startIndex = date.indexOf(start); + int endIndex = date.indexOf(end, startIndex + start.length); + return DateTime.fromMillisecondsSinceEpoch( + int.parse( + date.substring(startIndex + start.length, endIndex), + ), + ); + } else + return DateTime.now(); + } + static DateTime convertStringToDate(String date) { // /Date(1585774800000+0300)/ if (date != null) { @@ -55,8 +75,9 @@ class DateUtil { } return DateTime.now(); - } else + } else { return DateTime.now(); + } } static String convertDateToString(DateTime date) { @@ -94,7 +115,7 @@ class DateUtil { } static String convertDateMSToJsonDate(utc) { - var dt = new DateTime.fromMicrosecondsSinceEpoch(utc); + var dt = DateTime.fromMicrosecondsSinceEpoch(utc); return "/Date(" + (dt.millisecondsSinceEpoch * 1000).toString() + '+0300' + ")/"; } @@ -392,7 +413,7 @@ class DateUtil { /// get data formatted like 10:30 according to lang static String formatDateToTimeLang(DateTime date, bool isArabic) { - return DateFormat('HH:mm', isArabic ? "ar_SA" : "en_US").format(date); + return DateFormat('HH:mm a', isArabic ? "ar_SA" : "en_US").format(date); } /// get data formatted like 26/4/2020 10:30 @@ -431,30 +452,30 @@ class DateUtil { return "/Date(" + DateFormat('mm-dd-yyy').parse(isoDate).millisecondsSinceEpoch.toString() + ")/"; } - // static String getDay(DayOfWeek dayOfWeek) { - // switch (dayOfWeek) { - // case DayOfWeek.Monday: - // return "Monday"; - // break; - // case DayOfWeek.Tuesday: - // return "Tuesday"; - // break; - // case DayOfWeek.Wednesday: - // return "Wednesday"; - // break; - // case DayOfWeek.Thursday: - // return "Thursday"; - // break; - // case DayOfWeek.Friday: - // return "Friday"; - // break; - // case DayOfWeek.Saturday: - // return "Saturday"; - // break; - // case DayOfWeek.Sunday: - // return "Sunday"; - // break; - // } - // return ""; - // } +// static String getDay(DayOfWeek dayOfWeek) { +// switch (dayOfWeek) { +// case DayOfWeek.Monday: +// return "Monday"; +// break; +// case DayOfWeek.Tuesday: +// return "Tuesday"; +// break; +// case DayOfWeek.Wednesday: +// return "Wednesday"; +// break; +// case DayOfWeek.Thursday: +// return "Thursday"; +// break; +// case DayOfWeek.Friday: +// return "Friday"; +// break; +// case DayOfWeek.Saturday: +// return "Saturday"; +// break; +// case DayOfWeek.Sunday: +// return "Sunday"; +// break; +// } +// return ""; +// } } diff --git a/lib/models/marathon/marathon_generic_model.dart b/lib/models/marathon/marathon_generic_model.dart new file mode 100644 index 0000000..d0a0d52 --- /dev/null +++ b/lib/models/marathon/marathon_generic_model.dart @@ -0,0 +1,31 @@ +class MarathonGenericModel { + MarathonGenericModel({ + this.data, + this.isSuccessful, + this.message, + this.statusCode, + this.errors, + }); + + dynamic data; + bool? isSuccessful; + String? message; + int? statusCode; + dynamic errors; + + factory MarathonGenericModel.fromJson(Map json) => MarathonGenericModel( + data: json["data"], + isSuccessful: json["isSuccessful"], + message: json["message"], + statusCode: json["statusCode"], + errors: json["errors"], + ); + + Map toJson() => { + "data": data, + "isSuccessful": isSuccessful, + "message": message, + "statusCode": statusCode, + "errors": errors, + }; +} diff --git a/lib/models/marathon/marathon_model.dart b/lib/models/marathon/marathon_model.dart new file mode 100644 index 0000000..e2f5e4d --- /dev/null +++ b/lib/models/marathon/marathon_model.dart @@ -0,0 +1,83 @@ +class MarathonDetailModel { + String? id; + String? titleEn; + String? titleAr; + String? descEn; + String? descAr; + int? winDeciderTime; + int? winnersCount; + int? questGapTime; + String? startTime; + String? endTime; + int? marathoneStatusId; + String? scheduleTime; + int? selectedLanguage; + List? projects; + List? sponsors; + List? questions; + + MarathonDetailModel( + {id, + titleEn, + titleAr, + descEn, + descAr, + winDeciderTime, + winnersCount, + questGapTime, + startTime, + endTime, + marathoneStatusId, + scheduleTime, + selectedLanguage, + projects, + sponsors, + questions}); + + MarathonDetailModel.fromJson(Map json) { + id = json['id']; + titleEn = json['titleEn']; + titleAr = json['titleAr']; + descEn = json['descEn']; + descAr = json['descAr']; + winDeciderTime = json['winDeciderTime']; + winnersCount = json['winnersCount']; + questGapTime = json['questGapTime']; + startTime = json['startTime']; + endTime = json['endTime']; + marathoneStatusId = json['marathoneStatusId']; + scheduleTime = json['scheduleTime']; + selectedLanguage = json['selectedLanguage']; + projects = json['projects']; + sponsors = json['sponsors']; + if (json['questions'] != null) { + questions = []; + json['questions'].forEach((v) { + // questions!.add( Null.fromJson(v)); + }); + } + } + + Map toJson() { + Map data = new Map(); + data['id'] = id; + data['titleEn'] = titleEn; + data['titleAr'] = titleAr; + data['descEn'] = descEn; + data['descAr'] = descAr; + data['winDeciderTime'] = winDeciderTime; + data['winnersCount'] = winnersCount; + data['questGapTime'] = questGapTime; + data['startTime'] = startTime; + data['endTime'] = endTime; + data['marathoneStatusId'] = marathoneStatusId; + data['scheduleTime'] = scheduleTime; + data['selectedLanguage'] = selectedLanguage; + data['projects'] = projects; + data['sponsors'] = sponsors; + if (questions != null) { + data['questions'] = questions!.map((v) => v.toJson()).toList(); + } + return data; + } +} diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index d342072..c0e82f4 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -18,6 +18,7 @@ import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; import 'package:mohem_flutter_app/ui/landing/widget/menus_widget.dart'; import 'package:mohem_flutter_app/ui/landing/widget/services_widget.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_banner.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/mark_attendance_widget.dart'; @@ -37,6 +38,7 @@ class DashboardScreen extends StatefulWidget { class _DashboardScreenState extends State { late DashboardProviderModel data; + late MarathonProvider marathonProvider; final GlobalKey _scaffoldState = GlobalKey(); final RefreshController _refreshController = RefreshController(initialRefresh: false); @@ -48,6 +50,7 @@ class _DashboardScreenState extends State { super.initState(); scheduleMicrotask(() { data = Provider.of(context, listen: false); + marathonProvider = Provider.of(context, listen: false); _onRefresh(); }); } @@ -71,6 +74,7 @@ class _DashboardScreenState extends State { data.fetchLeaveTicketBalance(context, DateTime.now()); data.fetchMenuEntries(); data.getCategoryOffersListAPI(context); + marathonProvider.getMarathonDetailsFromApi(); _refreshController.refreshCompleted(); } @@ -268,7 +272,7 @@ class _DashboardScreenState extends State { ).onPress(() { showMyBottomSheet( context, - callBackFunc: (){}, + callBackFunc: () {}, child: MarkAttendanceWidget(model, isFromDashboard: true), ); }), @@ -295,8 +299,8 @@ class _DashboardScreenState extends State { ], ), ], - ).paddingOnly(left: 21, right: 21, top: 7), - MarathonBanner().paddingAll(20), + ).paddingOnly(left: 21, right: 21, top : 7), + context.watch().isLoading ? MarathonBannerShimmer().paddingAll(20) : MarathonBanner().paddingAll(20), ServicesWidget(), // 8.height, Container( diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 0c4e268..c62a7a1 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -142,11 +142,11 @@ class _LoginScreenState extends State { isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool; if (!kReleaseMode) { // username.text = "15444"; // Maha User - // username.text = "15153"; // Tamer User - // password.text = "Abcd@12345"; - - username.text = "210038"; // Hashim User - password.text = "123"; + username.text = "15153"; // Tamer User + password.text = "Abcd@12345"; + // + // username.text = "210038"; // Hashim User + // password.text = "123"; } if (isAppOpenBySystem!) checkFirebaseToken(); } diff --git a/lib/ui/marathon/marathon_intro_screen.dart b/lib/ui/marathon/marathon_intro_screen.dart index f836229..0f655ab 100644 --- a/lib/ui/marathon/marathon_intro_screen.dart +++ b/lib/ui/marathon/marathon_intro_screen.dart @@ -1,7 +1,9 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:lottie/lottie.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -15,8 +17,6 @@ import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:provider/provider.dart'; -final int dummyEndTime = DateTime.now().millisecondsSinceEpoch + 1000 * 30; - class MarathonIntroScreen extends StatelessWidget { const MarathonIntroScreen({Key? key}) : super(key: key); @@ -33,7 +33,7 @@ class MarathonIntroScreen extends StatelessWidget { MarathonDetailsCard(provider: provider).paddingAll(15), MarathonTimerCard( provider: provider, - timeToMarathon: dummyEndTime, + timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, ).paddingOnly(left: 15, right: 15, bottom: 15), const SizedBox( height: 100, @@ -70,11 +70,11 @@ class MarathonDetailsCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.contestTopicAbout.tr().toText16(color: MyColors.grey77Color), - "Saudi Arabia".toText20(color: MyColors.textMixColor, isBold: true), + "${AppState().isArabic(context) ? provider.marathonDetailModel.titleAr : provider.marathonDetailModel.titleEn}".toText20(color: MyColors.textMixColor, isBold: true), Row( children: [ Flexible( - child: "Nam suscipit turpis in pharetra euismsdef. Duis rutrum at nulla id aliquam".toText14(color: MyColors.grey77Color), + child: "${AppState().isArabic(context) ? provider.marathonDetailModel.descAr : provider.marathonDetailModel.descEn}".toText14(color: MyColors.grey77Color), ) ], ), @@ -123,6 +123,7 @@ class MarathonTimerCard extends StatelessWidget { required this.timeToMarathon, }) : super(key: key); + @override Widget build(BuildContext context) { return Container( @@ -133,14 +134,14 @@ class MarathonTimerCard extends StatelessWidget { children: [ Row( children: [ - LocaleKeys.gameDate.tr().toText16(color: MyColors.grey77Color), - " 10 Oct, 2022".toText16(color: MyColors.darkTextColor, isBold: true), + "${LocaleKeys.gameDate.tr()} ".toText16(color: MyColors.grey77Color), + DateUtil.getMonthDayYearDateFormatted(DateTime.parse(provider.marathonDetailModel.startTime!)).toText16(color: MyColors.darkTextColor, isBold: true), ], ), Row( children: [ - LocaleKeys.gameTime.tr().toText16(color: MyColors.grey77Color), - " 3:00pm".toText16(color: MyColors.darkTextColor, isBold: true), + "${LocaleKeys.gameTime.tr()} ".toText16(color: MyColors.grey77Color), + DateUtil.formatDateToTimeLang(DateTime.parse(provider.marathonDetailModel.startTime!), AppState().isArabic(context)).toText16(color: MyColors.darkTextColor, isBold: true), ], ), Lottie.asset( diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 5a03b74..25642ee 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -3,10 +3,23 @@ import 'dart:async'; import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class MarathonProvider extends ChangeNotifier { + bool _isLoading = false; + + bool get isLoading => _isLoading; + + set isLoading(bool value) { + _isLoading = value; + notifyListeners(); + } + + MarathonDetailModel marathonDetailModel = MarathonDetailModel(); + final AppinioSwiperController swiperController = AppinioSwiperController(); bool _itsMarathonTime = false; @@ -98,4 +111,21 @@ class MarathonProvider extends ChangeNotifier { timerU.cancel(); notifyListeners(); } + + Future getMarathonDetailsFromApi() async { + isLoading = true; + + await MarathonApiClient().getMarathonToken().whenComplete(() async { + print("loading before : $isLoading"); + + marathonDetailModel = await MarathonApiClient().getMarathonDetails(); + isLoading = false; + print("loading after: $isLoading"); + + notifyListeners(); + + }); + + + } } diff --git a/lib/ui/marathon/widgets/countdown_timer.dart b/lib/ui/marathon/widgets/countdown_timer.dart index 6ab8dba..0a2936e 100644 --- a/lib/ui/marathon/widgets/countdown_timer.dart +++ b/lib/ui/marathon/widgets/countdown_timer.dart @@ -29,7 +29,7 @@ class BuildCountdownTimer extends StatelessWidget { ); final TextStyle styleDigitHome = const TextStyle( - height: 23 / 27, + height: 22 / 27, color: MyColors.white, fontStyle: FontStyle.italic, letterSpacing: -1.44, diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 5da5ed2..ee1c087 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -1,3 +1,5 @@ +import 'dart:math' as math; + import 'package:auto_size_text/auto_size_text.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -9,11 +11,9 @@ import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/ui/marathon/marathon_intro_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; import 'package:provider/provider.dart'; -import 'dart:math' as math; class MarathonBanner extends StatelessWidget { const MarathonBanner({Key? key}) : super(key: key); @@ -88,7 +88,7 @@ class MarathonBanner extends StatelessWidget { ), ), AutoSizeText( - "Saudi Arabia", + AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", style: TextStyle( fontStyle: FontStyle.italic, fontSize: 19, @@ -99,7 +99,7 @@ class MarathonBanner extends StatelessWidget { ), 3.height, BuildCountdownTimer( - timeToMarathon: dummyEndTime, + timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, provider: provider, screenFlag: 0, ), diff --git a/lib/widgets/shimmer/dashboard_shimmer_widget.dart b/lib/widgets/shimmer/dashboard_shimmer_widget.dart index 369b808..6fe5a03 100644 --- a/lib/widgets/shimmer/dashboard_shimmer_widget.dart +++ b/lib/widgets/shimmer/dashboard_shimmer_widget.dart @@ -188,6 +188,53 @@ class ServicesMenuShimmer extends StatelessWidget { } } + +class MarathonBannerShimmer extends StatelessWidget { + const MarathonBannerShimmer({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(15), + boxShadow: [ + BoxShadow( + color: const Color(0xff000000).withOpacity(.05), + blurRadius: 26, + offset: const Offset(0, -3), + ), + ], + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SvgPicture.asset("assets/images/monthly_attendance.svg").toShimmer(), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + "Attendan".toText11(isBold: false).toShimmer(), + 5.height, + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: LocaleKeys.attendance.tr().toText11(isBold: false).toShimmer(), + ), + 6.width, + SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4).toShimmer() + ], + ), + ], + ) + ], + ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12), + ); + } +} + class ChatHomeShimmer extends StatelessWidget { @override Widget build(BuildContext context) { From eb7e5a4837db77c29e3ebab6e7db435a92583734 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 22 Nov 2022 12:28:17 +0300 Subject: [PATCH 113/302] Chat Updates & Stability --- lib/api/chat/chat_api_client.dart | 103 ++++++++ lib/main.dart | 2 +- .../chat_provider_model.dart | 240 +++++------------- lib/provider/dashboard_provider_model.dart | 15 ++ lib/ui/chat/chat_detailed_screen.dart | 7 +- lib/ui/chat/chat_home.dart | 9 +- lib/ui/chat/chat_home_screen.dart | 44 ++-- lib/ui/chat/favorite_users_screen.dart | 2 +- lib/ui/landing/dashboard_screen.dart | 31 +++ .../search_employee_bottom_sheet.dart | 10 +- 10 files changed, 247 insertions(+), 216 deletions(-) create mode 100644 lib/api/chat/chat_api_client.dart rename lib/{api/chat => provider}/chat_provider_model.dart (73%) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart new file mode 100644 index 0000000..0d1653d --- /dev/null +++ b/lib/api/chat/chat_api_client.dart @@ -0,0 +1,103 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:http/http.dart'; +import 'package:mohem_flutter_app/api/api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; +import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; +import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as user; +import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; + +class ChatApiClient { + static final ChatApiClient _instance = ChatApiClient._internal(); + + ChatApiClient._internal(); + + factory ChatApiClient() => _instance; + + Future getUserLoginToken() async { + Response response = await ApiClient().postJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", + { + "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(), + "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG", + }, + ); + user.UserAutoLoginModel userLoginResponse = user.userAutoLoginModelFromJson( + response.body, + ); + return userLoginResponse; + } + + Future?> getChatMemberFromSearch(String sName, int cUserId) async { + Response response = await ApiClient().getJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSearchMember}$sName/$cUserId", + token: AppState().chatDetails!.response!.token, + ); + return searchUserJsonModel(response.body); + } + + List searchUserJsonModel(String str) => List.from( + json.decode(str).map((x) => ChatUser.fromJson(x)), + ); + + Future getRecentChats() async { + Response response = await ApiClient().getJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatRecentUrl}", + token: AppState().chatDetails!.response!.token, + ); + return ChatUserModel.fromJson( + json.decode(response.body), + ); + } + + Future getFavUsers() async { + Response favRes = await ApiClient().getJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatFavoriteUsers}${AppState().chatDetails!.response!.id}", + token: AppState().chatDetails!.response!.token, + ); + return ChatUserModel.fromJson( + json.decode(favRes.body), + ); + } + + Future getSingleUserChatHistory({required int senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false, required int paginationVal}) async { + Response response = await ApiClient().getJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal", + token: AppState().chatDetails!.response!.token, + ); + return response; + } + + Future favUser({required int userID, required int targetUserID}) async { + Response response = await ApiClient().postJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}FavUser/addFavUser", + { + "targetUserId": targetUserID, + "userId": userID, + }, + token: AppState().chatDetails!.response!.token); + fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); + return favoriteChatUser; + } + + Future unFavUser({required int userID, required int targetUserID}) async { + Response response = await ApiClient().postJsonForResponse( + "${ApiConsts.chatServerBaseApiUrl}FavUser/deleteFavUser", + {"targetUserId": targetUserID, "userId": userID}, + token: AppState().chatDetails!.response!.token, + ); + fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); + return favoriteChatUser; + } + + Future uploadMedia(String userId, File file) async { + dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatMediaImageUploadUrl}')); + request.fields.addAll({'userId': userId, 'fileSource': '1'}); + request.files.add(await MultipartFile.fromPath('files', file.path)); + request.headers.addAll({'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}'}); + StreamedResponse response = await request.send(); + return response; + } +} diff --git a/lib/main.dart b/lib/main.dart index a2ae0ae..4d686b8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; -import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/codegen_loader.g.dart'; diff --git a/lib/api/chat/chat_provider_model.dart b/lib/provider/chat_provider_model.dart similarity index 73% rename from lib/api/chat/chat_provider_model.dart rename to lib/provider/chat_provider_model.dart index a019294..01eb0ad 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1,21 +1,21 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; -import 'package:logger/logger.dart' as L; import 'package:logging/logging.dart'; -import 'package:mohem_flutter_app/api/api_client.dart'; +import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as login; import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; +import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/image_picker.dart'; import 'package:signalr_netcore/signalr_client.dart'; import 'package:uuid/uuid.dart'; @@ -26,9 +26,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { TextEditingController search = TextEditingController(); List userChatHistory = []; List? pChatHistory, searchedChats; - late HubConnection hubConnection; - L.Logger logger = L.Logger(); - bool hubConInitialized = false; String chatCID = ''; bool isLoading = true; bool isChatScreenActive = false; @@ -40,56 +37,20 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List favUsersList = []; int paginationVal = 0; - Future getUserAutoLoginToken(BuildContext cxt) async { - Response response = await ApiClient().postJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", - { - "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(), - "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG", - }, - ); - login.UserAutoLoginModel userLoginResponse = login.userAutoLoginModelFromJson( - response.body, - ); - - if (userLoginResponse.response != null) { - hubConInitialized = true; - AppState().setchatUserDetails = userLoginResponse; - await buildHubConnection(); - } else { - Utils.showToast( - userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", - ); - return; - } - } - - Future?> getChatMemberFromSearch(String sName, int cUserId) async { - Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSearchMember}$sName/$cUserId", - token: AppState().chatDetails!.response!.token, - ); - return searchUserJsonModel(response.body); + void registerEvents() { + hubConnection.on("OnUpdateUserStatusAsync", changeStatus); + hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); + // hubConnection.on("OnSeenChatUserAsync", onChatSeen); + //hubConnection.on("OnUserTypingAsync", onUserTyping); + hubConnection.on("OnUserCountAsync", userCountAsync); + hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); + hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); + hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); } - List searchUserJsonModel(String str) => List.from( - json.decode(str).map( - (x) => ChatUser.fromJson(x), - ), - ); - void getUserRecentChats() async { - Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatRecentUrl}", - token: AppState().chatDetails!.response!.token, - ); - ChatUserModel recentChat = userToList(response.body); - - Response favRes = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatFavoriteUsers}${AppState().chatDetails!.response!.id}", - token: AppState().chatDetails!.response!.token, - ); - ChatUserModel favUList = userToList(favRes.body); + ChatUserModel recentChat = await ChatApiClient().getRecentChats(); + ChatUserModel favUList = await ChatApiClient().getFavUsers(); if (favUList.response != null && recentChat.response != null) { favUsersList = favUList.response!; @@ -108,14 +69,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } pChatHistory = recentChat.response ?? []; pChatHistory!.sort( - (ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo( - b.userName!.toLowerCase(), - ), + (ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase()), ); - searchedChats = pChatHistory; isLoading = false; - getUserChatHistoryNotDeliveredAsync( + await getUserChatHistoryNotDeliveredAsync( userId: int.parse( AppState().chatDetails!.response!.id.toString(), ), @@ -124,14 +82,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future getUserChatHistoryNotDeliveredAsync({required int userId}) async { - await hubConnection.invoke( - "GetUserChatHistoryNotDeliveredAsync", - args: [userId], - ).onError( - (Error error, StackTrace stackTrace) => { - logger.d(error), - }, - ); + // try { + await hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [userId]); + // } finally { + // hubConnection.off("OnGetUserChatHistoryNotDeliveredAsync", method: chatNotDelivered); + // } + return ""; } @@ -140,9 +96,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (isNewChat) userChatHistory = []; if (!loadMore) paginationVal = 0; isChatScreenActive = true; - Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal", - token: AppState().chatDetails!.response!.token, + Response response = await ChatApiClient().getSingleUserChatHistory( + senderUID: senderUID, + receiverUID: receiverUID, + loadMore: loadMore, + paginationVal: paginationVal, ); if (response.statusCode == 204) { if (isNewChat) { @@ -165,9 +123,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ).reversed.toList(); } } - await getUserChatHistoryNotDeliveredAsync( - userId: senderUID, - ); isLoading = false; notifyListeners(); markRead( @@ -184,16 +139,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void markRead(List data, reciverID) { for (SingleUserChatModel element in data!) { - if (!element.isSeen!) { - dynamic data = [ - { - "userChatHistoryId": element.userChatHistoryId, - "TargetUserId": element.targetUserId, - "isDelivered": true, - "isSeen": true, - } - ]; - updateUserChatHistoryStatusAsync(data); + if (element.isSeen != null) { + if (!element.isSeen!) { + dynamic data = [ + { + "userChatHistoryId": element.userChatHistoryId, + "TargetUserId": element.targetUserId, + "isDelivered": true, + "isSeen": true, + } + ]; + updateUserChatHistoryStatusAsync(data); + } } } for (ChatUser element in searchedChats!) { @@ -217,34 +174,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ), ); - ChatUserModel userToList(String str) => ChatUserModel.fromJson( - json.decode(str), - ); - Future uploadAttachments(String userId, File file) async { dynamic result; - dynamic request = MultipartRequest( - 'POST', - Uri.parse( - '${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatMediaImageUploadUrl}', - ), - ); - request.fields.addAll( - {'userId': userId, 'fileSource': '1'}, - ); - request.files.add( - await MultipartFile.fromPath( - 'files', - file.path, - ), - ); - request.headers.addAll( - { - 'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}', - }, - ); try { - StreamedResponse response = await request.send(); + StreamedResponse response = await ChatApiClient().uploadMedia(userId, file); if (response.statusCode == 200) { result = jsonDecode( await response.stream.bytesToString(), @@ -253,60 +186,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { result = []; } } catch (e) { - if (kDebugMode) { - print(e); - } + print(e); } ; return result; } - Future buildHubConnection() async { - HttpConnectionOptions httpOp = HttpConnectionOptions( - skipNegotiation: false, - logMessageContent: true, - ); - hubConnection = HubConnectionBuilder() - .withUrl( - ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", - options: httpOp, - ) - .withAutomaticReconnect( - retryDelays: [ - 2000, - 5000, - 10000, - 20000, - ], - ) - .configureLogging( - Logger("Loggin"), - ) - .build(); - hubConnection.onclose( - ({Exception? error}) {}, - ); - hubConnection.onreconnecting( - ({Exception? error}) {}, - ); - hubConnection.onreconnected( - ({String? connectionId}) {}, - ); - if (hubConnection.state != HubConnectionState.Connected) { - await hubConnection.start(); - print("Connnnnn Stablished"); - hubConnection.on("OnUpdateUserStatusAsync", changeStatus); - hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - // hubConnection.on("OnSeenChatUserAsync", onChatSeen); - - //hubConnection.on("OnUserTypingAsync", onUserTyping); - hubConnection.on("OnUserCountAsync", userCountAsync); - hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); - hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); - hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); - } - } - void updateUserChatStatus(List? args) { dynamic items = args!.toList(); for (dynamic cItem in items[0]) { @@ -359,6 +244,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void chatNotDelivered(List? args) { dynamic items = args!.toList(); + logger.d(items); for (dynamic item in items[0]) { searchedChats!.forEach( (ChatUser element) { @@ -374,11 +260,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void changeStatus(List? args) { - if (kDebugMode) { - // print("================= Status Online // Offline ===================="); - } dynamic items = args!.toList(); - // logger.d(items); for (ChatUser user in searchedChats!) { if (user.id == items.first["id"]) { user.userStatus = items.first["userStatus"]; @@ -413,14 +295,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { data.first.currentUserId = temp.first.targetUserId; data.first.currentUserName = temp.first.targetUserName; } + logger.d(jsonEncode(data)); userChatHistory.insert(0, data.first); - // searchedChats!.forEach((element) { - // if (element.id == data.first.currentUserId) { - // var val = element.unreadMessageCount == null ? 0 : element.unreadMessageCount; - // element.unreadMessageCount = val! + 1; - // } - // }); - var list = [ { "userChatHistoryId": data.first.userChatHistoryId, @@ -430,14 +306,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } ]; updateUserChatHistoryStatusAsync(list); - notifyListeners(); - // if (isChatScreenActive) scrollToBottom(); } void onUserTyping(List? parameters) { - // print("==================== Typing Active =================="); - // logger.d(parameters); for (ChatUser user in searchedChats!) { if (user.id == parameters![1] && parameters[0] == true) { user.isTyping = parameters[0] as bool?; @@ -572,7 +444,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } if (!isFileSelected && !isMsgReply) { - logger.d("Normal Text Message"); if (message.text == null || message.text.isEmpty) { return; } @@ -580,14 +451,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } if (isFileSelected && !isMsgReply) { Utils.showLoading(context); - //logger.d("Normal Attachment Message"); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); Utils.hideLoading(context); sendChatToServer(chatEventId: 2, fileTypeId: getFileType(ext.toString()), targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: true, chatReplyId: null, isReply: false); } if (!isFileSelected && isMsgReply) { - // logger.d("Normal Text Message With Reply"); if (message.text == null || message.text.isEmpty) { return; } @@ -595,7 +464,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, chatReplyId: repliedMsg.first.userChatHistoryId, isAttachment: false, isReply: true); } if (isFileSelected && isMsgReply) { - // logger.d("Attachment Message With Reply"); Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); @@ -708,9 +576,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future favoriteUser({required int userID, required int targetUserID}) async { - Response response = - await ApiClient().postJsonForResponse("${ApiConsts.chatServerBaseApiUrl}FavUser/addFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token); - fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); + fav.FavoriteChatUser favoriteChatUser = await ChatApiClient().favUser(userID: userID, targetUserID: targetUserID); if (favoriteChatUser.response != null) { for (ChatUser user in searchedChats!) { if (user.id == favoriteChatUser.response!.targetUserId!) { @@ -723,16 +589,16 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future unFavoriteUser({required int userID, required int targetUserID}) async { - Response response = await ApiClient() - .postJsonForResponse("${ApiConsts.chatServerBaseApiUrl}FavUser/deleteFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token); - fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); + fav.FavoriteChatUser favoriteChatUser = await ChatApiClient().unFavUser(userID: userID, targetUserID: targetUserID); if (favoriteChatUser.response != null) { - for (var user in searchedChats!) { + for (ChatUser user in searchedChats!) { if (user.id == favoriteChatUser.response!.targetUserId!) { user.isFav = favoriteChatUser.response!.isFav; } } - favUsersList.removeWhere((ChatUser element) => element.id == targetUserID); + favUsersList.removeWhere( + (ChatUser element) => element.id == targetUserID, + ); } notifyListeners(); } @@ -784,4 +650,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { curve: Curves.easeIn, ); } + +// void getUserChatHistoryNotDeliveredAsync({required int userId}) async { +// try { +// await hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [userId]); +// } finally { +// hubConnection.off("GetUserChatHistoryNotDeliveredAsync", method: chatNotDelivered); +// } +// } } diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index 948e5b4..e0c90c9 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -1,13 +1,16 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/api/offers_and_discounts_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/chat_count_conversation_model.dart'; +import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart'; import 'package:mohem_flutter_app/models/dashboard/drawer_menu_item_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; @@ -287,6 +290,18 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } + Future getUserAutoLoginToken() async { + logger.d("Token Generated On Home"); + UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); + if (userLoginResponse.response != null) { + AppState().setchatUserDetails = userLoginResponse; + } else { + Utils.showToast( + userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", + ); + } + } + void notify() { notifyListeners(); } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 787582d..a3cf2e9 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -4,7 +4,7 @@ import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -15,6 +15,7 @@ import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/call.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; +import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; @@ -79,7 +80,7 @@ class _ChatDetailScreenState extends State { onPressed: () { makeCall( callType: "AUDIO", - con: data.hubConnection, + con: hubConnection, ); }, icon: SvgPicture.asset( @@ -92,7 +93,7 @@ class _ChatDetailScreenState extends State { onPressed: () { makeCall( callType: "VIDEO", - con: data.hubConnection, + con: hubConnection, ); }, icon: SvgPicture.asset( diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index b2db98a..3ad9b12 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -31,21 +31,14 @@ class _ChatHomeState extends State { @override void initState() { - // TODO: implement initState super.initState(); data = Provider.of(context, listen: false); - data.getUserAutoLoginToken(context).whenComplete(() { - data.getUserRecentChats(); - }); } @override void dispose() { super.dispose(); data.clearAll(); - if (data.hubConInitialized) { - data.hubConnection.stop(); - } } @override diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 63523f5..a6f91b8 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -21,6 +21,16 @@ class ChatHomeScreen extends StatefulWidget { class _ChatHomeScreenState extends State { TextEditingController search = TextEditingController(); + late ChatProviderModel data; + + @override + void initState() { + // TODO: implement initState + super.initState(); + data = Provider.of(context, listen: false); + data.registerEvents(); + data.getUserRecentChats(); + } @override void dispose() { @@ -135,22 +145,22 @@ class _ChatHomeScreenState extends State { mainAxisAlignment: MainAxisAlignment.end, mainAxisSize: MainAxisSize.max, children: [ - if (m.searchedChats![index].isLoadingCounter!) - Flexible( - child: Container( - padding: EdgeInsets.zero, - alignment: Alignment.centerRight, - width: 18, - height: 18, - decoration: const BoxDecoration( - // color: MyColors.redColor, - borderRadius: BorderRadius.all( - Radius.circular(20), - ), - ), - child: CircularProgressIndicator(), - ), - ), + // if (m.searchedChats![index].isLoadingCounter!) + // Flexible( + // child: Container( + // padding: EdgeInsets.zero, + // alignment: Alignment.centerRight, + // width: 18, + // height: 18, + // decoration: const BoxDecoration( + // // color: MyColors.redColor, + // borderRadius: BorderRadius.all( + // Radius.circular(20), + // ), + // ), + // child: CircularProgressIndicator(), + // ), + // ), if (m.searchedChats![index].unreadMessageCount! > 0) Flexible( child: Container( diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 7ef0f84..8f303cd 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -1,7 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 130c75b..52b5ade 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -7,6 +7,7 @@ import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -26,6 +27,9 @@ import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart' import 'package:mohem_flutter_app/widgets/shimmer/offers_shimmer_widget.dart'; import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; +import 'package:signalr_netcore/signalr_client.dart'; + +late HubConnection hubConnection; class DashboardScreen extends StatefulWidget { DashboardScreen({Key? key}) : super(key: key); @@ -49,13 +53,40 @@ class _DashboardScreenState extends State { super.initState(); scheduleMicrotask(() { data = Provider.of(context, listen: false); + data.getUserAutoLoginToken().whenComplete(() { + buildHubConnection(); + }); + _onRefresh(); }); } + Future buildHubConnection() async { + logger.d("Connnnnn Statred"); + HttpConnectionOptions httpOp = HttpConnectionOptions( + skipNegotiation: false, + logMessageContent: true, + ); + hubConnection = HubConnectionBuilder() + .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) + .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); + hubConnection.onclose(({Exception? error}) { + logger.d("Con Closedddddd"); + }); + hubConnection.onreconnecting(({Exception? error}) {}); + hubConnection.onreconnected(({String? connectionId}) {}); + + if (hubConnection.state != HubConnectionState.Connected) { + await hubConnection.start(); + } + + + } + @override void dispose() { super.dispose(); + hubConnection.stop(); } void _onRefresh() async { diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index b88b96f..32b501c 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -5,7 +5,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/api/chat/chat_provider_model.dart'; +import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; @@ -88,7 +88,12 @@ class _SearchEmployeeBottomSheetState extends State { void fetchChatUser({bool isNeedLoading = true}) async { try { Utils.showLoading(context); - chatUsersList = await ChatProviderModel().getChatMemberFromSearch(searchText, int.parse(AppState().chatDetails!.response!.id.toString())); + chatUsersList = await ChatApiClient().getChatMemberFromSearch( + searchText, + int.parse( + AppState().chatDetails!.response!.id.toString(), + ), + ); Utils.hideLoading(context); setState(() {}); } catch (e) { @@ -236,7 +241,6 @@ class _SearchEmployeeBottomSheetState extends State { arguments: {"targetUser": chatUsersList![index], "isNewChat": true}, ); }, - ), ); }, From 68ebecf98ab9f2effaf7b097257d5a7c0175cfa2 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 22 Nov 2022 12:49:42 +0300 Subject: [PATCH 114/302] Chat Updates & Stability --- lib/provider/dashboard_provider_model.dart | 14 ++++++++++++ lib/ui/landing/dashboard_screen.dart | 26 +++++----------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index e0c90c9..b785293 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -5,6 +5,7 @@ import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/api/offers_and_discounts_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; @@ -24,6 +25,7 @@ import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; +import 'package:signalr_netcore/signalr_client.dart'; /// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool // ignore: prefer_mixin @@ -40,6 +42,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { //Chat bool isChatCounterLoding = true; + bool isChatHubLoding = true; int chatUConvCounter = 0; //Misssing Swipe @@ -100,6 +103,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { leaveBalanceAccrual = null; isChatCounterLoding = true; + isChatHubLoding = true; chatUConvCounter = 0; ticketBalance = 0; @@ -302,6 +306,16 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } + Future getHubConnection() async { + HubConnection hub; + HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); + hub = HubConnectionBuilder() + .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) + .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); + isChatHubLoding = false; + return hub; + } + void notify() { notifyListeners(); } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 52b5ade..2de3310 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -56,31 +56,15 @@ class _DashboardScreenState extends State { data.getUserAutoLoginToken().whenComplete(() { buildHubConnection(); }); - _onRefresh(); }); } - Future buildHubConnection() async { - logger.d("Connnnnn Statred"); - HttpConnectionOptions httpOp = HttpConnectionOptions( - skipNegotiation: false, - logMessageContent: true, - ); - hubConnection = HubConnectionBuilder() - .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) - .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); - hubConnection.onclose(({Exception? error}) { - logger.d("Con Closedddddd"); - }); - hubConnection.onreconnecting(({Exception? error}) {}); - hubConnection.onreconnected(({String? connectionId}) {}); - - if (hubConnection.state != HubConnectionState.Connected) { - await hubConnection.start(); - } - - + void buildHubConnection() async { + logger.d("Connection In Progresssss"); + hubConnection = await data.getHubConnection(); + await hubConnection.start(); + logger.d("Connection Done"); } @override From ed15ce92b6759fb378956ee49cccacc6613288ec Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 22 Nov 2022 12:50:59 +0300 Subject: [PATCH 115/302] Chat Updates & Stability --- lib/ui/landing/dashboard_screen.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 2de3310..3007c88 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -61,10 +61,8 @@ class _DashboardScreenState extends State { } void buildHubConnection() async { - logger.d("Connection In Progresssss"); hubConnection = await data.getHubConnection(); await hubConnection.start(); - logger.d("Connection Done"); } @override From cecfd7034e3e7629595ba6117ce5e314c2ec2553 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 24 Nov 2022 09:14:26 +0300 Subject: [PATCH 116/302] assets added for services & worklist --- .../services_icons/change_bank_details.svg | 6 +++++ .../services_icons/employee_certificates.svg | 12 ++++++++++ .../services_icons/housing_allowance.svg | 8 +++++++ .../services_icons/monthly_attendance.svg | 15 +++++++++++++ .../images/services_icons/my_attendance.svg | 17 ++++++++++++++ assets/images/services_icons/my_leaves.svg | 10 +++++++++ .../images/services_icons/other_requests.svg | 22 +++++++++++++++++++ assets/images/services_icons/payslips.svg | 7 ++++++ assets/images/services_icons/profile_info.svg | 15 +++++++++++++ assets/images/services_icons/ticket_bal.svg | 6 +++++ .../images/services_icons/vacation_rule.svg | 16 ++++++++++++++ .../images/services_icons/work_from_home.svg | 11 ++++++++++ assets/images/worklist/answer_hr.svg | 14 ++++++++++++ .../images/worklist/approve_and_forward.svg | 9 ++++++++ assets/images/worklist/doable.svg | 10 +++++++++ assets/images/worklist/forward.svg | 5 +++++ assets/images/worklist/not_doable.svg | 17 ++++++++++++++ assets/images/worklist/report_generated.svg | 3 +++ assets/images/worklist/return.svg | 9 ++++++++ assets/images/worklist/transfer.svg | 9 ++++++++ assets/images/worklist/update_action.svg | 12 ++++++++++ 21 files changed, 233 insertions(+) create mode 100644 assets/images/services_icons/change_bank_details.svg create mode 100644 assets/images/services_icons/employee_certificates.svg create mode 100644 assets/images/services_icons/housing_allowance.svg create mode 100644 assets/images/services_icons/monthly_attendance.svg create mode 100644 assets/images/services_icons/my_attendance.svg create mode 100644 assets/images/services_icons/my_leaves.svg create mode 100644 assets/images/services_icons/other_requests.svg create mode 100644 assets/images/services_icons/payslips.svg create mode 100644 assets/images/services_icons/profile_info.svg create mode 100644 assets/images/services_icons/ticket_bal.svg create mode 100644 assets/images/services_icons/vacation_rule.svg create mode 100644 assets/images/services_icons/work_from_home.svg create mode 100644 assets/images/worklist/answer_hr.svg create mode 100644 assets/images/worklist/approve_and_forward.svg create mode 100644 assets/images/worklist/doable.svg create mode 100644 assets/images/worklist/forward.svg create mode 100644 assets/images/worklist/not_doable.svg create mode 100644 assets/images/worklist/report_generated.svg create mode 100644 assets/images/worklist/return.svg create mode 100644 assets/images/worklist/transfer.svg create mode 100644 assets/images/worklist/update_action.svg diff --git a/assets/images/services_icons/change_bank_details.svg b/assets/images/services_icons/change_bank_details.svg new file mode 100644 index 0000000..ac53bed --- /dev/null +++ b/assets/images/services_icons/change_bank_details.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/services_icons/employee_certificates.svg b/assets/images/services_icons/employee_certificates.svg new file mode 100644 index 0000000..6333b3c --- /dev/null +++ b/assets/images/services_icons/employee_certificates.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/services_icons/housing_allowance.svg b/assets/images/services_icons/housing_allowance.svg new file mode 100644 index 0000000..bda38d3 --- /dev/null +++ b/assets/images/services_icons/housing_allowance.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/services_icons/monthly_attendance.svg b/assets/images/services_icons/monthly_attendance.svg new file mode 100644 index 0000000..b77ccc3 --- /dev/null +++ b/assets/images/services_icons/monthly_attendance.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/my_attendance.svg b/assets/images/services_icons/my_attendance.svg new file mode 100644 index 0000000..ec35835 --- /dev/null +++ b/assets/images/services_icons/my_attendance.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/my_leaves.svg b/assets/images/services_icons/my_leaves.svg new file mode 100644 index 0000000..3c16f47 --- /dev/null +++ b/assets/images/services_icons/my_leaves.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/services_icons/other_requests.svg b/assets/images/services_icons/other_requests.svg new file mode 100644 index 0000000..446a085 --- /dev/null +++ b/assets/images/services_icons/other_requests.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/payslips.svg b/assets/images/services_icons/payslips.svg new file mode 100644 index 0000000..ca9fa88 --- /dev/null +++ b/assets/images/services_icons/payslips.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/services_icons/profile_info.svg b/assets/images/services_icons/profile_info.svg new file mode 100644 index 0000000..db08144 --- /dev/null +++ b/assets/images/services_icons/profile_info.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/ticket_bal.svg b/assets/images/services_icons/ticket_bal.svg new file mode 100644 index 0000000..8fadde8 --- /dev/null +++ b/assets/images/services_icons/ticket_bal.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/services_icons/vacation_rule.svg b/assets/images/services_icons/vacation_rule.svg new file mode 100644 index 0000000..0a536f7 --- /dev/null +++ b/assets/images/services_icons/vacation_rule.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/work_from_home.svg b/assets/images/services_icons/work_from_home.svg new file mode 100644 index 0000000..a807320 --- /dev/null +++ b/assets/images/services_icons/work_from_home.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/worklist/answer_hr.svg b/assets/images/worklist/answer_hr.svg new file mode 100644 index 0000000..ed7c211 --- /dev/null +++ b/assets/images/worklist/answer_hr.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/assets/images/worklist/approve_and_forward.svg b/assets/images/worklist/approve_and_forward.svg new file mode 100644 index 0000000..ac96589 --- /dev/null +++ b/assets/images/worklist/approve_and_forward.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/worklist/doable.svg b/assets/images/worklist/doable.svg new file mode 100644 index 0000000..2eec837 --- /dev/null +++ b/assets/images/worklist/doable.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/worklist/forward.svg b/assets/images/worklist/forward.svg new file mode 100644 index 0000000..367ad5c --- /dev/null +++ b/assets/images/worklist/forward.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/worklist/not_doable.svg b/assets/images/worklist/not_doable.svg new file mode 100644 index 0000000..7ed42e4 --- /dev/null +++ b/assets/images/worklist/not_doable.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/images/worklist/report_generated.svg b/assets/images/worklist/report_generated.svg new file mode 100644 index 0000000..83c293c --- /dev/null +++ b/assets/images/worklist/report_generated.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/worklist/return.svg b/assets/images/worklist/return.svg new file mode 100644 index 0000000..5f67f12 --- /dev/null +++ b/assets/images/worklist/return.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/worklist/transfer.svg b/assets/images/worklist/transfer.svg new file mode 100644 index 0000000..8bebb56 --- /dev/null +++ b/assets/images/worklist/transfer.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/worklist/update_action.svg b/assets/images/worklist/update_action.svg new file mode 100644 index 0000000..7814f10 --- /dev/null +++ b/assets/images/worklist/update_action.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + From 8169936bc036d1ef75c467a6be7a0ee4f7af0e00 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Thu, 24 Nov 2022 10:33:55 +0300 Subject: [PATCH 117/302] fix issues --- lib/ui/my_team/team_members.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ui/my_team/team_members.dart b/lib/ui/my_team/team_members.dart index e7336bb..f6d33d8 100644 --- a/lib/ui/my_team/team_members.dart +++ b/lib/ui/my_team/team_members.dart @@ -39,7 +39,7 @@ class _TeamMembersState extends State { try { Utils.showLoading(context); getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString()); - // getEmployeeSubordinatesList = await MyTeamApiClient().employeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString(),getEmployeeSubordinates?.eMPLOYEENUMBER); + getEmployeeSubordinatesList = await MyTeamApiClient().employeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString(),getEmployeeSubordinates?.eMPLOYEENUMBER); Utils.hideLoading(context); setState(() {}); } catch (ex) { From 6a0c4884355261813db29f2914746c3fb9af23ae Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 24 Nov 2022 11:33:16 +0300 Subject: [PATCH 118/302] translation fix --- lib/ui/attendance/add_vacation_rule_screen.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ui/attendance/add_vacation_rule_screen.dart b/lib/ui/attendance/add_vacation_rule_screen.dart index caa1ee3..5d4bf75 100644 --- a/lib/ui/attendance/add_vacation_rule_screen.dart +++ b/lib/ui/attendance/add_vacation_rule_screen.dart @@ -316,7 +316,7 @@ class _AddVacationRuleScreenState extends State { 12.height, PopupMenuButton( child: DynamicTextFieldWidget( - "Notification", + LocaleKeys.notification.tr(), selectedItemTypeNotification == null ? LocaleKeys.selectNotification.tr() : selectedItemTypeNotification!.nOTIFICATIONDISPLAYNAME!, isEnable: false, isPopup: true, From cbe251829fa4137ec1a031bf8608c6210d5aec9a Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Thu, 24 Nov 2022 14:58:53 +0300 Subject: [PATCH 119/302] Added HubConnection Code --- lib/api/marathon/marathon_api_client.dart | 81 ++++++++- lib/classes/consts.dart | 6 +- lib/models/marathon/marathon_model.dart | 188 +++++++++++++++++++-- lib/ui/login/login_screen.dart | 4 +- lib/ui/marathon/marathon_intro_screen.dart | 45 ++--- lib/ui/marathon/marathon_provider.dart | 11 +- pubspec.yaml | 6 +- 7 files changed, 297 insertions(+), 44 deletions(-) diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 1b8a435..3c111e7 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -1,18 +1,23 @@ import 'dart:convert'; import 'package:http/http.dart'; +import 'package:logger/logger.dart' as L; +import 'package:logging/logging.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_generic_model.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; +import 'package:signalr_netcore/http_connection_options.dart'; +import 'package:signalr_netcore/hub_connection.dart'; +import 'package:signalr_netcore/hub_connection_builder.dart'; class MarathonApiClient { Future getMarathonToken() async { String employeeUserName = AppState().getUserName ?? ""; String employeeSession = AppState().postParamsObject?.pSessionId.toString() ?? ""; - Map jsonObject = {"userName": employeeUserName, "password": employeeSession}; + Map jsonObject = {"userName": employeeUserName, "password": employeeSession}; Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonParticipantLoginUrl, jsonObject); var json = jsonDecode(response.body); @@ -21,8 +26,8 @@ class MarathonApiClient { if (marathonModel.statusCode == 200) { if (marathonModel.data != null && marathonModel.isSuccessful == true) { - print("bearerToken: ${marathonModel.data["token"]}"); AppState().setMarathonToken = marathonModel.data["token"] ?? ""; + print("bearer: ${AppState().getMarathonToken}"); return marathonModel.data["token"] ?? ""; } else { //TODO : DO ERROR HANDLING HERE @@ -42,7 +47,6 @@ class MarathonApiClient { if (marathonModel.statusCode == 200) { if (marathonModel.data != null && marathonModel.isSuccessful == true) { - print("projectID: ${marathonModel.data[0]["id"]}"); AppState().setMarathonProjectId = marathonModel.data[0]["id"] ?? ""; return marathonModel.data[0]["id"] ?? ""; } else { @@ -66,6 +70,77 @@ class MarathonApiClient { MarathonDetailModel marathonDetailModel = MarathonDetailModel.fromJson(marathonGenericModel.data); + AppState().setMarathonProjectId = marathonDetailModel.projects!.id!; + return marathonDetailModel; } + + late HubConnection hubConnection; + L.Logger logger = L.Logger(); + + Future buildHubConnection() async { + HttpConnectionOptions httpOptions = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); + hubConnection = HubConnectionBuilder() + .withUrl( + ApiConsts.marathonHubConnectionUrl + "?employeeNumber=${AppState().memberInformationList!.eMPLOYEENUMBER ?? ""}&employeeName=${AppState().memberInformationList!.eMPLOYEENAME ?? ""}", + options: httpOptions, + ) + .withAutomaticReconnect( + retryDelays: [2000, 5000, 10000, 20000], + ) + .configureLogging( + Logger("Logging"), + ) + .build(); + hubConnection.onclose( + ({Exception? error}) { + logger.i("onclose"); + }, + ); + hubConnection.onreconnecting( + ({Exception? error}) { + logger.i("onreconnecting"); + }, + ); + hubConnection.onreconnected( + ({String? connectionId}) { + logger.i("onreconnected"); + }, + ); + if (hubConnection.state != HubConnectionState.Connected) { + await hubConnection.start(); + logger.i("Hi jee"); + + await hubConnection.invoke( + "AddParticipant", + args: [ + { + "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER ?? "", + "employeeName": AppState().memberInformationList!.eMPLOYEENAME ?? "", + "marathonId": AppState().getMarathonProjectId, + } + ], + ).catchError((e) { + logger.i("Error in AddParticipant: $e"); + }); + + await hubConnection.invoke( + "SendQuestionToParticipant", + args: [ + { + "marathonId": AppState().getMarathonProjectId, + } + ], + ).catchError((e) { + logger.i("Error in SendQuestionToParticipant: $e"); + }); + + hubConnection.on("OnSendQuestionToParticipant", onSendQuestionToParticipant); + } + } + + Future onSendQuestionToParticipant(List? arguments) async { + + logger.i(arguments); + } } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 6c24049..9c9045a 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -29,7 +29,7 @@ class ApiConsts { static String marathonParticipantLoginUrl = marathonBaseUrl + "api/auth/participantlogin"; static String marathonProjectGetUrl = marathonBaseUrl + "api/Project/Project_Get"; static String marathonUpcomingUrl = marathonBaseUrl + "api/marathon/upcoming/"; - static String marathonHubConnectionUrl = "MarathonBroadCast"; + static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; } class SharedPrefsConsts { diff --git a/lib/models/marathon/marathon_model.dart b/lib/models/marathon/marathon_model.dart index e2f5e4d..3fb60b9 100644 --- a/lib/models/marathon/marathon_model.dart +++ b/lib/models/marathon/marathon_model.dart @@ -12,9 +12,9 @@ class MarathonDetailModel { int? marathoneStatusId; String? scheduleTime; int? selectedLanguage; - List? projects; - List? sponsors; - List? questions; + Projects? projects; + List? sponsors; + List? questions; MarathonDetailModel( {id, @@ -48,18 +48,25 @@ class MarathonDetailModel { marathoneStatusId = json['marathoneStatusId']; scheduleTime = json['scheduleTime']; selectedLanguage = json['selectedLanguage']; - projects = json['projects']; - sponsors = json['sponsors']; + projects = json['projects'] != null + ? Projects.fromJson(json['projects']) + : null; + if (json['sponsors'] != null) { + sponsors = []; + json['sponsors'].forEach((v) { + sponsors!.add( Sponsors.fromJson(v)); + }); + } if (json['questions'] != null) { - questions = []; + questions = []; json['questions'].forEach((v) { - // questions!.add( Null.fromJson(v)); + questions!.add( Questions.fromJson(v)); }); } } Map toJson() { - Map data = new Map(); + Map data = {}; data['id'] = id; data['titleEn'] = titleEn; data['titleAr'] = titleAr; @@ -73,11 +80,172 @@ class MarathonDetailModel { data['marathoneStatusId'] = marathoneStatusId; data['scheduleTime'] = scheduleTime; data['selectedLanguage'] = selectedLanguage; - data['projects'] = projects; - data['sponsors'] = sponsors; + if (projects != null) { + data['projects'] = projects!.toJson(); + } + if (sponsors != null) { + data['sponsors'] = sponsors!.map((v) => v.toJson()).toList(); + } if (questions != null) { data['questions'] = questions!.map((v) => v.toJson()).toList(); } return data; } } + +class Projects { + String? id; + String? nameEn; + String? nameAr; + String? projectCode; + + Projects({id, nameEn, nameAr, projectCode}); + + Projects.fromJson(Map json) { + id = json['id']; + nameEn = json['nameEn']; + nameAr = json['nameAr']; + projectCode = json['projectCode']; + } + + Map toJson() { + Map data = {}; + data['id'] = id; + data['nameEn'] = nameEn; + data['nameAr'] = nameAr; + data['projectCode'] = projectCode; + return data; + } +} + +class Sponsors { + String? id; + String? nameEn; + Null? nameAr; + String? image; + Null? video; + Null? logo; + List? sponsorPrizes; + + Sponsors( + {id, + nameEn, + nameAr, + image, + video, + logo, + sponsorPrizes}); + + Sponsors.fromJson(Map json) { + id = json['id']; + nameEn = json['nameEn']; + nameAr = json['nameAr']; + image = json['image']; + video = json['video']; + logo = json['logo']; + if (json['sponsorPrizes'] != null) { + sponsorPrizes = []; + json['sponsorPrizes'].forEach((v) { + sponsorPrizes!.add( SponsorPrizes.fromJson(v)); + }); + } + } + + Map toJson() { + Map data = {}; + data['id'] = id; + data['nameEn'] = nameEn; + data['nameAr'] = nameAr; + data['image'] = image; + data['video'] = video; + data['logo'] = logo; + if (sponsorPrizes != null) { + data['sponsorPrizes'] = + sponsorPrizes!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class SponsorPrizes { + String? id; + String? marathonPrizeEn; + String? marathonPrizeAr; + + SponsorPrizes({id, marathonPrizeEn, marathonPrizeAr}); + + SponsorPrizes.fromJson(Map json) { + id = json['id']; + marathonPrizeEn = json['marathonPrizeEn']; + marathonPrizeAr = json['marathonPrizeAr']; + } + + Map toJson() { + Map data = new Map(); + data['id'] = id; + data['marathonPrizeEn'] = marathonPrizeEn; + data['marathonPrizeAr'] = marathonPrizeAr; + return data; + } +} + +class Questions { + String? id; + String? titleEn; + String? titleAr; + String? marathonId; + int? questionTypeId; + int? questionTime; + int? nextQuestGap; + int? gapType; + String? gapValue; + String? gapImage; + int? questOptionsLimit; + List? questionOptions; + + Questions( + {id, + titleEn, + titleAr, + marathonId, + questionTypeId, + questionTime, + nextQuestGap, + gapType, + gapValue, + gapImage, + questOptionsLimit, + questionOptions}); + + Questions.fromJson(Map json) { + id = json['id']; + titleEn = json['titleEn']; + titleAr = json['titleAr']; + marathonId = json['marathonId']; + questionTypeId = json['questionTypeId']; + questionTime = json['questionTime']; + nextQuestGap = json['nextQuestGap']; + gapType = json['gapType']; + gapValue = json['gapValue']; + gapImage = json['gapImage']; + questOptionsLimit = json['questOptionsLimit']; + questionOptions = json['questionOptions']; + } + + Map toJson() { + Map data = {}; + data['id'] = id; + data['titleEn'] = titleEn; + data['titleAr'] = titleAr; + data['marathonId'] = marathonId; + data['questionTypeId'] = questionTypeId; + data['questionTime'] = questionTime; + data['nextQuestGap'] = nextQuestGap; + data['gapType'] = gapType; + data['gapValue'] = gapValue; + data['gapImage'] = gapImage; + data['questOptionsLimit'] = questOptionsLimit; + data['questionOptions'] = questionOptions; + return data; + } +} diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 20fa8bc..97282d3 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -142,8 +142,8 @@ class _LoginScreenState extends State { isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool; if (!kReleaseMode) { // username.text = "15444"; // Maha User - // username.text = "15153"; // Tamer User - // password.text = "Abcd@12345"; + username.text = "15153"; // Tamer User + password.text = "Abcd@12345"; // username.text = "206535"; // Hashim User // password.text = "Namira786"; diff --git a/lib/ui/marathon/marathon_intro_screen.dart b/lib/ui/marathon/marathon_intro_screen.dart index 0f655ab..edb0f77 100644 --- a/lib/ui/marathon/marathon_intro_screen.dart +++ b/lib/ui/marathon/marathon_intro_screen.dart @@ -6,7 +6,6 @@ import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; @@ -78,29 +77,36 @@ class MarathonDetailsCard extends StatelessWidget { ) ], ), - if (provider.itsMarathonTime) ...[ + if (provider.itsMarathonTime && provider.marathonDetailModel.sponsors != null) ...[ 5.height, + provider.marathonDetailModel.sponsors?.first.sponsorPrizes != null + ? Row( + children: [ + "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), + "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr : provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr}" + .toText16(color: MyColors.greenColor, isBold: true), + ], + ) + : const SizedBox(), Row( children: [ - LocaleKeys.prize.tr().toText16(color: MyColors.grey77Color, isBold: true), - " LED 55\" Android TV".toText16(color: MyColors.greenColor, isBold: true), - ], - ), - Row( - children: [ - LocaleKeys.sponsoredBy.tr().toText16(color: MyColors.grey77Color), - " Extra".toText16(color: MyColors.darkTextColor, isBold: true), + "${LocaleKeys.sponsoredBy.tr()} ".toText16(color: MyColors.grey77Color), + "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.nameAr : provider.marathonDetailModel.sponsors?.first.nameEn}" + .toText16(color: MyColors.darkTextColor, isBold: true), ], ), 10.height, Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - Image.asset( - "assets/images/logos/main_mohemm_logo.png", + Image.network( + provider.marathonDetailModel.sponsors!.first.image!, height: 40, - fit: BoxFit.fill, width: 150, + fit: BoxFit.fill, + errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + return const Center(); + }, ) ], ), @@ -123,7 +129,6 @@ class MarathonTimerCard extends StatelessWidget { required this.timeToMarathon, }) : super(key: key); - @override Widget build(BuildContext context) { return Container( @@ -214,10 +219,10 @@ class MarathonFooter extends StatelessWidget { @override Widget build(BuildContext context) { return provider.itsMarathonTime - ? DefaultButton( - LocaleKeys.joinMarathon.tr(), - () => Navigator.pushNamed(context, AppRoutes.marathonScreen), - ).insideContainer + ? DefaultButton(LocaleKeys.joinMarathon.tr(), () { + provider.connectSignalrAndJoinMarathon(); + // Navigator.pushNamed(context, AppRoutes.marathonScreen); + }, ).insideContainer : Container( color: Colors.white, child: Column( @@ -226,7 +231,9 @@ class MarathonFooter extends StatelessWidget { buildNoteForDemo(), DefaultButton( LocaleKeys.joinDemoMarathon.tr(), - () {}, + () { + provider.connectSignalrAndJoinMarathon(); + }, color: MyColors.yellowColorII, ).insideContainer, ], diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 25642ee..50bd38b 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -114,18 +114,17 @@ class MarathonProvider extends ChangeNotifier { Future getMarathonDetailsFromApi() async { isLoading = true; - + notifyListeners(); await MarathonApiClient().getMarathonToken().whenComplete(() async { - print("loading before : $isLoading"); - marathonDetailModel = await MarathonApiClient().getMarathonDetails(); isLoading = false; - print("loading after: $isLoading"); - notifyListeners(); - }); + } + Future connectSignalrAndJoinMarathon() async { + await MarathonApiClient().buildHubConnection(); } + } diff --git a/pubspec.yaml b/pubspec.yaml index f5742bb..f898345 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -79,13 +79,17 @@ dependencies: pull_to_refresh: ^2.0.0 # lottie json animations lottie: any + + # Steps Progress steps_indicator: ^1.3.0 + # Marathon Card Swipe appinio_swiper: ^1.1.1 expandable: ^5.0.1 - +# networkImage + cached_network_image: ^3.2.2 #Chat signalr_netcore: ^1.3.3 From ef723fe46801a131aaa805de226101adeefa1178 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 24 Nov 2022 15:29:00 +0300 Subject: [PATCH 120/302] self user checks added while delegate --- .../approval_level_fragment.dart | 21 ++++++++++++++----- .../worklist_fragments/actions_fragment.dart | 19 ++++++++++++++++- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/lib/ui/work_list/itg_fragments/approval_level_fragment.dart b/lib/ui/work_list/itg_fragments/approval_level_fragment.dart index 52915ab..09e44d4 100644 --- a/lib/ui/work_list/itg_fragments/approval_level_fragment.dart +++ b/lib/ui/work_list/itg_fragments/approval_level_fragment.dart @@ -1,11 +1,13 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/itg_forms_models/wf_history_model.dart'; +import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/selected_itg_item_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; @@ -109,6 +111,19 @@ class ApprovalLevelfragment extends StatelessWidget { }).expanded, Container(width: 1, height: 30, color: MyColors.lightGreyEFColor), LocaleKeys.delegate.tr().toText12(color: MyColors.gradiantEndColor).center.paddingOnly(top: 6, bottom: 6).onPress(() { + if (history.employeeID == AppState().memberInformationList?.eMPLOYEENUMBER) { + showMyBottomSheet(context, + callBackFunc: voidCallback, + child: DelegateSheet( + title: LocaleKeys.delegate.tr(), + apiMode: "Delegate", + notificationID: null, + actionHistoryList: null, + wFHistory: wFHistory, + callBackFunc: voidCallback, + )); + return; + } showMyBottomSheet( context, callBackFunc: voidCallback, @@ -135,11 +150,7 @@ class ApprovalLevelfragment extends StatelessWidget { return MyColors.yellowColor; } else if (code.toLowerCase() == "not doable" || code.toLowerCase() == "rejected") { return MyColors.redColor; - } else if (code.toLowerCase() == "approved" || - code.toLowerCase() == "auto-approve" || - code.toLowerCase() == "auto-approved" || - code.toLowerCase() == "doable" || - code.toLowerCase() == "answer") { + } else if (code.toLowerCase() == "approved" || code.toLowerCase() == "auto-approve" || code.toLowerCase() == "auto-approved" || code.toLowerCase() == "doable" || code.toLowerCase() == "answer") { return MyColors.greenColor; } else if (code.toLowerCase() == "requested information" || code.toLowerCase() == "assign" || code.toLowerCase() == "reassign") { return MyColors.orange; diff --git a/lib/ui/work_list/worklist_fragments/actions_fragment.dart b/lib/ui/work_list/worklist_fragments/actions_fragment.dart index 58e9ac7..fa29d65 100644 --- a/lib/ui/work_list/worklist_fragments/actions_fragment.dart +++ b/lib/ui/work_list/worklist_fragments/actions_fragment.dart @@ -1,5 +1,6 @@ import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -7,6 +8,7 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; +import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/selected_item_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; @@ -109,6 +111,18 @@ class ActionsFragment extends StatelessWidget { }).expanded, Container(width: 1, height: 30, color: MyColors.lightGreyEFColor), LocaleKeys.delegate.tr().toText12(color: MyColors.gradiantEndColor).center.paddingOnly(top: 6, bottom: 6).onPress(() { + if (actionHistory.uSERNAME == AppState().memberInformationList?.eMPLOYEENUMBER) { + showMyBottomSheet(context, + callBackFunc: voidCallback, + child: DelegateSheet( + title: LocaleKeys.delegate.tr(), + apiMode: "DELEGATE", + notificationID: notificationID, + actionHistoryList: actionHistoryList, + callBackFunc: voidCallback, + )); + return; + } showMyBottomSheet( context, callBackFunc: voidCallback, @@ -132,7 +146,10 @@ class ActionsFragment extends StatelessWidget { String getActionDuration(int index) { if (actionHistoryList[index].aCTIONCODE == "SUBMIT") { return ""; - } else if(actionHistoryList[index].aCTIONCODE == "PENDING") { + } else if (actionHistoryList[index].aCTIONCODE == "PENDING") { + if (actionHistoryList[++index].nOTIFICATIONDATE!.isEmpty) { + return ""; + } DateTime dateTimeFrom = DateUtil.convertSimpleStringDateToDate(actionHistoryList[++index].nOTIFICATIONDATE!); Duration duration = DateTime.now().difference(dateTimeFrom); return "Action duration: " + DateUtil.formatDuration(duration); From db3e1427c5299217bd4c21c5c0baca235a335b79 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 24 Nov 2022 16:29:28 +0300 Subject: [PATCH 121/302] Advertisement Image/ Video Module --- lib/classes/consts.dart | 4 +- lib/provider/chat_provider_model.dart | 47 +++--- lib/ui/chat/chat_bubble.dart | 12 +- lib/ui/landing/dashboard_screen.dart | 86 +++++------ .../itg/its_add_screen_video_image.dart | 138 ++++++++++++++++++ lib/ui/landing/itg/video_page.dart | 96 ------------ 6 files changed, 213 insertions(+), 170 deletions(-) create mode 100644 lib/ui/landing/itg/its_add_screen_video_image.dart delete mode 100644 lib/ui/landing/itg/video_page.dart diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c5788f9..ede22e3 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + //static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 01eb0ad..81cb8b5 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -73,7 +73,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); searchedChats = pChatHistory; isLoading = false; - await getUserChatHistoryNotDeliveredAsync( + await invokeUserChatHistoryNotDeliveredAsync( userId: int.parse( AppState().chatDetails!.response!.id.toString(), ), @@ -81,13 +81,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } - Future getUserChatHistoryNotDeliveredAsync({required int userId}) async { - // try { + Future invokeUserChatHistoryNotDeliveredAsync({required int userId}) async { await hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [userId]); - // } finally { - // hubConnection.off("OnGetUserChatHistoryNotDeliveredAsync", method: chatNotDelivered); - // } - return ""; } @@ -137,26 +132,28 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { chatCID = uuid.v4(); } - void markRead(List data, reciverID) { - for (SingleUserChatModel element in data!) { - if (element.isSeen != null) { - if (!element.isSeen!) { - dynamic data = [ - { - "userChatHistoryId": element.userChatHistoryId, - "TargetUserId": element.targetUserId, - "isDelivered": true, - "isSeen": true, - } - ]; - updateUserChatHistoryStatusAsync(data); + void markRead(List data, int receiverID) { + if (data != null) { + for (SingleUserChatModel element in data!) { + if (element.isSeen != null) { + if (!element.isSeen!) { + dynamic data = [ + { + "userChatHistoryId": element.userChatHistoryId, + "TargetUserId": element.targetUserId, + "isDelivered": true, + "isSeen": true, + } + ]; + updateUserChatHistoryStatusAsync(data); + } } } - } - for (ChatUser element in searchedChats!) { - if (element.id == reciverID) { - element.unreadMessageCount = 0; - notifyListeners(); + for (ChatUser element in searchedChats!) { + if (element.id == receiverID) { + element.unreadMessageCount = 0; + notifyListeners(); + } } } } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 1696a49..1f6e5dd 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -132,12 +132,12 @@ class ChatBubble extends StatelessWidget { color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : MyColors.white.withOpacity(0.7), ), if (isCurrentUser) 5.width, - // if (isCurrentUser) - // Icon( - // isDelivered ? Icons.done_all : Icons.done_all, - // color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor, - // size: 14, - // ), + if (isCurrentUser) + Icon( + isDelivered ? Icons.done_all : Icons.done_all, + color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor, + size: 14, + ), ], ), ], diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 3007c88..d433e09 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -1,10 +1,12 @@ import 'dart:async'; +import 'dart:convert'; import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; @@ -17,6 +19,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/landing/itg/its_add_screen_video_image.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; import 'package:mohem_flutter_app/ui/landing/widget/menus_widget.dart'; import 'package:mohem_flutter_app/ui/landing/widget/services_widget.dart'; @@ -53,9 +56,7 @@ class _DashboardScreenState extends State { super.initState(); scheduleMicrotask(() { data = Provider.of(context, listen: false); - data.getUserAutoLoginToken().whenComplete(() { - buildHubConnection(); - }); + _bHubCon(); _onRefresh(); }); } @@ -71,6 +72,12 @@ class _DashboardScreenState extends State { hubConnection.stop(); } + void _bHubCon() { + data.getUserAutoLoginToken().whenComplete(() { + buildHubConnection(); + }); + } + void _onRefresh() async { data.initProvider(); // data.getITGNotification().then((value) { @@ -93,44 +100,41 @@ class _DashboardScreenState extends State { Widget build(BuildContext context) { return Scaffold( key: _scaffoldState, - // appBar: AppBar( - // actions: [ - // IconButton( - // onPressed: () { - // data.getITGNotification().then((value) { - // print("--------------------detail_1-----------------"); - // if (value!.result!.data != null) { - // print(value.result!.data!.notificationMasterId); - // print(value.result!.data!.notificationType); - // if (value.result!.data!.notificationType == "Survey") { - // Navigator.pushNamed(context, AppRoutes.survey, arguments: value.result!.data); - // } else { - // DashboardApiClient().getAdvertisementDetail(value.result!.data!.notificationMasterId ?? "").then( - // (value) { - // if (value!.mohemmItgResponseItem!.statusCode == 200) { - // if (value.mohemmItgResponseItem!.result!.data != null) { - // String? image64 = value.mohemmItgResponseItem!.result!.data!.advertisement!.viewAttachFileColl!.first.base64String; - // print(image64); - // var sp = image64!.split("base64,"); - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (context) => MovieTheaterBody( - // encodedBytes: sp[1], - // ), - // ), - // ); - // } - // } - // }, - // ); - // } - // } - // }); - // }, - // icon: Icon(Icons.add)) - // ], - // ), + appBar: AppBar( + actions: [ + IconButton( + onPressed: () { + data.getITGNotification().then((value) { + if (value!.result!.data != null) { + if (value.result!.data!.notificationType == "Survey") { + Navigator.pushNamed(context, AppRoutes.survey, arguments: value.result!.data); + } else { + DashboardApiClient().getAdvertisementDetail(value.result!.data!.notificationMasterId ?? "").then( + (value) { + if (value!.mohemmItgResponseItem!.statusCode == 200) { + if (value.mohemmItgResponseItem!.result!.data != null) { + String? rFile = value.mohemmItgResponseItem!.result!.data!.advertisement!.viewAttachFileColl!.first.base64String; + String? rFileExt = value.mohemmItgResponseItem!.result!.data!.advertisement!.viewAttachFileColl!.first.fileName; + Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => ITGAdsScreen( + encodedBytes: rFile!, + fileExtenshion: rFileExt!, + ), + ), + ); + } + } + }, + ); + } + } + }); + }, + icon: Icon(Icons.add)) + ], + ), body: Column( children: [ Row( diff --git a/lib/ui/landing/itg/its_add_screen_video_image.dart b/lib/ui/landing/itg/its_add_screen_video_image.dart new file mode 100644 index 0000000..1d9c41f --- /dev/null +++ b/lib/ui/landing/itg/its_add_screen_video_image.dart @@ -0,0 +1,138 @@ +import 'dart:convert'; +import 'dart:io' as Io; +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:video_player/video_player.dart'; + +class ITGAdsScreen extends StatefulWidget { + final String encodedBytes; + final String fileExtension; + + const ITGAdsScreen({required this.encodedBytes, required this.fileExtension}); + + @override + _ITGAdsScreenState createState() => _ITGAdsScreenState(); +} + +class _ITGAdsScreenState extends State { + late Future _futureController; + late VideoPlayerController _controller; + bool skip = false; + + Future createVideoPlayer() async { + try { + Uint8List decodedBytes = base64Decode(widget.encodedBytes.split("base64,").last); + Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); // 1 + File file = Io.File("${appDocumentsDirectory.path}/myAdsVideo.mp4"); + file.writeAsBytesSync(decodedBytes); + VideoPlayerController controller = VideoPlayerController.file(file); + await controller.initialize(); + await controller.play(); + await controller.setVolume(1.0); + await controller.setLooping(false); + return controller; + } catch (e) { + return new VideoPlayerController.asset("dataSource"); + } + } + + void checkType(){ + + // getFileTypeDescription(value); + + + } + + String getFileTypeDescription(String value) { + switch (value) { + case ".pdf": + return "application/pdf"; + case ".png": + return "image/png"; + case ".txt": + return "text/plain"; + case ".jpg": + return "image/jpg"; + case ".jpeg": + return "image/jpeg"; + case ".ppt": + return "application/vnd.openxmlformats-officedocument.presentationml.presentation"; + case ".pptx": + return "application/vnd.openxmlformats-officedocument.presentationml.presentation"; + case ".doc": + return "application/vnd.openxmlformats-officedocument.wordprocessingm"; + case ".docx": + return "application/vnd.openxmlformats-officedocument.wordprocessingm"; + case ".xls": + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + case ".xlsx": + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + case ".zip": + return "application/octet-stream"; + case ".rar": + return "application/octet-stream"; + default: + return ""; + } + } + + @override + void initState() { + _futureController = createVideoPlayer(); + initTimer(); + super.initState(); + } + + void initTimer() { + Future.delayed(const Duration(milliseconds: 500), () { + setState(() { + skip = true; + }); + }); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + double height = MediaQuery.of(context).size.height * .25; + return Scaffold( + body: Column( + children: [ + SizedBox( + height: MediaQuery.of(context).size.height * .3, + child: FutureBuilder( + future: _futureController, + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) { + _controller = snapshot.data as VideoPlayerController; + return AspectRatio( + aspectRatio: _controller.value.aspectRatio, + child: VideoPlayer(_controller), + ); + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, + ), + ), + if (skip) + ElevatedButton( + onPressed: () {}, + child: const Text("Go To Dashboard"), + ) + ], + ), + ); + } +} diff --git a/lib/ui/landing/itg/video_page.dart b/lib/ui/landing/itg/video_page.dart deleted file mode 100644 index 657d714..0000000 --- a/lib/ui/landing/itg/video_page.dart +++ /dev/null @@ -1,96 +0,0 @@ -import 'dart:convert'; -import 'dart:io' as Io; - -import 'package:flutter/material.dart'; -import 'package:video_player/video_player.dart'; - -class MovieTheaterBody extends StatefulWidget { - final String encodedBytes; - - const MovieTheaterBody({required this.encodedBytes}); - - @override - _MovieTheaterBodyState createState() => _MovieTheaterBodyState(); -} - -class _MovieTheaterBodyState extends State { - late Future _futureController; - late VideoPlayerController _controller; - - Future createVideoPlayer() async { - try { - var decodedBytes = base64Decode(widget.encodedBytes); - - var file = Io.File("decodedBezkoder.mp4"); - file.writeAsBytesSync(decodedBytes); - - VideoPlayerController controller = VideoPlayerController.file(file); - await controller.initialize(); - await controller.setLooping(true); - return controller; - } catch (e) { - print("object0000000"); - print(e); - return new VideoPlayerController.asset("dataSource"); - } - } - - @override - void initState() { - _futureController = createVideoPlayer(); - super.initState(); - } - - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Expanded( - child: FutureBuilder( - future: _futureController, - builder: (context, snapshot) { - //UST: 05/2021 - MovieTheaterBody - id:11 - 2pts - Criação - if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) { - _controller = snapshot.data as VideoPlayerController; - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - AspectRatio( - aspectRatio: _controller.value.aspectRatio, - child: VideoPlayer(_controller), - ), - const SizedBox( - height: 50, - ), - FloatingActionButton( - onPressed: () { - setState(() { - if (_controller.value.isPlaying) { - _controller.pause(); - } else { - // If the video is paused, play it. - _controller.play(); - } - }); - }, - backgroundColor: Colors.green[700], - child: Icon( - _controller.value.isPlaying ? Icons.pause : Icons.play_arrow, - ), - ) - ], - ); - } else { - return const Center(child: CircularProgressIndicator()); - } - }, - ), - ), - ); - } -} From 8b388220cf8d08f7949d07c9ef3fc8b66a397f15 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Sun, 27 Nov 2022 09:22:57 +0300 Subject: [PATCH 122/302] Added Question Dart Object --- lib/api/marathon/marathon_api_client.dart | 15 ++- lib/models/marathon/question_model.dart | 109 ++++++++++++++++++++++ 2 files changed, 120 insertions(+), 4 deletions(-) create mode 100644 lib/models/marathon/question_model.dart diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 3c111e7..52895ce 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -47,6 +47,7 @@ class MarathonApiClient { if (marathonModel.statusCode == 200) { if (marathonModel.data != null && marathonModel.isSuccessful == true) { + logger.i("message: ${marathonModel.data[0]["id"]}"); AppState().setMarathonProjectId = marathonModel.data[0]["id"] ?? ""; return marathonModel.data[0]["id"] ?? ""; } else { @@ -70,7 +71,7 @@ class MarathonApiClient { MarathonDetailModel marathonDetailModel = MarathonDetailModel.fromJson(marathonGenericModel.data); - AppState().setMarathonProjectId = marathonDetailModel.projects!.id!; + AppState().setMarathonProjectId = marathonDetailModel.id!; return marathonDetailModel; } @@ -109,7 +110,7 @@ class MarathonApiClient { ); if (hubConnection.state != HubConnectionState.Connected) { await hubConnection.start(); - logger.i("Hi jee"); + logger.i("Started HubConnection"); await hubConnection.invoke( "AddParticipant", @@ -124,22 +125,28 @@ class MarathonApiClient { logger.i("Error in AddParticipant: $e"); }); + logger.i("MarathonId: ${AppState().getMarathonProjectId}"); await hubConnection.invoke( "SendQuestionToParticipant", args: [ { - "marathonId": AppState().getMarathonProjectId, + "marathonId": "9c47d281-c5b5-4b5d-a90a-08dacb8cbdb6", } ], ).catchError((e) { logger.i("Error in SendQuestionToParticipant: $e"); }); - hubConnection.on("OnSendQuestionToParticipant", onSendQuestionToParticipant); + try { + hubConnection.on("OnSendQuestionToParticipant", onSendQuestionToParticipant); + } catch (e, s) { + logger.i("s"); + } } } Future onSendQuestionToParticipant(List? arguments) async { + print("arguments: $arguments"); logger.i(arguments); } diff --git a/lib/models/marathon/question_model.dart b/lib/models/marathon/question_model.dart new file mode 100644 index 0000000..90d030d --- /dev/null +++ b/lib/models/marathon/question_model.dart @@ -0,0 +1,109 @@ +class QuestionModel { + String? id; + String? titleEn; + String? titleAr; + String? marathonId; + int? questionTypeId; + int? questionTime; + int? nextQuestGap; + int? gapType; + String? gapText; + String? gapImage; + int? questOptionsLimit; + List? questionOptions; + + QuestionModel( + {id, + titleEn, + titleAr, + marathonId, + questionTypeId, + questionTime, + nextQuestGap, + gapType, + gapText, + gapImage, + questOptionsLimit, + questionOptions}); + + QuestionModel.fromJson(Map json) { + id = json['id']; + titleEn = json['titleEn']; + titleAr = json['titleAr']; + marathonId = json['marathonId']; + questionTypeId = json['questionTypeId']; + questionTime = json['questionTime']; + nextQuestGap = json['nextQuestGap']; + gapType = json['gapType']; + gapText = json['gapText']; + gapImage = json['gapImage']; + questOptionsLimit = json['questOptionsLimit']; + if (json['questionOptions'] != null) { + questionOptions = []; + json['questionOptions'].forEach((v) { + questionOptions!.add( QuestionOptions.fromJson(v)); + }); + } + } + + Map toJson() { + Map data = {}; + data['id'] = id; + data['titleEn'] = titleEn; + data['titleAr'] = titleAr; + data['marathonId'] = marathonId; + data['questionTypeId'] = questionTypeId; + data['questionTime'] = questionTime; + data['nextQuestGap'] = nextQuestGap; + data['gapType'] = gapType; + data['gapText'] = gapText; + data['gapImage'] = gapImage; + data['questOptionsLimit'] = questOptionsLimit; + if (questionOptions != null) { + data['questionOptions'] = + questionOptions!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class QuestionOptions { + String? id; + String? titleEn; + String? titleAr; + String? questionId; + int? sequence; + String? image; + bool? isCorrectOption; + + QuestionOptions( + {id, + titleEn, + titleAr, + questionId, + sequence, + image, + isCorrectOption}); + + QuestionOptions.fromJson(Map json) { + id = json['id']; + titleEn = json['titleEn']; + titleAr = json['titleAr']; + questionId = json['questionId']; + sequence = json['sequence']; + image = json['image']; + isCorrectOption = json['isCorrectOption']; + } + + Map toJson() { + Map data = {}; + data['id'] = id; + data['titleEn'] = titleEn; + data['titleAr'] = titleAr; + data['questionId'] = questionId; + data['sequence'] = sequence; + data['image'] = image; + data['isCorrectOption'] = isCorrectOption; + return data; + } +} From fa7e08c215860c6a6d106766a2def51858a46eb5 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 27 Nov 2022 10:23:02 +0300 Subject: [PATCH 123/302] Advertisement Image/ Video Module --- lib/api/dashboard_api_client.dart | 14 ++ lib/ui/landing/dashboard_screen.dart | 68 +++++---- .../itg/its_add_screen_video_image.dart | 132 +++++++++--------- 3 files changed, 112 insertions(+), 102 deletions(-) diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index 9747e5c..69c2e82 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -186,4 +186,18 @@ class DashboardApiClient { ); return chatUnreadCovnCountModelFromJson(response.body); } + + // Future setAdvertisementViewed(String masterID, int advertisementId) async { + // String url = "${ApiConsts.cocRest}Mohemm_ITG_UpdateAdvertisementAsViewed"; + // + // Map postParams = { + // "ItgNotificationMasterId": masterID, + // "ItgAdvertisement": {"advertisementId": advertisementId, "acknowledgment": true} //Mobile Id + // }; + // postParams.addAll(AppState().postParamsJson); + // return await ApiClient().postJsonForObject((json) { + // // ItgMainRes responseData = ItgMainRes.fromJson(json); + // return json; + // }, url, postParams); + // } } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index d433e09..c8cdcef 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -100,41 +100,39 @@ class _DashboardScreenState extends State { Widget build(BuildContext context) { return Scaffold( key: _scaffoldState, - appBar: AppBar( - actions: [ - IconButton( - onPressed: () { - data.getITGNotification().then((value) { - if (value!.result!.data != null) { - if (value.result!.data!.notificationType == "Survey") { - Navigator.pushNamed(context, AppRoutes.survey, arguments: value.result!.data); - } else { - DashboardApiClient().getAdvertisementDetail(value.result!.data!.notificationMasterId ?? "").then( - (value) { - if (value!.mohemmItgResponseItem!.statusCode == 200) { - if (value.mohemmItgResponseItem!.result!.data != null) { - String? rFile = value.mohemmItgResponseItem!.result!.data!.advertisement!.viewAttachFileColl!.first.base64String; - String? rFileExt = value.mohemmItgResponseItem!.result!.data!.advertisement!.viewAttachFileColl!.first.fileName; - Navigator.push( - context, - MaterialPageRoute( - builder: (BuildContext context) => ITGAdsScreen( - encodedBytes: rFile!, - fileExtenshion: rFileExt!, - ), - ), - ); - } - } - }, - ); - } - } - }); - }, - icon: Icon(Icons.add)) - ], - ), + // appBar: AppBar( + // actions: [ + // IconButton( + // onPressed: () { + // data.getITGNotification().then((val) { + // if (val!.result!.data != null) { + // if (val.result!.data!.notificationType == "Survey") { + // Navigator.pushNamed(context, AppRoutes.survey, arguments: val.result!.data); + // } else { + // DashboardApiClient().getAdvertisementDetail(val.result!.data!.notificationMasterId ?? "").then( + // (value) { + // if (value!.mohemmItgResponseItem!.statusCode == 200) { + // if (value.mohemmItgResponseItem!.result!.data != null) { + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (BuildContext context) => ITGAdsScreen( + // addMasterId: val.result!.data!.notificationMasterId!, + // advertisement: value.mohemmItgResponseItem!.result!.data!.advertisement!, + // ), + // ), + // ); + // } + // } + // }, + // ); + // } + // } + // }); + // }, + // icon: Icon(Icons.add)) + // ], + // ), body: Column( children: [ Row( diff --git a/lib/ui/landing/itg/its_add_screen_video_image.dart b/lib/ui/landing/itg/its_add_screen_video_image.dart index 1d9c41f..4b2e358 100644 --- a/lib/ui/landing/itg/its_add_screen_video_image.dart +++ b/lib/ui/landing/itg/its_add_screen_video_image.dart @@ -2,17 +2,20 @@ import 'dart:convert'; import 'dart:io' as Io; import 'dart:io'; import 'dart:typed_data'; - import 'package:flutter/material.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/models/itg/advertisement.dart' as ads; import 'package:path_provider/path_provider.dart'; import 'package:video_player/video_player.dart'; class ITGAdsScreen extends StatefulWidget { - final String encodedBytes; - final String fileExtension; + final String addMasterId; + final ads.Advertisement advertisement; - const ITGAdsScreen({required this.encodedBytes, required this.fileExtension}); + const ITGAdsScreen({required this.addMasterId, required this.advertisement}); @override _ITGAdsScreenState createState() => _ITGAdsScreenState(); @@ -22,10 +25,39 @@ class _ITGAdsScreenState extends State { late Future _futureController; late VideoPlayerController _controller; bool skip = false; + bool isVideo = false; + bool isImage = false; + String ext = ''; + late File imageFile; + + void checkFileType() async { + String? rFile = widget.advertisement!.viewAttachFileColl!.first.base64String; + String? rFileExt = widget.advertisement!.viewAttachFileColl!.first.fileName; + ext = "." + rFileExt!.split(".").last.toLowerCase(); + if (ext == ".png" || ext == ".jpg" || ext == ".jpeg" || ext == ".gif") { + await processImage(rFile!); + isImage = true; + } else { + isVideo = true; + _futureController = createVideoPlayer(rFile!); + } + setState(() {}); + } + + Future processImage(String encodedBytes) async { + try { + Uint8List decodedBytes = base64Decode(encodedBytes.split("base64,").last); + Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); // 1 + imageFile = Io.File("${appDocumentsDirectory.path}/addImage$ext"); + imageFile.writeAsBytesSync(decodedBytes); + } catch (e) { + logger.d(e); + } + } - Future createVideoPlayer() async { + Future createVideoPlayer(String encodedBytes) async { try { - Uint8List decodedBytes = base64Decode(widget.encodedBytes.split("base64,").last); + Uint8List decodedBytes = base64Decode(encodedBytes.split("base64,").last); Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); // 1 File file = Io.File("${appDocumentsDirectory.path}/myAdsVideo.mp4"); file.writeAsBytesSync(decodedBytes); @@ -40,55 +72,15 @@ class _ITGAdsScreenState extends State { } } - void checkType(){ - - // getFileTypeDescription(value); - - - } - - String getFileTypeDescription(String value) { - switch (value) { - case ".pdf": - return "application/pdf"; - case ".png": - return "image/png"; - case ".txt": - return "text/plain"; - case ".jpg": - return "image/jpg"; - case ".jpeg": - return "image/jpeg"; - case ".ppt": - return "application/vnd.openxmlformats-officedocument.presentationml.presentation"; - case ".pptx": - return "application/vnd.openxmlformats-officedocument.presentationml.presentation"; - case ".doc": - return "application/vnd.openxmlformats-officedocument.wordprocessingm"; - case ".docx": - return "application/vnd.openxmlformats-officedocument.wordprocessingm"; - case ".xls": - return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; - case ".xlsx": - return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; - case ".zip": - return "application/octet-stream"; - case ".rar": - return "application/octet-stream"; - default: - return ""; - } - } - @override void initState() { - _futureController = createVideoPlayer(); + checkFileType(); initTimer(); super.initState(); } void initTimer() { - Future.delayed(const Duration(milliseconds: 500), () { + Future.delayed(const Duration(seconds: 5), () { setState(() { skip = true; }); @@ -107,28 +99,34 @@ class _ITGAdsScreenState extends State { return Scaffold( body: Column( children: [ - SizedBox( - height: MediaQuery.of(context).size.height * .3, - child: FutureBuilder( - future: _futureController, - builder: (BuildContext context, AsyncSnapshot snapshot) { - if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) { - _controller = snapshot.data as VideoPlayerController; - return AspectRatio( - aspectRatio: _controller.value.aspectRatio, - child: VideoPlayer(_controller), - ); - } else { - return const Center( - child: CircularProgressIndicator(), - ); - } - }, + if (isVideo) + SizedBox( + height: MediaQuery.of(context).size.height * .3, + child: FutureBuilder( + future: _futureController, + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) { + _controller = snapshot.data as VideoPlayerController; + return AspectRatio( + aspectRatio: _controller.value.aspectRatio, + child: VideoPlayer(_controller), + ); + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, + ), ), - ), + if (isImage) Image.file(imageFile), if (skip) ElevatedButton( - onPressed: () {}, + onPressed: () async { + // DashboardApiClient().setAdvertisementViewed(widget.addMasterId, widget.advertisement!.advertisementId!).then((value) { + // logger.d(value); + // }); + }, child: const Text("Go To Dashboard"), ) ], From 8018120c6a8fbf81c2fd58dd3aec0395fc0e123e Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 27 Nov 2022 10:37:32 +0300 Subject: [PATCH 124/302] chat structure issues. --- lib/api/chat/chat_provider_model.dart | 2 ++ lib/classes/consts.dart | 4 ++-- lib/ui/chat/call/chat_incoming_call_screen.dart | 2 ++ lib/ui/chat/chat_bubble.dart | 3 ++- lib/ui/chat/chat_detailed_screen.dart | 5 +++++ 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/api/chat/chat_provider_model.dart b/lib/api/chat/chat_provider_model.dart index 7a27c1f..16eb97f 100644 --- a/lib/api/chat/chat_provider_model.dart +++ b/lib/api/chat/chat_provider_model.dart @@ -40,6 +40,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List favUsersList = []; int paginationVal = 0; + // todo: @aamir need to make a separate api client for chat, need to improve code structure. + Future getUserAutoLoginToken(BuildContext cxt) async { Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c5788f9..646e498 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/chat/call/chat_incoming_call_screen.dart b/lib/ui/chat/call/chat_incoming_call_screen.dart index a0b8247..1b6a5aa 100644 --- a/lib/ui/chat/call/chat_incoming_call_screen.dart +++ b/lib/ui/chat/call/chat_incoming_call_screen.dart @@ -91,6 +91,8 @@ class _IncomingCallState extends State with SingleTickerProviderSt mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.spaceAround, children: const [ + + // todo @aamir, need to use extension mehtods Text( "Aamir Saleem Ahmad", style: TextStyle( diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 1696a49..ce2e7db 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -3,7 +3,8 @@ import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; -import 'package:sizer/sizer.dart'; + +// todo: @aamir use extension methods, and use correct widgets. class ChatBubble extends StatelessWidget { const ChatBubble( diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 4a8e70c..d8a9cbd 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -30,6 +30,8 @@ class ChatDetailScreen extends StatefulWidget { State createState() => _ChatDetailScreenState(); } +// todo: @aamir use extension methods, and use correct widgets. + class _ChatDetailScreenState extends State { dynamic userDetails; late ChatProviderModel data; @@ -194,6 +196,7 @@ class _ChatDetailScreenState extends State { ], ), if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") + // todo @aamir use correct code Card( margin: EdgeInsets.zero, elevation: 0, @@ -383,6 +386,8 @@ class _ChatDetailScreenState extends State { }; CallDataModel incomingCallData = CallDataModel.fromJson(json); + + // todo @aamir, we are using namedPagedRoute, need to replace await Navigator.push( context, MaterialPageRoute( From fa36cd7ddff49f94bb845abd328e84d064a9fa57 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 27 Nov 2022 12:24:21 +0300 Subject: [PATCH 125/302] Advertisement Image/ Video Module --- lib/classes/consts.dart | 4 +- lib/provider/chat_provider_model.dart | 2 +- lib/ui/landing/dashboard_screen.dart | 66 +++++++++++++-------------- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ede22e3..c5788f9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - //static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 81cb8b5..02bf689 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -241,7 +241,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void chatNotDelivered(List? args) { dynamic items = args!.toList(); - logger.d(items); + // logger.d(items); for (dynamic item in items[0]) { searchedChats!.forEach( (ChatUser element) { diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index c8cdcef..b699455 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -100,39 +100,39 @@ class _DashboardScreenState extends State { Widget build(BuildContext context) { return Scaffold( key: _scaffoldState, - // appBar: AppBar( - // actions: [ - // IconButton( - // onPressed: () { - // data.getITGNotification().then((val) { - // if (val!.result!.data != null) { - // if (val.result!.data!.notificationType == "Survey") { - // Navigator.pushNamed(context, AppRoutes.survey, arguments: val.result!.data); - // } else { - // DashboardApiClient().getAdvertisementDetail(val.result!.data!.notificationMasterId ?? "").then( - // (value) { - // if (value!.mohemmItgResponseItem!.statusCode == 200) { - // if (value.mohemmItgResponseItem!.result!.data != null) { - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (BuildContext context) => ITGAdsScreen( - // addMasterId: val.result!.data!.notificationMasterId!, - // advertisement: value.mohemmItgResponseItem!.result!.data!.advertisement!, - // ), - // ), - // ); - // } - // } - // }, - // ); - // } - // } - // }); - // }, - // icon: Icon(Icons.add)) - // ], - // ), + appBar: AppBar( + actions: [ + IconButton( + onPressed: () { + data.getITGNotification().then((val) { + if (val!.result!.data != null) { + if (val.result!.data!.notificationType == "Survey") { + Navigator.pushNamed(context, AppRoutes.survey, arguments: val.result!.data); + } else { + DashboardApiClient().getAdvertisementDetail(val.result!.data!.notificationMasterId ?? "").then( + (value) { + if (value!.mohemmItgResponseItem!.statusCode == 200) { + if (value.mohemmItgResponseItem!.result!.data != null) { + Navigator.push( + context, + MaterialPageRoute( + builder: (BuildContext context) => ITGAdsScreen( + addMasterId: val.result!.data!.notificationMasterId!, + advertisement: value.mohemmItgResponseItem!.result!.data!.advertisement!, + ), + ), + ); + } + } + }, + ); + } + } + }); + }, + icon: Icon(Icons.add)) + ], + ), body: Column( children: [ Row( From ccb89584e2256cff87a91b726098fccf413f9024 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 27 Nov 2022 12:24:21 +0300 Subject: [PATCH 126/302] chat structure issues. --- lib/classes/colors.dart | 1 + lib/classes/consts.dart | 12 +- lib/ui/chat/chat_bubble.dart | 56 ++++ lib/ui/chat/chat_detailed_screen.dart | 413 ++++++++++---------------- lib/ui/chat/chat_home.dart | 14 +- lib/ui/chat/chat_home_screen.dart | 52 +--- 6 files changed, 231 insertions(+), 317 deletions(-) diff --git a/lib/classes/colors.dart b/lib/classes/colors.dart index f99cc31..10681be 100644 --- a/lib/classes/colors.dart +++ b/lib/classes/colors.dart @@ -17,6 +17,7 @@ class MyColors { static const Color greyF7Color = Color(0xffF7F7F7); static const Color grey80Color = Color(0xff808080); static const Color grey70Color = Color(0xff707070); + static const Color grey7BColor = Color(0xff7B7B7B); static const Color greyACColor = Color(0xffACACAC); static const Color grey98Color = Color(0xff989898); static const Color lightGreyEFColor = Color(0xffEFEFEF); diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ede22e3..4d6eca8 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - //static String baseUrl = "https://hmgwebservices.com"; // Live server + // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -10,10 +10,12 @@ class ApiConsts { static String user = baseUrlServices + "api/User/"; static String cocRest = baseUrlServices + "COCWS.svc/REST/"; + // todo @aamir move api end point last repo to concerned method. + //Chat - static String chatServerBaseUrl = "https://apiderichat.hmg.com"; - static String chatServerBaseApiUrl = "https://apiderichat.hmg.com/api/"; - static String chatHubConnectionUrl = chatServerBaseUrl + "/ConnectionChatHub"; + static String chatServerBaseUrl = "https://apiderichat.hmg.com/"; + static String chatServerBaseApiUrl = chatServerBaseUrl + "api/"; + static String chatHubConnectionUrl = chatServerBaseUrl + "ConnectionChatHub"; static String chatSearchMember = "user/getUserWithStatusAndFavAsync/"; static String chatRecentUrl = "UserChatHistory/getchathistorybyuserid"; //For a Mem static String chatSingleUserHistoryUrl = "UserChatHistory/GetUserChatHistory"; diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index a7dd9b0..38c47ae 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -29,6 +29,8 @@ class ChatBubble extends StatelessWidget { @override Widget build(BuildContext context) { + return isCurrentUser ? currentUser(context) : receiptUser(context); + return Padding( // padding: EdgeInsets.zero, padding: EdgeInsets.only( @@ -148,4 +150,58 @@ class ChatBubble extends StatelessWidget { ), ); } + + Widget currentUser(context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (text).toText12(), + Align( + alignment: Alignment.centerRight, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + dateTime.toText10(color: MyColors.grey41Color.withOpacity(.5)), + 7.width, + Icon( + isDelivered ? Icons.done_all : Icons.done_all, + color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor, + size: 14, + ), + ], + ), + ), + ], + ).paddingOnly(top: 11, left: 13, right: 7, bottom: 5).objectContainerView(disablePadding: true).paddingOnly(left: MediaQuery.of(context).size.width * 0.3); + } + + Widget receiptUser(context) { + return Container( + padding: const EdgeInsets.only(top: 11, left: 13, right: 7, bottom: 5), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + gradient: const LinearGradient( + transform: GradientRotation(.83), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (text).toText12(color: Colors.white), + Align( + alignment: Alignment.centerRight, + child: dateTime.toText10( + color: Colors.white.withOpacity(.71), + ), + ), + ], + ), + ).paddingOnly(right: MediaQuery.of(context).size.width * 0.3); + } } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index a3cf2e9..00bb43b 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,18 +1,16 @@ import 'dart:async'; -import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/call.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; @@ -49,9 +47,7 @@ class _ChatDetailScreenState extends State { } } await Future.delayed( - const Duration( - milliseconds: 1000, - ), + const Duration(milliseconds: 1000), ); _rc.loadComplete(); } @@ -71,283 +67,172 @@ class _ChatDetailScreenState extends State { return Scaffold( backgroundColor: MyColors.backgroundColor, - appBar: AppBarWidget(context, - title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, - showHomeButton: false, - image: userDetails["targetUser"].image, - actions: [ - IconButton( - onPressed: () { - makeCall( - callType: "AUDIO", - con: hubConnection, - ); - }, - icon: SvgPicture.asset( - "assets/icons/chat/call.svg", - width: 22, - height: 22, - ), - ), - IconButton( - onPressed: () { - makeCall( - callType: "VIDEO", - con: hubConnection, - ); - }, - icon: SvgPicture.asset( - "assets/icons/chat/video_call.svg", - width: 20, - height: 20, - ), - ), - 10.width, - ]), + appBar: AppBarWidget( + context, + title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, + showHomeButton: false, + image: userDetails["targetUser"].image, + actions: [ + IconButton( + onPressed: () { + makeCall(callType: "AUDIO", con: hubConnection); + }, + icon: SvgPicture.asset("assets/icons/chat/call.svg", width: 22, height: 22), + ), + IconButton( + onPressed: () { + makeCall(callType: "VIDEO", con: hubConnection); + }, + icon: SvgPicture.asset("assets/icons/chat/video_call.svg", width: 20, height: 20), + ), + 10.width, + ], + ), body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { return (m.isLoading ? ChatHomeShimmer() : Column( children: [ - Expanded( - flex: 2, - child: SmartRefresher( - enablePullDown: false, - enablePullUp: true, - onLoading: () { - getMoreChat(); - }, - header: const MaterialClassicHeader( - color: MyColors.gradiantEndColor, - ), - controller: _rc, + SmartRefresher( + enablePullDown: false, + enablePullUp: true, + onLoading: () { + getMoreChat(); + }, + header: const MaterialClassicHeader( + color: MyColors.gradiantEndColor, + ), + controller: _rc, + reverse: true, + child: ListView.separated( + controller: m.scrollController, + shrinkWrap: true, + physics: const BouncingScrollPhysics(), reverse: true, - child: ListView.builder( - controller: m.scrollController, - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - reverse: true, - itemCount: m.userChatHistory.length, - padding: const EdgeInsets.only(top: 20), - itemBuilder: (BuildContext context, int i) { - return SwipeTo( - iconColor: MyColors.lightGreenColor, - child: ChatBubble( - text: m.userChatHistory[i].contant.toString(), - replyText: m.userChatHistory[i].userChatReplyResponse != null ? m.userChatHistory[i].userChatReplyResponse!.contant.toString() : "", - isSeen: m.userChatHistory[i].isSeen == true ? true : false, - isCurrentUser: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id ? true : false, - isDelivered: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id && m.userChatHistory[i].isDelivered == true ? true : false, - dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), - isReplied: m.userChatHistory[i].userChatReplyResponse != null ? true : false, - userName: AppState().chatDetails!.response!.userName == m.userChatHistory[i].currentUserName.toString() ? "You" : m.userChatHistory[i].currentUserName.toString(), - ), - onRightSwipe: () { - m.chatReply( - m.userChatHistory[i], - ); - }, - ); - }, - ), + itemCount: m.userChatHistory.length, + padding: const EdgeInsets.all(21), + separatorBuilder: (cxt, index) => 8.height, + itemBuilder: (BuildContext context, int i) { + return SwipeTo( + iconColor: MyColors.lightGreenColor, + child: ChatBubble( + text: m.userChatHistory[i].contant.toString(), + replyText: m.userChatHistory[i].userChatReplyResponse != null ? m.userChatHistory[i].userChatReplyResponse!.contant.toString() : "", + isSeen: m.userChatHistory[i].isSeen == true ? true : false, + isCurrentUser: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id ? true : false, + isDelivered: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id && m.userChatHistory[i].isDelivered == true ? true : false, + dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), + isReplied: m.userChatHistory[i].userChatReplyResponse != null ? true : false, + userName: AppState().chatDetails!.response!.userName == m.userChatHistory[i].currentUserName.toString() ? "You" : m.userChatHistory[i].currentUserName.toString(), + ), + onRightSwipe: () { + m.chatReply( + m.userChatHistory[i], + ); + }, + ); + }, ), - ), + ).expanded, if (m.isMsgReply) - Row( - children: [ - Container( - height: 80, - color: MyColors.textMixColor, - width: 6, - ), - Expanded( - child: Container( - height: 80, - color: MyColors.black.withOpacity(0.10), - child: ListTile( - title: (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString() - ? "You" - : m.repliedMsg.first.currentUserName.toString().replaceAll(".", " ")) - .toText14(color: MyColors.lightGreenColor), - subtitle: (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12( - color: MyColors.white, - maxLine: 2, - ), - trailing: GestureDetector( - onTap: m.closeMe, - child: Container( - decoration: BoxDecoration( - color: MyColors.white.withOpacity(0.5), - borderRadius: const BorderRadius.all( - Radius.circular(20), - ), - ), - child: const Icon( - Icons.close, - size: 23, - color: MyColors.white, - ), - ), - ), + SizedBox( + height: 82, + child: Row( + children: [ + Container(height: 82, color: MyColors.textMixColor, width: 6), + Container( + color: MyColors.darkTextColor.withOpacity(0.10), + padding: const EdgeInsets.only(top: 11, left: 14, bottom: 14, right: 21), + child: Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString() + ? "You" + : m.repliedMsg.first.currentUserName.toString().replaceAll(".", " ")) + .toText14(color: MyColors.lightGreenColor), + (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12(color: MyColors.grey71Color, maxLine: 2) + ], + ).expanded, + 12.width, + const Icon(Icons.cancel, size: 23, color: MyColors.grey7BColor).onPress(m.closeMe), + ], ), - ), - ), - ], + ).expanded, + ], + ), ), if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") - Card( - margin: EdgeInsets.zero, - elevation: 0, - child: Padding( - padding: const EdgeInsets.only( - left: 20, - right: 20, - top: 20, - bottom: 0, - ), - child: Card( - margin: EdgeInsets.zero, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(0), - ), - elevation: 0, - child: Container( - height: 200, - decoration: BoxDecoration( - image: DecorationImage( - image: FileImage( - m.selectedFile, + SizedBox(height: 200, width: double.infinity, child: Image.file(m.selectedFile, fit: BoxFit.cover)).paddingOnly(left: 21, right: 21, top: 21), + TextField( + controller: m.message, + decoration: InputDecoration( + hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), + hintStyle: TextStyle(color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14), + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + errorBorder: InputBorder.none, + disabledBorder: InputBorder.none, + contentPadding: EdgeInsets.only(left: m.sFileType.isNotEmpty ? 10 : 20, right: m.sFileType.isNotEmpty ? 0 : 5, top: 20, bottom: 20), + prefixIconConstraints: BoxConstraints(), + prefixIcon: m.sFileType.isNotEmpty ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover) : null, + suffixIcon: SizedBox( + width: 96, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.center, // added line + children: [ + if (m.sFileType.isNotEmpty) + IconButton( + padding: EdgeInsets.zero, + alignment: Alignment.centerRight, + icon: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + decoration: const BoxDecoration( + color: MyColors.redA3Color, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: const Icon(Icons.close, size: 15, color: MyColors.white), + ), + ("Clear").toText11(color: MyColors.redA3Color).paddingOnly(left: 4), + ], ), - fit: BoxFit.cover, - ), - borderRadius: const BorderRadius.all( - Radius.circular(0), + onPressed: () async { + m.removeAttachment(); + }, ), - ), - child: const SizedBox( - width: double.infinity, - height: 200, - ), - ), - ), - ), - ), - Card( - margin: EdgeInsets.zero, - child: TextField( - controller: m.message, - decoration: InputDecoration( - hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), - hintStyle: TextStyle( - color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, - fontSize: 14, - ), - border: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, - errorBorder: InputBorder.none, - disabledBorder: InputBorder.none, - contentPadding: EdgeInsets.only( - left: m.sFileType.isNotEmpty ? 10 : 20, - right: m.sFileType.isNotEmpty ? 0 : 5, - top: 20, - bottom: 20, - ), - prefixIcon: m.sFileType.isNotEmpty - ? Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - SvgPicture.asset( - m.getType(m.sFileType), - height: 30, - width: 25, - alignment: Alignment.center, - fit: BoxFit.cover, - ).paddingOnly(left: 20), - ], - ) - : null, - suffixIcon: SizedBox( - width: 96, - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.center, // added line - children: [ - if (m.sFileType.isNotEmpty) - IconButton( + if (m.sFileType.isEmpty) + RotationTransition( + turns: const AlwaysStoppedAnimation(45 / 360), + child: IconButton( padding: EdgeInsets.zero, - alignment: Alignment.centerRight, - icon: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.max, - children: [ - Container( - decoration: const BoxDecoration( - color: MyColors.redA3Color, - borderRadius: BorderRadius.all( - Radius.circular(20), - ), - ), - child: const Icon( - Icons.close, - size: 15, - color: MyColors.white, - ), - ), - ("Clear") - .toText11( - color: MyColors.redA3Color, - ) - .paddingOnly( - left: 4, - ), - ], - ), + alignment: Alignment.topRight, + icon: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor), onPressed: () async { - m.removeAttachment(); + m.selectImageToUpload(context); }, ), - if (m.sFileType.isEmpty) - RotationTransition( - turns: const AlwaysStoppedAnimation(45 / 360), - child: IconButton( - padding: EdgeInsets.zero, - alignment: Alignment.topRight, - icon: const Icon( - Icons.attach_file_rounded, - size: 26, - color: MyColors.grey3AColor, - ), - onPressed: () async { - m.selectImageToUpload(context); - }, - ), - ), - IconButton( - alignment: Alignment.centerRight, - padding: EdgeInsets.zero, - icon: SvgPicture.asset( - "assets/icons/chat/chat_send_icon.svg", - height: 26, - width: 26, - ), - onPressed: () { - m.sendChatMessage( - userDetails["targetUser"].id, - userDetails["targetUser"].userName, - context, - ); - }, - ) - ], - ), - ).paddingOnly( - right: 20, + ), + IconButton( + alignment: Alignment.centerRight, + padding: EdgeInsets.zero, + icon: SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26), + onPressed: () { + m.sendChatMessage(userDetails["targetUser"].id, userDetails["targetUser"].userName, context); + }, + ) + ], ), - ), + ).paddingOnly(right: 20), ), ), ], diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 3ad9b12..3bf8cda 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -1,19 +1,13 @@ -import 'dart:convert'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/chat_home_screen.dart'; import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; -import 'package:mohem_flutter_app/ui/screens/items_for_sale/fragments/items_for_sale.dart'; -import 'package:mohem_flutter_app/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; @@ -45,11 +39,7 @@ class _ChatHomeState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: MyColors.white, - appBar: AppBarWidget( - context, - title: LocaleKeys.chat.tr(), - showHomeButton: true, - ), + appBar: AppBarWidget(context, title: LocaleKeys.chat.tr(), showHomeButton: true), body: Column( children: [ Container( diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index a6f91b8..db18166 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -2,13 +2,13 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; @@ -51,50 +51,30 @@ class _ChatHomeScreenState extends State { physics: const AlwaysScrollableScrollPhysics(), children: [ Padding( - padding: const EdgeInsets.symmetric( - vertical: 20, - horizontal: 20, - ), + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), child: TextField( controller: m.search, + style: const TextStyle(color: MyColors.darkTextColor, fontWeight: FontWeight.w500, fontSize: 12), onChanged: (String val) { m.filter(val); }, decoration: InputDecoration( - border: fieldBorder( - radius: 5, - color: 0xFFE5E5E5, - ), - focusedBorder: fieldBorder( - radius: 5, - color: 0xFFE5E5E5, - ), - enabledBorder: fieldBorder( - radius: 5, - color: 0xFFE5E5E5, - ), - contentPadding: const EdgeInsets.symmetric( - horizontal: 15, - vertical: 10, - ), + border: fieldBorder(radius: 5, color: 0xFFE5E5E5), + focusedBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), + enabledBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), + contentPadding: const EdgeInsets.all(11), hintText: LocaleKeys.searchfromchat.tr(), - hintStyle: const TextStyle( - color: MyColors.lightTextColor, - fontStyle: FontStyle.italic, - ), + hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic, fontWeight: FontWeight.w500, fontSize: 12), filled: true, - fillColor: const Color( - 0xFFF7F7F7, - ), + fillColor: const Color(0xFFF7F7F7), + suffixIconConstraints: const BoxConstraints(), suffixIcon: m.search.text.isNotEmpty ? IconButton( + constraints: const BoxConstraints(), onPressed: () { m.clearSelections(); }, - icon: const Icon( - Icons.clear, - size: 22, - ), + icon: const Icon(Icons.clear, size: 22), color: MyColors.redA3Color, ) : null, @@ -103,15 +83,15 @@ class _ChatHomeScreenState extends State { ), if (m.searchedChats != null) ListView.separated( - itemCount: m.searchedChats!.length, - padding: const EdgeInsets.only( - bottom: 80, - ), + itemCount: m.searchedChats!.length + 20, + padding: const EdgeInsets.only(bottom: 80), shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemBuilder: (BuildContext context, int index) { + index = 0; return SizedBox( height: 55, + // todo @aamir, remove list tile, make a custom ui instead child: ListTile( leading: Stack( children: [ From 7f2aa4415d702e38f9f6855e72db20c23300e07a Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 27 Nov 2022 12:25:15 +0300 Subject: [PATCH 127/302] improvement. --- lib/ui/chat/chat_home_screen.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index db18166..56c17d8 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -83,12 +83,11 @@ class _ChatHomeScreenState extends State { ), if (m.searchedChats != null) ListView.separated( - itemCount: m.searchedChats!.length + 20, + itemCount: m.searchedChats!.length, padding: const EdgeInsets.only(bottom: 80), shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemBuilder: (BuildContext context, int index) { - index = 0; return SizedBox( height: 55, // todo @aamir, remove list tile, make a custom ui instead From 545c33ee4afe8fbbe873a420816d002ae8b9946a Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 27 Nov 2022 16:52:18 +0300 Subject: [PATCH 128/302] Chat Fixes --- lib/api/chat/chat_api_client.dart | 16 ++-- lib/classes/consts.dart | 16 ++-- lib/config/routes.dart | 30 +++----- lib/provider/chat_provider_model.dart | 5 +- lib/ui/chat/chat_bubble.dart | 44 +++++++++++ lib/ui/chat/chat_detailed_screen.dart | 75 +++++++------------ lib/ui/chat/chat_home_screen.dart | 1 + lib/ui/landing/dashboard_screen.dart | 71 ++++++++++-------- .../itg/its_add_screen_video_image.dart | 31 ++++---- 9 files changed, 159 insertions(+), 130 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 0d1653d..323c3d4 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -18,7 +18,7 @@ class ChatApiClient { Future getUserLoginToken() async { Response response = await ApiClient().postJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}user/externaluserlogin", + "${ApiConsts.chatLoginTokenUrl}externaluserlogin", { "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER.toString(), "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG", @@ -32,7 +32,7 @@ class ChatApiClient { Future?> getChatMemberFromSearch(String sName, int cUserId) async { Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSearchMember}$sName/$cUserId", + "${ApiConsts.chatLoginTokenUrl}getUserWithStatusAndFavAsync/$sName/$cUserId", token: AppState().chatDetails!.response!.token, ); return searchUserJsonModel(response.body); @@ -44,7 +44,7 @@ class ChatApiClient { Future getRecentChats() async { Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatRecentUrl}", + "${ApiConsts.chatRecentUrl}getchathistorybyuserid", token: AppState().chatDetails!.response!.token, ); return ChatUserModel.fromJson( @@ -54,7 +54,7 @@ class ChatApiClient { Future getFavUsers() async { Response favRes = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatFavoriteUsers}${AppState().chatDetails!.response!.id}", + "${ApiConsts.chatFavUser}getFavUserById/${AppState().chatDetails!.response!.id}", token: AppState().chatDetails!.response!.token, ); return ChatUserModel.fromJson( @@ -64,7 +64,7 @@ class ChatApiClient { Future getSingleUserChatHistory({required int senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false, required int paginationVal}) async { Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatSingleUserHistoryUrl}/$senderUID/$receiverUID/$paginationVal", + "${ApiConsts.chatSingleUserHistoryUrl}GetUserChatHistory/$senderUID/$receiverUID/$paginationVal", token: AppState().chatDetails!.response!.token, ); return response; @@ -72,7 +72,7 @@ class ChatApiClient { Future favUser({required int userID, required int targetUserID}) async { Response response = await ApiClient().postJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}FavUser/addFavUser", + "${ApiConsts.chatFavUser}addFavUser", { "targetUserId": targetUserID, "userId": userID, @@ -84,7 +84,7 @@ class ChatApiClient { Future unFavUser({required int userID, required int targetUserID}) async { Response response = await ApiClient().postJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}FavUser/deleteFavUser", + "${ApiConsts.chatFavUser}deleteFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token, ); @@ -93,7 +93,7 @@ class ChatApiClient { } Future uploadMedia(String userId, File file) async { - dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatServerBaseApiUrl}${ApiConsts.chatMediaImageUploadUrl}')); + dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatServerBaseApiUrl}upload')); request.fields.addAll({'userId': userId, 'fileSource': '1'}); request.files.add(await MultipartFile.fromPath('files', file.path)); request.headers.addAll({'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}'}); diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 4d6eca8..edc866f 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,6 +1,6 @@ class ApiConsts { - //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "http://10.200.204.20:2801/"; // Local server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server @@ -15,12 +15,14 @@ class ApiConsts { //Chat static String chatServerBaseUrl = "https://apiderichat.hmg.com/"; static String chatServerBaseApiUrl = chatServerBaseUrl + "api/"; + static String chatLoginTokenUrl = chatServerBaseApiUrl + "user/"; static String chatHubConnectionUrl = chatServerBaseUrl + "ConnectionChatHub"; - static String chatSearchMember = "user/getUserWithStatusAndFavAsync/"; - static String chatRecentUrl = "UserChatHistory/getchathistorybyuserid"; //For a Mem - static String chatSingleUserHistoryUrl = "UserChatHistory/GetUserChatHistory"; - static String chatMediaImageUploadUrl = "shared/upload"; - static String chatFavoriteUsers = "FavUser/getFavUserById/"; + + // static String chatSearchMember = chatLoginTokenUrl + "user/"; + static String chatRecentUrl = chatServerBaseApiUrl + "UserChatHistory/"; //For a Mem + static String chatSingleUserHistoryUrl = chatServerBaseApiUrl + "UserChatHistory/"; + static String chatMediaImageUploadUrl = chatServerBaseApiUrl + "shared/"; + static String chatFavUser = chatServerBaseApiUrl + "FavUser/"; } class SharedPrefsConsts { diff --git a/lib/config/routes.dart b/lib/config/routes.dart index ab3fb9a..7cf8a35 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -7,6 +7,7 @@ import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_home.dart'; import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; +import 'package:mohem_flutter_app/ui/landing/itg/its_add_screen_video_image.dart'; import 'package:mohem_flutter_app/ui/landing/itg/survey_screen.dart'; import 'package:mohem_flutter_app/ui/landing/today_attendance_screen.dart'; import 'package:mohem_flutter_app/ui/landing/today_attendance_screen2.dart'; @@ -87,6 +88,7 @@ class AppRoutes { static const String addEitScreen = "/addeitScreen"; static const String initialRoute = login; static const String survey = "/survey"; + static const String advertisement = "/advertisement"; //Work List static const String workList = "/workList"; @@ -116,8 +118,7 @@ class AppRoutes { static const String addVacationRule = "/addVacationRule"; //Bottom Sheet - static const String attendanceDetailsBottomSheet = - "/attendanceDetailsBottomSheet"; + static const String attendanceDetailsBottomSheet = "/attendanceDetailsBottomSheet"; //Profile static const String profile = "/profile"; @@ -135,8 +136,7 @@ class AppRoutes { // Pending Transactions static const String pendingTransactions = "/pendingTransactions"; - static const String pendingTransactionsDetails = - "/pendingTransactionsDetails"; + static const String pendingTransactionsDetails = "/pendingTransactionsDetails"; // Announcements static const String announcements = "/announcements"; @@ -192,6 +192,7 @@ class AppRoutes { verifyLastLogin: (BuildContext context) => VerifyLastLoginScreen(), dashboard: (BuildContext context) => DashboardScreen(), survey: (BuildContext context) => SurveyScreen(), + advertisement: (BuildContext context) => ITGAdsScreen(), subMenuScreen: (BuildContext context) => SubMenuScreen(), newPassword: (BuildContext context) => NewPasswordScreen(), @@ -223,8 +224,7 @@ class AppRoutes { addVacationRule: (BuildContext context) => AddVacationRuleScreen(), //Bottom Sheet - attendanceDetailsBottomSheet: (BuildContext context) => - AttendenceDetailsBottomSheet(), + attendanceDetailsBottomSheet: (BuildContext context) => AttendenceDetailsBottomSheet(), //Profile //profile: (BuildContext context) => Profile(), @@ -235,13 +235,10 @@ class AppRoutes { familyMembers: (BuildContext context) => FamilyMembers(), dynamicScreen: (BuildContext context) => DynamicListViewScreen(), addDynamicInput: (BuildContext context) => DynamicInputScreen(), - addDynamicInputProfile: (BuildContext context) => - DynamicInputScreenProfile(), - addDynamicAddressScreen: (BuildContext context) => - DynamicInputScreenAddress(), + addDynamicInputProfile: (BuildContext context) => DynamicInputScreenProfile(), + addDynamicAddressScreen: (BuildContext context) => DynamicInputScreenAddress(), - deleteFamilyMember: (BuildContext context) => - DeleteFamilyMember(ModalRoute.of(context)!.settings.arguments as int), + deleteFamilyMember: (BuildContext context) => DeleteFamilyMember(ModalRoute.of(context)!.settings.arguments as int), requestSubmitScreen: (BuildContext context) => RequestSubmitScreen(), addUpdateFamilyMember: (BuildContext context) => AddUpdateFamilyMember(), @@ -251,8 +248,7 @@ class AppRoutes { mowadhafhiHRRequest: (BuildContext context) => MowadhafhiHRRequest(), pendingTransactions: (BuildContext context) => PendingTransactions(), - pendingTransactionsDetails: (BuildContext context) => - PendingTransactionsDetails(), + pendingTransactionsDetails: (BuildContext context) => PendingTransactionsDetails(), announcements: (BuildContext context) => Announcements(), announcementsDetails: (BuildContext context) => AnnouncementDetails(), @@ -268,8 +264,7 @@ class AppRoutes { // Offers & Discounts offersAndDiscounts: (BuildContext context) => OffersAndDiscountsHome(), - offersAndDiscountsDetails: (BuildContext context) => - OffersAndDiscountsDetails(), + offersAndDiscountsDetails: (BuildContext context) => OffersAndDiscountsDetails(), //pay slip monthlyPaySlip: (BuildContext context) => MonthlyPaySlipScreen(), @@ -296,8 +291,7 @@ class AppRoutes { // Marathon marathonIntroScreen: (BuildContext context) => MarathonIntroScreen(), marathonScreen: (BuildContext context) => MarathonScreen(), - marathonWinnerSelection: (BuildContext context) => - MarathonWinnerSelection(), + marathonWinnerSelection: (BuildContext context) => MarathonWinnerSelection(), marathonWinnerScreen: (BuildContext context) => WinnerScreen(), }; } diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 02bf689..dc98858 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -241,7 +241,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void chatNotDelivered(List? args) { dynamic items = args!.toList(); - // logger.d(items); + logger.d(items); for (dynamic item in items[0]) { searchedChats!.forEach( (ChatUser element) { @@ -292,7 +292,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { data.first.currentUserId = temp.first.targetUserId; data.first.currentUserName = temp.first.targetUserName; } - logger.d(jsonEncode(data)); userChatHistory.insert(0, data.first); var list = [ { @@ -601,6 +600,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void clearSelections() { + print("Hereee i am "); searchedChats = pChatHistory; search.clear(); isChatScreenActive = false; @@ -609,6 +609,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isFileSelected = false; repliedMsg = []; sFileType = ""; + isMsgReply = false; notifyListeners(); } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 38c47ae..bcf78aa 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -155,6 +155,28 @@ class ChatBubble extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + if (isReplied) + ClipRRect( + borderRadius: BorderRadius.circular( + 5.0, + ), + child: Container( + width: double.infinity, + decoration: BoxDecoration( + border: Border( + left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), + ), + color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (userName).toText12(color: MyColors.gradiantStartColor, isBold: false).paddingOnly(right: 5, top: 5, bottom: 0, left: 5), + replyText.toText10(color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), isBold: false, maxlines: 4).paddingOnly(right: 5, top: 5, bottom: 8, left: 5), + ], + ).expanded, + ), + ).paddingOnly(right: 5, bottom: 7), (text).toText12(), Align( alignment: Alignment.centerRight, @@ -193,6 +215,28 @@ class ChatBubble extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + if (isReplied) + ClipRRect( + borderRadius: BorderRadius.circular( + 5.0, + ), + child: Container( + width: double.infinity, + decoration: BoxDecoration( + border: Border( + left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), + ), + color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (userName).toText12(color: MyColors.gradiantStartColor, isBold: false).paddingOnly(right: 5, top: 5, bottom: 0, left: 5), + replyText.toText10(color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), isBold: false, maxlines: 4).paddingOnly(right: 5, top: 5, bottom: 8, left: 5), + ], + ).expanded, + ), + ).paddingOnly(right: 5, bottom: 7), (text).toText12(color: Colors.white), Align( alignment: Alignment.centerRight, diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 00bb43b..e0f7f93 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -19,6 +19,7 @@ import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart' import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:signalr_netcore/signalr_client.dart'; +import 'package:sizer/sizer.dart'; import 'package:swipe_to/swipe_to.dart'; class ChatDetailScreen extends StatefulWidget { @@ -74,14 +75,16 @@ class _ChatDetailScreenState extends State { image: userDetails["targetUser"].image, actions: [ IconButton( + constraints: const BoxConstraints(), onPressed: () { - makeCall(callType: "AUDIO", con: hubConnection); + // makeCall(callType: "AUDIO", con: hubConnection); }, icon: SvgPicture.asset("assets/icons/chat/call.svg", width: 22, height: 22), ), IconButton( + constraints: const BoxConstraints(), onPressed: () { - makeCall(callType: "VIDEO", con: hubConnection); + //makeCall(callType: "VIDEO", con: hubConnection); }, icon: SvgPicture.asset("assets/icons/chat/video_call.svg", width: 20, height: 20), ), @@ -176,63 +179,43 @@ class _ChatDetailScreenState extends State { enabledBorder: InputBorder.none, errorBorder: InputBorder.none, disabledBorder: InputBorder.none, - contentPadding: EdgeInsets.only(left: m.sFileType.isNotEmpty ? 10 : 20, right: m.sFileType.isNotEmpty ? 0 : 5, top: 20, bottom: 20), + filled: true, + fillColor: MyColors.white, + contentPadding: EdgeInsets.only( + left: 21, + top: 20, + bottom: 20, + ), prefixIconConstraints: BoxConstraints(), - prefixIcon: m.sFileType.isNotEmpty ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover) : null, + prefixIcon: m.sFileType.isNotEmpty + ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 21, right: 15) + : null, suffixIcon: SizedBox( - width: 96, + width: 100, child: Row( mainAxisAlignment: MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.center, // added line children: [ if (m.sFileType.isNotEmpty) - IconButton( - padding: EdgeInsets.zero, - alignment: Alignment.centerRight, - icon: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.max, - children: [ - Container( - decoration: const BoxDecoration( - color: MyColors.redA3Color, - borderRadius: BorderRadius.all( - Radius.circular(20), - ), - ), - child: const Icon(Icons.close, size: 15, color: MyColors.white), - ), - ("Clear").toText11(color: MyColors.redA3Color).paddingOnly(left: 4), - ], - ), - onPressed: () async { - m.removeAttachment(); - }, - ), + Row( + children: [ + const Icon(Icons.cancel, size: 15, color: MyColors.redA3Color).paddingOnly(right: 5), + ("Clear").toText11(color: MyColors.redA3Color, isUnderLine: true).paddingOnly(left: 0), + ], + ).onPress(() => m.removeAttachment()).paddingOnly(right: 25), if (m.sFileType.isEmpty) RotationTransition( turns: const AlwaysStoppedAnimation(45 / 360), - child: IconButton( - padding: EdgeInsets.zero, - alignment: Alignment.topRight, - icon: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor), - onPressed: () async { - m.selectImageToUpload(context); - }, + child: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor).onPress( + () => m.selectImageToUpload(context), ), - ), - IconButton( - alignment: Alignment.centerRight, - padding: EdgeInsets.zero, - icon: SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26), - onPressed: () { - m.sendChatMessage(userDetails["targetUser"].id, userDetails["targetUser"].userName, context); - }, - ) + ).paddingOnly(right: 25), + SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26).onPress( + () => m.sendChatMessage(userDetails["targetUser"].id, userDetails["targetUser"].userName, context), + ), ], ), - ).paddingOnly(right: 20), + ).paddingOnly(right: 21), ), ), ], diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 56c17d8..2724683 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -162,6 +162,7 @@ class _ChatHomeScreenState extends State { ), Flexible( child: IconButton( + constraints: BoxConstraints(), alignment: Alignment.centerRight, padding: EdgeInsets.zero, icon: Icon( diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index b699455..d9b565c 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -100,39 +100,44 @@ class _DashboardScreenState extends State { Widget build(BuildContext context) { return Scaffold( key: _scaffoldState, - appBar: AppBar( - actions: [ - IconButton( - onPressed: () { - data.getITGNotification().then((val) { - if (val!.result!.data != null) { - if (val.result!.data!.notificationType == "Survey") { - Navigator.pushNamed(context, AppRoutes.survey, arguments: val.result!.data); - } else { - DashboardApiClient().getAdvertisementDetail(val.result!.data!.notificationMasterId ?? "").then( - (value) { - if (value!.mohemmItgResponseItem!.statusCode == 200) { - if (value.mohemmItgResponseItem!.result!.data != null) { - Navigator.push( - context, - MaterialPageRoute( - builder: (BuildContext context) => ITGAdsScreen( - addMasterId: val.result!.data!.notificationMasterId!, - advertisement: value.mohemmItgResponseItem!.result!.data!.advertisement!, - ), - ), - ); - } - } - }, - ); - } - } - }); - }, - icon: Icon(Icons.add)) - ], - ), + // appBar: AppBar( + // actions: [ + // IconButton( + // onPressed: () { + // data.getITGNotification().then((val) { + // if (val!.result!.data != null) { + // if (val.result!.data!.notificationType == "Survey") { + // Navigator.pushNamed(context, AppRoutes.survey, arguments: val.result!.data); + // } else { + // DashboardApiClient().getAdvertisementDetail(val.result!.data!.notificationMasterId ?? "").then( + // (value) { + // if (value!.mohemmItgResponseItem!.statusCode == 200) { + // if (value.mohemmItgResponseItem!.result!.data != null) { + // Navigator.pushNamed(context, AppRoutes.advertisement, arguments: { + // "masterId": val.result!.data!.notificationMasterId, + // "advertisement": value.mohemmItgResponseItem!.result!.data!.advertisement, + // }); + // + // // Navigator.push( + // // context, + // // MaterialPageRoute( + // // builder: (BuildContext context) => ITGAdsScreen( + // // addMasterId: val.result!.data!.notificationMasterId!, + // // advertisement: value.mohemmItgResponseItem!.result!.data!.advertisement!, + // // ), + // // ), + // // ); + // } + // } + // }, + // ); + // } + // } + // }); + // }, + // icon: Icon(Icons.add)) + // ], + // ), body: Column( children: [ Row( diff --git a/lib/ui/landing/itg/its_add_screen_video_image.dart b/lib/ui/landing/itg/its_add_screen_video_image.dart index 4b2e358..a71a71b 100644 --- a/lib/ui/landing/itg/its_add_screen_video_image.dart +++ b/lib/ui/landing/itg/its_add_screen_video_image.dart @@ -12,10 +12,7 @@ import 'package:path_provider/path_provider.dart'; import 'package:video_player/video_player.dart'; class ITGAdsScreen extends StatefulWidget { - final String addMasterId; - final ads.Advertisement advertisement; - - const ITGAdsScreen({required this.addMasterId, required this.advertisement}); + const ITGAdsScreen({Key? key}) : super(key: key); @override _ITGAdsScreenState createState() => _ITGAdsScreenState(); @@ -29,10 +26,13 @@ class _ITGAdsScreenState extends State { bool isImage = false; String ext = ''; late File imageFile; + ads.Advertisement? advertisementData; + dynamic data; + String? masterID; void checkFileType() async { - String? rFile = widget.advertisement!.viewAttachFileColl!.first.base64String; - String? rFileExt = widget.advertisement!.viewAttachFileColl!.first.fileName; + String? rFile = advertisementData!.viewAttachFileColl!.first.base64String; + String? rFileExt = advertisementData!.viewAttachFileColl!.first.fileName; ext = "." + rFileExt!.split(".").last.toLowerCase(); if (ext == ".png" || ext == ".jpg" || ext == ".jpeg" || ext == ".gif") { await processImage(rFile!); @@ -42,6 +42,7 @@ class _ITGAdsScreenState extends State { _futureController = createVideoPlayer(rFile!); } setState(() {}); + initTimer(); } Future processImage(String encodedBytes) async { @@ -72,18 +73,10 @@ class _ITGAdsScreenState extends State { } } - @override - void initState() { - checkFileType(); - initTimer(); - super.initState(); - } - void initTimer() { Future.delayed(const Duration(seconds: 5), () { - setState(() { - skip = true; - }); + skip = true; + setState(() {}); }); } @@ -95,6 +88,12 @@ class _ITGAdsScreenState extends State { @override Widget build(BuildContext context) { + data = ModalRoute.of(context)!.settings.arguments; + if (advertisementData == null) advertisementData = data["advertisement"] as ads.Advertisement; + if (masterID == null) masterID = data["masterId"]; + if (advertisementData != null) { + checkFileType(); + } double height = MediaQuery.of(context).size.height * .25; return Scaffold( body: Column( From 904e4df424aa81f314aa3a6170720f3fda9123f9 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Sun, 27 Nov 2022 17:58:35 +0300 Subject: [PATCH 129/302] Questions Fetching process in Progress --- lib/api/marathon/marathon_api_client.dart | 34 +- lib/classes/consts.dart | 42 +- lib/models/marathon/marathon_model.dart | 7 +- lib/models/marathon/question_model.dart | 51 +-- lib/ui/login/login_screen.dart | 2 +- lib/ui/marathon/marathon_intro_screen.dart | 23 +- lib/ui/marathon/marathon_provider.dart | 108 ++--- lib/ui/marathon/marathon_screen.dart | 99 ++--- .../marathon/marathon_winner_selection.dart | 6 +- lib/ui/marathon/widgets/marathon_header.dart | 2 - lib/ui/marathon/widgets/question_card.dart | 389 +++++++++--------- 11 files changed, 437 insertions(+), 326 deletions(-) diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 52895ce..6aae0ca 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:flutter/material.dart'; import 'package:http/http.dart'; import 'package:logger/logger.dart' as L; import 'package:logging/logging.dart'; @@ -8,6 +9,9 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_generic_model.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; +import 'package:mohem_flutter_app/models/marathon/question_model.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:provider/provider.dart'; import 'package:signalr_netcore/http_connection_options.dart'; import 'package:signalr_netcore/hub_connection.dart'; import 'package:signalr_netcore/hub_connection_builder.dart'; @@ -79,7 +83,7 @@ class MarathonApiClient { late HubConnection hubConnection; L.Logger logger = L.Logger(); - Future buildHubConnection() async { + Future buildHubConnection(BuildContext context) async { HttpConnectionOptions httpOptions = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); hubConnection = HubConnectionBuilder() .withUrl( @@ -125,7 +129,6 @@ class MarathonApiClient { logger.i("Error in AddParticipant: $e"); }); - logger.i("MarathonId: ${AppState().getMarathonProjectId}"); await hubConnection.invoke( "SendQuestionToParticipant", args: [ @@ -138,16 +141,33 @@ class MarathonApiClient { }); try { - hubConnection.on("OnSendQuestionToParticipant", onSendQuestionToParticipant); + hubConnection.on("OnSendQuestionToParticipant", (List? arguments) { + onSendQuestionToParticipant(arguments, context); + }); } catch (e, s) { - logger.i("s"); + logger.i("Error in OnSendQuestionToParticipant"); + } + + try { + hubConnection.on("OnParticipantJoin", onParticipantJoin); + } catch (e, s) { + logger.i("Error in OnParticipantJoin"); } } } - Future onSendQuestionToParticipant(List? arguments) async { - print("arguments: $arguments"); + Future onSendQuestionToParticipant(List? arguments, BuildContext context) async { + logger.i("onSendQuestionToParticipant arguments: $arguments"); + + if (arguments != null) { + Map data = arguments.first! as Map; + var json = data["data"]; + QuestionModel newQuestion = QuestionModel.fromJson(json); + context.read().addNewQuestionsToTheList(newQuestion, 0); + } + } - logger.i(arguments); + Future onParticipantJoin(List? arguments) async { + logger.i("OnParticipantJoin arguments: $arguments"); } } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 9c9045a..ecc8af9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,3 +1,6 @@ +import 'package:mohem_flutter_app/models/marathon/question_model.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; + class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server @@ -23,13 +26,48 @@ class ApiConsts { // 42062 is CurrentUserID and 36745 is targetUserID and 0 is For Pagination // static String chatSearchMember = "https://apiderichat.hmg.com/api/user/getUserWithStatusAndFavAsync/aamir.muhammad/36239"; -//Brain Marathon Constants - + //Brain Marathon Constants static String marathonBaseUrl = "https://18.188.181.12/service/"; static String marathonParticipantLoginUrl = marathonBaseUrl + "api/auth/participantlogin"; static String marathonProjectGetUrl = marathonBaseUrl + "api/Project/Project_Get"; static String marathonUpcomingUrl = marathonBaseUrl + "api/marathon/upcoming/"; static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; + + //DummyCards for the UI + static List questionOptions = [ + QuestionOptions( + id: "id", + image: "image", + isCorrectOption: true, + questionId: "questionId", + sequence: 0, + titleAr: "titleAr", + titleEn: "titleEn", + ), + ]; + + static QuestionModel dummyQuestion = QuestionModel( + id: "id", + titleEn: "titleEn", + titleAr: "titleAr", + marathonId: "marathonId", + questionTypeId: 0, + questionTime: 0, + nextQuestGap: 5, + gapType: 0, + gapText: "gapText", + gapImage: "gapImage", + questOptionsLimit: 4, + questionOptions: questionOptions, + ); + + static List dummyQuestions = [ + CardContent(question: dummyQuestion), + CardContent(question: dummyQuestion), + CardContent(question: dummyQuestion), + CardContent(question: dummyQuestion), + CardContent(question: dummyQuestion), + ]; } class SharedPrefsConsts { diff --git a/lib/models/marathon/marathon_model.dart b/lib/models/marathon/marathon_model.dart index 3fb60b9..b32530c 100644 --- a/lib/models/marathon/marathon_model.dart +++ b/lib/models/marathon/marathon_model.dart @@ -15,6 +15,7 @@ class MarathonDetailModel { Projects? projects; List? sponsors; List? questions; + int? totalQuestions; MarathonDetailModel( {id, @@ -32,7 +33,8 @@ class MarathonDetailModel { selectedLanguage, projects, sponsors, - questions}); + questions, + totalQuestions}); MarathonDetailModel.fromJson(Map json) { id = json['id']; @@ -63,6 +65,7 @@ class MarathonDetailModel { questions!.add( Questions.fromJson(v)); }); } + totalQuestions = json["totalQuestions"]; } Map toJson() { @@ -89,6 +92,8 @@ class MarathonDetailModel { if (questions != null) { data['questions'] = questions!.map((v) => v.toJson()).toList(); } + data['totalQuestions'] = totalQuestions; + return data; } } diff --git a/lib/models/marathon/question_model.dart b/lib/models/marathon/question_model.dart index 90d030d..98ff830 100644 --- a/lib/models/marathon/question_model.dart +++ b/lib/models/marathon/question_model.dart @@ -12,19 +12,20 @@ class QuestionModel { int? questOptionsLimit; List? questionOptions; - QuestionModel( - {id, - titleEn, - titleAr, - marathonId, - questionTypeId, - questionTime, - nextQuestGap, - gapType, - gapText, - gapImage, - questOptionsLimit, - questionOptions}); + QuestionModel({ + String? id, + String? titleEn, + String? titleAr, + String? marathonId, + int? questionTypeId, + int? questionTime, + int? nextQuestGap, + int? gapType, + String? gapText, + String? gapImage, + int? questOptionsLimit, + List? questionOptions, + }); QuestionModel.fromJson(Map json) { id = json['id']; @@ -41,13 +42,13 @@ class QuestionModel { if (json['questionOptions'] != null) { questionOptions = []; json['questionOptions'].forEach((v) { - questionOptions!.add( QuestionOptions.fromJson(v)); + questionOptions!.add(QuestionOptions.fromJson(v)); }); } } Map toJson() { - Map data = {}; + Map data = {}; data['id'] = id; data['titleEn'] = titleEn; data['titleAr'] = titleAr; @@ -60,8 +61,7 @@ class QuestionModel { data['gapImage'] = gapImage; data['questOptionsLimit'] = questOptionsLimit; if (questionOptions != null) { - data['questionOptions'] = - questionOptions!.map((v) => v.toJson()).toList(); + data['questionOptions'] = questionOptions!.map((v) => v.toJson()).toList(); } return data; } @@ -76,14 +76,15 @@ class QuestionOptions { String? image; bool? isCorrectOption; - QuestionOptions( - {id, - titleEn, - titleAr, - questionId, - sequence, - image, - isCorrectOption}); + QuestionOptions({ + String? id, + String? titleEn, + String? titleAr, + String? questionId, + int? sequence, + String? image, + bool? isCorrectOption, + }); QuestionOptions.fromJson(Map json) { id = json['id']; diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 97282d3..803660b 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -143,7 +143,7 @@ class _LoginScreenState extends State { if (!kReleaseMode) { // username.text = "15444"; // Maha User username.text = "15153"; // Tamer User - password.text = "Abcd@12345"; + password.text = "Abcd@1234"; // username.text = "206535"; // Hashim User // password.text = "Namira786"; diff --git a/lib/ui/marathon/marathon_intro_screen.dart b/lib/ui/marathon/marathon_intro_screen.dart index edb0f77..a0ce912 100644 --- a/lib/ui/marathon/marathon_intro_screen.dart +++ b/lib/ui/marathon/marathon_intro_screen.dart @@ -6,6 +6,8 @@ import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; @@ -219,10 +221,21 @@ class MarathonFooter extends StatelessWidget { @override Widget build(BuildContext context) { return provider.itsMarathonTime - ? DefaultButton(LocaleKeys.joinMarathon.tr(), () { - provider.connectSignalrAndJoinMarathon(); - // Navigator.pushNamed(context, AppRoutes.marathonScreen); - }, ).insideContainer + ? DefaultButton( + LocaleKeys.joinMarathon.tr(), + () async { + Utils.showLoading(context); + try { + provider.resetValues(); + await provider.connectSignalrAndJoinMarathon(context); + } catch (e, s) { + Utils.hideLoading(context); + print(s); + } + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.marathonScreen); + }, + ).insideContainer : Container( color: Colors.white, child: Column( @@ -232,7 +245,7 @@ class MarathonFooter extends StatelessWidget { DefaultButton( LocaleKeys.joinDemoMarathon.tr(), () { - provider.connectSignalrAndJoinMarathon(); + provider.connectSignalrAndJoinMarathon(context); }, color: MyColors.yellowColorII, ).insideContainer, diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 50bd38b..0f82581 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -4,11 +4,39 @@ import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; +import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class MarathonProvider extends ChangeNotifier { + final AppinioSwiperController swiperController = AppinioSwiperController(); + + MarathonDetailModel marathonDetailModel = MarathonDetailModel(); + List cardContentList = [ + CardContent(question: ApiConsts.dummyQuestion), + CardContent(question: ApiConsts.dummyQuestion), + CardContent(question: ApiConsts.dummyQuestion), + CardContent(question: ApiConsts.dummyQuestion), + CardContent(question: ApiConsts.dummyQuestion), + ]; + + int currentGapTime = 0; + + void addNewQuestionsToTheList(QuestionModel newQuestion, int index) { + + //TODO: THIS SHOULD NOT SWIPE THE CARD ON THE FIRST TRIGGER + swipeCardLeft(); + cardContentList.add(CardContent(question: newQuestion)); + currentGapTime = newQuestion.nextQuestGap!; + notifyListeners(); + } + + void removeQuestionFromTheList(int index) { + cardContentList.removeAt(index); + notifyListeners(); + } + bool _isLoading = false; bool get isLoading => _isLoading; @@ -18,10 +46,6 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } - MarathonDetailModel marathonDetailModel = MarathonDetailModel(); - - final AppinioSwiperController swiperController = AppinioSwiperController(); - bool _itsMarathonTime = false; bool get itsMarathonTime => _itsMarathonTime; @@ -40,14 +64,7 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } - void swipeCardLeft() { - currentQuestionNumber = currentQuestionNumber + 1; - swiperController.swipeLeft(); - notifyListeners(); - } - - int _currentQuestionNumber = 1; - final int totalQuestions = 10; + int _currentQuestionNumber = 0; int get currentQuestionNumber => _currentQuestionNumber; @@ -56,44 +73,44 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } - void resetAll() { - isSelectedOptions[0] = false; - isSelectedOptions[1] = false; - isSelectedOptions[2] = false; - isSelectedOptions[3] = false; + int _totalMarathoners = 23; + + int get totalMarathoners => _totalMarathoners; + + set totalMarathoners(int value) { + _totalMarathoners = value; + notifyListeners(); + } + + void swipeCardLeft() { + swiperController.swipeLeft(); + currentQuestionNumber++; + notifyListeners(); } Timer timerU = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); - int start = 8; void startTimer(BuildContext context) { - start = 8; const Duration oneSec = Duration(seconds: 1); timerU = Timer.periodic( oneSec, (Timer timer) async { - if (start == 0) { - if (currentQuestionNumber == 9) { - timer.cancel(); - cancelTimer(); - isMarathonCompleted = true; - await Future.delayed(const Duration(seconds: 3)).whenComplete( - () => Navigator.pushReplacementNamed( - context, - AppRoutes.marathonWinnerSelection, - ), - ); - - resetValues(); - - return; - } - resetAll(); - timer.cancel(); - cancelTimer(); - swipeCardLeft(); + if (currentGapTime == 0) { + // if (currentQuestionNumber == 9) { + // timer.cancel(); + // cancelTimer(); + // isMarathonCompleted = true; + // await Future.delayed(const Duration(seconds: 3)).whenComplete( + // () => Navigator.pushReplacementNamed(context, AppRoutes.marathonWinnerSelection), + // ); + // + // resetValues(); + // + // return; + // } + // timer.cancel(); } else { - start--; + currentGapTime--; } notifyListeners(); }, @@ -101,9 +118,10 @@ class MarathonProvider extends ChangeNotifier { } void resetValues() { + _currentQuestionNumber = 0; + cardContentList.clear(); timerU.cancel(); _isMarathonCompleted = false; - _currentQuestionNumber = 1; notifyListeners(); } @@ -122,9 +140,7 @@ class MarathonProvider extends ChangeNotifier { }); } - Future connectSignalrAndJoinMarathon() async { - await MarathonApiClient().buildHubConnection(); - + Future connectSignalrAndJoinMarathon(BuildContext context) async { + await MarathonApiClient().buildHubConnection(context); } - } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index a02733f..90df75f 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -25,49 +25,54 @@ class MarathonScreen extends StatelessWidget { @override Widget build(BuildContext context) { MarathonProvider provider = context.watch(); - return Scaffold( - appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), - body: SingleChildScrollView( - child: Column( - children: [ - 20.height, - MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), - if (provider.isMarathonCompleted) - InkWell( - onTap: () { - Navigator.pushReplacementNamed( - context, - AppRoutes.marathonWinnerSelection, - ); - }, - child: CustomStatusWidget( - asset: Lottie.asset( - MyLottieConsts.allQuestions, - height: 200, - ), - title: Text( - LocaleKeys.congrats.tr(), - style: const TextStyle( - height: 23 / 24, - color: MyColors.greenColor, - fontSize: 27, - letterSpacing: -1, - fontWeight: FontWeight.w600, - ), - ), - subTitle: Text( - LocaleKeys.allQuestionsCorrect.tr(), - textAlign: TextAlign.center, - style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -1.08), - ), - ).paddingOnly(top: 12, left: 21, right: 21), - ) - else - QuestionCard(provider: provider).paddingOnly(top: 12, left: 21, right: 21), - ], + return WillPopScope( + child: Scaffold( + appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), + body: SingleChildScrollView( + child: Column( + children: [ + 20.height, + MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), + if (provider.isMarathonCompleted) + InkWell( + onTap: () { + Navigator.pushReplacementNamed( + context, + AppRoutes.marathonWinnerSelection, + ); + }, + child: CustomStatusWidget( + asset: Lottie.asset( + MyLottieConsts.allQuestions, + height: 200, + ), + title: Text( + LocaleKeys.congrats.tr(), + style: const TextStyle( + height: 23 / 24, + color: MyColors.greenColor, + fontSize: 27, + letterSpacing: -1, + fontWeight: FontWeight.w600, + ), + ), + subTitle: Text( + LocaleKeys.allQuestionsCorrect.tr(), + textAlign: TextAlign.center, + style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -1.08), + ), + ).paddingOnly(top: 12, left: 21, right: 21), + ) + else + QuestionCard(provider: provider).paddingOnly(top: 12, left: 21, right: 21), + ], + ), + ), ), - ), - ); + onWillPop: () { + provider.resetValues(); + return Future.value(true); + }); } } @@ -91,7 +96,6 @@ class _MarathonProgressContainerState extends State { @override void dispose() { - widget.provider.cancelTimer(); super.dispose(); } @@ -113,10 +117,11 @@ class _MarathonProgressContainerState extends State { borderRadius: BorderRadius.circular(5), ), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), - child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.totalQuestions.toString()} ${LocaleKeys.question.tr()}".toText12(color: MyColors.white), + child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}" + .toText12(color: MyColors.white), ), - "23 ${LocaleKeys.marathoners.tr()}".toText14(), - "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(), + "${widget.provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), + "00:${widget.provider.currentGapTime < 10 ? "0${widget.provider.currentGapTime}" : widget.provider.currentGapTime}".toText18(), ], ), 15.height, @@ -144,7 +149,7 @@ class _MarathonProgressContainerState extends State { 12.height, Row( children: [ - "${widget.provider.currentQuestionNumber * 10}% ${LocaleKeys.completed.tr()}".toText14(isBold: true), + "${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(isBold: true), ], ), ], diff --git a/lib/ui/marathon/marathon_winner_selection.dart b/lib/ui/marathon/marathon_winner_selection.dart index 8462ab4..5dcac2b 100644 --- a/lib/ui/marathon/marathon_winner_selection.dart +++ b/lib/ui/marathon/marathon_winner_selection.dart @@ -108,14 +108,14 @@ class _QualifiersContainerState extends State { @override void initState() { scheduleMicrotask(() { - widget.provider.startTimer(context); + // widget.provider.startTimer(context); }); super.initState(); } @override void dispose() { - widget.provider.cancelTimer(); + // widget.provider.cancelTimer(); super.dispose(); } @@ -132,7 +132,7 @@ class _QualifiersContainerState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.winnerSelection.tr().toText18(isBold: true, color: MyColors.grey3AColor), - "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(isBold: true, color: MyColors.redColor), + // "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(isBold: true, color: MyColors.redColor), ], ), 10.height, diff --git a/lib/ui/marathon/widgets/marathon_header.dart b/lib/ui/marathon/widgets/marathon_header.dart index 0cc863b..fed6caa 100644 --- a/lib/ui/marathon/widgets/marathon_header.dart +++ b/lib/ui/marathon/widgets/marathon_header.dart @@ -28,8 +28,6 @@ class MarathonHeader extends StatelessWidget { color: MyColors.black, constraints: const BoxConstraints(), onPressed: () { - Provider.of(context, listen: false) - .resetValues(); Navigator.pop(context); }, ) diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index a3fe720..cc92d85 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -1,11 +1,11 @@ import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; -import 'package:mohem_flutter_app/models/marathon_question_model.dart'; +import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:provider/provider.dart'; @@ -16,35 +16,11 @@ List isSelectedOptions = [ false, ]; -class QuestionCard extends StatefulWidget { +class QuestionCard extends StatelessWidget { final MarathonProvider provider; const QuestionCard({Key? key, required this.provider}) : super(key: key); - @override - State createState() => _QuestionCardState(); -} - -class _QuestionCardState extends State { - final List questionCards = []; - - @override - void initState() { - _loadCards(); - super.initState(); - } - - void _loadCards() { - for (DummyQuestionModel question in questions) { - questionCards.add( - CardContent( - question: question, - provider: widget.provider, - ), - ); - } - } - @override Widget build(BuildContext context) { return CupertinoPageScaffold( @@ -58,12 +34,11 @@ class _QuestionCardState extends State { isDisabled: true, controller: provider.swiperController, unswipe: (int index, AppinioSwiperDirection direction) {}, - cards: questionCards, onSwipe: (int index, AppinioSwiperDirection direction) { - if (direction == AppinioSwiperDirection.left) { - provider.startTimer(context); - } + print("here is the length: ${provider.cardContentList.length} and index : $index"); }, + + cards: provider.cardContentList, ); }, ), @@ -73,14 +48,9 @@ class _QuestionCardState extends State { } class CardContent extends StatelessWidget { - final DummyQuestionModel question; - final MarathonProvider provider; + final QuestionModel question; - const CardContent({ - Key? key, - required this.question, - required this.provider, - }) : super(key: key); + const CardContent({Key? key, required this.question}) : super(key: key); @override Widget build(BuildContext context) { @@ -118,12 +88,12 @@ class CardContent extends StatelessWidget { topRight: Radius.circular(10), ), ), - child: const Center( + child: Center( child: Padding( - padding: EdgeInsets.symmetric(horizontal: 13), + padding: const EdgeInsets.symmetric(horizontal: 13), child: Text( - "What is the capital of Saudi Arabia?", - style: TextStyle( + AppState().isArabic(context) ? question.titleAr ?? "" : question.titleEn ?? "", + style: const TextStyle( color: MyColors.white, fontSize: 16, fontWeight: FontWeight.w600, @@ -132,7 +102,7 @@ class CardContent extends StatelessWidget { ), ), ), - AnswerContent(question: question, provider: provider), + AnswerContent(question: question), ], ), ); @@ -140,36 +110,37 @@ class CardContent extends StatelessWidget { } class AnswerContent extends StatefulWidget { - final DummyQuestionModel question; - final MarathonProvider provider; + final QuestionModel question; - const AnswerContent({Key? key, required this.question, required this.provider}) : super(key: key); + const AnswerContent({Key? key, required this.question}) : super(key: key); @override State createState() => _AnswerContentState(); } class _AnswerContentState extends State { - void updateOption(int index, bool value) { - isSelectedOptions[0] = false; - isSelectedOptions[1] = false; - isSelectedOptions[2] = false; - isSelectedOptions[3] = false; - isSelectedOptions[index] = value; - setState(() {}); - } - - Decoration getContainerColor(int index) { - if (!isSelectedOptions[index]) { - return MyDecorations.getContainersDecoration(MyColors.greyF7Color); - } - if (isSelectedOptions[index] && context.watch().start > 0) { - return MyDecorations.getContainersDecoration(MyColors.yellowColorII); - } - return MyDecorations.getContainersDecoration( - isSelectedOptions[index] ? MyColors.greenColor : MyColors.greyF7Color, - ); - } + // void updateOption(int index, bool value) { + // isSelectedOptions[0] = false; + // isSelectedOptions[1] = false; + // isSelectedOptions[2] = false; + // isSelectedOptions[3] = false; + // isSelectedOptions[index] = value; + // setState(() {}); + // } + // + // Decoration getContainerColor(int index) { + // if (!isSelectedOptions[index]) { + // return MyDecorations.getContainersDecoration(MyColors.greyF7Color); + // } + // if (isSelectedOptions[index] && context + // .watch() + // .currentGapTime > 0) { + // return MyDecorations.getContainersDecoration(MyColors.yellowColorII); + // } + // return MyDecorations.getContainersDecoration( + // isSelectedOptions[index] ? MyColors.greenColor : MyColors.greyF7Color, + // ); + // } @override Widget build(BuildContext context) { @@ -182,128 +153,172 @@ class _AnswerContentState extends State { bottomRight: Radius.circular(10), ), ), - child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - InkWell( - onTap: () { - if (widget.provider.currentQuestionNumber == 9) { - widget.provider.cancelTimer(); - widget.provider.resetValues(); - Navigator.pushReplacementNamed( - context, - AppRoutes.marathonWinnerSelection, - ); - return; - } - updateOption(0, true); - }, - child: Container( - alignment: Alignment.centerLeft, - decoration: getContainerColor(0), - child: Center( - child: Text( - widget.question.opt1!, - style: TextStyle( - color: isSelectedOptions[0] ? MyColors.white : MyColors.darkTextColor, - fontWeight: FontWeight.w600, - fontSize: 16, - ), - ).paddingOnly(top: 17, bottom: 17), - ), - ), - ), - const SizedBox(height: 15), - InkWell( - onTap: () { - if (widget.provider.currentQuestionNumber == 9) { - widget.provider.cancelTimer(); - widget.provider.resetValues(); - Navigator.pushReplacementNamed( - context, - AppRoutes.marathonWinnerSelection, - ); - return; - } - updateOption(1, true); - }, - child: Container( - alignment: Alignment.centerLeft, - decoration: getContainerColor(1), - child: Center( - child: Text( - widget.question.opt2!, - style: TextStyle( - color: isSelectedOptions[1] ? MyColors.white : MyColors.darkTextColor, - fontWeight: FontWeight.w600, - fontSize: 16, - ), - ).paddingOnly(top: 17, bottom: 17), - ), - ), - ), - const SizedBox(height: 15), - InkWell( - onTap: () { - if (widget.provider.currentQuestionNumber == 9) { - widget.provider.cancelTimer(); - widget.provider.resetValues(); - Navigator.pushReplacementNamed( - context, - AppRoutes.marathonWinnerSelection, - ); - return; - } - updateOption(2, true); - }, - child: Container( - alignment: Alignment.centerLeft, - decoration: getContainerColor(2), - child: Center( - child: Text( - widget.question.opt3!, - style: TextStyle( - color: isSelectedOptions[2] ? MyColors.white : MyColors.darkTextColor, - fontWeight: FontWeight.w600, - fontSize: 16, - ), - ).paddingOnly(top: 17, bottom: 17), - ), - ), - ), - const SizedBox(height: 15), - InkWell( - onTap: () { - if (widget.provider.currentQuestionNumber == 9) { - widget.provider.cancelTimer(); - widget.provider.resetValues(); - Navigator.pushReplacementNamed( - context, - AppRoutes.marathonWinnerSelection, - ); - return; - } - updateOption(3, true); - }, - child: Container( - alignment: Alignment.centerLeft, - decoration: getContainerColor(3), - child: Center( - child: Text( - widget.question.opt3!, - style: TextStyle( - color: isSelectedOptions[3] ? MyColors.white : MyColors.darkTextColor, - fontWeight: FontWeight.w600, - fontSize: 16, - ), - ).paddingOnly(top: 17, bottom: 17), - ), + child: widget.question.questionOptions != null + ? Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: widget.question.questionOptions!.map((QuestionOptions e) => AnswerTileForText(questionOption: e, onAnswerTapped: () {})).toList(), + ) + : const SizedBox(), + ); + } +} + +class AnswerTileForText extends StatelessWidget { + final QuestionOptions questionOption; + final Function() onAnswerTapped; + + const AnswerTileForText({Key? key, required this.questionOption, required this.onAnswerTapped}) : super(key: key); + + // Decoration getContainerColor(int index) { + // if (!isSelectedOptions[index]) { + // return MyDecorations.getContainersDecoration(MyColors.greyF7Color); + // } + // if (isSelectedOptions[index] && context.watch().currentGapTime > 0) { + // return MyDecorations.getContainersDecoration(MyColors.yellowColorII); + // } + // return MyDecorations.getContainersDecoration( + // isSelectedOptions[index] ? MyColors.greenColor : MyColors.greyF7Color, + // ); + // } + + @override + Widget build(BuildContext context) { + return InkWell( + onTap: () { + onAnswerTapped(); + }, + child: Container( + alignment: Alignment.centerLeft, + decoration: MyDecorations.getContainersDecoration(MyColors.greyF7Color), + child: Center( + child: Text( + questionOption.titleEn!, + style: TextStyle( + color: isSelectedOptions[0] ? MyColors.white : MyColors.darkTextColor, + fontWeight: FontWeight.w600, + fontSize: 16, ), - ), - ], + ).paddingOnly(top: 17, bottom: 17), + ), ), - ); + ).paddingOnly(top: 8, bottom: 8); } } + +// InkWell( +// onTap: () { +// if (widget.provider.currentQuestionNumber == 9) { +// widget.provider.cancelTimer(); +// widget.provider.resetValues(); +// Navigator.pushReplacementNamed( +// context, +// AppRoutes.marathonWinnerSelection, +// ); +// return; +// } +// updateOption(0, true); +// }, +// child: Container( +// alignment: Alignment.centerLeft, +// decoration: getContainerColor(0), +// child: Center( +// child: Text( +// widget.question.questionOptions![0].titleEn!, +// style: TextStyle( +// color: isSelectedOptions[0] ? MyColors.white : MyColors.darkTextColor, +// fontWeight: FontWeight.w600, +// fontSize: 16, +// ), +// ).paddingOnly(top: 17, bottom: 17), +// ), +// ), +// ), +// const SizedBox(height: 15), +// InkWell( +// onTap: () { +// if (widget.provider.currentQuestionNumber == 9) { +// widget.provider.cancelTimer(); +// widget.provider.resetValues(); +// Navigator.pushReplacementNamed( +// context, +// AppRoutes.marathonWinnerSelection, +// ); +// return; +// } +// updateOption(1, true); +// }, +// child: Container( +// alignment: Alignment.centerLeft, +// decoration: getContainerColor(1), +// child: Center( +// child: Text( +// widget.question.questionOptions![1].titleEn!, +// style: TextStyle( +// color: isSelectedOptions[1] ? MyColors.white : MyColors.darkTextColor, +// fontWeight: FontWeight.w600, +// fontSize: 16, +// ), +// ).paddingOnly(top: 17, bottom: 17), +// ), +// ), +// ), +// const SizedBox(height: 15), +// InkWell( +// onTap: () { +// if (widget.provider.currentQuestionNumber == 9) { +// widget.provider.cancelTimer(); +// widget.provider.resetValues(); +// Navigator.pushReplacementNamed( +// context, +// AppRoutes.marathonWinnerSelection, +// ); +// return; +// } +// updateOption(2, true); +// }, +// child: Container( +// alignment: Alignment.centerLeft, +// decoration: getContainerColor(2), +// child: Center( +// child: Text( +// widget.question.questionOptions![2].titleEn!, +// style: TextStyle( +// color: isSelectedOptions[2] ? MyColors.white : MyColors.darkTextColor, +// fontWeight: FontWeight.w600, +// fontSize: 16, +// ), +// ).paddingOnly(top: 17, bottom: 17), +// ), +// ), +// ), +// const SizedBox(height: 15), +// InkWell( +// onTap: () { +// if (widget.provider.currentQuestionNumber == 9) { +// widget.provider.cancelTimer(); +// widget.provider.resetValues(); +// Navigator.pushReplacementNamed( +// context, +// AppRoutes.marathonWinnerSelection, +// ); +// return; +// } +// updateOption(3, true); +// }, +// child: Container( +// alignment: Alignment.centerLeft, +// decoration: getContainerColor(3), +// child: Center( +// child: Text( +// widget.question.questionOptions![3].titleEn!, +// style: TextStyle( +// color: isSelectedOptions[3] ? MyColors.white : MyColors.darkTextColor, +// fontWeight: FontWeight.w600, +// fontSize: 16, +// ), +// ).paddingOnly(top: 17, bottom: 17), +// ), +// ), +// ), From 967257ec2ec96234ec48124c5d4d1587871bfcf1 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 28 Nov 2022 10:26:15 +0300 Subject: [PATCH 130/302] Chat Fixes --- lib/api/api_client.dart | 115 +++----------- lib/api/chat/chat_api_client.dart | 34 +++- lib/provider/chat_provider_model.dart | 3 + lib/ui/chat/chat_home_screen.dart | 210 ++++++++++--------------- lib/ui/chat/favorite_users_screen.dart | 118 +++++++------- 5 files changed, 189 insertions(+), 291 deletions(-) diff --git a/lib/api/api_client.dart b/lib/api/api_client.dart index 7a6f668..1e66d45 100644 --- a/lib/api/api_client.dart +++ b/lib/api/api_client.dart @@ -18,8 +18,7 @@ class APIError { APIError(this.errorCode, this.errorMessage); - Map toJson() => - {'errorCode': errorCode, 'errorMessage': errorMessage}; + Map toJson() => {'errorCode': errorCode, 'errorMessage': errorMessage}; @override String toString() { @@ -54,8 +53,7 @@ APIException _throwAPIException(Response response) { return APIException(APIException.INTERNAL_SERVER_ERROR); case 444: var downloadUrl = response.headers["location"]; - return APIException(APIException.UPGRADE_REQUIRED, - arguments: downloadUrl); + return APIException(APIException.UPGRADE_REQUIRED, arguments: downloadUrl); default: return APIException(APIException.OTHER); } @@ -68,13 +66,8 @@ class ApiClient { factory ApiClient() => _instance; - Future postJsonForObject( - FactoryConstructor factoryConstructor, String url, T jsonObject, - {String? token, - Map? queryParameters, - Map? headers, - int retryTimes = 0, - bool isFormData = false}) async { + Future postJsonForObject(FactoryConstructor factoryConstructor, String url, T jsonObject, + {String? token, Map? queryParameters, Map? headers, int retryTimes = 0, bool isFormData = false}) async { var _headers = {'Accept': 'application/json'}; if (headers != null && headers.isNotEmpty) { _headers.addAll(headers); @@ -84,12 +77,7 @@ class ApiClient { var bodyJson = json.encode(jsonObject); print("body:$bodyJson"); } - var response = await postJsonForResponse(url, jsonObject, - token: token, - queryParameters: queryParameters, - headers: _headers, - retryTimes: retryTimes, - isFormData: isFormData); + var response = await postJsonForResponse(url, jsonObject, token: token, queryParameters: queryParameters, headers: _headers, retryTimes: retryTimes, isFormData: isFormData); // try { if (!kReleaseMode) { logger.i("res: " + response.body); @@ -102,8 +90,7 @@ class ApiClient { return factoryConstructor(jsonData); } else { APIError? apiError; - apiError = - APIError(jsonData['ErrorCode'], jsonData['ErrorEndUserMessage']); + apiError = APIError(jsonData['ErrorCode'], jsonData['ErrorEndUserMessage']); throw APIException(APIException.BAD_REQUEST, error: apiError); } // } catch (ex) { @@ -116,11 +103,7 @@ class ApiClient { } Future postJsonForResponse(String url, T jsonObject, - {String? token, - Map? queryParameters, - Map? headers, - int retryTimes = 0, - bool isFormData = false}) async { + {String? token, Map? queryParameters, Map? headers, int retryTimes = 0, bool isFormData = false}) async { String? requestBody; late Map stringObj; if (jsonObject != null) { @@ -134,22 +117,13 @@ class ApiClient { if (isFormData) { headers = {'Content-Type': 'application/x-www-form-urlencoded'}; - stringObj = ((jsonObject ?? {}) as Map) - .map((key, value) => MapEntry(key, value?.toString() ?? "")); + stringObj = ((jsonObject ?? {}) as Map).map((key, value) => MapEntry(key, value?.toString() ?? "")); } - return await _postForResponse(url, isFormData ? stringObj : requestBody, - token: token, - queryParameters: queryParameters, - headers: headers, - retryTimes: retryTimes); + return await _postForResponse(url, isFormData ? stringObj : requestBody, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes); } - Future _postForResponse(String url, requestBody, - {String? token, - Map? queryParameters, - Map? headers, - int retryTimes = 0}) async { + Future _postForResponse(String url, requestBody, {String? token, Map? queryParameters, Map? headers, int retryTimes = 0}) async { try { var _headers = {}; if (token != null) { @@ -164,9 +138,7 @@ class ApiClient { var queryString = new Uri(queryParameters: queryParameters).query; url = url + '?' + queryString; } - var response = - await _post(Uri.parse(url), body: requestBody, headers: _headers) - .timeout(Duration(seconds: 120)); + var response = await _post(Uri.parse(url), body: requestBody, headers: _headers).timeout(Duration(seconds: 120)); if (response.statusCode >= 200 && response.statusCode < 300) { return response; @@ -177,11 +149,7 @@ class ApiClient { if (retryTimes > 0) { print('will retry after 3 seconds...'); await Future.delayed(Duration(seconds: 3)); - return await _postForResponse(url, requestBody, - token: token, - queryParameters: queryParameters, - headers: headers, - retryTimes: retryTimes - 1); + return await _postForResponse(url, requestBody, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes - 1); } else { throw APIException(APIException.OTHER, arguments: e); } @@ -189,11 +157,7 @@ class ApiClient { if (retryTimes > 0) { print('will retry after 3 seconds...'); await Future.delayed(Duration(seconds: 3)); - return await _postForResponse(url, requestBody, - token: token, - queryParameters: queryParameters, - headers: headers, - retryTimes: retryTimes - 1); + return await _postForResponse(url, requestBody, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes - 1); } else { throw APIException(APIException.OTHER, arguments: e); } @@ -203,39 +167,23 @@ class ApiClient { if (retryTimes > 0) { print('will retry after 3 seconds...'); await Future.delayed(Duration(seconds: 3)); - return await _postForResponse(url, requestBody, - token: token, - queryParameters: queryParameters, - headers: headers, - retryTimes: retryTimes - 1); + return await _postForResponse(url, requestBody, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes - 1); } else { throw APIException(APIException.OTHER, arguments: e); } } } - Future getJsonForResponse(String url, - {String? token, - Map? queryParameters, - Map? headers, - int retryTimes = 0}) async { + Future getJsonForResponse(String url, {String? token, Map? queryParameters, Map? headers, int retryTimes = 0}) async { if (headers == null) { headers = {'Content-Type': 'application/json'}; } else { headers['Content-Type'] = 'application/json'; } - return await _getForResponse(url, - token: token, - queryParameters: queryParameters, - headers: headers, - retryTimes: retryTimes); + return await _getForResponse(url, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes); } - Future _getForResponse(String url, - {String? token, - Map? queryParameters, - Map? headers, - int retryTimes = 0}) async { + Future _getForResponse(String url, {String? token, Map? queryParameters, Map? headers, int retryTimes = 0}) async { try { var _headers = {}; if (token != null) { @@ -250,8 +198,7 @@ class ApiClient { var queryString = new Uri(queryParameters: queryParameters).query; url = url + '?' + queryString; } - var response = await _get(Uri.parse(url), headers: _headers) - .timeout(Duration(seconds: 60)); + var response = await _get(Uri.parse(url), headers: _headers).timeout(Duration(seconds: 60)); if (response.statusCode >= 200 && response.statusCode < 300) { return response; @@ -262,11 +209,7 @@ class ApiClient { if (retryTimes > 0) { print('will retry after 3 seconds...'); await Future.delayed(Duration(seconds: 3)); - return await _getForResponse(url, - token: token, - queryParameters: queryParameters, - headers: headers, - retryTimes: retryTimes - 1); + return await _getForResponse(url, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes - 1); } else { throw APIException(APIException.OTHER, arguments: e); } @@ -274,11 +217,7 @@ class ApiClient { if (retryTimes > 0) { print('will retry after 3 seconds...'); await Future.delayed(Duration(seconds: 3)); - return await _getForResponse(url, - token: token, - queryParameters: queryParameters, - headers: headers, - retryTimes: retryTimes - 1); + return await _getForResponse(url, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes - 1); } else { throw APIException(APIException.OTHER, arguments: e); } @@ -288,19 +227,14 @@ class ApiClient { if (retryTimes > 0) { print('will retry after 3 seconds...'); await Future.delayed(Duration(seconds: 3)); - return await _getForResponse(url, - token: token, - queryParameters: queryParameters, - headers: headers, - retryTimes: retryTimes - 1); + return await _getForResponse(url, token: token, queryParameters: queryParameters, headers: headers, retryTimes: retryTimes - 1); } else { throw APIException(APIException.OTHER, arguments: e); } } } - Future _get(url, {Map? headers}) => - _withClient((client) => client.get(url, headers: headers)); + Future _get(url, {Map? headers}) => _withClient((client) => client.get(url, headers: headers)); bool _certificateCheck(X509Certificate cert, String host, int port) => true; @@ -314,8 +248,5 @@ class ApiClient { } } - Future _post(url, - {Map? headers, body, Encoding? encoding}) => - _withClient((client) => - client.post(url, headers: headers, body: body, encoding: encoding)); + Future _post(url, {Map? headers, body, Encoding? encoding}) => _withClient((client) => client.post(url, headers: headers, body: body, encoding: encoding)); } diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 323c3d4..6355417 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -5,6 +5,9 @@ import 'package:http/http.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/exceptions/api_exception.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as user; import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; @@ -83,13 +86,30 @@ class ChatApiClient { } Future unFavUser({required int userID, required int targetUserID}) async { - Response response = await ApiClient().postJsonForResponse( - "${ApiConsts.chatFavUser}deleteFavUser", - {"targetUserId": targetUserID, "userId": userID}, - token: AppState().chatDetails!.response!.token, - ); - fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); - return favoriteChatUser; + try { + Response response = await ApiClient().postJsonForResponse( + "${ApiConsts.chatFavUser}deleteFavUser", + {"targetUserId": targetUserID, "userId": userID}, + token: AppState().chatDetails!.response!.token, + ); + fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); + return favoriteChatUser; + } catch (e) { + e as APIException; + if (e.message == "api_common_unauthorized") { + logger.d("Token Generated On APIIIIII"); + user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); + if (userLoginResponse.response != null) { + AppState().setchatUserDetails = userLoginResponse; + unFavUser(userID: userID, targetUserID: targetUserID); + } else { + Utils.showToast( + userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", + ); + } + } + throw e; + } } Future uploadMedia(String userId, File file) async { diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index dc98858..655de86 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -10,6 +10,7 @@ import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; @@ -586,6 +587,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future unFavoriteUser({required int userID, required int targetUserID}) async { fav.FavoriteChatUser favoriteChatUser = await ChatApiClient().unFavUser(userID: userID, targetUserID: targetUserID); + if (favoriteChatUser.response != null) { for (ChatUser user in searchedChats!) { if (user.id == favoriteChatUser.response!.targetUserId!) { @@ -596,6 +598,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { (ChatUser element) => element.id == targetUserID, ); } + notifyListeners(); } diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 2724683..cf6b8d2 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -46,105 +46,87 @@ class _ChatHomeScreenState extends State { builder: (BuildContext context, ChatProviderModel m, Widget? child) { return m.isLoading ? ChatHomeShimmer() - : ListView( - shrinkWrap: true, - physics: const AlwaysScrollableScrollPhysics(), + : Column( children: [ - Padding( - padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), - child: TextField( - controller: m.search, - style: const TextStyle(color: MyColors.darkTextColor, fontWeight: FontWeight.w500, fontSize: 12), - onChanged: (String val) { - m.filter(val); - }, - decoration: InputDecoration( - border: fieldBorder(radius: 5, color: 0xFFE5E5E5), - focusedBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), - enabledBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), - contentPadding: const EdgeInsets.all(11), - hintText: LocaleKeys.searchfromchat.tr(), - hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic, fontWeight: FontWeight.w500, fontSize: 12), - filled: true, - fillColor: const Color(0xFFF7F7F7), - suffixIconConstraints: const BoxConstraints(), - suffixIcon: m.search.text.isNotEmpty - ? IconButton( - constraints: const BoxConstraints(), - onPressed: () { - m.clearSelections(); - }, - icon: const Icon(Icons.clear, size: 22), - color: MyColors.redA3Color, - ) - : null, - ), + TextField( + controller: m.search, + style: const TextStyle(color: MyColors.darkTextColor, fontWeight: FontWeight.w500, fontSize: 12), + onChanged: (String val) { + m.filter(val); + }, + decoration: InputDecoration( + border: fieldBorder(radius: 5, color: 0xFFE5E5E5), + focusedBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), + enabledBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5), + contentPadding: const EdgeInsets.all(11), + hintText: LocaleKeys.searchfromchat.tr(), + hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic, fontWeight: FontWeight.w500, fontSize: 12), + filled: true, + fillColor: const Color(0xFFF7F7F7), + suffixIconConstraints: const BoxConstraints(), + suffixIcon: m.search.text.isNotEmpty + ? IconButton( + constraints: const BoxConstraints(), + onPressed: () { + m.clearSelections(); + }, + icon: const Icon(Icons.clear, size: 22), + color: MyColors.redA3Color, + ) + : null, ), - ), + ).paddingOnly(top: 20, bottom: 14), if (m.searchedChats != null) ListView.separated( itemCount: m.searchedChats!.length, - padding: const EdgeInsets.only(bottom: 80), shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), + physics: const ClampingScrollPhysics(), itemBuilder: (BuildContext context, int index) { + // todo @aamir, remove list tile, make a custom ui instead return SizedBox( height: 55, - // todo @aamir, remove list tile, make a custom ui instead - child: ListTile( - leading: Stack( - children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), + child: Row( + children: [ + Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), ), ), - ), - ) - ], - ), - title: (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor), - // subtitle: (m.searchedChats![index].isTyping == true ? "Typing ..." : "").toText11(color: MyColors.normalTextColor), - trailing: SizedBox( - width: 60, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.max, - children: [ - // if (m.searchedChats![index].isLoadingCounter!) - // Flexible( - // child: Container( - // padding: EdgeInsets.zero, - // alignment: Alignment.centerRight, - // width: 18, - // height: 18, - // decoration: const BoxDecoration( - // // color: MyColors.redColor, - // borderRadius: BorderRadius.all( - // Radius.circular(20), - // ), - // ), - // child: CircularProgressIndicator(), - // ), - // ), - if (m.searchedChats![index].unreadMessageCount! > 0) - Flexible( - child: Container( - padding: EdgeInsets.zero, - alignment: Alignment.centerRight, + ) + ], + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), + ], + ).expanded, + SizedBox( + width: 60, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + if (m.searchedChats![index].unreadMessageCount! > 0) + Container( + alignment: Alignment.center, width: 18, height: 18, decoration: const BoxDecoration( @@ -158,18 +140,12 @@ class _ChatHomeScreenState extends State { color: MyColors.white, ) .center, - ), - ), - Flexible( - child: IconButton( - constraints: BoxConstraints(), - alignment: Alignment.centerRight, - padding: EdgeInsets.zero, - icon: Icon( - m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, - ), + ).paddingOnly(right: 10).center, + Icon( + m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, - onPressed: () { + ).onPress( + () { if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { m.favoriteUser( userID: AppState().chatDetails!.response!.id!, @@ -187,40 +163,18 @@ class _ChatHomeScreenState extends State { ); } }, - ), - ) - ], + ).center + ], + ), ), - ), - minVerticalPadding: 0, - onTap: () { - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, - ).then((Object? value) { - // m.GetUserChatHistoryNotDeliveredAsync(userId: int.parse(AppState().chatDetails!.response!.id.toString())); - m.clearSelections(); - m.notifyListeners(); - }); - }, + ], ), ); }, - separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only( - right: 10, - left: 70, - ), - child: Divider( - color: Color( - 0xFFE5E5E5, - ), - ), - ), - ), + separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), + ).paddingOnly(bottom: 70).expanded, ], - ); + ).paddingOnly(left: 21, right: 21); }, ), floatingActionButton: FloatingActionButton( diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 8f303cd..88c8f9a 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -1,6 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; @@ -26,81 +27,70 @@ class ChatFavoriteUsersScreen extends StatelessWidget { return m.favUsersList != null && m.favUsersList.isNotEmpty ? ListView.separated( itemCount: m.favUsersList!.length, - padding: const EdgeInsets.only(top: 20), shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemBuilder: (BuildContext context, int index) { return SizedBox( height: 55, - child: ListTile( - leading: Stack( - children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.favUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), + child: Row( + children: [ + Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.favUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), ), ), - ), - ) - ], - ), - title: (m.favUsersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14( - color: MyColors.darkTextColor, - ), - trailing: IconButton( - alignment: Alignment.centerRight, - padding: EdgeInsets.zero, - icon: Icon( - m.favUsersList![index].isFav! ? Icons.star : Icons.star_border, + ) + ], ), - color: m.favUsersList![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, - onPressed: () { - if (m.favUsersList![index].isFav!) - m.unFavoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.favUsersList![index].id!, - ); - }, - ), - minVerticalPadding: 0, - onTap: () { - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: {"targetUser": m.favUsersList![index], "isNewChat": false}, - ).then( - (Object? value) { - m.clearSelections(); - }, - ); - }, + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (m.favUsersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), + ], + ).expanded, + SizedBox( + width: 60, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + m.favUsersList![index].isFav! ? Icons.star : Icons.star_border, + color: m.favUsersList![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, + ).onPress(() { + if (m.favUsersList![index].isFav!) { + m.unFavoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.favUsersList![index].id!, + ); + } + }).center, + ], + ), + ), + ], ), ); }, - separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only( - right: 10, - left: 70, - ), - child: Divider( - color: Color( - 0xFFE5E5E5, - ), - ), - ), - ) + separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 70), + ).paddingAll(21) : Column( children: [ Utils.getNoDataWidget(context).expanded, From 0538a3c313f006697483f1a1feb7063e41a8b00f Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 28 Nov 2022 15:59:15 +0300 Subject: [PATCH 131/302] Chat Fixes & Chat Media Preview Api Implementation --- lib/api/chat/chat_api_client.dart | 83 ++++++++++++++++++---- lib/api/dashboard_api_client.dart | 28 ++++---- lib/classes/consts.dart | 5 +- lib/provider/chat_provider_model.dart | 16 +++++ lib/provider/dashboard_provider_model.dart | 2 - lib/ui/chat/chat_bubble.dart | 38 +++++++++- lib/ui/chat/chat_detailed_screen.dart | 35 +++++---- lib/ui/chat/chat_home_screen.dart | 12 +++- lib/ui/chat/favorite_users_screen.dart | 12 +++- 9 files changed, 178 insertions(+), 53 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 6355417..91b622a 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -1,5 +1,6 @@ import 'dart:convert'; import 'dart:io'; +import 'dart:typed_data'; import 'package:http/http.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; @@ -46,13 +47,30 @@ class ChatApiClient { ); Future getRecentChats() async { - Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatRecentUrl}getchathistorybyuserid", - token: AppState().chatDetails!.response!.token, - ); - return ChatUserModel.fromJson( - json.decode(response.body), - ); + try { + Response response = await ApiClient().getJsonForResponse( + "${ApiConsts.chatRecentUrl}getchathistorybyuserid", + token: AppState().chatDetails!.response!.token, + ); + return ChatUserModel.fromJson( + json.decode(response.body), + ); + } catch (e) { + e as APIException; + if (e.message == "api_common_unauthorized") { + logger.d("Token Generated On APIIIIII"); + user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); + if (userLoginResponse.response != null) { + AppState().setchatUserDetails = userLoginResponse; + getRecentChats(); + } else { + Utils.showToast( + userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", + ); + } + } + throw e; + } } Future getFavUsers() async { @@ -66,11 +84,27 @@ class ChatApiClient { } Future getSingleUserChatHistory({required int senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false, required int paginationVal}) async { - Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatSingleUserHistoryUrl}GetUserChatHistory/$senderUID/$receiverUID/$paginationVal", - token: AppState().chatDetails!.response!.token, - ); - return response; + try { + Response response = await ApiClient().getJsonForResponse( + "${ApiConsts.chatSingleUserHistoryUrl}GetUserChatHistory/$senderUID/$receiverUID/$paginationVal", + token: AppState().chatDetails!.response!.token, + ); + return response; + } catch (e) { + e as APIException; + if (e.message == "api_common_unauthorized") { + user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); + if (userLoginResponse.response != null) { + AppState().setchatUserDetails = userLoginResponse; + getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); + } else { + Utils.showToast( + userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", + ); + } + } + throw e; + } } Future favUser({required int userID, required int targetUserID}) async { @@ -120,4 +154,29 @@ class ChatApiClient { StreamedResponse response = await request.send(); return response; } + + // Download File For Chat + + Future downloadURL({required String fileName, required String fileTypeDescription}) async { + Response response = await ApiClient().postJsonForResponse( + "${ApiConsts.chatMediaImageUploadUrl}download", + {"fileType": fileTypeDescription, "fileName": fileName, "fileSource": 1}, + token: AppState().chatDetails!.response!.token, + ); + Uint8List data = Uint8List.fromList(response.bodyBytes); + return data; + } + + Future getUsersImages({required List encryptedEmails}) async { + Response response = await ApiClient().postJsonForResponse( + "${ApiConsts.chatUserImages}images", + { + "encryptedEmails": ["/g8Rc+s6eEOdci41PwJuV5dX+gXe51G9OTHzb9ahcVlHCmVvNhxReirudF79+hdxVSkCnQ6wC5DBFV8xnJlC74X6157PxF7mNYrAYuHRgp4="], + "fromClient": true + }, + token: AppState().chatDetails!.response!.token, + ); + logger.d(response.body); + // Uint8List data = Uint8List.fromList(response.body); + } } diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index 69c2e82..e30af91 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -182,22 +182,22 @@ class DashboardApiClient { Future getChatCount() async { Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatServerBaseApiUrl}user/unreadconversationcount/${AppState().getUserName}", + "${ApiConsts.chatLoginTokenUrl}unreadconversationcount/${AppState().getUserName}", ); return chatUnreadCovnCountModelFromJson(response.body); } - // Future setAdvertisementViewed(String masterID, int advertisementId) async { - // String url = "${ApiConsts.cocRest}Mohemm_ITG_UpdateAdvertisementAsViewed"; - // - // Map postParams = { - // "ItgNotificationMasterId": masterID, - // "ItgAdvertisement": {"advertisementId": advertisementId, "acknowledgment": true} //Mobile Id - // }; - // postParams.addAll(AppState().postParamsJson); - // return await ApiClient().postJsonForObject((json) { - // // ItgMainRes responseData = ItgMainRes.fromJson(json); - // return json; - // }, url, postParams); - // } +// Future setAdvertisementViewed(String masterID, int advertisementId) async { +// String url = "${ApiConsts.cocRest}Mohemm_ITG_UpdateAdvertisementAsViewed"; +// +// Map postParams = { +// "ItgNotificationMasterId": masterID, +// "ItgAdvertisement": {"advertisementId": advertisementId, "acknowledgment": true} //Mobile Id +// }; +// postParams.addAll(AppState().postParamsJson); +// return await ApiClient().postJsonForObject((json) { +// // ItgMainRes responseData = ItgMainRes.fromJson(json); +// return json; +// }, url, postParams); +// } } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index edc866f..4e9c9b6 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,6 +1,6 @@ class ApiConsts { - // static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "http://10.200.204.20:2801/"; // Local server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server @@ -23,6 +23,7 @@ class ApiConsts { static String chatSingleUserHistoryUrl = chatServerBaseApiUrl + "UserChatHistory/"; static String chatMediaImageUploadUrl = chatServerBaseApiUrl + "shared/"; static String chatFavUser = chatServerBaseApiUrl + "FavUser/"; + static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; } class SharedPrefsConsts { diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 655de86..e08562e 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -283,6 +283,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future onMsgReceived(List? parameters) async { + print("--------------------------------RMSG-----------------------------"); + logger.d(parameters); List data = []; List temp = []; for (dynamic msg in parameters!) { @@ -652,6 +654,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); } + // Future getDownLoadFile(String fileName) async { + // var data = await ChatApiClient().downloadURL(fileName: "data"); + // Image.memory(data); + // } + // void getUserChatHistoryNotDeliveredAsync({required int userId}) async { // try { // await hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [userId]); @@ -659,4 +666,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // hubConnection.off("GetUserChatHistoryNotDeliveredAsync", method: chatNotDelivered); // } // } + + + + + + + + + } diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index b785293..59b62b6 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -295,7 +295,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future getUserAutoLoginToken() async { - logger.d("Token Generated On Home"); UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); if (userLoginResponse.response != null) { AppState().setchatUserDetails = userLoginResponse; @@ -315,7 +314,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isChatHubLoding = false; return hub; } - void notify() { notifyListeners(); } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index bcf78aa..8382585 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -1,8 +1,13 @@ +import 'dart:typed_data'; + import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/api_client.dart'; +import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/main.dart'; // todo: @aamir use extension methods, and use correct widgets. @@ -16,7 +21,9 @@ class ChatBubble extends StatelessWidget { required this.isDelivered, required this.dateTime, required this.isReplied, - required this.userName}) + required this.userName, + this.fileTypeID, + this.fileTypeDescription}) : super(key: key); final String text; final String replyText; @@ -26,6 +33,8 @@ class ChatBubble extends StatelessWidget { final String dateTime; final bool isReplied; final String userName; + final int? fileTypeID; + final String? fileTypeDescription; @override Widget build(BuildContext context) { @@ -177,7 +186,8 @@ class ChatBubble extends StatelessWidget { ).expanded, ), ).paddingOnly(right: 5, bottom: 7), - (text).toText12(), + if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) showImage().paddingOnly(right: 5), + if (fileTypeID != 12 || fileTypeID != 4 || fileTypeID != 3) (text).toText12(), Align( alignment: Alignment.centerRight, child: Row( @@ -237,7 +247,7 @@ class ChatBubble extends StatelessWidget { ).expanded, ), ).paddingOnly(right: 5, bottom: 7), - (text).toText12(color: Colors.white), + if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) showImage().paddingOnly(right: 5) else (text).toText12(color: Colors.white), Align( alignment: Alignment.centerRight, child: dateTime.toText10( @@ -248,4 +258,26 @@ class ChatBubble extends StatelessWidget { ), ).paddingOnly(right: MediaQuery.of(context).size.width * 0.3); } + + Widget showImage() { + return FutureBuilder( + future: ChatApiClient().downloadURL(fileName: text, fileTypeDescription: fileTypeDescription!), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState != ConnectionState.waiting) { + if (snapshot.data == null) { + return (text).toText12(color: Colors.white); + } else { + return Image.memory( + snapshot.data, + height: 140, + width: 227, + fit: BoxFit.cover, + ); + } + } else { + return const SizedBox(height: 140, width: 227, child: Center(child: CircularProgressIndicator())); + } + }, + ); + } } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index e0f7f93..4dc7c35 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -9,6 +10,7 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/call.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; @@ -74,21 +76,14 @@ class _ChatDetailScreenState extends State { showHomeButton: false, image: userDetails["targetUser"].image, actions: [ - IconButton( - constraints: const BoxConstraints(), - onPressed: () { - // makeCall(callType: "AUDIO", con: hubConnection); - }, - icon: SvgPicture.asset("assets/icons/chat/call.svg", width: 22, height: 22), - ), - IconButton( - constraints: const BoxConstraints(), - onPressed: () { - //makeCall(callType: "VIDEO", con: hubConnection); - }, - icon: SvgPicture.asset("assets/icons/chat/video_call.svg", width: 20, height: 20), - ), - 10.width, + SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() { + // makeCall(callType: "AUDIO", con: hubConnection); + }), + 24.width, + SvgPicture.asset("assets/icons/chat/video_call.svg", width: 21, height: 18).onPress(() { + // makeCall(callType: "VIDEO", con: hubConnection); + }), + 21.width, ], ), body: Consumer( @@ -128,13 +123,17 @@ class _ChatDetailScreenState extends State { dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), isReplied: m.userChatHistory[i].userChatReplyResponse != null ? true : false, userName: AppState().chatDetails!.response!.userName == m.userChatHistory[i].currentUserName.toString() ? "You" : m.userChatHistory[i].currentUserName.toString(), + fileTypeID: m.userChatHistory[i].fileTypeId, + fileTypeDescription: m.userChatHistory[i].fileTypeResponse!.fileTypeDescription, ), onRightSwipe: () { m.chatReply( m.userChatHistory[i], ); }, - ); + ).onPress(() { + logger.d(jsonEncode(m.userChatHistory[i])); + }); }, ), ).expanded, @@ -181,12 +180,12 @@ class _ChatDetailScreenState extends State { disabledBorder: InputBorder.none, filled: true, fillColor: MyColors.white, - contentPadding: EdgeInsets.only( + contentPadding: const EdgeInsets.only( left: 21, top: 20, bottom: 20, ), - prefixIconConstraints: BoxConstraints(), + prefixIconConstraints: const BoxConstraints(), prefixIcon: m.sFileType.isNotEmpty ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 21, right: 15) : null, diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index cf6b8d2..9072b33 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -169,7 +169,17 @@ class _ChatHomeScreenState extends State { ), ], ), - ); + ).onPress(() { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, + ).then((Object? value) { + // m.GetUserChatHistoryNotDeliveredAsync(userId: int.parse(AppState().chatDetails!.response!.id.toString())); + m.clearSelections(); + m.notifyListeners(); + }); + }); }, separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), ).paddingOnly(bottom: 70).expanded, diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 88c8f9a..6bc0040 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -87,7 +87,17 @@ class ChatFavoriteUsersScreen extends StatelessWidget { ), ], ), - ); + ).onPress(() { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.favUsersList![index], "isNewChat": false}, + ).then( + (Object? value) { + m.clearSelections(); + }, + ); + }); }, separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 70), ).paddingAll(21) From 04f5847af9a2d2ee6d312c404b9361180f394437 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 28 Nov 2022 16:01:44 +0300 Subject: [PATCH 132/302] Chat Fixes & Chat Media Preview Api Implementation --- lib/provider/chat_provider_model.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index e08562e..8184d28 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -283,8 +283,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future onMsgReceived(List? parameters) async { - print("--------------------------------RMSG-----------------------------"); - logger.d(parameters); List data = []; List temp = []; for (dynamic msg in parameters!) { From 46af0c42c7c3c77cdc47b5f8d0c0d2b44712f8a5 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 28 Nov 2022 16:14:41 +0300 Subject: [PATCH 133/302] updates & fixes --- lib/classes/date_uitl.dart | 2 +- lib/provider/chat_provider_model.dart | 1 + lib/ui/chat/chat_home_screen.dart | 1 + lib/ui/work_list/worklist_fragments/actions_fragment.dart | 6 +++--- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/classes/date_uitl.dart b/lib/classes/date_uitl.dart index f7b8192..f8d1c02 100644 --- a/lib/classes/date_uitl.dart +++ b/lib/classes/date_uitl.dart @@ -20,7 +20,7 @@ class DateUtil { } static DateTime convertSimpleStringDateToDate(String date) { - return DateFormat("MM/dd/yyyy hh:mm:ss").parse(date); + return DateFormat("MM/dd/yyyy hh:mm:ss a").parse(date); } static DateTime convertSimpleStringDateToDateddMMyyyy(String date) { diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index dc98858..74ee633 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -435,6 +435,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ChatUser( id: targetUserId, userName: targetUserName, + unreadMessageCount: 0 ), ); notifyListeners(); diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 2724683..95ff2ed 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -47,6 +47,7 @@ class _ChatHomeScreenState extends State { return m.isLoading ? ChatHomeShimmer() : ListView( + padding: EdgeInsets.zero, shrinkWrap: true, physics: const AlwaysScrollableScrollPhysics(), children: [ diff --git a/lib/ui/work_list/worklist_fragments/actions_fragment.dart b/lib/ui/work_list/worklist_fragments/actions_fragment.dart index fa29d65..98b5b72 100644 --- a/lib/ui/work_list/worklist_fragments/actions_fragment.dart +++ b/lib/ui/work_list/worklist_fragments/actions_fragment.dart @@ -147,15 +147,15 @@ class ActionsFragment extends StatelessWidget { if (actionHistoryList[index].aCTIONCODE == "SUBMIT") { return ""; } else if (actionHistoryList[index].aCTIONCODE == "PENDING") { - if (actionHistoryList[++index].nOTIFICATIONDATE!.isEmpty) { + if (actionHistoryList[index + 1].nOTIFICATIONDATE!.isEmpty) { return ""; } - DateTime dateTimeFrom = DateUtil.convertSimpleStringDateToDate(actionHistoryList[++index].nOTIFICATIONDATE!); + DateTime dateTimeFrom = DateUtil.convertSimpleStringDateToDate(actionHistoryList[index + 1].nOTIFICATIONDATE!); Duration duration = DateTime.now().difference(dateTimeFrom); return "Action duration: " + DateUtil.formatDuration(duration); } else { DateTime dateTimeTo = DateUtil.convertSimpleStringDateToDate(actionHistoryList[index].nOTIFICATIONDATE!); - DateTime dateTimeFrom = DateUtil.convertSimpleStringDateToDate(actionHistoryList[++index].nOTIFICATIONDATE!); + DateTime dateTimeFrom = DateUtil.convertSimpleStringDateToDate(actionHistoryList[index + 1].nOTIFICATIONDATE!); Duration duration = dateTimeTo.difference(dateTimeFrom); return "Action duration: " + DateUtil.formatDuration(duration); } From 59ad00ca2afca0fc3b6bd9c0f0db3d7d9bdea806 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 28 Nov 2022 17:50:50 +0300 Subject: [PATCH 134/302] Fetched Questoins and Added Answer Interactivity --- lib/api/marathon/marathon_api_client.dart | 6 +- lib/classes/consts.dart | 35 +-- lib/classes/decorations_helper.dart | 15 + lib/models/marathon/question_model.dart | 7 + lib/ui/landing/dashboard_screen.dart | 5 +- lib/ui/marathon/marathon_intro_screen.dart | 4 +- lib/ui/marathon/marathon_provider.dart | 53 ++-- lib/ui/marathon/marathon_screen.dart | 4 +- lib/ui/marathon/widgets/marathon_banner.dart | 276 ++++++++++--------- lib/ui/marathon/widgets/question_card.dart | 119 ++++---- 10 files changed, 273 insertions(+), 251 deletions(-) diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 6aae0ca..9913af0 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -129,11 +129,13 @@ class MarathonApiClient { logger.i("Error in AddParticipant: $e"); }); + context.read().addItemToList(ApiConsts.dummyQuestion); + await hubConnection.invoke( "SendQuestionToParticipant", args: [ { - "marathonId": "9c47d281-c5b5-4b5d-a90a-08dacb8cbdb6", + "marathonId": "${AppState().getMarathonProjectId}", } ], ).catchError((e) { @@ -163,7 +165,7 @@ class MarathonApiClient { Map data = arguments.first! as Map; var json = data["data"]; QuestionModel newQuestion = QuestionModel.fromJson(json); - context.read().addNewQuestionsToTheList(newQuestion, 0); + context.read().addNewQuestionsToTheList(newQuestion); } } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ecc8af9..5844822 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,4 +1,3 @@ -import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { @@ -34,40 +33,8 @@ class ApiConsts { static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; //DummyCards for the UI - static List questionOptions = [ - QuestionOptions( - id: "id", - image: "image", - isCorrectOption: true, - questionId: "questionId", - sequence: 0, - titleAr: "titleAr", - titleEn: "titleEn", - ), - ]; - static QuestionModel dummyQuestion = QuestionModel( - id: "id", - titleEn: "titleEn", - titleAr: "titleAr", - marathonId: "marathonId", - questionTypeId: 0, - questionTime: 0, - nextQuestGap: 5, - gapType: 0, - gapText: "gapText", - gapImage: "gapImage", - questOptionsLimit: 4, - questionOptions: questionOptions, - ); - - static List dummyQuestions = [ - CardContent(question: dummyQuestion), - CardContent(question: dummyQuestion), - CardContent(question: dummyQuestion), - CardContent(question: dummyQuestion), - CardContent(question: dummyQuestion), - ]; + static CardContent dummyQuestion = const CardContent(); } class SharedPrefsConsts { diff --git a/lib/classes/decorations_helper.dart b/lib/classes/decorations_helper.dart index 77ea4a4..b313673 100644 --- a/lib/classes/decorations_helper.dart +++ b/lib/classes/decorations_helper.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/models/marathon/question_model.dart'; class MyDecorations { static Decoration shadowDecoration = BoxDecoration( @@ -22,4 +23,18 @@ class MyDecorations { ); return answerContainerDecoration; } + + static Decoration getAnswersContainerColor(QuestionsOptionStatus questionsOptionStatus) { + switch (questionsOptionStatus) { + case QuestionsOptionStatus.correct: + return getContainersDecoration(MyColors.greenColor); + case QuestionsOptionStatus.wrong: + return getContainersDecoration(MyColors.redColor); + + case QuestionsOptionStatus.selected: + return getContainersDecoration(MyColors.yellowColorII); + case QuestionsOptionStatus.unSelected: + return getContainersDecoration(MyColors.greyF7Color); + } + } } diff --git a/lib/models/marathon/question_model.dart b/lib/models/marathon/question_model.dart index 98ff830..4c77d5a 100644 --- a/lib/models/marathon/question_model.dart +++ b/lib/models/marathon/question_model.dart @@ -1,3 +1,5 @@ +enum QuestionsOptionStatus { correct, wrong, selected, unSelected } + class QuestionModel { String? id; String? titleEn; @@ -75,6 +77,7 @@ class QuestionOptions { int? sequence; String? image; bool? isCorrectOption; + QuestionsOptionStatus? optionStatus; QuestionOptions({ String? id, @@ -84,6 +87,7 @@ class QuestionOptions { int? sequence, String? image, bool? isCorrectOption, + QuestionsOptionStatus? optionStatus, }); QuestionOptions.fromJson(Map json) { @@ -94,6 +98,9 @@ class QuestionOptions { sequence = json['sequence']; image = json['image']; isCorrectOption = json['isCorrectOption']; + optionStatus = QuestionsOptionStatus.unSelected; + + } Map toJson() { diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 71b6d7b..954c26c 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -13,7 +13,6 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; @@ -301,7 +300,7 @@ class _DashboardScreenState extends State { ], ), ], - ).paddingOnly(left: 21, right: 21, top : 7), + ).paddingOnly(left: 21, right: 21, top: 7), context.watch().isLoading ? MarathonBannerShimmer().paddingAll(20) : MarathonBanner().paddingAll(20), ServicesWidget(), // 8.height, @@ -348,7 +347,7 @@ class _DashboardScreenState extends State { ], ).paddingOnly(left: 21, right: 21), Consumer( - builder: (context, model, child) { + builder: (BuildContext context, DashboardProviderModel model, Widget? child) { return SizedBox( height: 103 + 33, child: ListView.separated( diff --git a/lib/ui/marathon/marathon_intro_screen.dart b/lib/ui/marathon/marathon_intro_screen.dart index a0ce912..e9d2cba 100644 --- a/lib/ui/marathon/marathon_intro_screen.dart +++ b/lib/ui/marathon/marathon_intro_screen.dart @@ -220,7 +220,7 @@ class MarathonFooter extends StatelessWidget { @override Widget build(BuildContext context) { - return provider.itsMarathonTime + return !provider.itsMarathonTime ? DefaultButton( LocaleKeys.joinMarathon.tr(), () async { @@ -229,7 +229,7 @@ class MarathonFooter extends StatelessWidget { provider.resetValues(); await provider.connectSignalrAndJoinMarathon(context); } catch (e, s) { - Utils.hideLoading(context); + Utils.confirmDialog(context, e.toString()); print(s); } Utils.hideLoading(context); diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 0f82581..2d178d5 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -4,7 +4,6 @@ import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; -import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; @@ -13,27 +12,35 @@ class MarathonProvider extends ChangeNotifier { final AppinioSwiperController swiperController = AppinioSwiperController(); MarathonDetailModel marathonDetailModel = MarathonDetailModel(); - List cardContentList = [ - CardContent(question: ApiConsts.dummyQuestion), - CardContent(question: ApiConsts.dummyQuestion), - CardContent(question: ApiConsts.dummyQuestion), - CardContent(question: ApiConsts.dummyQuestion), - CardContent(question: ApiConsts.dummyQuestion), - ]; + List cardContentList = []; + QuestionModel currentQuestion = QuestionModel(); + int? selectedOptionIndex; int currentGapTime = 0; - void addNewQuestionsToTheList(QuestionModel newQuestion, int index) { - - //TODO: THIS SHOULD NOT SWIPE THE CARD ON THE FIRST TRIGGER - swipeCardLeft(); - cardContentList.add(CardContent(question: newQuestion)); + void addNewQuestionsToTheList(QuestionModel newQuestion) { + if (currentQuestionNumber > 0) { + swipeCardLeft(); + } + currentQuestionNumber++; + currentQuestion = newQuestion; + cardContentList.add(const CardContent()); currentGapTime = newQuestion.nextQuestGap!; + + notifyListeners(); + } + + void addItemToList(CardContent value) { + cardContentList.add(value); notifyListeners(); } - void removeQuestionFromTheList(int index) { - cardContentList.removeAt(index); + void updateCurrentQuestionOptionStatus(QuestionsOptionStatus status, int index) { + for (int i = 0; i < currentQuestion.questionOptions!.length; i++) { + currentQuestion.questionOptions![i].optionStatus = QuestionsOptionStatus.unSelected; + } + currentQuestion.questionOptions![index].optionStatus = status; + selectedOptionIndex = index; notifyListeners(); } @@ -84,10 +91,19 @@ class MarathonProvider extends ChangeNotifier { void swipeCardLeft() { swiperController.swipeLeft(); - currentQuestionNumber++; notifyListeners(); } + void getCorrectAnswerAndUpdateUI() { + if (selectedOptionIndex != null) { + if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) { + updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!); + } else { + updateCurrentQuestionOptionStatus(QuestionsOptionStatus.wrong, selectedOptionIndex!); + } + } + } + Timer timerU = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); void startTimer(BuildContext context) { @@ -95,6 +111,9 @@ class MarathonProvider extends ChangeNotifier { timerU = Timer.periodic( oneSec, (Timer timer) async { + if (currentGapTime == 2) { + getCorrectAnswerAndUpdateUI(); + } if (currentGapTime == 0) { // if (currentQuestionNumber == 9) { // timer.cancel(); @@ -122,6 +141,8 @@ class MarathonProvider extends ChangeNotifier { cardContentList.clear(); timerU.cancel(); _isMarathonCompleted = false; + currentGapTime = 0; + currentQuestion = QuestionModel(); notifyListeners(); } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 90df75f..1cdde5b 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -117,7 +117,7 @@ class _MarathonProgressContainerState extends State { borderRadius: BorderRadius.circular(5), ), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), - child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}" + child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel!.totalQuestions.toString()} ${LocaleKeys.question.tr()}" .toText12(color: MyColors.white), ), "${widget.provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), @@ -149,7 +149,7 @@ class _MarathonProgressContainerState extends State { 12.height, Row( children: [ - "${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(isBold: true), + "${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel!.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(isBold: true), ], ), ], diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index a142537..84be7e3 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -21,142 +21,166 @@ class MarathonBanner extends StatelessWidget { @override Widget build(BuildContext context) { MarathonProvider provider = context.read(); - return Container( - decoration: MyDecorations.shadowDecoration, - height: MediaQuery.of(context).size.height * 0.11, - clipBehavior: Clip.antiAlias, - child: Stack( - children: [ - Transform( - alignment: Alignment.center, - transform: Matrix4.rotationY( - AppState().isArabic(context) ? math.pi : 0, - ), - child: SvgPicture.asset( - "assets/images/marathon_banner_bg.svg", - fit: BoxFit.fill, - width: double.infinity, - ), - ), - Positioned( - left: -20, - top: -10, - child: Transform.rotate( - angle: 15, - child: Container( - width: 65, - height: 32, - color: MyColors.darkDigitColor, - ), - ), - ), - SizedBox( - width: double.infinity, - height: double.infinity, - child: Row( + return provider.marathonDetailModel.startTime != null + ? Container( + decoration: MyDecorations.shadowDecoration, + height: MediaQuery.of(context).size.height * 0.11, + clipBehavior: Clip.antiAlias, + child: Stack( children: [ - const Expanded( - flex: 3, - child: SizedBox( + Transform( + alignment: Alignment.center, + transform: Matrix4.rotationY( + AppState().isArabic(context) ? math.pi : 0, + ), + child: SvgPicture.asset( + "assets/images/marathon_banner_bg.svg", + fit: BoxFit.fill, width: double.infinity, - height: double.infinity, ), ), - Expanded( - flex: 5, - child: SizedBox( - width: double.infinity, - height: double.infinity, - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - AppState().isArabic(context) ? 0.height : 5.height, - AutoSizeText( - LocaleKeys.getReadyForContest.tr(), - minFontSize: 08, - maxFontSize: 11, - style: TextStyle( - fontStyle: FontStyle.italic, - fontWeight: FontWeight.w600, - color: MyColors.white.withOpacity(0.83), - letterSpacing: -0.4, + Positioned( + left: -20, + top: -10, + child: Transform.rotate( + angle: 15, + child: Container( + width: 65, + height: 32, + color: MyColors.darkDigitColor, + ), + ), + ), + SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + children: [ + const Expanded( + flex: 3, + child: SizedBox( + width: double.infinity, + height: double.infinity, + ), + ), + Expanded( + flex: 5, + child: SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + AppState().isArabic(context) ? 0.height : 5.height, + AutoSizeText( + LocaleKeys.getReadyForContest.tr(), + minFontSize: 08, + maxFontSize: 11, + style: TextStyle( + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w600, + color: MyColors.white.withOpacity(0.83), + letterSpacing: -0.4, + ), + ), + AutoSizeText( + AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: 19, + fontWeight: FontWeight.bold, + color: MyColors.white.withOpacity(0.83), + height: 32 / 22, + ), + ), + 3.height, + BuildCountdownTimer( + timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, + provider: provider, + screenFlag: 0, + ), + ], + ).paddingOnly( + left: AppState().isArabic(context) ? 12 : 3, + right: AppState().isArabic(context) ? 3 : 12, + ) + ], + ), + ), + ), + ], + ), + ), + AppState().isArabic(context) + ? Align( + alignment: Alignment.topRight, + child: SizedBox( + height: 20, + width: 35, + child: Transform.rotate( + angle: math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: const TextStyle( + color: MyColors.black, + fontWeight: FontWeight.bold, + fontSize: 6, + height: 1.2, ), ), - AutoSizeText( - AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", - style: TextStyle( - fontStyle: FontStyle.italic, - fontSize: 19, + ), + ), + ).paddingOnly(top: 5) + : Align( + alignment: Alignment.topLeft, + child: SizedBox( + height: 20, + width: 35, + child: Transform.rotate( + angle: -math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: const TextStyle( + color: MyColors.kWhiteColor, fontWeight: FontWeight.bold, - color: MyColors.white.withOpacity(0.83), - height: 32 / 22, + fontSize: 6, + height: 1.2, ), ), - 3.height, - BuildCountdownTimer( - timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, - provider: provider, - screenFlag: 0, - ), - ], - ).paddingOnly( - left: AppState().isArabic(context) ? 12 : 3, - right: AppState().isArabic(context) ? 3 : 12, - ) - ], - ), - ), - ), + ), + ), + ).paddingOnly(top: 5), + !AppState().isArabic(context) + ? Positioned( + right: 0, + bottom: 0, + child: RotatedBox( + quarterTurns: 4, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), + ).paddingAll(15), + ) + : Positioned( + bottom: 0, + left: 0, + child: RotatedBox( + quarterTurns: 2, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), + ).paddingAll(15), + ), ], + ).onPress( + () => Navigator.pushNamed(context, AppRoutes.marathonIntroScreen), ), - ), - Align( - alignment: Alignment.topLeft, - child: SizedBox( - height: 20, - width: 35, - child: Transform.rotate( - angle: -math.pi / 4.5, - child: Text( - LocaleKeys.brainMarathon.tr(), - textAlign: TextAlign.center, - maxLines: 2, - style: const TextStyle( - color: MyColors.kWhiteColor, - fontWeight: FontWeight.bold, - fontSize: 6, - height: 1.2, - ), - ), - ), - ), - ).paddingOnly(top: 5), - !AppState().isArabic(context) - ? Positioned( - right: 0, - bottom: 0, - child: RotatedBox( - quarterTurns: 4, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(15), - ) - : Positioned( - bottom: 0, - left: 0, - child: RotatedBox( - quarterTurns: 2, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(15), - ), - ], - ).onPress( - () => Navigator.pushNamed(context, AppRoutes.marathonIntroScreen), - ), - ); + ) + : const SizedBox(); } } diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index cc92d85..f7fff67 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -1,9 +1,11 @@ import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:lottie/lottie.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; +import 'package:mohem_flutter_app/classes/lottie_consts.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; @@ -24,36 +26,35 @@ class QuestionCard extends StatelessWidget { @override Widget build(BuildContext context) { return CupertinoPageScaffold( - child: SizedBox( - height: 440, - width: double.infinity, - child: Consumer( - builder: (BuildContext context, MarathonProvider provider, _) { - return AppinioSwiper( - padding: EdgeInsets.zero, - isDisabled: true, - controller: provider.swiperController, - unswipe: (int index, AppinioSwiperDirection direction) {}, - onSwipe: (int index, AppinioSwiperDirection direction) { - print("here is the length: ${provider.cardContentList.length} and index : $index"); - }, - - cards: provider.cardContentList, - ); - }, - ), - ), + child: provider.cardContentList.isEmpty + ? Lottie.asset(MyLottieConsts.hourGlassLottie, height: 250).paddingOnly(top: 50) + : SizedBox( + height: 440, + width: double.infinity, + child: Consumer( + builder: (BuildContext context, MarathonProvider provider, _) { + return AppinioSwiper( + duration: const Duration(milliseconds: 400), + padding: EdgeInsets.zero, + isDisabled: true, + controller: provider.swiperController, + unswipe: (int index, AppinioSwiperDirection direction) {}, + onSwipe: (int index, AppinioSwiperDirection direction) {}, + cards: provider.cardContentList, + ); + }, + ), + ), ); } } class CardContent extends StatelessWidget { - final QuestionModel question; - - const CardContent({Key? key, required this.question}) : super(key: key); + const CardContent({Key? key}) : super(key: key); @override Widget build(BuildContext context) { + MarathonProvider provider = context.watch(); return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), @@ -92,7 +93,7 @@ class CardContent extends StatelessWidget { child: Padding( padding: const EdgeInsets.symmetric(horizontal: 13), child: Text( - AppState().isArabic(context) ? question.titleAr ?? "" : question.titleEn ?? "", + AppState().isArabic(context) ? provider.currentQuestion.titleAr ?? "" : provider.currentQuestion.titleEn ?? "", style: const TextStyle( color: MyColors.white, fontSize: 16, @@ -102,48 +103,21 @@ class CardContent extends StatelessWidget { ), ), ), - AnswerContent(question: question), + const AnswerContent(), ], ), ); } } -class AnswerContent extends StatefulWidget { - final QuestionModel question; +class AnswerContent extends StatelessWidget { + const AnswerContent({Key? key}) : super(key: key); - const AnswerContent({Key? key, required this.question}) : super(key: key); - - @override - State createState() => _AnswerContentState(); -} - -class _AnswerContentState extends State { - // void updateOption(int index, bool value) { - // isSelectedOptions[0] = false; - // isSelectedOptions[1] = false; - // isSelectedOptions[2] = false; - // isSelectedOptions[3] = false; - // isSelectedOptions[index] = value; - // setState(() {}); - // } - // - // Decoration getContainerColor(int index) { - // if (!isSelectedOptions[index]) { - // return MyDecorations.getContainersDecoration(MyColors.greyF7Color); - // } - // if (isSelectedOptions[index] && context - // .watch() - // .currentGapTime > 0) { - // return MyDecorations.getContainersDecoration(MyColors.yellowColorII); - // } - // return MyDecorations.getContainersDecoration( - // isSelectedOptions[index] ? MyColors.greenColor : MyColors.greyF7Color, - // ); - // } + void onAnswerTapped(BuildContext context, QuestionOptions questionOption) {} @override Widget build(BuildContext context) { + MarathonProvider provider = context.watch(); return Container( padding: const EdgeInsets.all(13), decoration: const BoxDecoration( @@ -153,23 +127,35 @@ class _AnswerContentState extends State { bottomRight: Radius.circular(10), ), ), - child: widget.question.questionOptions != null - ? Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: widget.question.questionOptions!.map((QuestionOptions e) => AnswerTileForText(questionOption: e, onAnswerTapped: () {})).toList(), + child: provider.currentQuestion.questionOptions != null + ? ListView.builder( + itemCount: provider.currentQuestion.questionOptions!.length, + shrinkWrap: true, + itemBuilder: (BuildContext context, int index) { + return AnswerTileForText( + index: index, + onAnswerTapped: () { + provider.updateCurrentQuestionOptionStatus(QuestionsOptionStatus.selected, index); + }, + ); + }, ) + // Column( + // mainAxisSize: MainAxisSize.min, + // mainAxisAlignment: MainAxisAlignment.center, + // crossAxisAlignment: CrossAxisAlignment.center, + // children: question.questionOptions!.map((QuestionOptions e) => AnswerTileForText(questionOption: e, onAnswerTapped: () {})).toList(), + // ) : const SizedBox(), ); } } class AnswerTileForText extends StatelessWidget { - final QuestionOptions questionOption; + final int index; final Function() onAnswerTapped; - const AnswerTileForText({Key? key, required this.questionOption, required this.onAnswerTapped}) : super(key: key); + const AnswerTileForText({Key? key, required this.index, required this.onAnswerTapped}) : super(key: key); // Decoration getContainerColor(int index) { // if (!isSelectedOptions[index]) { @@ -185,18 +171,19 @@ class AnswerTileForText extends StatelessWidget { @override Widget build(BuildContext context) { + MarathonProvider provider = context.watch(); return InkWell( onTap: () { onAnswerTapped(); }, child: Container( alignment: Alignment.centerLeft, - decoration: MyDecorations.getContainersDecoration(MyColors.greyF7Color), + decoration: MyDecorations.getAnswersContainerColor(provider.currentQuestion.questionOptions![index].optionStatus!), child: Center( child: Text( - questionOption.titleEn!, + AppState().isArabic(context) ? provider.currentQuestion.questionOptions![index].titleAr! : provider.currentQuestion.questionOptions![index].titleEn!, style: TextStyle( - color: isSelectedOptions[0] ? MyColors.white : MyColors.darkTextColor, + color: provider.currentQuestion.questionOptions![index].optionStatus == QuestionsOptionStatus.unSelected ? MyColors.darkTextColor : MyColors.white, fontWeight: FontWeight.w600, fontSize: 16, ), From 5430fd2d324a00660c206d4e08d295f32d97cbef Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 29 Nov 2022 15:07:02 +0300 Subject: [PATCH 135/302] Chat Fixes & Chat Media Preview Api Implementation / On Msg Received Image --- lib/api/chat/chat_api_client.dart | 2 +- .../chat/get_single_user_chat_list_model.dart | 117 ++++--- lib/provider/chat_provider_model.dart | 103 ++++-- lib/ui/chat/chat_bubble.dart | 307 +++++++----------- lib/ui/chat/chat_detailed_screen.dart | 29 +- 5 files changed, 271 insertions(+), 287 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 91b622a..41f941f 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -147,7 +147,7 @@ class ChatApiClient { } Future uploadMedia(String userId, File file) async { - dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatServerBaseApiUrl}upload')); + dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatMediaImageUploadUrl}upload')); request.fields.addAll({'userId': userId, 'fileSource': '1'}); request.files.add(await MultipartFile.fromPath('files', file.path)); request.headers.addAll({'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}'}); diff --git a/lib/models/chat/get_single_user_chat_list_model.dart b/lib/models/chat/get_single_user_chat_list_model.dart index 6a35f0e..07b2f51 100644 --- a/lib/models/chat/get_single_user_chat_list_model.dart +++ b/lib/models/chat/get_single_user_chat_list_model.dart @@ -1,32 +1,35 @@ import 'dart:convert'; +import 'package:flutter/foundation.dart'; + List singleUserChatModelFromJson(String str) => List.from(json.decode(str).map((x) => SingleUserChatModel.fromJson(x))); String singleUserChatModelToJson(List data) => json.encode(List.from(data.map((x) => x.toJson()))); class SingleUserChatModel { - SingleUserChatModel({ - this.userChatHistoryId, - this.userChatHistoryLineId, - this.contant, - this.contantNo, - this.currentUserId, - this.currentUserName, - this.targetUserId, - this.targetUserName, - this.encryptedTargetUserId, - this.encryptedTargetUserName, - this.chatEventId, - this.fileTypeId, - this.isSeen, - this.isDelivered, - this.createdDate, - this.chatSource, - this.conversationId, - this.fileTypeResponse, - this.userChatReplyResponse, - this.isReplied, - }); + SingleUserChatModel( + {this.userChatHistoryId, + this.userChatHistoryLineId, + this.contant, + this.contantNo, + this.currentUserId, + this.currentUserName, + this.targetUserId, + this.targetUserName, + this.encryptedTargetUserId, + this.encryptedTargetUserName, + this.chatEventId, + this.fileTypeId, + this.isSeen, + this.isDelivered, + this.createdDate, + this.chatSource, + this.conversationId, + this.fileTypeResponse, + this.userChatReplyResponse, + this.isReplied, + this.isImageLoaded, + this.image}); int? userChatHistoryId; int? userChatHistoryLineId; @@ -48,29 +51,32 @@ class SingleUserChatModel { FileTypeResponse? fileTypeResponse; UserChatReplyResponse? userChatReplyResponse; bool? isReplied; + bool? isImageLoaded; + Uint8List? image; factory SingleUserChatModel.fromJson(Map json) => SingleUserChatModel( - userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], - userChatHistoryLineId: json["userChatHistoryLineId"] == null ? null : json["userChatHistoryLineId"], - contant: json["contant"] == null ? null : json["contant"], - contantNo: json["contantNo"] == null ? null : json["contantNo"], - currentUserId: json["currentUserId"] == null ? null : json["currentUserId"], - currentUserName: json["currentUserName"] == null ? null : json["currentUserName"], - targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], - targetUserName: json["targetUserName"] == null ? null : json["targetUserName"], - encryptedTargetUserId: json["encryptedTargetUserId"] == null ? null : json["encryptedTargetUserId"], - encryptedTargetUserName: json["encryptedTargetUserName"] == null ? null : json["encryptedTargetUserName"], - chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], - fileTypeId: json["fileTypeId"], - isSeen: json["isSeen"] == null ? null : json["isSeen"], - isDelivered: json["isDelivered"] == null ? null : json["isDelivered"], - createdDate: json["createdDate"] == null ? null : DateTime.parse(json["createdDate"]), - chatSource: json["chatSource"] == null ? null : json["chatSource"], - conversationId: json["conversationId"] == null ? null : json["conversationId"], - fileTypeResponse: json["fileTypeResponse"] == null ? null : FileTypeResponse.fromJson(json["fileTypeResponse"]), - userChatReplyResponse: json["userChatReplyResponse"] == null ? null : UserChatReplyResponse.fromJson(json["userChatReplyResponse"]), - isReplied: false, - ); + userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], + userChatHistoryLineId: json["userChatHistoryLineId"] == null ? null : json["userChatHistoryLineId"], + contant: json["contant"] == null ? null : json["contant"], + contantNo: json["contantNo"] == null ? null : json["contantNo"], + currentUserId: json["currentUserId"] == null ? null : json["currentUserId"], + currentUserName: json["currentUserName"] == null ? null : json["currentUserName"], + targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], + targetUserName: json["targetUserName"] == null ? null : json["targetUserName"], + encryptedTargetUserId: json["encryptedTargetUserId"] == null ? null : json["encryptedTargetUserId"], + encryptedTargetUserName: json["encryptedTargetUserName"] == null ? null : json["encryptedTargetUserName"], + chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], + fileTypeId: json["fileTypeId"], + isSeen: json["isSeen"] == null ? null : json["isSeen"], + isDelivered: json["isDelivered"] == null ? null : json["isDelivered"], + createdDate: json["createdDate"] == null ? null : DateTime.parse(json["createdDate"]), + chatSource: json["chatSource"] == null ? null : json["chatSource"], + conversationId: json["conversationId"] == null ? null : json["conversationId"], + fileTypeResponse: json["fileTypeResponse"] == null ? null : FileTypeResponse.fromJson(json["fileTypeResponse"]), + userChatReplyResponse: json["userChatReplyResponse"] == null ? null : UserChatReplyResponse.fromJson(json["userChatReplyResponse"]), + isReplied: false, + isImageLoaded: false, + image: null); Map toJson() => { "userChatHistoryId": userChatHistoryId == null ? null : userChatHistoryId, @@ -138,6 +144,8 @@ class UserChatReplyResponse { this.targetUserId, this.targetUserName, this.fileTypeResponse, + this.isImageLoaded, + this.image, }); int? userChatHistoryId; @@ -149,18 +157,21 @@ class UserChatReplyResponse { int? targetUserId; String? targetUserName; FileTypeResponse? fileTypeResponse; + bool? isImageLoaded; + Uint8List? image; factory UserChatReplyResponse.fromJson(Map json) => UserChatReplyResponse( - userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], - chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], - contant: json["contant"] == null ? null : json["contant"], - contantNo: json["contantNo"] == null ? null : json["contantNo"], - fileTypeId: json["fileTypeId"], - createdDate: json["createdDate"] == null ? null : DateTime.parse(json["createdDate"]), - targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], - targetUserName: json["targetUserName"] == null ? null : json["targetUserName"], - fileTypeResponse: json["fileTypeResponse"] == null ? null : FileTypeResponse.fromJson(json["fileTypeResponse"]), - ); + userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], + chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], + contant: json["contant"] == null ? null : json["contant"], + contantNo: json["contantNo"] == null ? null : json["contantNo"], + fileTypeId: json["fileTypeId"], + createdDate: json["createdDate"] == null ? null : DateTime.parse(json["createdDate"]), + targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], + targetUserName: json["targetUserName"] == null ? null : json["targetUserName"], + fileTypeResponse: json["fileTypeResponse"] == null ? null : FileTypeResponse.fromJson(json["fileTypeResponse"]), + isImageLoaded: false, + image: null); Map toJson() => { "userChatHistoryId": userChatHistoryId == null ? null : userChatHistoryId, diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 8184d28..2d01e40 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -125,6 +125,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { userChatHistory, receiverUID, ); + generateConvId(); } @@ -177,16 +178,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { try { StreamedResponse response = await ChatApiClient().uploadMedia(userId, file); if (response.statusCode == 200) { - result = jsonDecode( - await response.stream.bytesToString(), - ); + result = jsonDecode(await response.stream.bytesToString()); } else { result = []; } } catch (e) { - print(e); + throw e; } - ; + return result; } @@ -292,6 +291,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { data.first.targetUserName = temp.first.currentUserName; data.first.currentUserId = temp.first.targetUserId; data.first.currentUserName = temp.first.targetUserName; + if (data.first.fileTypeId == 12 || data.first.fileTypeId == 4 || data.first.fileTypeId == 3) { + data.first.image = await ChatApiClient().downloadURL(fileName: data.first.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription); + } + if (data.first.userChatReplyResponse != null) { + if (data.first.userChatReplyResponse!.fileTypeId == 12 || data.first.userChatReplyResponse!.fileTypeId == 4 || data.first.userChatReplyResponse!.fileTypeId == 3) { + data.first.userChatReplyResponse!.image = await ChatApiClient().downloadURL(fileName: data.first.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription); + data.first.userChatReplyResponse!.isImageLoaded = true; + } + } } userChatHistory.insert(0, data.first); var list = [ @@ -389,7 +397,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future sendChatToServer( - {required int chatEventId, required fileTypeId, required int targetUserId, required String targetUserName, required chatReplyId, required bool isAttachment, required bool isReply}) async { + {required int chatEventId, + required fileTypeId, + required int targetUserId, + required String targetUserName, + required chatReplyId, + required bool isAttachment, + required bool isReply, + Uint8List? image, + required bool isImageLoaded}) async { Uuid uuid = const Uuid(); var msg = message.text; @@ -416,6 +432,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { fileTypeDescription: getFileTypeDescription(getFileExtension(selectedFile.path).toString()), ) : null, + image: image, + isImageLoaded: isImageLoaded, ); userChatHistory.insert(0, data); isFileSelected = false; @@ -433,47 +451,68 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { searchedChats!.add( - ChatUser( - id: targetUserId, - userName: targetUserName, - ), + ChatUser(id: targetUserId, userName: targetUserName, unreadMessageCount: 0), ); notifyListeners(); } if (!isFileSelected && !isMsgReply) { + print("Normal Text Msg"); if (message.text == null || message.text.isEmpty) { return; } - sendChatToServer(chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: false, chatReplyId: null, isReply: false); - } + sendChatToServer( + chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: false, chatReplyId: null, isReply: false, isImageLoaded: false, image: null); + } // normal Text msg if (isFileSelected && !isMsgReply) { + print("Normal Attachment Msg"); Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); + logger.d(value); String? ext = getFileExtension(selectedFile.path); Utils.hideLoading(context); - sendChatToServer(chatEventId: 2, fileTypeId: getFileType(ext.toString()), targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: true, chatReplyId: null, isReply: false); - } + sendChatToServer( + chatEventId: 2, + fileTypeId: getFileType(ext.toString()), + targetUserId: targetUserId, + targetUserName: targetUserName, + isAttachment: true, + chatReplyId: null, + isReply: false, + isImageLoaded: true, + image: selectedFile.readAsBytesSync()); + } // normal attachemnt msg if (!isFileSelected && isMsgReply) { + print("Normal Text To Text Reply"); if (message.text == null || message.text.isEmpty) { return; } sendChatToServer( - chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, chatReplyId: repliedMsg.first.userChatHistoryId, isAttachment: false, isReply: true); - } + chatEventId: 1, + fileTypeId: null, + targetUserId: targetUserId, + targetUserName: targetUserName, + chatReplyId: repliedMsg.first.userChatHistoryId, + isAttachment: false, + isReply: true, + isImageLoaded: repliedMsg.first.isImageLoaded!, + image: repliedMsg.first.image); + } // reply msg over image && normal if (isFileSelected && isMsgReply) { + print("Reply With File"); Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); Utils.hideLoading(context); sendChatToServer( - chatEventId: 2, - fileTypeId: getFileType(ext.toString()), - targetUserId: targetUserId, - targetUserName: targetUserName, - isAttachment: true, - chatReplyId: repliedMsg.first.userChatHistoryId, - isReply: true, - ); + chatEventId: 2, + fileTypeId: getFileType(ext.toString()), + targetUserId: targetUserId, + targetUserName: targetUserName, + isAttachment: true, + chatReplyId: repliedMsg.first.userChatHistoryId, + isReply: true, + isImageLoaded: true, + image: selectedFile.readAsBytesSync()); } } @@ -652,10 +691,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); } - // Future getDownLoadFile(String fileName) async { - // var data = await ChatApiClient().downloadURL(fileName: "data"); - // Image.memory(data); - // } +// Future getDownLoadFile(String fileName) async { +// var data = await ChatApiClient().downloadURL(fileName: "data"); +// Image.memory(data); +// } // void getUserChatHistoryNotDeliveredAsync({required int userId}) async { // try { @@ -665,12 +704,4 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // } // } - - - - - - - - } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 8382585..e69e683 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -3,161 +3,44 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; // todo: @aamir use extension methods, and use correct widgets. class ChatBubble extends StatelessWidget { - const ChatBubble( - {Key? key, - required this.text, - required this.replyText, - required this.isCurrentUser, - required this.isSeen, - required this.isDelivered, - required this.dateTime, - required this.isReplied, - required this.userName, - this.fileTypeID, - this.fileTypeDescription}) - : super(key: key); - final String text; - final String replyText; - final bool isCurrentUser; - final bool isSeen; - final bool isDelivered; + ChatBubble({Key? key, required this.dateTime, required this.cItem}) : super(key: key); final String dateTime; - final bool isReplied; - final String userName; - final int? fileTypeID; - final String? fileTypeDescription; + final SingleUserChatModel cItem; + + bool isCurrentUser = false; + bool isSeen = false; + bool isReplied = false; + int? fileTypeID; + + String? fileTypeDescription; + bool isDelivered = false; + String userName = ''; + + void makeAssign() { + isCurrentUser = cItem.currentUserId == AppState().chatDetails!.response!.id ? true : false; + isSeen = cItem.isSeen == true ? true : false; + isReplied = cItem.userChatReplyResponse != null ? true : false; + fileTypeID = cItem.fileTypeId; + fileTypeDescription = cItem.fileTypeResponse != null ? cItem.fileTypeResponse!.fileTypeDescription : ""; + isDelivered = cItem.currentUserId == AppState().chatDetails!.response!.id && cItem.isDelivered == true ? true : false; + userName = AppState().chatDetails!.response!.userName == cItem.currentUserName.toString() ? "You" : cItem.currentUserName.toString(); + } @override Widget build(BuildContext context) { + makeAssign(); return isCurrentUser ? currentUser(context) : receiptUser(context); - - return Padding( - // padding: EdgeInsets.zero, - padding: EdgeInsets.only( - left: isCurrentUser ? 110 : 20, - right: isCurrentUser ? 20 : 110, - bottom: 9, - ), - - child: Align( - alignment: isCurrentUser ? Alignment.centerRight : Alignment.centerLeft, - child: DecoratedBox( - decoration: BoxDecoration( - color: MyColors.white, - gradient: isCurrentUser - ? null - : const LinearGradient( - transform: GradientRotation( - .46, - ), - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, - ], - ), - borderRadius: BorderRadius.circular( - 10, - ), - ), - child: Padding( - padding: EdgeInsets.only( - top: isReplied ? 8 : 5, - right: 8, - left: 8, - bottom: 5, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - if (isReplied) - ClipRRect( - borderRadius: BorderRadius.circular( - 5.0, - ), - child: Container( - decoration: BoxDecoration( - border: Border( - left: BorderSide( - width: 6, - color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white, - ), - ), - color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), - ), - child: Row( - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (userName) - .toText12( - color: MyColors.gradiantStartColor, - isBold: false, - ) - .paddingOnly( - right: 5, - top: 5, - bottom: 0, - left: 5, - ), - replyText - .toText10( - color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), - isBold: false, - maxlines: 4, - ) - .paddingOnly( - right: 5, - top: 5, - bottom: 8, - left: 5, - ), - ], - ), - ), - ], - ), - ), - ), - if (isReplied) 8.height, - text.toText12( - color: isCurrentUser ? MyColors.grey57Color : MyColors.white, - ), - Row( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: MainAxisAlignment.end, - children: [ - dateTime.toText12( - color: isCurrentUser ? MyColors.grey41Color.withOpacity(.5) : MyColors.white.withOpacity(0.7), - ), - if (isCurrentUser) 5.width, - if (isCurrentUser) - Icon( - isDelivered ? Icons.done_all : Icons.done_all, - color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor, - size: 14, - ), - ], - ), - ], - ), - ), - ), - ), - ); } Widget currentUser(context) { @@ -166,9 +49,7 @@ class ChatBubble extends StatelessWidget { children: [ if (isReplied) ClipRRect( - borderRadius: BorderRadius.circular( - 5.0, - ), + borderRadius: BorderRadius.circular(5.0), child: Container( width: double.infinity, decoration: BoxDecoration( @@ -177,29 +58,47 @@ class ChatBubble extends StatelessWidget { ), color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (userName).toText12(color: MyColors.gradiantStartColor, isBold: false).paddingOnly(right: 5, top: 5, bottom: 0, left: 5), - replyText.toText10(color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), isBold: false, maxlines: 4).paddingOnly(right: 5, top: 5, bottom: 8, left: 5), + child: Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (userName).toText12(color: MyColors.gradiantStartColor, isBold: false).paddingOnly(right: 5, top: 5, bottom: 0, left: 5), + (cItem.userChatReplyResponse != null ? cItem.userChatReplyResponse!.contant.toString() : "") + .toText10(color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), isBold: false, maxlines: 4) + .paddingOnly(right: 5, top: 5, bottom: 8, left: 5), + ], + ).expanded, + if (cItem.userChatReplyResponse != null && cItem.userChatReplyResponse!.fileTypeId == 12 || + cItem.userChatReplyResponse!.fileTypeId == 3 || + cItem.userChatReplyResponse!.fileTypeId == 4) + ClipRRect( + borderRadius: BorderRadius.circular( + 8, + ), + child: showImage( + isReplyPreview: true, + fileName: cItem.userChatReplyResponse!.contant!, + fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg") + .paddingOnly(left: 10, right: 10, bottom: 16, top: 16), + ) ], - ).expanded, + ), ), ).paddingOnly(right: 5, bottom: 7), - if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) showImage().paddingOnly(right: 5), - if (fileTypeID != 12 || fileTypeID != 4 || fileTypeID != 3) (text).toText12(), + if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) + showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).paddingOnly(right: 5), + cItem.contant!.toText12(), Align( alignment: Alignment.centerRight, child: Row( mainAxisSize: MainAxisSize.min, children: [ - dateTime.toText10(color: MyColors.grey41Color.withOpacity(.5)), - 7.width, - Icon( - isDelivered ? Icons.done_all : Icons.done_all, - color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor, - size: 14, + dateTime.toText10( + color: MyColors.grey41Color.withOpacity(.5), ), + 7.width, + Icon(isDelivered ? Icons.done_all : Icons.done_all, color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor, size: 14), ], ), ), @@ -227,27 +126,43 @@ class ChatBubble extends StatelessWidget { children: [ if (isReplied) ClipRRect( - borderRadius: BorderRadius.circular( - 5.0, - ), + borderRadius: BorderRadius.circular(5.0), child: Container( width: double.infinity, decoration: BoxDecoration( - border: Border( - left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), - ), + border: Border(left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white)), color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (userName).toText12(color: MyColors.gradiantStartColor, isBold: false).paddingOnly(right: 5, top: 5, bottom: 0, left: 5), - replyText.toText10(color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), isBold: false, maxlines: 4).paddingOnly(right: 5, top: 5, bottom: 8, left: 5), + child: Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (userName).toText12(color: MyColors.gradiantStartColor, isBold: false).paddingOnly(right: 5, top: 5, bottom: 0, left: 5), + (cItem.userChatReplyResponse != null ? cItem.userChatReplyResponse!.contant.toString() : "") + .toText10(color: isCurrentUser ? MyColors.grey71Color : MyColors.white.withOpacity(0.5), isBold: false, maxlines: 4) + .paddingOnly(right: 5, top: 5, bottom: 8, left: 5), + ], + ).expanded, + if (cItem.userChatReplyResponse != null && cItem.userChatReplyResponse!.fileTypeId == 12 || + cItem.userChatReplyResponse!.fileTypeId == 3 || + cItem.userChatReplyResponse!.fileTypeId == 4) + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: showImage( + isReplyPreview: true, + fileName: cItem.userChatReplyResponse!.contant!, + fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg") + .paddingOnly(left: 10, right: 10, bottom: 16, top: 16), + ) ], - ).expanded, + ), ), ).paddingOnly(right: 5, bottom: 7), - if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) showImage().paddingOnly(right: 5) else (text).toText12(color: Colors.white), + if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) + showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).paddingOnly(right: 5) + else + (cItem.contant! ?? "").toText12(color: Colors.white), Align( alignment: Alignment.centerRight, child: dateTime.toText10( @@ -259,25 +174,41 @@ class ChatBubble extends StatelessWidget { ).paddingOnly(right: MediaQuery.of(context).size.width * 0.3); } - Widget showImage() { - return FutureBuilder( - future: ChatApiClient().downloadURL(fileName: text, fileTypeDescription: fileTypeDescription!), - builder: (BuildContext context, AsyncSnapshot snapshot) { - if (snapshot.connectionState != ConnectionState.waiting) { - if (snapshot.data == null) { - return (text).toText12(color: Colors.white); + Widget showImage({required bool isReplyPreview, required String fileName, required String fileTypeDescription}) { + if (cItem.isImageLoaded! && cItem.image != null) { + return Image.memory( + cItem.image!, + height: isReplyPreview ? 32 : 140, + width: isReplyPreview ? 32 : 227, + fit: BoxFit.cover, + ); + } else { + return FutureBuilder( + future: ChatApiClient().downloadURL(fileName: fileName, fileTypeDescription: fileTypeDescription), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState != ConnectionState.waiting) { + if (snapshot.data == null) { + return (cItem.contant.toString()).toText12(); + } else { + //data = image; + cItem.image = snapshot.data; + cItem.isImageLoaded = true; + return Image.memory( + snapshot.data, + height: isReplyPreview ? 32 : 140, + width: isReplyPreview ? 32 : 227, + fit: BoxFit.cover, + ); + } } else { - return Image.memory( - snapshot.data, - height: 140, - width: 227, - fit: BoxFit.cover, + return SizedBox( + height: isReplyPreview ? 32 : 140, + width: isReplyPreview ? 32 : 227, + child: const Center(child: CircularProgressIndicator()), ); } - } else { - return const SizedBox(height: 140, width: 227, child: Center(child: CircularProgressIndicator())); - } - }, - ); + }, + ); + } } } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 4dc7c35..643cc19 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -12,6 +12,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/call.dart'; +import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; @@ -115,16 +116,8 @@ class _ChatDetailScreenState extends State { return SwipeTo( iconColor: MyColors.lightGreenColor, child: ChatBubble( - text: m.userChatHistory[i].contant.toString(), - replyText: m.userChatHistory[i].userChatReplyResponse != null ? m.userChatHistory[i].userChatReplyResponse!.contant.toString() : "", - isSeen: m.userChatHistory[i].isSeen == true ? true : false, - isCurrentUser: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id ? true : false, - isDelivered: m.userChatHistory[i].currentUserId == AppState().chatDetails!.response!.id && m.userChatHistory[i].isDelivered == true ? true : false, dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), - isReplied: m.userChatHistory[i].userChatReplyResponse != null ? true : false, - userName: AppState().chatDetails!.response!.userName == m.userChatHistory[i].currentUserName.toString() ? "You" : m.userChatHistory[i].currentUserName.toString(), - fileTypeID: m.userChatHistory[i].fileTypeId, - fileTypeDescription: m.userChatHistory[i].fileTypeResponse!.fileTypeDescription, + cItem: m.userChatHistory[i], ), onRightSwipe: () { m.chatReply( @@ -159,6 +152,8 @@ class _ChatDetailScreenState extends State { ], ).expanded, 12.width, + if (m.isMsgReply && m.repliedMsg.isNotEmpty) showReplyImage(m.repliedMsg), + 12.width, const Icon(Icons.cancel, size: 23, color: MyColors.grey7BColor).onPress(m.closeMe), ], ), @@ -224,6 +219,22 @@ class _ChatDetailScreenState extends State { ); } + Widget showReplyImage(List data) { + if (data.first.isImageLoaded! && data.first.image != null) { + return ClipRRect( + borderRadius: BorderRadius.circular(10.0), + child: Image.memory( + data.first.image!, + height: 43, + width: 43, + fit: BoxFit.cover, + ), + ); + } else { + return const SizedBox(); + } + } + void makeCall({required String callType, required HubConnection con}) async { print("================== Make call Triggered ============================"); Map json = { From 7d651c247af652d992bee0794f038ace133e76e5 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 29 Nov 2022 15:47:32 +0300 Subject: [PATCH 136/302] marathon improvements. --- lib/classes/consts.dart | 4 +- lib/extensions/string_extensions.dart | 7 +- lib/ui/landing/dashboard_screen.dart | 2 +- lib/ui/marathon/marathon_intro_screen.dart | 151 ++++++------------ lib/ui/marathon/marathon_provider.dart | 2 +- lib/ui/marathon/marathon_screen.dart | 69 ++++---- .../marathon/marathon_winner_selection.dart | 26 +-- lib/ui/marathon/widgets/countdown_timer.dart | 2 + lib/ui/marathon/widgets/marathon_banner.dart | 3 +- lib/ui/marathon/widgets/question_card.dart | 81 ++++------ pubspec.yaml | 4 - 11 files changed, 151 insertions(+), 200 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 4d6eca8..46e9f8e 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 8bc15e7..3546f6b 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -136,7 +136,7 @@ extension EmailValidator on String { Widget toText21({Color? color, bool isBold = false, FontWeight? weight, int? maxlines}) => Text( this, maxLines: maxlines, - style: TextStyle(color: color ?? MyColors.grey3AColor, fontSize: 21, letterSpacing: -0.31, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.w600)), + style: TextStyle(color: color ?? MyColors.grey3AColor, fontSize: 21, letterSpacing: -0.84, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.w600)), ); Widget toText22({Color? color, bool isBold = false}) => Text( @@ -149,6 +149,11 @@ extension EmailValidator on String { style: TextStyle(height: 23 / 24, color: color ?? MyColors.darkTextColor, fontSize: 24, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), ); + Widget toText30({Color? color, bool isBold = false}) => Text( + this, + style: TextStyle(height: 20 / 32, color: color ?? MyColors.darkTextColor, fontSize: 32, letterSpacing: -1.2, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), + ); + Widget toText32({Color? color, bool isBold = false}) => Text( this, style: TextStyle(height: 32 / 32, color: color ?? MyColors.darkTextColor, fontSize: 32, letterSpacing: -1.92, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index c8cdcef..d715337 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -313,7 +313,7 @@ class _DashboardScreenState extends State { ), ], ).paddingOnly(left: 21, right: 21, top: 7), - const MarathonBanner().paddingAll(20), + const MarathonBanner().paddingAll(21), ServicesWidget(), // 8.height, Container( diff --git a/lib/ui/marathon/marathon_intro_screen.dart b/lib/ui/marathon/marathon_intro_screen.dart index f836229..a6ec296 100644 --- a/lib/ui/marathon/marathon_intro_screen.dart +++ b/lib/ui/marathon/marathon_intro_screen.dart @@ -25,26 +25,18 @@ class MarathonIntroScreen extends StatelessWidget { MarathonProvider provider = context.watch(); return Scaffold( appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), - body: Stack( + body: Column( children: [ - SingleChildScrollView( - child: Column( - children: [ - MarathonDetailsCard(provider: provider).paddingAll(15), - MarathonTimerCard( - provider: provider, - timeToMarathon: dummyEndTime, - ).paddingOnly(left: 15, right: 15, bottom: 15), - const SizedBox( - height: 100, - ), - ], - ), - ), - Align( - alignment: Alignment.bottomCenter, - child: MarathonFooter(provider: provider), - ), + ListView( + padding: const EdgeInsets.all(21), + children: [ + MarathonDetailsCard(provider: provider), + 10.height, + MarathonTimerCard(provider: provider, timeToMarathon: dummyEndTime), + ], + ).expanded, + 1.divider, + MarathonFooter(provider: provider), ], ), ); @@ -61,52 +53,41 @@ class MarathonDetailsCard extends StatelessWidget { return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 14), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.contestTopicAbout.tr().toText16(color: MyColors.grey77Color), - "Saudi Arabia".toText20(color: MyColors.textMixColor, isBold: true), - Row( - children: [ - Flexible( - child: "Nam suscipit turpis in pharetra euismsdef. Duis rutrum at nulla id aliquam".toText14(color: MyColors.grey77Color), - ) - ], - ), - if (provider.itsMarathonTime) ...[ - 5.height, - Row( - children: [ - LocaleKeys.prize.tr().toText16(color: MyColors.grey77Color, isBold: true), - " LED 55\" Android TV".toText16(color: MyColors.greenColor, isBold: true), - ], - ), - Row( - children: [ - LocaleKeys.sponsoredBy.tr().toText16(color: MyColors.grey77Color), - " Extra".toText16(color: MyColors.darkTextColor, isBold: true), - ], - ), - 10.height, - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - "assets/images/logos/main_mohemm_logo.png", - height: 40, - fit: BoxFit.fill, - width: 150, - ) - ], - ), - ] - ], - ), + LocaleKeys.contestTopicAbout.tr().toText16(color: MyColors.grey57Color), + "Saudi Arabia".toText20(color: MyColors.textMixColor), + "Nam suscipit turpis in pharetra euismsdef. Duis rutrum at nulla id aliquam".toText14(color: MyColors.grey57Color, weight: FontWeight.w500), + if (provider.itsMarathonTime) ...[ + 5.height, + Row( + children: [ + LocaleKeys.prize.tr().toText16(color: MyColors.grey57Color), + " LED 55\" Android TV".toText16(color: MyColors.greenColor, isBold: true), + ], + ), + Row( + children: [ + LocaleKeys.sponsoredBy.tr().toText16(color: MyColors.grey57Color), + " Extra".toText16(color: MyColors.darkTextColor), + ], + ), + 10.height, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + "assets/images/logos/main_mohemm_logo.png", + height: 40, + fit: BoxFit.fill, + width: 150, + ) + ], + ), + ] ], ), ); @@ -128,30 +109,23 @@ class MarathonTimerCard extends StatelessWidget { return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 14), child: Column( children: [ Row( children: [ - LocaleKeys.gameDate.tr().toText16(color: MyColors.grey77Color), - " 10 Oct, 2022".toText16(color: MyColors.darkTextColor, isBold: true), + LocaleKeys.gameDate.tr().toText16(color: MyColors.grey57Color), + " 10 Oct, 2022".toText16(color: MyColors.darkTextColor), ], ), Row( children: [ - LocaleKeys.gameTime.tr().toText16(color: MyColors.grey77Color), - " 3:00pm".toText16(color: MyColors.darkTextColor, isBold: true), + LocaleKeys.gameTime.tr().toText16(color: MyColors.grey57Color), + " 3:00 pm".toText16(color: MyColors.darkTextColor), ], ), - Lottie.asset( - MyLottieConsts.hourGlassLottie, - height: 200, - ), - BuildCountdownTimer( - timeToMarathon: timeToMarathon, - provider: provider, - screenFlag: 1, - ), + Lottie.asset(MyLottieConsts.hourGlassLottie, height: 200), + BuildCountdownTimer(timeToMarathon: timeToMarathon, provider: provider, screenFlag: 1), ], ), ); @@ -172,38 +146,19 @@ class MarathonFooter extends StatelessWidget { children: [ TextSpan( text: LocaleKeys.note.tr(), - style: const TextStyle( - color: MyColors.darkTextColor, - fontSize: 17, - letterSpacing: -0.64, - fontWeight: FontWeight.bold, - ), + style: const TextStyle(color: MyColors.darkTextColor, fontSize: 17, letterSpacing: -0.64, fontWeight: FontWeight.bold), ), TextSpan( text: " " + LocaleKeys.demoMarathonNoteP1.tr(), - style: const TextStyle( - color: MyColors.grey77Color, - fontSize: 17, - letterSpacing: -0.64, - fontWeight: FontWeight.w500, - ), + style: const TextStyle(color: MyColors.grey77Color, fontSize: 17, letterSpacing: -0.64, fontWeight: FontWeight.w500), ), TextSpan( text: " " + LocaleKeys.demoMarathonNoteP2.tr(), - style: const TextStyle( - color: MyColors.darkTextColor, - fontSize: 17, - fontWeight: FontWeight.bold, - ), + style: const TextStyle(color: MyColors.darkTextColor, fontSize: 17, fontWeight: FontWeight.bold), ), TextSpan( text: " " + LocaleKeys.demoMarathonNoteP3.tr(), - style: const TextStyle( - color: MyColors.grey77Color, - fontSize: 17, - letterSpacing: -0.64, - fontWeight: FontWeight.w500, - ), + style: const TextStyle(color: MyColors.grey77Color, fontSize: 17, letterSpacing: -0.64, fontWeight: FontWeight.w500), ) ], ), diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 5a03b74..46fa74d 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -60,7 +60,7 @@ class MarathonProvider extends ChangeNotifier { oneSec, (Timer timer) async { if (start == 0) { - if (currentQuestionNumber == 9) { + if (currentQuestionNumber == totalQuestions) { timer.cancel(); cancelTimer(); isMarathonCompleted = true; diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index a02733f..5f3e0d8 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -16,8 +16,6 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart' import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; -import 'package:sizer/sizer.dart'; -import 'package:steps_indicator/steps_indicator.dart'; class MarathonScreen extends StatelessWidget { const MarathonScreen({Key? key}) : super(key: key); @@ -100,7 +98,7 @@ class _MarathonProgressContainerState extends State { return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.all(21), + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 13), child: Column( mainAxisSize: MainAxisSize.min, children: [ @@ -108,10 +106,7 @@ class _MarathonProgressContainerState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( - decoration: BoxDecoration( - color: MyColors.greenColor, - borderRadius: BorderRadius.circular(5), - ), + decoration: BoxDecoration(color: MyColors.greenColor, borderRadius: BorderRadius.circular(5)), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.totalQuestions.toString()} ${LocaleKeys.question.tr()}".toText12(color: MyColors.white), ), @@ -119,36 +114,50 @@ class _MarathonProgressContainerState extends State { "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(), ], ), - 15.height, - StepsIndicator( - lineLength: SizerUtil.deviceType == DeviceType.tablet ? MediaQuery.of(context).size.width * 0.077 : MediaQuery.of(context).size.width * 0.054, - nbSteps: 10, - selectedStep: widget.provider.currentQuestionNumber, - doneLineColor: MyColors.greenColor, - doneStepColor: MyColors.greenColor, - doneLineThickness: 6, - undoneLineThickness: 6, - selectedStepSize: 10, - unselectedStepSize: 10, - doneStepSize: 10, - selectedStepBorderSize: 0, - unselectedStepBorderSize: 0, - selectedStepColorIn: MyColors.greenColor, - selectedStepColorOut: MyColors.greenColor, - unselectedStepColorIn: MyColors.lightGreyDeColor, - unselectedStepColorOut: MyColors.lightGreyDeColor, - undoneLineColor: MyColors.lightGreyDeColor, - enableLineAnimation: false, - enableStepAnimation: false, - ), 12.height, + stepper(widget.provider.currentQuestionNumber), + 8.height, Row( children: [ - "${widget.provider.currentQuestionNumber * 10}% ${LocaleKeys.completed.tr()}".toText14(isBold: true), + "${widget.provider.currentQuestionNumber * 10}% ${LocaleKeys.completed.tr()}".toText14(), ], ), ], ), ); } + + Widget stepper(int value) { + return SizedBox( + width: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + for (int i = 0; i < 10; i++) + if (value <= i) roundContainer(MyColors.lightGreyDeColor, i != 0) else roundContainer(MyColors.greenColor, i != 0) + ], + ), + ); + } + + Widget roundContainer(Color color, bool isNeedLeftBorder) { + if (isNeedLeftBorder) { + return Row( + children: [ + Divider(thickness: 6, color: color).expanded, + Container( + width: 10, + height: 10, + decoration: BoxDecoration(shape: BoxShape.circle, color: color), + ), + ], + ).expanded; + } + + return Container( + width: 10, + height: 10, + decoration: BoxDecoration(shape: BoxShape.circle, color: color), + ); + } } diff --git a/lib/ui/marathon/marathon_winner_selection.dart b/lib/ui/marathon/marathon_winner_selection.dart index 8462ab4..a5f4e8a 100644 --- a/lib/ui/marathon/marathon_winner_selection.dart +++ b/lib/ui/marathon/marathon_winner_selection.dart @@ -29,7 +29,7 @@ class MarathonWinnerSelection extends StatelessWidget { children: [ 20.height, QualifiersContainer(provider: provider).paddingOnly(left: 21, right: 21), - 20.height, + 12.height, InkWell( onTap: () { Navigator.pushNamed(context, AppRoutes.marathonWinnerScreen); @@ -52,8 +52,8 @@ class MarathonWinnerSelection extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Muhammad Shrouff".toText18(isBold: true, color: MyColors.white), - "837436".toText18(isBold: true, color: MyColors.white), + "Muhammad Shrouff".toText17(isBold: true, color: MyColors.white), + "837436".toText17(isBold: true, color: MyColors.white), ], ), ), @@ -67,10 +67,10 @@ class MarathonWinnerSelection extends StatelessWidget { title: Text( LocaleKeys.fingersCrossed.tr(), style: const TextStyle( - height: 23 / 24, + height: 27 / 27, color: MyColors.greenColor, fontSize: 27, - letterSpacing: -1, + letterSpacing: -1.08, fontWeight: FontWeight.w600, ), ), @@ -78,9 +78,9 @@ class MarathonWinnerSelection extends StatelessWidget { LocaleKeys.winnerSelectedRandomly.tr(), textAlign: TextAlign.center, style: const TextStyle( - color: MyColors.grey77Color, - fontSize: 16, - letterSpacing: -0.64, + color: MyColors.darkTextColor, + fontSize: 18, + letterSpacing: -0.72, fontWeight: FontWeight.w600, ), )).paddingOnly(left: 21, right: 21, top: 20, bottom: 20), @@ -124,22 +124,22 @@ class _QualifiersContainerState extends State { return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 20), + padding: const EdgeInsets.only(top: 14,left: 18,right: 14,bottom: 18), child: Column( mainAxisSize: MainAxisSize.min, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.winnerSelection.tr().toText18(isBold: true, color: MyColors.grey3AColor), - "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(isBold: true, color: MyColors.redColor), + LocaleKeys.winnerSelection.tr().toText21(color: MyColors.grey3AColor), + "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(color: MyColors.redColor), ], ), 10.height, Row( children: [ - "18 ".toText32(color: MyColors.greenColor), - LocaleKeys.qualifiers.tr().toText20(color: MyColors.greenColor), + "18".toText30(color: MyColors.greenColor, isBold: true),2.width, + LocaleKeys.qualifiers.tr().toText16(color: MyColors.greenColor), ], ), ], diff --git a/lib/ui/marathon/widgets/countdown_timer.dart b/lib/ui/marathon/widgets/countdown_timer.dart index 6ab8dba..bb8da6d 100644 --- a/lib/ui/marathon/widgets/countdown_timer.dart +++ b/lib/ui/marathon/widgets/countdown_timer.dart @@ -60,6 +60,7 @@ class BuildCountdownTimer extends StatelessWidget { children: [ Column( children: [ + // todo @faiz: Make a separate method and pass string , so we can minimize code replication AutoSizeText( "00", maxFontSize: 24, @@ -155,6 +156,7 @@ class BuildCountdownTimer extends StatelessWidget { children: [ Column( children: [ + // todo @faiz: Make a separate method and pass value and string , so we can minimize code replication time.days == null ? AutoSizeText( "00", diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 55ff715..e90f545 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -1,3 +1,5 @@ +import 'dart:math' as math; + import 'package:auto_size_text/auto_size_text.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -13,7 +15,6 @@ import 'package:mohem_flutter_app/ui/marathon/marathon_intro_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; import 'package:provider/provider.dart'; -import 'dart:math' as math; class MarathonBanner extends StatelessWidget { const MarathonBanner({Key? key}) : super(key: key); diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index a3fe720..56f1667 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -84,57 +84,39 @@ class CardContent extends StatelessWidget { @override Widget build(BuildContext context) { - return Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: CupertinoColors.white, - boxShadow: [ - BoxShadow( - color: CupertinoColors.systemGrey.withOpacity(0.2), - spreadRadius: 3, - blurRadius: 7, - offset: const Offset(0, 3), - ) - ], - ), - alignment: Alignment.center, - child: Column( - children: [ - Container( - height: 78, - width: double.infinity, - decoration: const BoxDecoration( - gradient: LinearGradient( - transform: GradientRotation(.83), - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, - ], - ), - borderRadius: BorderRadius.only( - topLeft: Radius.circular(10), - topRight: Radius.circular(10), - ), + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + height: 78, + width: double.infinity, + decoration: const BoxDecoration( + gradient: LinearGradient( + transform: GradientRotation(.83), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], ), - child: const Center( - child: Padding( - padding: EdgeInsets.symmetric(horizontal: 13), - child: Text( - "What is the capital of Saudi Arabia?", - style: TextStyle( - color: MyColors.white, - fontSize: 16, - fontWeight: FontWeight.w600, - ), - ), - ), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(10), + topRight: Radius.circular(10), ), ), - AnswerContent(question: question, provider: provider), - ], - ), + padding: const EdgeInsets.symmetric(horizontal: 13, vertical: 17), + child: Text( + "What is the capital of Saudi Arabia?", + style: TextStyle( + color: MyColors.white, + fontSize: 16, + fontWeight: FontWeight.w600, + ), + ), + ), + AnswerContent(question: question, provider: provider), + ], ); } } @@ -174,7 +156,7 @@ class _AnswerContentState extends State { @override Widget build(BuildContext context) { return Container( - padding: const EdgeInsets.all(13), + padding: const EdgeInsets.symmetric(vertical: 31, horizontal: 13), decoration: const BoxDecoration( color: MyColors.kWhiteColor, borderRadius: BorderRadius.only( @@ -187,6 +169,7 @@ class _AnswerContentState extends State { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ + // todo @faiz: Make a separate method and pass value and string , so we can minimize code duplication InkWell( onTap: () { if (widget.provider.currentQuestionNumber == 9) { diff --git a/pubspec.yaml b/pubspec.yaml index f5742bb..fdbdfc8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -79,14 +79,10 @@ dependencies: pull_to_refresh: ^2.0.0 # lottie json animations lottie: any -# Steps Progress - steps_indicator: ^1.3.0 # Marathon Card Swipe appinio_swiper: ^1.1.1 expandable: ^5.0.1 - - #Chat signalr_netcore: ^1.3.3 logging: ^1.0.1 From c57f6e5be3c8ee00ac0072817753afc1e579fe16 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 29 Nov 2022 16:09:22 +0300 Subject: [PATCH 137/302] Added QuestionsAnswer Statuses Handling --- assets/images/wrong_answer.gif | Bin 0 -> 1093634 bytes assets/langs/ar-SA.json | 6 +- assets/langs/en-US.json | 5 +- lib/api/marathon/marathon_api_client.dart | 9 +- lib/classes/lottie_consts.dart | 2 + lib/generated/locale_keys.g.dart | 3 + lib/models/marathon/question_model.dart | 4 +- lib/ui/marathon/marathon_provider.dart | 47 +++-- lib/ui/marathon/marathon_screen.dart | 128 ++++++++------ .../widgets/custom_status_widget.dart | 1 + lib/ui/marathon/widgets/marathon_banner.dart | 43 +++-- lib/ui/marathon/widgets/question_card.dart | 163 ++---------------- .../widgets/question_card_builder.dart | 51 ++++++ 13 files changed, 227 insertions(+), 235 deletions(-) create mode 100644 assets/images/wrong_answer.gif create mode 100644 lib/ui/marathon/widgets/question_card_builder.dart diff --git a/assets/images/wrong_answer.gif b/assets/images/wrong_answer.gif new file mode 100644 index 0000000000000000000000000000000000000000..44f1d389582e4aa0e6c29f318691fc2b57523ff6 GIT binary patch literal 1093634 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

|Y+9eb7 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%0D(p_ST#EpZM@2*F-&wY`*p3Hzicb8 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

kbrwXZSRbO znx^gm8v}5c6=ZxzO}-iuvrkto$Uv1>myBm>-zela%DWemFlfzyyma|Nob0{6iK4ejOUN@nfL04Tg#z*Sr)E~=Y2Z|G>FQLq=kpm0`o|Lb}+z5T_siey&nI*sl)!T!#k zf$A$=IWYh1CzlUVj(oQUm6FmVO==t!Gf&EV`@kplVk(NWB^8_MD)7Qohsg{XP82rpVW7dDH_@a#|h1?O5l;~ zYK0d(nK4No(WFLb`oLQ-A2@)5cY>IK*krgtaqADM*Ii9rF?8rT!C<Y=Au$#bQ~qN%c*-YtbWpAS-Ey);QirfAlOGQ#4%-@GyQ(ZQS3is;3||KN!L zGT^ZfFDD^8xA>^)vcBZlDXUEv{8*u9TEwt^WZ`iTQ_FfxSs0$+L>y zEV;}+1-8(=;$?+q?89{PfjBw&!fPs4ciye9NyY;Bho%yFXZeQt3*AyrPx(MS*rVwC z3qcfTjq@LIZJj3XE{5J}gD%d`%a(qBeRo9eW_+(uG@ZyW8tI1z;#|d^c84uxaTPnT ziOz@;hZt9l#cmn;G0ZfCFWB~^pV90ZqEZ}d1CZytrG(w{-N8bU=|im=?oSO~umtl? zTy5CQJ2G^lOTi-<{ccr4gOv3fT+N;{DkCixhW^T^?eaiDKcTU1e@}j*PpNe$=8;;x zB~5%D`%vS>-`(df8*9X2BX_+;a>e3A9^sDj0;bQK>bS|g zIE-8k%zd2B80dP;1vHhD5>F<%xCaHxnD41G6LxW@zSFp`F8DDMK9P{_$AwL`l}sO` zG3u3exa|>uywpef|$=C#C%=+n=e{{$V`n>P!Z0dZ( zQxY|%@D1C5=~x&Fb4;qf1dh)3!soa{3gk#dYYT8!)g|q@8V>0P9 zW@bVKqZY(JEDC%K3%y5Jlo-#WFV2DaSgQOr7cjF`LWxcz$I|h9OFQ<|C+`ym1N{&) zEHH#epDnG!%P@9I5@@8D3ut@hg%s&v%KB8eTniqgdsp`lbX()Rd}<+Is~TyLebU62 zh%&D=i7k(I3$Jw1djgg{&tgs(viV^@aO@4Y+gGl*c$`dJTf%lyyKB3$<<&2gZLk*Q z6yRce>3ZL&$pWU9D!I^p@<9TvJ4NxOqzfyf8pr!^a=xY*OK zD-eT-G(l3G=hs^8bc-eaA^}rfx%k{Ozi_0QQk`(4r~)lDVtd2~5_M9Rn&xkanDd^j ztzh?W%pK*Q9Ni-wo+~2smaOb}vVTkdSplR`(y$yeDuzx(Mp8%Iz;OvtPGZE(-c8Zm zSeMDg^Mw1Q#2t$Tu7L40qaA>)Iq^jekz3i`IE(lUg0c4?%6c3Ppc+X6L$DH^qiUq!K@RVtzKC)2yI>kQtn= zNJ4It(B4GFT_hUIpx63%E+x^YdC`mk6>|`p2D++EUw^Ym>Sksy7@zHat@wvHAWF9> zVas8Xza2`bH?gAwGEKIfKK_>alTVzLCwWEzzFom8zq&(z^&!zPNwLAkbvZS3r!?=$ zTdNtc`R`LMd}1%MQHJHly5^uOuL>+ZhDF-hQq3e~j$*>Tt*RK%Sb;4S<>eIaZ7h+u zOp$`*Sjl$)Wc$nu@A(pG0mcoLgpMO`<}?6jP5kyQ$$(?v>^hf$HNs`2TJay3$Nc%n z>BYSNEgDD;+d)%e(E%17uM|;OijmaW8C1Le8ZNGg%?a=iL~GX(0g(gfEp~k6C_K&i^w{${WxbRZnCFMjx{X(>Wb9AdWFmy?w%{Pu7hGYRF37 zNH;k{&9-C)wUhvFHjtH;fyck*-dSa!l{pK+TH?CI^>%jF*K)$~zESG!dWOKENdV2D zGJgq%_6Nw}j;}IyZv5y2Hh(?(dQyk~M|y;utl=?LlkBlGcxEcuAj(*=kQm^=Rq(2s zn$kcRk)b9EX?}N*ZNOO>E_eg$2umJZ+V<3aft>J@Xoe&9uUy#>kaq19nmRD!l=Rk{ zNF2LEU~ck=kvwSwiBr5^thWlU0c7KdiiOJ>O2&?RWW{`z;toK2D%r!I!uVru(?U|s zazVG#F}zOJQ}u)~`Q8MxY+tCfKOo{O&P;ogq!dJi*D)tv{1nKVljhCV(uF4p0fVFhQ!PtuWWp(V54=?mcA_gTw&Lv z=z1GgIR!`Thc@o^JGdB#f{uoQl{xBP0UehxfHfbLHqQ(T+lbjbS@Vck(L>ZN-;5O` zW#i7*Qtu={Yl*CvYGS0iADbkS-@WtD7!QA9LWW*gQtb3+Vd(0Ug?BmcLvq2y4DALB z*0N}OWuPs%?l6>h&5<@*;$rM4d-VCA$)Z@GiVnZm9N4gjy2dPzKl-Uo zpM=))1?w_h(k+@lcX1Hs1}_3~7gBL%)DpYC@JM|2dgr)@Q0(NHQKby}C6s8lu z>AwrC!tC}8^iRA_$mMFZeQ#|GG^m-Z>QNdVW*2&dJ})diW_m_+NaO*bXV=n~dkSA( zKVm6$?2v#-D6oPIDQL+{?wJmo4gmbqZX_%LqzsdSz$IqKMjQ0Yq!>w2mab)PtT%_g zCP)fEWH^O#*)Z;s4UJXwxP$z|z{4Te0K~fJumT8pVewOu65wUV+kJ9g0K{5N-I6FR@{XljB)h+ zKA^--`esXVd9&<9Gm&pyYC8XQLxFu(Wp_NEy#~x##*sG8GYi~a{BWSIZykABz$FDs zKU<)Zuvx5`zLBUxc47@n4)>Wp50Y9B56hwyZ2apc%IPY7Y?bBV8C&3yN!Hm$@dCFmq>kH?x@q2S_X%o%+l5LMD5uYu z99f4J=0wHlBcLsOEJHh`(w41T6@Hh%mS&pOMn(`jh*5wfo9so4nmzsXm5`BS!{%w_ zPsV4$pQqS-xu63KX=C&H4J%^b#g51+$(84bk@R^=TI zple#O+6AERB~Nq5P^4%5)0Qh1E#R_xVODjFOEEwJfB2X>YybnieD|G$C&T~Wb`(M6 z`xqvLkfnS))Mf0Hq1wz>U~he<)%E3G%|OM2?3C}B|23&$oyME@UjT;ycYra)Nh~k3 z7a{i(Zl6Nq>^9KtR;~1R!Dg%w>B>4!4Lf?D7<<*H{_FO4)9{)t12b9gT&HC)Vjp{? z(2|7ovS#hC{VgZh$o#Q+YtslU+n0^!NRoFVZnhsikS-qxfb(YA^Mg~9RN%&{1s12L^BgG?6OJ_S)WzD69uS z>p#kP&D|sxx2>9t(l^Sd&i5ab?Hf?Z!FRgkzw^hGkC4U&)Ht~0z>e~$kPIO$jfY~c z1`QUwUQ6w4&EFyR;-va6f%KGMz0g6Ozm?Z;I#zgH{7*Gy*JN!JTeBB-;cJ_v`LDiR z_gQ3;d+ir{E2{qKB_SIoas}!uOCQ}L+Aovj1%or90kTZ9o=TP+%8VJYi`$RB@JiP~ zjual74DC^e{SQF1qnj(Tr?N&|%h=;;N54ujaac~?L`9$qhejPvCfaX8VQe5^ed&Wb z<3OcUHBR@}5B~1%F$J`SbTKi$+AV8vDMR4EGAc<{?vh2+8<8TS*LlACQI;9J0&3l3 zT08n$5>n{HxhakTHN3H}b=bNNo7XJB#cxnrd+;Z+J6xS{Yw&x(FMcIQBL3W+^LEGY zsyx;5OpQ6KSTri+Ri<`TZ2YN#u~e$rZSTIi7E427*;_L;ZWno=i=E4_vniPxp~*TP zgW9-U0>yaJnk_#zuAOD4=fP!e$F98J-XHze%P3E6XB)k`w_*E;*cTaHZFa!NT0gvE zSHW&!W#0JTulum8DoU3o{fRS9M}Zmli_N5>dbELGbbz>*1~DTYNovM=)B&HCZ8eYN z`-;F;Ikt|6af2dzIoMb~fACTMtR9U^k8*rlxYX1j8-MkF6Y{is2X6Zog(G^1SysOb z?+0oI3>eu4l;3;x^G}Z={l>4@)=NBU9LCSE6@f0h!%}{f zps$xDNtx^ViVbR0lE+Z&o{P!-?oS5pWT{vi>(y}mrX>@zk{5~wzl9HK(KQu5dPWOP zXwnQDx?ce(vj#UNM_(3aYol`sC^G#!vAy2dApaJT_K#$k zuyS$m&FDa-DpLXPp^3NG=mn6Vi27evw?0Okocu@fFgGYO9aZ1!l&7nk8yjc+M{>Hh zefgmZImxlkT>h_N#_t5eWS9j|6IYmI8)aEB43uNsU={%ChX#7;Mu)+=R55KHHO9+X6tmG*{`-^oWFg+uHxwOh=(gfr%N8Y zQs7A$Sl2f1iFqG zF&n*T`PvfLDM2~Q0!z*eP{gZd4?sPFs|Mz#PMN*_0#Jt#LsQ-eL!ChIDV@aa&7tIg zak2K$c^2V8;awD~c)26E3~VmWy13SE0rI!;Y4BLg;^YE5pcTEzo&QR~wjt_H+Ls%B zK@flY6wk`WmjV1J1*d1^&Wb=SR~5IOCcvr!a$eQ{nP3hVTg9t)=#5i$hKWr%G4?B( z$Dr%}fl=&gdAj(u9f3NBCxM)$!_f66D=3eFK{2^*Ahial;24-eR!S>ZaMqC7{iSfL zd70X;t#jO9IQUfJ-UWAU_^iiHey~^VgK>QQ0<&RR$)N>|2H(KAf=%=leat zBmL~06OSA_?6_L{sJnw10u=@E>af?7va~lKKwhn3)MbR0BB!)f%m|)~SECg>lI=kg ztRBDC&H=X8v5pRKOWF%~@Xk|9rf5`qdui^x`J&-vSDdPP(Xw^>VW*hZVzXFD8OkWEIbfJgMwN~&#C3RaUwwO;!l3A~hl8@DzV@Kvk*jZwvy%XXA%eE~SSwu66E zei5NLZu3ZKU7AVcJ?F1v{$~{?li%Txaf>XhyP@_PW#aJQg}fZuc?6wIxk01d%C|Qq zRJ$gs*d*K7QQM_5@z>RLQO&`7QF&Km+wxfEv-!6K(Utx$^R-{EC%wD!hBL{#{O^BN zmUhF|4^SFSHFWD!6Z0eLS1<06^f1jA@00%R7R@xy|)gY;PfywkdJ^jb5oq z^EHJ2sto&ilJl(Z5Dgg2@DEPTvSt@QK%Rz1a6!~*bd(^v=(u&DKC!cOFiAK%ctfc~ zSXIma&6b|Aaf4!`JGw*%-(I45hh?bNhK^c1q}6m;R!nzlk9|n~Q5&z~QdbR2S$1=6 zRC-nng($RE=dmnD$T>6?yDgrF!YLB8QKS7B+o+vVKZX(ak=x52*-kzFjL3iy77& z_PG;;u9nD*;8FAbl^2*R;w2_{Pe=hcJuWN#gg$5- zlIV#u8TXYcj%=L}QzL;@7<>YupqlFPKIakfWLANvLUYY=ZZfvV7y7Qu)(_|J-*zkq8Hn zihrzNj7N1!hM$>!7DjRlxFNo_bnBDgKFXOD;2&CvRA5$0Fq`GD9woyg?fs8x^=fTx z-|+gl_`!>)gAy%wc{H4U!ptgt#X1?h8gA_cKp!M>6P0#aTFw$yDjoTS-y9p?29Kc6 zNw&_Bq-a0g&gFF!K2aMU@gPby$WQV;q1zl}Rl;nyHqYm=w!1h8>9`*NsSBJ|23`VMPf~bySF6PI1*t^9l=dd&a_Vp)5TG{^0yKXUZ|?YpbJrcs6jQb z`FDPSSMRv}*QQ>&Ec?qRBBgP?%w^bR^&F4pU7@%VusXVyzpmj0s?PVh9+FOsN#IIs z`X9e~MjMaA&T3n0Z<_yw67Q2`T^<=yd~ zC>1=HCGA^jjx<+rDNtV75RZm!GzuTUdHF?!Cp%_t# zM(#t}9Y6gvMXX4Pd^&dm^V|nSto_R4qLBwrLd5?c2*Fhw@15K?KlGIqfT#t1_DoP1KQoM7zS)YgJik z`kU$}@ZQF(si`5EnrVc-Zg=%W_XFOvx*%&cKjCM~=&1Z@exkV8G)!JVzEsEruQzb) z>)Bqctk1M(jV_5*y=)K`-umi4c;kzuS+A{b{?qj&Lz=nS$+pA|_iwM>;*Ojob=WTn zl$sPDGx=I?U{Krmk3Aeuhnu)47cXz=pqS!~3h0d$esdm@OnU=JW3&I$ZUUFs!ZNt| z`E>CWr5)qUAH(H-JUlmFichL4G-|Mt`XcD^LW_G3Q_Hv^;wHJeISj8F?RIM7_f^Vw^LB=>P{FBDguWoCtu@t5p1=4f@ox ztU~=H-H)taul@V+!KhopYWkatX@5ncpg~85qj|~Kle021+qzM9bw}?Wil~NC8%2#1 zua}uuWL`4#J7doCTeF+(IJ=hg3eXQ$@OZd$IlL9sIEe6zxMD`oJ2#*jU+J&H872Gx z`Lh7kKtqeo@T0Wi)_$U%kzp^U1Uh$d)GCoy4!DfJI2Gi)ObZa$uuzGTyNl#qWhVS; zO}OyTxYCE`HX6}3fCA@BXxLMZbk0AbVILaO<>Fpt<)^;!OIKUNhc~u1T4;)a|{T@ltwrjhmKJH%+^%rlY3RN7W`m3w*NRgWP z?fvw4H-z2vI8(>fcqh?t+hW(AT1ZFCHJJMj>sEt3-A#JI4e^rG zda|0J(~YQ~_n7jBO9oy$TTB^Nld0c;)XDJKXaqy2Vb%wTE0{Po4S_ShNczPOXj6SS z#M?zdTzVDUpys^o&0D`_@M-U=fevqrF?@>8`(l^CjY{M!NV4UD^EO!?#wYr1R%KC5 z{;Nj#0ZU<)9N6S|oDO>78<#wh6S1_5$e>(lnMI{X6B9-dOZm{YWjE$4Z;j#vRbQT# zRz$2XVw=pH&~Xa3l6+BwTGb$CzfNKIXXJHJr>e!aR}EUpne_nP>qQ<@oPksRg6ew+ z!o19!6D%GlQ0dQmEA}F78TCx$)?Gf!)zq`iN2@2lj_@k@q4qd5(j3umDxq&UOvUmL zZ(~B1nY=?N{R1ZNmxHL9dgSq{Htl#@nA{5>*p#><1|F)tzEVS;l z!k+d)C)E(GF{gy8W0VUhgJ|pNWKyP@_0y>gvtpw`noI(P;og8Cn1+4uzRso^$hOJ8 z;ox;07VP9ej19$W_8_H4P$iAX|2A~K_X|vV^TYP8fBS_h^%K`#2~n>UL1Qph^#WsV z@v}5&CDRuKfZg{lnB+(eOLCLN-YV=#QRxwr)e!qymvC}J(fyZHT_vn?7rw`l`m;?n zlrI*3u4wV0q=>LdT_2=g2=;35yz9|-LCn5^+@Y-4KK#Dg>1}oSLv^zTvJhz{f1}Xj ztEMGX-5%C|6;P>TxT4||#M|YT+0cq2tymA$BHKA+#fb3C_A7VmQA^&@wtA^Ozhv%T zF6iP+T_GG##Yk57!Np$PY@LfP>@E*^!*f~#VK6ONQ!R2P?%IL{R@GVgC6i~Gm@Agc z^Nt@jNF#B9qyYVhRvK&(jPR@lL5-DVCRALR)sNpyWRqbg7ro2vJLT z`0q7ad#IpFB`k1}R!r25uEreTPnld%*ip-Qb1ZReoUCSv_^IER^o~*wuBDM-_wkH~ z3e@oBf^V+y-MWdfZ1M}~ z3z6ABFu2czbrt(2)|z->bkIexN;2F)T^^@(qHp1H>zefy-|)%Z+GqGcGL(0ReA_9v z_?Bz9#udcNDFg!w$q1=ZJ8U?s)yRlc03<>UXOdYztlsoM->w-B?ouAvH|50`wR9p@ zIO@MR2vIvz=DuI}l~13{Z!t?l?06&CG}x*hHZA3jXyg?`QMW%9aAbhQHy^xXky^fWD!zzS**&10VBN zq_sx>jK4pj#?yj_R+D+TE%5Uk@JHku^A8~atLl1|*n}T-N}3N)$p?ST*8znmJ@mWd zRJ*EiZ>CMpRu;Lo2zOS`xfCEir*qP&AJMazi>_?h`h&Pnw)mfKrpQ};ty0fTV4P?k zF`v6UdoO5-stV#ylyHSDE}M#q={7Ni+Kg|G2867eh79+Gcg-|pT0TY;b{?x5PDO6e zYBk+JDhosn06?la_$K_IImqCbt*}cl2zg(8xCZ`!>~XyQzd#QBq<(|pUIS2v={}Y; zJ|g7HMq5B^P5RAvT%=>lx;DZljwT*SPcAIFLn<;A7`)& zag*^!th)#;(KMI-6cJTsmUy<(QSt^SY-iWhi;_7!A`z6Y@YkUG@hI#SJ}hTO zXrxajmT(Q=qi>A~AI`XW19N2~6;{uJk5b`UKuC|YQWq88=QuLqJ<*Rx1Ra}2$S}La znA^@>L7z#Ww-iWO>+-`F`GrRHho&Rt#6edfOatuw=O>T6WxrHnPyorXLLHH2#3mlz z&M?Vr~?rD^IRy1 zc+DRZHqGN)@Nv8`6>djDXt6C>oIK3FiS56014P&;6~T%k`uNuUwx;|q6dvrZ9eNiz zDn2!tN&TfRg{fD25fHK(>G`G>4!lyZQBqtFP5_e)ti7S&2ajJ!e#W9>&>o>*5-f1FWiqF&u-xS+ztJFtsrc~CIPyd*ab z8=FGdeQ~=p4WaEGcc86Sy^qhszswTw;fFf=+R+BF7-J5j)o!!VNj`Supp& zB>)qBuEE_7BY2}Qc!!Bfw}%gF&ZzA5J^P*C`NhWRXx8Zc))F-LqVaTIH9J4R8SYzy zA${aOZz^QuiVo)DJt!h7E8FzYV9U!RRqnU_B%uBnWQ-E#hBU(9)5Z^ zS1#Tyu^>;ni?4T4WU!MkI3}zs zGI@9_SK2j>7lKk@o$%Zjq> zA)))^cZ;n4#Q?8!&-mfDsfc#SmUJ>qS45n8ruCl$>`20KitC~H3hZn=;@7|pM)aD> zQ?X96P`Ew(Yg%_N88+^H{oI_=GY&x@iC{l%Ca3Q$*ArG7^{qBa!~Lb8abk<*(8nGj zQ;e&eTyo2*ROF8M^z9t}5$Zkvx(icns99~*68?JqTts&t^y%%z92ws9sYQ5>chFP# z+7w(7xYc(2p#C@T=FKa%U~KF}uhL=Ix<3&&Ba%AFFvhm^!N*Q7E8^#?3Uz}b zOMY)_blyYPk2Ruqf5S&>JA@AZd*?PB%A<$6{-3P+N=Q)X=qC#gHGAGoYJ}M|ze{lV z2D(j#ZJW>eYIu7Oeaec32?}cA-9W>)uSe8BL_FQzsnYJPo>J0E=;}8*n1C7St`>~x z+1p&m42d#WSwR;i2^^*&65E8nNQJjFxvO3r{qRn}r}68WGV<5n<7!{Rwu2=B9C4@c zk}4-JkHV)1$uoxn0kcfs8&AbdIZq#VPrC7w7>DR+U+CQO&pt;;#0iJLZaZ_!^EZYu`u-F-daA_F$n?Yl+| zOVaxy)E~Nb`=4*ogoi=E(_Z~#9>*o?h!kl0h&F}POH4fUYgam_C_2xmnz z)iA05m4~*$%VwxY1^{<1lJNpZkL*k+z9xT$VS16#chT#yX-Q!Mrw}r*_*`I#XH4$2 zxbqVWA<0XH_JQJl=R?1o@r;t+H<0CwXfLvVTAr6@Equ^asr(qbW#tAQ3=j*4lwM*n zSU#4m+sznok=7T09FZbeCfh$KkwERQ8`CZ#KN0)iY{$^aq+yM;rRaz9SL8CZ9FRVO zkaDW*VxV|1SoYA7eB!5*Xs}_n;0#b8I0 z>ldDFPzAp6`FKAiQoe2yGW+kcP4uNeYmGE`vUO0u5^&LO)G)xljOGKE3$88tPh`7> zGZ5}LjNKGEDs{Hq<7MtLo;XKHCcPRmREs^U=Zw; z*lbkm5r*WR#m*;K4BKdD!wKe;-0B1CAd$BItZ}skB#%Z*gk$3|SAT1viV1frs$ z;Q?O}sc+|*l1~=MIplvmHInX=?JIOW8KeZ(D1K-|N?bArYyHGN?w?z=xpv+okJXJb zHn^0Q#ooA69IM%{zvrKN*&o{vVeEPapz_Go(9zceK8;C27WpPgf1e{RQvD=mkNV&a zJCtlg&MMJ^Oi4nNdWEiqdeL=)0P!)Wn%W3@Doz4{izmP zrpzlfYa$QJO@xBh9M1ZziIlm~F&!Zg8T);g6OUxjA@Y-vLc7fE-Zu#p1HN=oX(5w+ zC)xIDYb}1PP?Hcc31|RqROTe&{Cfb&B|B1_nfRx1Uw&U)e#BGq>SY0v_bD$rwE?b zRwn3HLVKSIphg&{2s^&KZKmJFR}dfVdG@ErRqDh@AQFzF{ME{Yt0x`zHD3L6H@oz* zl)84Xtka)jACIaIo=yH3LKU#jSIjkQFSkg;|IjQe+*e+cO}dqQXApG`ani zK)MuvE~~~?(g!jUBifEo-}A+-)IISOMw)$hOxiD7_)i5{`(%WrBKx_%kYVyX_SM_e z#AD9Gdd=p(_dCT_jQaqoLHMFQvd3v>CeVLVD0ev}u+KirCd*ggpNB(H|Bjq(!mBa8 zvdQ||zxArVZ(Gcm3D& z_x=wY7BJWbqZ`Jk(OpW6F}g!KM~5_u2nu5xBc-KOx1UhjTm6+c~#$UDy2~EHpEq1@L>xZR#_ULAuIqht^W$9?Y<$Phy!NdD>?D zt$Jp%8krwYRgEd!is?lUuMStT$hg0@@hMR;ScY2ld69-ck;ZfM*-+#!YHwA*z~mL{sH>G4G={**3>{?w++$ z3CZ#P!D*=SOQD2Lr+hyFQ?t41A*DZ&1(*4^-%Kd}nPz(tTWuW9f4Asv@73p(wlnyT z*#?tiuRHx!Q?C+RFxbnEE0-vuaf2-B|*;5SpY@9Vel9IGe z7E2`?K!>vHBzvctb#siCJ4icH6pDg8Lu!PzodnDWap!faL5VqoAe2cHq70+kiwS8{ zUk%D1S7+&>uop40d7x|F{J5J#$&RfQ!jyo61dRkuo7^ppgwvE`Mo5;32Mims@hIuk z9ohcrM-NzpWJ5hrACo02vv zxH2&RKko)pQ6G)*I<5=@B5w^kY#-mV#QsC;SP0;_%9e@6ze~$PVLL0*Z+V_DVe@siwqwz-_h8_&?s1%Dw3Rtu_(NWz0mu_j8MdRiek(km1sCcGwWq@${lj>uvJpD6EIv782`fNi!Oh38dX zNJ4%$z2Aa@a<&m!&dGpDrXS~Rq6G65do^r3SpvJv{q!I)yezp#%BO+rB=gFp?7|z!Jg;3`!0qLv+m4a5FAe(NQ(&3m){KD01!+ zUAxabs?6cpf3%=!MlqB9lbKo5-X5DGumdys)YSuOYB?SOb*xIYFFPoeGnB(3?-{p0 z_qoD8zowg-Z` zvq-K3ee@|YL*m-&8puV9Him`;*i4Qc|Xvn|rET z&^>Y}gP*?Ye6p%rJvMFk^Io3l^V58y!6UYr;3BXuvU_sKsrHr3|4dzr@Y=CsF4&x9 z&jL`#BO2VL_3#gF`}5tR@v6*+o`HsphWM+N*NZ;%r;WkT+@}c}~x)U7kAn z!19h<>3gmxZD3D^!ok?o={Uk2`sfBdxo)9ZbyBA6Esh{x`!7&b%ABL%3v`MZ_t{MjAU%C89Tju z@U!2h&2WZvR{kRYg4(eIv!PdfGM{)3!KRj$-v!N9xUYAAu?FuKymcLP?PvIXy-2ZH zemUMo3Ok|YsuRsll zkx%I(a8M@np*8xJ^E$|U-9My;4iC+*KF`PrXvbHc0S`)HK#;W>N$rxjn_d;4U!7mx zI;$1QwV&OsZK{K)W4ivh`)Cd2$&K<=>t=8Mm_nicfsT3f=?XOvKzNA#)O*qG$USps z$6aR%$t|2@FIaBsNIU}p@Fg#~|Hrc=qw`(aUe=T7c08wY<#A60MXLqzCqz2o((R7z z4)?+kkBhmwEf@anbo%J=bx&?GKZ7(hF(7ipuwj)Hh6A-Qvgy{k~ zc7ZT@#8ZnlkaZo=987#)OQHDW2lHT=5?$QgKxX^f4n|FtS4N{nP|2Y%M_G%%>0ydf zwvx9#tVuy!F)WWWNGah}MlJ$@wi zkDy1!H871k`0Ll%rb3c4qZk(sB6xfwXApNQ!ZD5@!j$PxDY&`g|7j;qh%-us6i`%* zvPC4mQ(E#v-osOKm|g_etH`yyaBSNOOEGXo2srh6{ye$Jk|)-n@@doU6V)C>3;mXp z5`(cMnzn&#+dwW55$mR}WTwHEGXaJYj_V=?)UjY3vsoo$!9uYoMLqura<#9#WPRp; zvVf{tyirexzvv{R*SaqgHfoYzXRwS1?V3yJkSs7nCb@zSF+?j2$fORO6u_cja*IC! zi3^9=F%bjKAcs}3R{+^<1awqIp(T6vFZUbT=GSB@@mSnYzkE@+;_E4R>zU*qpR5#~ z_p$}UPrui+;0gEfQiWjKy#v+=qB&&$xe+m@ixq>+jzfdZ5EgXAGZzn%*^T|Zn6vm{ z7Dpr`a*z~K$AxJFDX|iJrQq@LiN!L!NoOTDP0(shE^=p4wIS@^bp5jwmIA@If9(U7 z|GZRaNhB?koJT+(LSaU##DFtLWObj+U^NMYIa~U;SjNh6k^}b1wMa;+N49-9>Ci+@ zrB%Tcu)?DWDoEUNHBMAWAI4+A0ViNj%Fh>kZt6$c_>-tHrI~XR<<5vW%dX3ol@vo& zki#JBwN=*ijO>=xY_~XZ;aiZ{E)b5gcin^R`;67ggM51Rj4nZg?JQ9KpW|vhH!faB zFnaWYFb63rCFSMMFI+bWpvd-^2P9{M|J^0|BZ4n#xy5eMqlKcG!}33<5G_1d3FzaT z|6@Y3W01V0*I&XZ;d1`p!kLK4btG6TDQATE{2M6mdV`VE@7Qr6Rk?U<*I*#z3JVy- z?e=r+ameW(t>n3=e}6A{>-sx>p?e}p7W<_i_=zE_teBH4_*h7)9ufSBc-14{yo+c) z2*#|ko_)DhAg$pJ$Y%eG?{)P8jFwNNPeA$j_1i>gWd zrEvd8^v=3FlH@z^i^c*n`cBNaL%Dv!N*G~1C9JX@9eiPBqrt8h;r3Z*-^mv1R|uF? zOeK-rufMmt%ZP^DH&%aed5f2o=&{bu)L0#23if57>c_q(kP`zhQl_pdjH1Yn!>$`i z&7Nqm&EVw^E58De1#ezvry?mCH`87)Q9LtP0Fh?}ZrtqfiuO>nDe6xkEuj~rQz55tX`8tB_kEWPG+vMAER4GCLoPw} zBQ~CeXT-csWDOTvPk!eEUn23!;!lf&P5+^)PS&k03T=h18mPI+S15~F0kl3jD-f}F z-RyF0+9&LaS)O)WxQmYPp;9D8_-zzlnh)_vHqbe@jjv}M9h_%n+F{> z`paa;3R3l8;6As#R|tmwpFVMJ0kADlq~hD79(-rf*4A%@Zmc_GSGvH~2vwhy4ibs+mZ5sfrHBRdn}T+F3*>cP z0ZWX3@BQF1{N;1xBy|UubVKn;=F3TG3U13@CId5IopwW6XWkL0z2Z>}oDJhao}^35 z*kMEYA(C-cFFd6IIc0t-r%j`mc(ai0{8rL6`3<>*3(XcVyIb32hUxyklqi0`mgjk{ z#17EXSbj$vAuTRLcx(JE>5$_8izonBCIo0~n{;Y@Tqw5W#&MV08L?5)kRJWP z5M*8_3qv(T`&CUWcZ!;vb@Q!v=TAD zPXUKkTJNOUDaf284Mf?@wX*gB39C?-HjtH7k!?4PTiPVEuDYe8~!Y>ik{HA&H z%g?*pmS0Z?9*f$@HaD-CQ76O zXlza?0-w}?C}{nnRK=*a24K#+&&D=AzaAD59VEia%!c4O&tRa``u7*Y;**SY|f==hX?rl?C{z z!%4WL-H?DS|Duk=#=MlW2t%8xz95hrCz8RSt70=pupCXo8Exj;)g~}s!A1dwx7le- zIj#v25B`Ep##5uK5hi6~LL~gB;jQ_GamZd8gieGu9wht`G z5yy!@!5{z^0UnJ2RZlWCsB&mPQEY9we*v_}YMn=)4WA>Fqbv;f5Ac&X}BBiAOkT{!vJ)BsM_;x>w8AQ!d3Q!LQoTs#8c_uDs8cPqxWX61 zYTfCfg2X(AOlW`Q$`u4{>2!OQTnkQXbp4FMP|osb#yn2ivJK9lhoH$a(v1j^f7@b# z6%&>F&b~R$-p#{7>^PXL{z(bOQxdjEtYiojyY_Qs8*@ITY>*8FRtL z?Qqkx2`HIpW@&t+K6QEjM67|9ea(jGj5#rt0LboR*1NrrZBe7Ah>3hz6KH5Kp7%8f zw-F$4f47>d26z<-(u@}TA9zlFRupo^jBJLvl?(bcn0XxoOXi5jUKKcav$c6 zL|xtXTT_Wn^k=2S#iqS6H)Cj04%jETgWt*wu-vV28gn0LkOg+TK6T{EwTs^5?$e>E z9nb31n9>5jTYf(IPbnZpFi+`|qlItn|0=E08g4yZUB>iH-_GNFC{s4Chqdo!m*?L? zW+t*MGwIi!!Xh<0IHOC-!H@`OQxfY^y7$n)!(E|M1(+hL#E!WJWtUqngg?)za3H1 zUKY1Ak60)V6pLo>IOI$wx(Mg8#O`G$qvQD2zyXLjpn^rtuVJ)V zM1m$Q_nTJE$+LS^`b{U2JNiFBrU6jJfTX4c)Ve~{*5f%d|4k}=z0-)p4dUCd=1UeGWKtBH-ei6&{)Up zW0hf&L&4>8OXU{x0ObHOk&l5XD&wWQzAL6&1G5_M`6UelzqR`}sAtJL5+r>9GHO_4 zwDU190F?%z_H9VUQ5BY`4@tK~zxnTwB#`r>ykZ~)*k)DcJ3zy%VmRpXPrxvoDA&b} z&Hx}sgkE0(DV{i;&tG`E%-IdcL3RcHaM2(!^%|lpm<+tE;d4nQsuWBDWk8ig1LT^h z#1R^Dw!y+f%o33^yKy>elK+OA8CCt8c)<*e#8C(^P_F!@$3{X+2oc) z-t~3M941uP0U_0J6lSH7f{MH}cN>&7$IB90$lyZHB)j>)h&C(g_xs zvaM{5y(dHkUkpKh;c#s}i_BZ^*LFXRaFW);+Qje}$pR@Pn&bvnp($rY{)Xxo!rDQw z!S5yqZX&9mU{_0x9QPYz1k!?~4T}((O#wf|aI^7bX+45l3-agSv}`R_JQbu=y{!~l z%b`&sRe#!S(*lb-al8e0ppvs|x zhR@uP&hho%tGq*YX&Tkv;yEGQAOjlJ+LAgD@1xKK5a%vXu;f@60oVb@Fr?%l9);GE9Dn&I+}26eYXdKUrTdEW~Is?iwKS;5nj|Lk{e%3 z5kT(()e=CsiJ!ZPBBIfaS5z7)cz|PZR%(x%*DKTaw-h@5ysdwgOHWD?PaO!V-gm!QmTkR1!df{p)zg2#jLKJ85$Soz9#QV>G(C9E70 zWs(L^%-J)M-g>Aop^-FpzSi^$^J@&ktD2)mh8tw`-z^9UXAF9iyLt*Vc5Q@|05#V? zV1fZW*KoImSyb2*OtiorPpL?@PWT^1a;{AU0+av;^$=P#Oh~rkGzUj{m0D~jo!}kF z`EZ5rMj9I1^}@sp;BefesAPJ+{m$+6tl#5NmWY}e7KSS%`A-acBzYVXVl30i-;+98}QU7ts|M%`c zp&*llsD2Kb+~DrVOsaGdt8$xZ_p32|wfq?``iz&|U2fV;3FXcP&|72bM7WKo9v$10m$-RO3k7hwUHP6(r7fJ* zOz7XjogOd2!V3Ya;VM&CzM5!}mKCsa!@?=zxYzi*uZ(Q2pc_9*2kGZhr3MM-2fsBe z0M9uBHI+VlrPH{Txwg*T`%;&+$rttAtNAf* zPX=A8WMpnn^Ox!4?Ekj&N*uSA8aYtXsJK_A*jXmfVCvmuCf|ouR5KNLkyWA%o4tm# zou9iW8+l5grG{5BU3UZ2&thQ8Voyv%^{gs*(G5nYan&i}C!2LRyALXj3l$)-@(n)lC&uz_v+Dz*D6GYG@^vGc!0W}n`TL#*DZtSfT$dxo!i zl17vspLnYjQ`!YkfqyosGacZKl2v++u?+o=BY@_DEr&h8?wsGf$Wh{37TYp^a#fIn z)Z=A7enpEbt1`-r?}2CCVeHvghd$idzZFj$vq8l0k!a%IBdn#{IVC^9w*>J>kQ#2HE}1WNQleaWTP3gvb-JeQ z0nz`vX+|E?5uE)_1!eJ$W!gHYK^!etPZKQFAgaAf_2}NBmmc$W`!~;mzR*ivL6-)p*M}W!AaJ&b>@y8B-o?TUB zFIHmHAy>&{sz%5r%T;sCY}f7aKQU}=*1CF@Ty9^OazqQ9Xf>c^sYOySAPq3tiI352 zI6*$5D_qwX-Zo*4z0nuGATf%GnNMF@2nDrXQWUsMFtzB*X^7PyA}}<5W)oC(z7t$I zao>LfB)Zj#f19qrK%?sU`kbdUn<6S)f<;#nr~V(|Ds3W?NL4AR-CaRY$qz#Yd(yO& zG#=;KapJvEw2P`2EiLD)OJ)#v?qTxX#$KAh)1sC zGFr1&!Iv#5A9|5Tn7;a(F*XzwQLYc`b%M3q10*k^eA`dbmrX`yZy5^DU4p=#_A*XO16Kpw-h=viMZ_Z;=QYl7mZ6b52)uA zlu{)?sc&ucj&4L>B|aYc1#-V2c|d)kaDQ-}C^cfX$V9y=_RHZK?KD&8z%e3JO-*p3Kr^tunsxuXVxIn^FnAblV#y+Pa$FEJCz*DDwK`8Mt#IDtK4(2wkhr4~^Q6%QsuGpGl9X*NE+5lju!_ zJPWMCI#%-SX}^VF=O%r%^Ey!yLD<Ss#6sV z`GsKE23#2be5dQvdA;oGM~a@hk{Sl|5ESi>ee4i;Q`YD8lVAhO&K2uQs)JMlN`xxg zm3rw#-Myx%v>AQuHqB(oD;9{orHI`Fq};x9pHdRx3;u)2_#_Df#M*qYm!jFwsI)c7PmvSF)(<*GPZSk|E76V_0<;33Dw6>g+=_Ewc43HyrRgz|? zCosVt+zZqmrjst;WT7xKWCxlAJ46*)Bvp#zuoH`)#Ay#hKYhcM8yy#vherFLEsUy= zZ0zs89ev)q0@8{GO?A@I!QYI?=XyK;3GgW<$iTM{g!>Ho*PE-{$uylO`GjX+j39S- zI2Y2Y%I&8{sO?Kxi+rYXK$9hxtZfE|*dd4_g>({QzIe1Z$;T)}F~c)47%l7xVEGDxBUI{<7sPf1Kk+>XUhWD6mPNZLG@G0qqpXxuM|W(7 zUOZlle?tjFCCYq8!w{;NM(j_($GrOwJX$oAHE8NCs*mV(Lf$fy#SPBQ3i9WO?Td}3 zH!#;gTJlY;4%U+XVAp#)y^*wY37=Lw_(|c~=?jz8^#M3}7gt&#i!v)EKh~-Ca zzU6$Acwr6NELwddSt?J5oxds2WUBIRi2D#@#u^Z>$>SXAd4Wn6`?hCVI1I)K1*LAp zy-C0TSexQ!#9ST1Ga{Zhxktv|6^?n%9#T5s7U9U>7*_@Mug~w#E53I3Z=}~}H&BiR zDI)YlzclR|q}Kg&u)|FoB{JG*{4fZ%9X1DI({OOSmS@piqRwaEHT30Sqb)x3;l@R# zKv9RNP!_8iQva)0&l0DFENUWPZeW1{oggp4*7rTtQdw{nYk3!3*8RJ>d}qa$qCuBr zMz4EGoatL#rJmOwEyU7w##pcX6Q^m{c>>h4mcV;2 zYo^yap38qk>9RSuzeOJx$B(aZJ}0IkIz{pP;c;1Lhbn80PnVzZZ`klJZN5*!;~-Xp zWGO1zT-`75S)rav8Z>(SR{tP8t_hx<+l$;saziyknr!B{!HjbNB)*)$YtCb>@jOUv z!2_hhZ&INVmpuk@hGcK9)pIV;;Za&rLiyXLVAnLAhG5&0^Nk)P6>>Ks2$WOm7rl-h zIcv?^0|>BWL88oAZkYvR1BV9jAN$SfS?nD}f};8KkQFu*lKM^lBXESYbIt?;T8NDB z^{}7dAI;n*wg9YUZ4WCgkWplwvbtibyXN<=MPeT@P20ECt>ULR5!6w#nz&~{Fz=Sk zB|??T#>b9_ToJc(fox~hR|;mHf*_9sJFT{(|H7p#Guix=XTg1yqro?2Ge2llcIUwf z^C$}weh=GBu|B0mX*s1ScFp1(YgelJn9{gPQX!m32DG&F! zu#^6@d82bdETW_S)#j#C5j*AokFSWLbBZKQfjsO-JJ2He%&9adXIFNF9HyLwF5Gsn zQ78Ovo$q57w1}F=BkM>YNafv>&!f0zB~}Wb-lcU9cp51>z=5R26KWdz#T^}tw zfg`L)BewxP$2{#A&v7g>L1tg*C2=K#EjYw({lT3crqN)T>9xW3XET86V;)4`jnx)I zsS3E`n#U4NhL=^|NiB@Rb6#Zcxo?--Q(JjxD^F36(-bd2A;mEf>)$O7z%w9@<9R~h z7@rG5Me5x{8SpHfuL4Q|uZoO-v>2p{XHSORW4g7s!Ig|_aI+Nwd5v!S^D#VwFD~{+ zFXvo@mvaku;pd~wPr*&f0+${G>KpMtAAZ9$btL?czyjs7cFo9Tn*oci^gSJK0#OvY zkUTdr>v3cD1_x;Eb=htusmg#1N~xt}wmexd=-aCEg3=faGNaTOjp8%ONZPFmDZZ%X zr9`aUMVL3-bIZTx-wtLdMKbrkwi)k~E>h|0YT!|$Z{ugQb}Jk2I2(HYu=APEcPZ4d z0%$(h6K5t!Xfe7W z_YJYz>D14tw&EZZIjGyz=ejX)5Cjb)p~7Pi`o@ZL-W;} zU`_e*`F+j{rnO6LceVe(<@1VTs06qU1KH@S^D!UFq4)AlWWM&ZC6uGOll=v^VtHjH zq&wcXQ9}K}KFm%f;{HUr`g#RVq0VA7YTNbo?}@O&uC$*vDqX=Y6}Q)#v!@c6L+`truY!`pX>`bPmiB~9 z#ZfIyHR+wgH%8%2pB1xqvu!=s%FRAqxW6NCUMsA7QbOZ+#YafPt{w|h$@p@t?3{QG zY^iTru;isauV>LZ@M?AU&YQnKlM9}B=?}bcQRDgn9R>c>Db#~ zbda3)pbd~6QGHAQPXaPibPnSav80s{ujm;UVsgNQJ0~bz6uSfv@SLW{Oz{^7Fg0Au zK!g4r$vsLRY~<@5ao`6hz(a!VHA_5jlUk)h3pgTIZ4t5ngddq+{&>ElGVt9XzR+ul zDvbTZJ9PUOEIe3BU~Pd1DV_tn9Szn!dk*+J^FmXuUnT%h+@y0q-pT_>@^~yHjKnhM zpG&tvcAe0@2S)`+NQVgdswSlvZA4Nhc^;*z@$Nd+BVd$tX>g+=p$jFjE;wPpXgr07C&w!g zp&lxL{^s~fobq9nSpDtdl8E_f`Nb~wRC;{DTWO;F(WFy#0$15E(lnxLk*rT&D80tM z&8Mw2he<8xeOI>`n{h%edv|F1I3S3JzGwaqAypXV_MA zH%AM7;#$Kx9m9R9EBOy$AVFYyL6KX6RY@7E{D#n!BJkx*kB5U|MhaNv$dtRgj^JU{ zZH|Vpa3tDh3GQXR&_pdjL%)=@J|DcJtu0;o?`x3Q(|sqG&cK3;r!#oImk?HQ=K6{F zhWrZ^fv@sJschDjc&R6=3dkZ>9{06&-;hlEuk$P%pSrP18<2@sKNDC-pQ_{}FXTM^ z^WDJaMrqquxuFRM#euc9$dgHy^Y5HrHS=u=%%RBx*jK*zeboK0z2-Vk!?DetL5&%L zbnUuCzs$<4sJ$S6P4?r0w+Nu%P2{+WeU0EUKwJIZlZmMG4b9**DG|vv8k%WApZDjA z<`hB=9Jzx9e-AuehYPF-#yUTZ;!r|`-VFCl7#&Ti$7ijNm@5Ztcph>)IHZ2uR&-?MdB-L#4%$MgC%uZo z%mm$0yJfDfqW%mkF*b(z8qpx2%;EnZK;RA2M5|kb_gv+t@w8!OT-qoldvy@iD7%fO zU#O@y0g9MTLwgs@FIJREsTc~iU3NZ{&dfK($ed2n4gR=sW7OJAQmOUY$A^3d%{ayB zD*F4ngM9xsEFahZK39~CadR}(-1MSJ>hxvtme~V)g8qTkd-R-}_x=+}*|js+RWCe# za*mr`M}BfJyGTb5U4OS~Hh)`yx9&4aQ);ZQSv@TO!k)E|S_fk+@2U^>QQ6p7QDn#foOt6pj>4_m@2rtkD(*96LVoejmdQs}Y_$xHCJBBm1jpPnu}&#!yZ zEI)V_(W$*fahWwNe@3Fni*|E~)DXUNejGnl6Q%gCaR=#MyI5{eU}IAUJm1=+gyFpDmgAA3SZYS6;>W$2&>Ht9yTB;^-aY_)CLZ|A1Z3 zVt-H?hBFnls9s$6dfEGGZ@Aj5EUN8c3L2Sf2I33M$^Poh}o0Lth<@!UYz96DbmEZ_Ho z;$j^8Qv|#y1zOS;TfPUMQ4>A<8TqFfI>?j@Sjd8DDMDE-TT_S~tC!j6QsqlVhf4xJ z&dQZP;mZVW7gyMUW9rqPP~FWK;lVPJaKEuOAJ8ZvX61K6uZ*lv{sbP}-dcS2vSILvbsu1F?dN>J={KhAH{vH^~=2OL3%i+H7X z#8oED1lxHhK=4K+oU{v@2vaYml;z2?cO%$$5S%-8a*Qk}r%d^OC$7mBwkZ?o%n`!w z&F8!xa=RTswJekLdXi{r@T9@WtV8y%rm*Xa1;d%i;~>9))d2QDj)F?z?=pyzv-*aK8-2M<*M#{82dMl zQ`4E_45H}?g@3HmlH3$ZO-gqJ`zV?c%~FVugs!ohSFLA6uRCIGgPZ`&F6rY=cDji5 zuF5$f7o@&B6y+Bi64K}{aKa@p*Og*fFY)$~bJdRHO*6F85&zzAIBkUQY+U?%i2;y{ z-FN}HC#CvWGV_BhVsRdtpC$h%Cp>rM&OHo!r<#>-lZ0(EqBsD;eh$`p_8JzTFz~3{ zS6=u|35P37+7rNSGcs&f$VGcgV4+Ry%(U?cgV)|Ps}ynxIYa28=i_|SMe!xEZF;9{CG1vJH&*6Dv9F?Vb|ncQkNO^ygp|1 z5n20{6{?lQH-vF}HUdX4OYb&TuB{eJC6m||L_Y4rX;q@Oc#ca7E{R_JF92S8G$mIM ztY}gM#Dk=b6w6w;d?y>NXWC#s-ZqVt`CJwAz25=a!!2^$VVDfNG3EtWxHD74Hm_y@ z9#b4FQohaH+0!0Zu>keZM|k~CAJV^UWU6LTY*w+I=dNz6R1g13v#tA+f25B%za{kk zGy__X5O}ER?81;`>}sa{=3ftm85Z-)%KQ1aH#`}I8JsOfEfN9dcqWg1y`Htq3MpJ~?s=7S*1VIqj^eD&<#6J< zAOlbGf?Ylrt!{RIDZSS#gBQcOWpI0whjgr4a&a42jqC@Slx> zqj6BbJbAuNj?H=aMjfwVj_IimcY7Towg#0LX3>hNxw{UjAm?ggi=L{9F;2J4jEf!S z)uIzy5CZ_XTN(F4iGf6R$6mWxEWb5-y`#oMfwlmv;vJlYwRi>}1u*(((b4^A!5N_^ z052(iqHgikCT68k&R@&cSI7FpPxym6t%KHr!7lb^HG=Gc=D($KvWkaa$HjZQ^S7xf z7!RR@|B63RWAA(s5mb$M^B2LH=`*JG;3Jc=R5H)+BiPd+;*$WFC38Z+fs&z+SB7qg zu{u0eI0DWeW|V6)Y3eK#%wMQg9KL9aXK;ghMf~*;??+NQfBCYhpO0jLG-&Ym?CW|q zm1-U@6$h1OU!aRr zOFCVvL<5WAQP`yTOP;a4e1@a4x0a2LZ#vwY=0==Yf)>gB?$EK1K_hj1E|<63!K7dK(3UheQrhwdN(Axe+*F z%T140b@HIZxL%A(H)@JBdK?TN4&XZpG}sPwuSY`ZT3YZ^0(%TN^guvh2?&`+USi7> zgn2{mOuGE-g^ko9eI_`}O+<9ZsCfYqa%X)%0?_`PISqVgW3l(Ohc@ZIYw-!0sJK3ZCu_X7xN)+s4IaQMD551^)2G9>A5h zYr&d?`IZZB*Wm!>yE*1|B@}r>Fyx+^3sBwcc`sflZ>?SnRyCqPUymrsIQKvq;Zbl- z(PR}u<*4bX%^QBLBEre~~p{HIHP0|JaYeNIpy5ArXmnn3?PSlq%(hWpIcEKeY5r3whsDGC z<8l$jVu#gv7~3th)N}T`(1tfb(`@llHm3#=KmHTbO$f~YCw^Mr|B_1$n#c|MlR4`u ztMY40)`I8nrW703OJX?38Zyu5gG`&Pd-;?c-EoJnA?<&qJEc9Z&J?4U>$hWFu#60q zmvL+%*LGKRp^@LZJ(m??3kSyPhLpHCi~6k|B9s@A(6nNb^+u#zHShOSc>2$nkIww% zWqwEAhMRtdTM1&WbVIfcQA42k7eAYi|6t>#vU-)gOAxDcW)9y~o{R|hXI+VdFI1BC z_~tdEJkMOvdA;Me#u-JB0;H>9v+;i23t4ZgIW?=IO`%YGTe(v9pTp@dKkRn-vNOgN zz!!pFG(_5`x&9KrevvL~z38d6ka+1d(_jp%Q(a%*SoR}vR2K95eH$;X-rn25LeF+9 z`@?I2+3nPs759-k_L`Bzt~&UFl8TB|jFVo-&O9%)R)UqY|G%v}um@=pEs~EB?86yh zAI3FT;^1S*^(EFX_ZN-_P-D#tyD3pz4I6%dmX>Mls(_fxxiM}x78lnIrQc4pXKL`~ zr>I2hh3}cX%cjo)Oe`EsvU))LeSA(mmU=a+PW>>ID+eX&t^PK*Z}iLyoT+LlbY$nJ zPuPdy|2!cDU4o3que#S|4NYKnm*MpF<7e!@-bt>j(|0eO?xx?IY|M}G-xe7r%)E+& z=b@zQcZ{YY7`d%)+mfXIES!X$`dBBA=JCGeE&fh(QTKk7CMIs8Yx}Ty=fUruRb9iN zDz=T(mq^OnYL0ED&t2c)k)VDiN&8w&0@!=Dx*6)Ij+tYE1Iy%jkhy&F=3Y$*gchb9 zt?+q=Q8s>~8(jgQMM&5A(V5y)S-w^2#I3}g@zW4d9n3TI<`7GGwN6P!@JS=I{d4+`Wt*rx|{oFWTMy54oCCXREct=knnq zKOpf~y^*r&E47^rZuU#M5>g%JXTl=l5qCva3DY;pq8Po6FRXlf={2P>BFmH66giDx?-KXw8aP2 z*Dlxf_s(os=PNeEZDLS!Wqd|)b8X5<6}gA!8yG1Y>kG)s{%h zXEium-fkPOP_X?KG%j^)Afh}|iZh&T@VU0pR$JFu{Mi&kpWLm&_sCDw-tOr(=lAIf zWEBkv_!yxV#Ja-cDNJhSvM5|itOzJ+iST%xe=HKB`H!g>)XddS)^-llr9|eWyh-Gc4PyiJtX_*M!;8U=nmplZlo+WYelt)ZDt#`xed|WZ^PymqP8(M*UkN& zd+s3#sfLZ2OLM=MYaz-#-G>pPkP6kwtx~Du(&=8lzMsF~^UM4F!|VNeKAz=g-dYWG z4P8bDoBnL6^lP4HAFq3TZ8BE&c&V=qI}pCK(zw?g6-+SsL6IqHEv{C6qRxS%uLxv- zlrnYSO`I;9>y%K46MM{kf$$1Ri5zN0Uuj;N%6 zC{>pm^(1&@s67(ZBEjS%yrRczQw7?>v;#YcuNG>(h5e^5<{8{=ed{W7wtcqA_iX!f zssXdxReDWdg4#~vD!XWwkSi8b0KyfWV@mS1Qt#ho*R@Oq<*4rD-c|e(+MMT_KgyBXNco^;}f#o#@k>_y}l8Cr3kQhc3>CtPTCV0d}mT=IbzJTd{;Dj zYdC=61=YtIFR&7U#P-B9nl$(&iSg!-YZd`5D?*MYod>)-(E!!J!J!oQL z?8=<+yiX`MSq2rH2nET`P^2&c#KzRtsU!neSApv`I9U^>Mib;184^@RiCLB8^)w)J zQrhyThE*zu7TPZFzZ{X*)htt`FoUz?!zwlh&qhY~O2Me4j>OZw&{v#`wz%xBInzQmA6q$A8BkeV-i>2L{v9}6 zWoBK)DRp=5P->LaeGuy56JB8Bwf|O$mDO6y)>B442-+|6HjRFy_^Xtkx50Hi;sg3L zqe14iDOW^yKupsXM-QE%>$IkTb9qYCpvc6UbL}7_K_z%yS2!{cXYCMTZC6YI)Bq2+ zkqX|h730E>zSVJBap`etvUsdj65NcIs=8zAg3==8+mXf0aTOv~=w}qLjdJ(X{q7cI zcBP7YgpZ`%OSf}l!4xOZhGU-TDheu?t4d)?32?IjB=YJELlWzxQJu-QpCU?m;E*0hASTG@wCo#&FW`ko#;qA(_th&5g1YM)Ur-G8YwYb zYTcHo=<>2m`SO46(G3|k1cZ=GRvq|aJYK(Ue!ORtqmGwGLfz^Ch}e#CZ@~o4H5b(m z_nYDA!sUx^)u*!#++jvu9VUvGmn(M>I*mC+&lyrGhsL?APUc#1q@>loKWA-Z5|Fu` zaOr!lX5`RMXSCk@d@oy_UN0(xM}4? z-+(l}c*90pDnv72j}8k+uTOISl)jds9e9VW{woniYT8qB)-L_Ixc5?Hej# z{597&YP|lU<`?l)bM1sT*19AFL3q13On@rT%7d0yP0S2 zH>@3^car=le=V5MRJ?|JWsz45V|aUAGWS)`Cl%dU9X}yi!*g*TgFAnl)il0oBu9P?(R zQoMgt@0fYg?-ou6)g?M!_5u1XZmao}E!^E(RWVp4cPgA2obzeXW>%Jb$=j#&-?s?F zH?@iOoDWy_Je^yXd*hfC+yj`f;gt7msX>S zZqq?Q1586t&U7831}No6(MDB@1A)9Ns3SOqbnTSl9~~ptHWCk|D~k&QwY`u*i$3FKwPfPL`M@XBPONp%oD4_a9R1i!H^!UXpA}BNyMuB_r-BhZyrG|6AX#^d-+0b1mJK z#UXtc_DE9g-8OX#$O{Qcc*XaD&kx;dEpX^593rofFY4|j6FN@6AJ?(_@cP%GY#+6+ z`NBu9k_`q4me!oYBfU{reDhw63OW*0?OkJKR!85@bYrGNq!4!xs*xp~Z1dvLiN=#0Ge{1eid z8dg1zMUQ8@1~R)zX3QwUQEwoX%WG#_#gJ~BPqCbPWL7^O47STTRCIJhgx@$myuKpI zp&1Y;)}QPZwK_N!4@Ye?dEGyUM3(r$KaN}-M9;UXU%YkChtiwC&iU&-n!TL;U5NQM zL_z!s*%v!l`tyoSGt|Ggw*`Tw}jhgFU{y4F^%S z_MwMR^}wBQJLlx}C^xacLq?odko$L0kvUm+G?p2Y9crrM-U=-~+(VDf-v0^JTg0OY zm)aSucZOm=@L0uWwnIJ8ZrmDQ+9*={pa$C2ceToTQqx$z<8)%B*i{fyb^PqEbbF=A zzUdSBLbBRGLx2u(qC6V`k3ow5^DN)P2*NAp# z`DK?E*b~aTe`HqI_s%ub{pWC|qtN-I?xK90C5`M5f?XQP81Rrx3@kLBfM_Q&w9+!1}c?U=wjp);%+xm>$eb{iGsJ)?WIogKqJVz}GjEkLzG z>)5d$$OS?Cy=;%J=($rIkIL$haLmCz&VRq<-2*{a7@(NS+h3cG5F*rzn~_GVwBLP@ zOgNoTspAX=TZZYMOw zyq6U|O*jrxORiKtzJc^w6WCWy9DJ~&$Jv9y#3$}m=HjssUtJK2>{(dHv1z#wd~=A> z!X~l7WxDxc3$iSVtD~e%u&Sn<)XZd%Qeo95hu3)$+18>PY3L;333?sI;P8^ zRsxAzpcHO)l0of%i_D3uP;!?iXAopx4>>h6=g%WLDL9YjAqN0+N0eL|Ng&Bcrx_*R zM|2Rp_9=%=-3LHiQhbXEJ{$@&0_U-h3iz)v?Px%9yw6@0$jAjqK)mF52@_ghouUbs z{g-{;va;xG&E6FB@a{_=4g+EuCgQ}I?6cAhOgUWj1H?b;O-O%APy;87GOf23k{mrx z#m>hqT?5`l8rx!R%Q}m9%_p^yM>=RiM!srmz zecf31n|5~56w$H>v~CRwFFo>p#t%^ka-qy~ApQi}b5gt~VM92*9wK^~oz7$0p_yNF zp#=;%S}Qw{;91s^Jwov2e1GAhDO$WGvT+Li$5{IBsh5dUW}JBaR?5|&)cn3YKgfrR zpv~Bg|PAPJt{sE&GpQ#U#{osqw;uL19k<)5=)vLm%~0*~(1!+OC<+ z8XKh9!xlJf3;-)Qi3T4dvS?kd@4pxZwX!@nUfP0Qakju|nw;}pt7-L+kmR5}rCf)5 zIjWcU4Go}A#M+s9R%*+>8^Pj?hdO5|UUw~8j-{Cezme;KByrqsES1{tLln!9`I}1> zolfTItgMi>Gm7A2i11=B&k)PE=f{Q53y*V)O(=llBJ83fCz z)t`gN3G8CQzGB);!$OKKWquS*)Dt6_9$!<-{X2DQ&1Honu`1?&Nh^Yg1ec z$7j6x?C0Zonn0(E(9mm;lx1d|*9s>vI}Rfp**ZJ)320v#2#o{MB0^4^E}jxN7RB~? zVeID|cBfJS9oDzVp+)9#dk{6F|IAN+jne#TVERfsJ7D8I#|s>O8L9(jrgOn|-0bwg z?8ar`Gmsp18)Uc=S}2-5be8E9pL4bzOe8REd9Uoc>fWX)p8s>%0n7Q4&vF^$cMV(q zvn$<{SM)PR|J#zb`Ioz%T-lTD{7NU}xKIfum@^lJ9PrW~Nh@*&mcFx~~;IQe+YaLpUi43IMP_Vmjq2 z)NR@0n-7!1edEeyMalJeeScvc2Rc=cq-N)&nZ9bQTt{bYv_$~zzptP50$bN-JO9o3 z7WVw+vnuYz`*N~}r}f-9%b%aCw2+ry{3<}ISbB9votU11yLLUdAu!WfIjihYoiX9F z7-3Dl^7DhB$nrpgd*SqpKzc-oy(V)p)@l&>?#ArroXU6t8pv*6qolU8Z^5edXyp;I-w7Z!jG^i`pdO|mmwF%`=(HTlM1Wn1@t#SToaEM= zzn7t+&xAAI{)?8~2y+T0o5XQ=;RMR&DTJ`ZwT=AElCE33(--ZP-vz5J0b??u8(w(> z0@;@o%3ZsxU7*Zkd;jgUK#29=v%H+sra8%6VHRnZ!+1TC&7|UDekFV69@#$v!Xxfa z{sx~C(a5c*zgy`%;xtj?voNWA>-I})cIq{@)xXD%U77#b(}{$+WwQ(pdR2tsqt_f4Fwk!Y{{ zoU8%r^zA2%m&Wsi&yO$TD{|5nzHu0#miUvI89;llob!Xi&RgKq^{jpMW}oBPOaAV` zNohBga#bn|qGhWse&W!oQgk`TQu3z9l@9yBi+;?z2^cX{)QE`WFK(r$X97!~FQ4}M zfzD0MGyT=8Ux>fR;SczqzMB&V0n-J5tb>C`#g5vd(;AVw5n9mbt=pQ-5aK>KOo04M zYqM`f6Yn>;jWcb|-zAzdcSM227pJwHew4jFEps8b&+`nS>tp4Oq@yCI){ktR?fM~= z{5-v1sS2FfXBZIjy@&(h{N{o0_fCh;+}m?p#c(QFh?7QEJYM7SGx{L#|IQF(amNyf z4;3d+zP5Fp7Wi`9mF+)DUrzB?Y{-?jF^>;`_esP*)V%^Xd+=TH=8 zhS2&jj}_JZgf3f-UKpu&6fzQ(iz5s}c8YUFUyO&^2!7&(ah5xJBg5*BY$PL?=}JZbMxl1?fxs>)wISmK~9Ri81g^iC3o zC8|8sx$Ryem(~4=v_ji^L{1De%~LR5&HK?2s?5>OK2&;C{nNX~5Yk(AwOR@AMNKp{5JfKM-z}ouoMuEsW$JZhvlXaP7EOxM;sr!vvtwOCGV~%Q05Ts{E4*nJ z^S6!M(Z|%YPd+~SYcqJ#XHpw0sg!TzJEQeD*(guXy>K3mxf8f=^DIuzPifyqtV4;N zd>6Y!1qCKebFZe}o~yKkol-tJaLev`-oUD_EAcl^h(gQ!LXlKuI3(toZ}5wErW`fi zY*A3BCBul1w_F~^F(`KP&nB1-C{}Izrj~Y7{;D*lP@uRmRbfq;sDv7q$c_SolHiuIwNGPKz7h(Q1df4d~em(8;9&TSuWf)8sKU@b|y273<#1;79 zdvR7X8iEqm_E<`6qrI8+-A-(N>&Iwu^M}6`U}`{705YnCks9;wU*yhVs>>DD!$x3` z4t#9yp~RQ^KdQ#gqC~&BqQ|)fY7GLw!+pYR*Z+>6QP>tf`WtzpFsaFu0kOu2;YIAd zf;AQVj{OS%dhY=-AG0$8f_gXJU;c6(Gs*@TQfyF;8HH+Zi@k|U&y0it!2yhMVZ?dJ zy*O?b#%|3TV`{{hLIasSSQn)q_00e!)2O?!M+{l%A$&Q&Hy3qvw0S&w`DALhAy0CHlbv-UxOZh(%}s!1^VZ!N~G4n)_F&H2<5RxQSnN>1@<65pp7g_DfcA!Ne(R6xiT%Ar={`D>wuf z6Fil0;uSFB%1utCd1GJ8-Q%iXp`N&b3#Sd}llFoM(E7JhhKZ zy8ipIkwRXwY8A~lwk_8<(YO2(G`}fx7sI=b> zyU3=b>OCNle4;pE`h;L(D}zh!1$1|~ z#9wQ~Zu2$3SiMIXMt7rj>@Dvc7vEp-K($td65m3fB=sj_KK_TZU-Ct`psOm>0&1OD zncW?AnaHe-cS=69xknX-@1sE=Okp1VuS=8s1|%mHn03MI$<0TJ(o^QHBjRUyLW;p> zXB9;N;*raxs2vrE4rQlwg&?ct9pq9jI2+Lzv(a)PWICI^9nmQ|I?BL2#PA&uFRD_z zBNat7k7S4l8Llb38)qN+M-ZJf2ldc5_a}x{*>1N+s(o300Gu7lAD(;Sr9w^0QS(%b z)0Wk`YZln--YXpkWiB!bA7oBsX!RF;Hf$p$my zeC&n%JFN$a%on#_x?f4%=3=_4>n;Bw7QS=8fU3d`(7-PFS7A4iG@4L9U|d(V`H6tLbT%Dw#SFg1m#betLXNdqaQbex-nE z^jan3`Qa!xu7EJ?dt0bDY+k^l6;77gfI5tfkF-ic9tmV)-2D(;AFyz{ipKlns` zqLBnpk`Cf83Yp~c(}Is0+dsQy+IZpIY3qYu0&&E2{Nt?Nee>h8hh9KONBFMrszMOh zEVzgt?Q0=X%Kk}_1VZw+%XT6KnGg3iCLrXb%+PBB?^FbbUKavQ(_UK~*0tD%_yjge z>}usx6D_yG>a!HT*4th@^SSb7lg-A1382~DKMC!~u*e2C!XATFm z?*s&|<+`p=0=iZE6Bv8>V;Xxs*0avA^wp z64|}*>WP2L;^L@95x`Teb{iv`^Fw%53VB8lpuv~MU`bKBR0A(XOv(X!?65LgRzs8I z_j}?ylDu%r+RgE)YK+ahvs5kIh`~5bXK+~WPQ4BgbZJ58F?{szA6iO`xH;F#^tYmC zC#bY88^1vs*%p@eKenTz2m8x+29uBwpdoL38Bd< zvS8V(X##Y|c;?+%q<9?#8JqRbkJ4q)QPuZKE*N_?rH69`{Jz*V`kg8R?8SM@fc^Vm z=KyHshqBPu5|!dTK5iBL9{)^tifr(~>-?V($Op9g=gg0|ti=D&#PMQEK2z(Sn5$$R z;jC{-${KA8W7p+A0&i4OEfX9r!;J%2-PR~G2ep|srH&d0#&CGYtKfovRK28rur3Ye z!&!)CBf>N4_e`S=*0FhC1u5n+=Ex`=Ff0Pd+Z#J! zdau%_RoQ;49-x;;3srlDSuHmb$_iygiLg{D!xpKRlr5N_;4Fu~&%+^^8ZSwa$;!md zOdSg)@6F3n3c^l1Z|-ul^aFzg$ze|3Q}p^_8dl;w@Cto3+|~=Y@2SjBcfGh3zL{Bn;_`#Z&JU^10)oSSl6;NAm%anT{s@2;P+hq^Q=fO4wCaEyvMRs< zG~k$Btb;-9^wUhNbxO)xUDh^a#1XO`D`neVk$ z*DX=vFI(Y?A^;>Eg1eR`3G-zhi)L~BAFT|jW9CN=|8}Spvk|w;tS?n@xr4O0oSiq^ zdam83AV5_+PI29GSu>)I_66)RU7B4fO`R{#4pkxo3o!=(-@C0R+q^X_h8vTC>b2`l zVt`(>{WFX*l|6O1gL!ums&!AuP;CcruooRaAI3l$<#_ZIKNV&M3d+QkTf?)`Wt(hTED}H)|p1J znX1;dTi@HQy42dq7X&(yJ^;XRxsEDXZ*7O-XCgv+@lW;YvoMk6Mw(d$6f4vEEa&M~ zVodanuPgM>i744uH9HT?nnN%q7&TtIN^NF&fUE1hN_ro zu~fP}=xL5XgRD1zqXEgxpMJ6mZ+$?`9~U5#8m*4q@%|W3nLWEn!P)6W=(^-jSQ+(r~SwFIy{=ANU*tn(tu-4Qt4n2Yxo3|(p z{_#m>!F$bPWR6s!wGPedl3I574}f9(q(b}HfcBK2+M^SFdzDrqmv$6J&H75`&6LzA zSE|&7T??5P1H|_at^RzBI@&wnR0NTbg|8$R%^jn1)T$IZlI1=#3#*$N$DXAea7`k? z1^}BLOrs4|jN77iy!$A6#Apip6z!`W`Wctse%|ZSvxqz#M7mK5cqp~gK~<5lq$_<5 zt3m--qxem!Yq&-y-jn6XN&nme^Dh|KyVUZ>)Am& z&8%PHIz;%0am0xGJece!^aTAv6FqKRYGoFYRlSpA@?Und*NBd))S(8gl9$c;ga2B@ zLTutx4`s-&&{-xMtbo8SgLFs+JWDT>G~!0mO4$Rb1G_fp8%rz+fNgLO3YggrhLkyA zy?}?Sxq9dku{8wM4`f7}7S8E{NLZUOgwXo6tLyPjN-Ktb6wTiX4^SYu`~i)Z+X_v} z`ns9k%sGn1JL}C*(+x5)#>zB*#3W+mKWXa}-G_V1-Kg8l2q;%j1%%qoY01njIQ2Sv zd0q=WVytRF+yI%zSh*wkTG3Y7f&imZEA!CD6m}ORCrjCrx>yL*jz2J9G;-5)K5?qs zVJrSjK)7v6m5T+eICfO6HKG98LdzGDJ2s*W+g6VlC-nhTFE!iuDXNvcMp-oqB(T>- zNA=1P3)a@Cum-I!!(#uE$)<)Fzr7JGNr*UOh+}T)TmYIfgs6jwW-(SK%x=Yd!%gl& z@sO;u>JP92y$-xMeF(HrJM+AcnhK4S|2BNK$h~9WW8`An)LZ&|4KuJ7NNya)hi66j7l-oP2^Y-{m71RH8Xa$%HeB+pYp|&%ZoaAq97@mg*Fvn6HXw`5~;e0s*eyGY_8zf}3`*9AneLL~UbH(?Bc3FJPm1A(N?!Jo136 z44)=0X>SyWciuMK%nm)x_c$hG*<=9zck9T7thB4&j(qG>Ix(`Fe5n-hStISWhG-q1DD97#Em zViG!%?Td}u(tRy0ghN2=J7R2q@3+c1B%3{3Pq=>mNEwMd(LY+)Q>FvM3JnLOe~U|j znc%(~8VR|$V;VL3T;#0wjx+Xm%_ri}xIOq~ z`0hJxc_#JD@okwkgeXi|qY{7=%Iv)AsJ#g`aS&?Sh_x6w^D9Yc==6wz>aWK0Vt<~_ zJnKYfL9Cv2fM^*T6@iVgC~13|b=eiG8;3=Yo`esc&l*23WLlXuA#-c|f>mn?^YH!K z5APq2$Qy_d1_~(s0D_-4Ra+foF|L5J9|kQD znwC?kHZfl+`ssc~n}hE($+pY&7#Lq%T>Ms5y>3YpA!nGrgAM6Ac+mTnw7+}WU7 zS+LHF1m<}Qg%|qYNm>(V12EyzSOPC_BGW@m%Om2ZKm&=qwPYI7!7}yLKXI*-I0&S3QkUlYWAg!`zZ?n#bz`K4;vL~9B%G(vlxYDhm)_C>HCje zo2WL42^@^Bgqf4ZbL;U0F?px_jjJyEY4k&5faZ^}X0bNC4K`J<2>WvUQvkH)>H(bl z;uumT&+Tb&=#zTl6D^#1RK~MPJ3{e z=u>~f$!-9}WbwC@v{Bw!iG!Gh{E&jI`}`Xd*r^DQMcwiRltVZySBP!+Xu*Y}-%BtQ z)45r?5fD`#SVbPYWqOWXi7uBUD0kggbe8?tPd>G)6T#)nc^rrwj z(}wq_w77abykV%(EsXKB>2AKz!$U9KCS6RnbJH) zNVhWTvYAwwD#w)d^dGy2vu^netfg(aHbIHyPys;x7R6jgYvq?y3qzb--FXx&cI zp264qB*HMw)oG6>S7V-u*j~#%<%qB8LKTK!?+vn*u55kaYTX9GAS$=Zg6-5S|F&`| zZ>hPkMmNFXY5pLhx0CQ(K*e6qaIHt$fS$37#pb^78C7TOG1E#>m2u zIj@_2ZTgtCh`n7Hw&a6q-bJ_EQXj81*x)ge*BXK zzikgOit62@Cp+V+GQkFu4_Y^!9zFm*5y{2N_f8x4PPsfXF51%0RXzM|>KWJl$v#dV^1SgZ?yjDyML12 zyTN;(VXVG+{gujs<3<@JP9Y7IHX&eU{tYz;Dxmurp`E1=>bIsoK0dL=1F|ENA}Nmp zCj@@jz~lK%=t07S9T$}w&9w?GiDZ6=OMtl`Lk)&D9P|rEjYlJ`EZ##NsHJO&Fd-+D z#!^Ik_T+{|Y`zaG%cKT;5$J~gb+nhc7060u(_sXQHTixF*dQrba?C3$k_`~nhoBT= zG^6x-zK=d@Wa1(mtnBP=9gw;ms@d+RVlEaX@4YTua2y?{ONgv!@*1)XG zJIV(e*bqXC&}Z?gjt-=Yb*%uYjC63*J$!f9?^WYBUGg;5<6_Ns>^1X-$eLi%p7cqc zvSb&o$gHd3ej-CiUN)ag=vujZ%%aEtEf0n1DphL}X_CIP-|#0bluxH*$<}2mX?mMZ zE|eLd`y$BtZh{4Svcx6;x19u}6044el70uu~HqqvFUD$Z^20v8z{6hGVpBJ;vyhwLPVTN&sH52hs@h zvbM(r2|7r9gBBL9kgBDgg7E`p_y(gjm-B~@(U)u#AAwLr_eD+bqR_|S&tb$O35a)R zLd8w|xOdXWIep%2rC_3v)Z=mGWFG!vO!$oECINH^99$4jjlD1Hz%pt@&e7urdMhUK zsUhg4=#(&fI??U*xscV%R9+CsFn31C`fBoRV^h?+R6l{NTbvLO+a)B| zijy#z!#_=Sbkuywvk93JEKcYO!E6gWFf$W=fcwP6x)nD!zGQVLF*M}wS7sYqhm1zI zH=d-+Kj5D$Du_h)(cg`X=~VtFb1OFtr(pQtOwC;7aj%iR2|(mKb+F&EbK(H&5h5o? zIvwV_IgH-lQ@3AV4U46vVD6vfNBggF-O<;TE=LsUpL=TIM6l)?ma_Z;6RtxtLJ1Fv zlZKk?(#Y_U=yaV2cAGi*v4F;q*AdXewZnyg?&1?)eZ|7P1S>FdD%j&ss1G20(t!k_ z#Ee?!YZ|}w>VJQ#-sl7C)3%KQOG1ZyB$!;?tVqe8VaoQ_o(m}J1UcXuA3-?ektdZv$KmFgM*#gIP zUsTb;4MOnkhjT{j6@dE`b%y$?_dHUDdRNl@b9>8Gc((ku*~Zw{GomFHDD_^&DSkD8 zUBi6u(EB$bUGK($L|t2{hDy6X7lR7#`ygefsi?(rE5&9)6Y)uvkI5=NM%NdA@A{Uw zKSNM*&e_Ob;ec>~#!~0qLLu4ffukmkEAaNKznbg&L57v|{Dm_h)3+I8V))(LUB@bC z4L8g5Rfj}!`J~Fyz%y6f8q79T+b*~To!Bds*};vO%AU+iDAxOla=!N}AnNtFjq4ZB ze0F%-i&Sjx;iBP4MzZY50RDNk3`yk-_}eYf!eGkdF0UI`B;Iq?)rlv40HXa}&Ynbg z4vJFv)b5c%(k4!Pw>~6Y1$G4^TAX3=q<+KyCXiG z{f1QnzGJxku}^n-PGx8<;>BosW4 z3acsPOXy=X&nUbj$Ia^<9+K|iCcFknzC=i8yQXKM^cQFKo^Zu>dFb~=V(zng-aye` zl1kESb?0ux=2QH26U3`xF@O5d~FNXPZM3C z!>)HZZwH-DWy}70ihdm^+C7jU_n+usJ$$MQu48If8j-70nTzGa=XiQ+@s8IKnjJW3 zb|A+BV*Tgqi6Uw2?fA1Zy~(#{lR3jDuVYTEJwZpUJ4S{%7mgg#zZ{ZcYhu)`+Z!%c zDdE}hHDS99-8F-!(+R)!$R4XKf^crW`OO3LAgRzG4?vL`Sr}pj7Ml(fds?sduQ5U( zOmtfy(`znvAv<4|FP5*VP_P3XS%&>iaVbZf(oo}0A;iSlYHw0vei^~qX1EtVfJuz7*>p&vDXA939R zu>4es9glN0GqqC5oEfv^v3eLZL*D|YepezMT-vSjJ_hDdM;;c`208-85E z^KVmlelZ?EhkwkGU7C@ql)=vgCd%zby~m3`;lcJRQa&rgj}r0n%-GEqJY5^nHUm2| zd1d(hm8u2k1drOBx(Q7?Xn zbDPx;Bc;wLs|g!RyG#UNAffRl#=Y;-lB!#ZtGZca@yn3E(FO)Qk6f5f!7q1TBB&#Jxplo0Th80Hh<>(B~0u0VQIOaj{08&Mt;! z+ks^TN|&P4(Z!OX@*yQov%0|Ng&#YN-{y%PgE>VL z74wRS*SADz#FK0##201sb#HpL;N30oDvZh`@0tuX{#+aU`BuD_)P)`yC19dd#}=gr2Yb#F zm&bQ%zJmWZSS(3GDmND@S9Y%cve_2{EuH|`h9xCoj9>nOIku;R(Cf|#Pm{`Mrk$%K zG~mSE5IjWe&Io>#>=L{gCR?jCNgCkZpIX+=N^3A_RVeE6HAna9wZkkWe8(^%70+%_ zK3WijuHPxLp}&m|&j&xwH7qB5AxYhd z&s&Wqqg$Z?Ca814@C#4wYHSzE<<;ar*ZcJau2e(>o;)~?L78t?2lsaG25Obc$?}Au zxdKo|{C(X8(HAr^kJR=vc$mnLPT?)N=7-Wp(M_F|MQ{tmzaLb39zvDAz}Pz>=3g=8 zBm~g_K8b@vNYdN&PNRg>vGHx?dQ(C)e^q~hTx(fmLf%)5;Ga`4`&4+uNb2ge3^JA^g2VX4I$D} zbmFkrlvo0EZ%m{(-g>vDNPH;y9^!fv4bIuSf$#o$^fB&W2lsGqSFwPBrdPk&5t9q= zarl0ooy{%O7t?#x?Rt-HM_90F?(Jg&gU4>)LR9a17Ke)EZ@6U<2Lo;JzpPD9m9#iG zN_BPZ&*$u~5nw-lJsS{!CW=1)@glP+Nlty|p3}lr`)_i0T;_xXMa5>by5GP`3Ag6D zrWjpg_YiXbDkTkgr(XPEya*$ke1U6vkcH;SPA+h#WRsq3Mc^EoZkHy+$6B5akn5Ko zWI!dXq-zaD|H>9-Hl&_pU%o+#~t+DE?BH6 zG(q=yJx+v;6PeR}9v2JKYgI^T9j)7IJL-cJdGS!0V{>aMhs>`xH6E2=@u*FDb=xU~w8%-{M8b;{7xpi9ut@OSls( zS6tY~SnqR}MGhD4rb^Dl=f#aZ&LW~z@ku@Vw&0cM2aah!EKX8}>csCIqSFV zV82S2+^zK&FAv@fygps`N^ei^IWF$ibJ15z3h;S^*v}vRkm0)bG_kCZ8|IWLB+~l9 zOGNWBL`4*mdv<+V!U(H-?*>}R$pdy1*Q_e2L(hilbq5E9!@)w5ioT`!3%UGd$)>6-^ z5T&-9nIb$NAi!MwASJxdbNfa0lCabKI&M}Tqf4Y|`T6qyLJ|W~zT^1gH>Tr4W+{in^lKXWoT~3h_sl>V2jUe*0&73hJjv) zhtx5?P>wyaJPkKmwp5xyfB5kuqk8~^bbj9cW4{GJ<4 zGhDZeYmVpm%_2TpE4iY#xT@FVC7ieAf%Kf=sbh;oFJ^y!>WVe8L_xEN#(RS*o_E(O zN_jDaz9A#M`&BNK4%f?8^wx`dXN1YhP(1KrDfbifN6i=e$6uVp|Jw<8zRr7BYXx^- z({Pd&DdKhoT;dR$VNHx%V%?C6XzE3N}B?V%e3;`?X)ypy9NIH0CIdWn7F_t z{&N2)gNd8rS~gXQ%9}(l3Lvk7TCte;8MdV%%wF51dYmhGE86h7V~y^wf#x&QSWGM^ z*5^$4jfK@WFn;cO>fP)@&8gSK3~FI{kot*f(&4CfQEGcg}o$%`8 zUN^y&m5nd{y5~ zG}OSO6_NI);=vR(M?TmGpiwi5Fdx^6)&KeQ^W%-w`amZ|@G_>=_ZI2DBO z%+a1~RV`a@p72WZ4zuw(xAL}o8TvD}n(#b*OfGms`SO9@h3@dH$9&9_b)sVvPagfV zMH;_W{k7U-Ddu`u?xSz*x8byS*bDUo!viZH=@cdR=TDO=z!mx8f%^fu$ z|Ac8nYQIx;smK=t+Z!V02Ob>Ed6{r`_fGau%@5Af(|6gM?@@N&d#*(j3?e^h5wJDk z`fJ?O_f^4tf>&A+?nQ2v`S4P0$`e-wAIN#fr-DD<^|@$qfAxaxxX~LA=~{i^0{r** z8kFb!@nIDIpU3gycaHqJQugr9Z93!qd-ba~1B#31ZrDI7oCd)b&n{G^rQG-CJ&vs6FryP4fK>QF(fR!&;wNv4WHf~0?G`<{lC zEb6D7AjB?I7%@Uw;C9dp69PA}?|y(C?`@-!zlfm+dG<|+9hkrBWp#d*Yai597bI46 zB0Wp-%g>Y7Mx?}!o1Wx4{xsBJe$gQPDzXM2+K{*^8-lKi2MX0}NV-;LN~rnOw+dvy z{0LS`>#JbB&vWqmn3341TqQjc+42t6zQ76?iizGaz?jT%!8!-OM6L4HE%BU^hmGKd zLmY2JF3Mcczj!jm#>GoFXpjM7bu_5QAXMZPn*z0lfRK|+sQK^r<3Gv8=86d__h$(x@MH@a89ITJGuk6AXgzpb{pYG*9IMkPDTm3(} z&NHZ~=a1JA5+Edj&^w0Sd%&P5A%vb_=)D(d(nJMB{{a#Rz4s!$t5hk1QbGp>M5L*7 z5m5nALGj1Uz3=bqGqbaE_MDw9-{<-4RZ60!C6xj+pPqW zIaN>WWjWz$00UKGre=^;DEobY{HM|o%T?); zp_**I4m67opT$qPEx8ao56%Z;X5T;Jl2 z1R1I|>ni2W9^dPvvU#UVL*36!5XmakZNALJIkPXkd0&ey(#Nb@78T;^qi)_X6TQ(n zI@!^H206VyMTSr_>O%FPnivTybcRAnRo9t})vB}2uy#W7ikzKp zHJ%w7Tk}BnWm;TCt5LjSc;vKv%Te+PUz+e|dZ%=(WaFR36yBLr1E^zI;%_mw?5;qZ zO=^Uzrm;Lny<7m7FuUt~UM5$`I2LEno*RP%if;SwxIQ2!IZ)xak9%xNl{IVVMX`#v zbU@AS3v;Vf+Kf0Zu6nE%k!Ydi%bhvIQUB%DlJ=(h7{rM^1$rea?KsC*k zPFb1Tz$h;{f0p!+;l>_G{UNE~(^g^xg+Clfh-d>p{%Yvlx_>NXP?2Oizn%Mlv#6JdZLu#Ug>Lv>{Wf* zF_jM&rz#3>^D>1hVon<7{Eq<>73+}fTWZ4Rz)Gojgg)ZY#wROYw%LA4xp-2tgez81 z^q(+DuF?x-AFaXLQwdRWI8J^}k_|2^bHZE{bv>FTv4^PLq5on3744I8MY}L)XtzP> zBKURG+}1-VYl3yk&6ZzEPfHS0&plIyIP5d};Eb4z$0aGNK;FLqlEk<7;=XK06U@fS zF9*ArO}hR0tiI0mv3zi~suwd^B#z2+y~+xt&I-`{02%mQ)JqsCibDS4i34nMg$qDzT^{$7v}xlk8U^%X*O zUXJAIgd1r1JEV4*n(}o=kOzd!+h2Fyc#$e}jb51DsRHF;^Y=6Oi)sIV0@`*mjEs7) z+bRhfw<%+YWJPw$XgNpnd_4iB<4%_hE$%`#ksX*diV7~f&uWwEb&B|aJL6qL`|RA| zFV4lU&9A=19fEw~vgv>%`ZZwaRJxN9TTid5hOydWZymomiVOfoTrDH4w|b2a1n+eh z5r)`07$vF_JNU@a!(E%pN!d+c?r0fQ;me&R9kV@<;i0BYPWAM;rMS76g4Z+V7dxLDhis zp`<1YS*GL4%7{iyEXbyuBVZstjXz;k_G$j9R+5%5_(wk)O16!Fkm?Jj^q93zl%*DG z{Eg~Q9qar;sodB`qwv8`ddwz3Qu9VKF0g!mSmH(wyT_qw#b$g?y=YG*3u+EDr&neh zK}KWAknE91NhDh!$&2Rg*n&8BjP#w26!}5j!v|FqM(27Y&fO%!IJ$$A6Q2%qF33Cu zMJGlaHmsRSTd9o4Rrg5PRvA}DNqKqECp%c=i+nLqVGuXw9zAGk z*XlQDSd18uDU1(CGam!8hnp%`Fm*xOqqaulXEND0(a#8nXm{pLeLlnRW+V6R@glpr z{LN&JH6y>!;&h;~Y7U8H-hiwIbA_=O8(nMU=yDooyp8G$6ky8tf?U#*#;Y3zQBml6 z#(;qy9|U7L5Lm{AMe~uRaca&f#i`i}O%uEvjbIGng`XcZsU$Ct9hW*UM$31RxFTxS zlNfzluV*}-I4xBKH+n|QLUGo`bqG_SB^cv)hb2-dmXfwL&_Q@vR3D$>NF^)*&B5so z?@*ZEq z_$2ar_>BM~rWY$Lf|BtcR0$WWgQ!|P)BTk3f9n%$3xbo5^FB)`3rBOm805K;iSZg6 z!r>}k6|I%DGjSkB1^7BH{*RR`FNl=cHYwBrweRLABA{PP4i{7#zp4hKG{&s>K%4ik z_Lh|N1Tu<^kTZJ|W8Vlu8!Y_nZ;4wY6c;8>q8gTr!GK0IVckw-9I9?&#Mo!@_{CJ*$~86jxY} z8z??8lE}t=<$A)M0M;Sj*A%I2@uv73j05;iY1<-ClxmDW_QJBlOmKV1mH^p@UQSrBg#e^_QHU!WVvqW2eVpjWDJ!#>r z*s2SpA3`ub9%5V{m~I*(>y+j-;0>GbwRXN_n>`wMOV*o%bsc_JL*4PMryz7O(i|oryPh2_BM#NCBGdkz1(q7yEgztqkvc= z5{-7hK%;@WaG-%3FeY@WZy6{90_xLM$L*|%iaB=ASnHvrXm^0UsS9-&2mDn0c>@kI zfk&}BHP#G?FMupjBt01th7M?oW;T@pV!O$9^<%cojyt|D1^c>m>q#akAR5D{!Qr&+ z_i9gN{T74-+=b{rcH!wv?45aCC&z6!iwrr;n!vFRT&w%>7+7RP!j^-LWN2L?dlP^r zD$D8DT#A`VW;76Z+&McrkA4y34zzvK3ZBUR@S@t~e%}YB{zT?@Eo(IS?v8Gt3VIqS z(fF^zg~s!vfoNZ#5s_3x1j5Ze>bkjD9CA%{CR!qvbVJC#G=0JzGhm*4!9WE~>MIw` zF84Ly6TWUJmQIF)HZ2QZ)=eU(tK6oGosniNBwye;-?mH;xwDa9<-h#<_esWkq>ue% zw{pfiZt)jYvo+M^EnOw3yt7ke4#{c)qS<|eB9Xw~xgMt733up7-sSN&dpmskS6K#DqFpb_y6L0%p-;a zPPLpUzUciNzTITGyq)_?3DL7m=oY5v^@M0df^LRiQTHo+1c<=TxEZ-!1W$0J5x6vn zznt+NoC&>0vN5Vv^VkbFY0j`oOMC|Qf5M-VX7!xhLm1Go85d5K`}iZ(L;e{Ud&o!{ zXF}Wgp$`)tEG1aDxfs*~YZm8lZlq9=o1_-n_`G*JO}InrE^61C#`Ev3v&Vip9fI4V zDCnUI`w_{8G?9Q`)}z$5JKP2Mf`TI7z0FXcodUAS>HfcR#-cr@hldFd%fSy119ayylGl(bnsZ0e(^ zo$op6_8o}K_1M9EcFIBFGQlrenBIIyVEw>0@dm8F7yp0`7%W2ys|9;70`IkuF_icR z@O`y!&RJ%1LM8`Rt1Oh!bcP#NAE%4$D7jJJW||c8el!-QcBB}!e9n2#=EN6ovvgSG z_VNBY)A`bIu1$hX1nJ~)B0EQJz8v|jQ-RGA+GjDn*DTHjyOasOfeCfzVlxKoj zpzRMcw*`)?_A^PJLE?`-e8>UDBm(XC!0D4-BqNhJC|<5zIL!$G`vlQ63^-Q_rhP1~ z4si_3om`GU*}KyJiaDgl$5q9mxp zA;{!i5d~CdbU54x+&2(;O%8w5F;KXj>_H)$Erq0pxN~0$-ch-QW=_B{Ger@0oevpv zKG3ueOw!kVq7cDF-9I$P*l2&y4dy`qdYCzy(xt@W^8II#@uBN)9Y6MNG%IP@i)8zJ z(Du)6y)~;?n$;t#4y%Fu3lwLr-2l+tfMn>#c;_jxP7lH z(HBj*Qw!pL39_Xl`5rRrM-=q0-Rm#J|1X{V#|y!wR_bx7B1YQ9z)oZ4?(VZ&tMLh8 z(bvh=1>`*y5bp4s;U44t0-hg?q`L^F`{PW3I>Dr+Ux8hTZ7;|os=Kt(t~&;PXy$ko z!+kepL{i7MiHS3(netMm2sB;PvBbOeuyNtunn6#p#YB1RO9{>$l7Rumn@D>cymOi` z&IF7cNEoXFM-MQe2bh|=qKjq|+H9EUx)Sd)0UhXogcdR%jpc74sVRZF4ee4J@0UKx ztCYF>`t~zRE%JrO=~kaRNJR={uy=3s!P*tP}BjFp3 ziS1ss34ktEEUKOZOa3HqeF0@&HPXbXBefu7rii#laq6ksc~#ndXWzk_>^R@}aX={h zSIW(~g- z@BMVqTiAPDrBm2L-wMiktuPWz{MFM=db9fCeus+e|GI-v+Gf>2%cm|`Ew7vUlK^VK z@wpny_Hh2^jAnx6wrl}!H%CkhR6Hy%@BfMJd`g{XHs!RaJ#Y%(r9V#7W_|l?E{OB} z?z?MWaK~_C^~fI?(jU4RjHC;+J@S=_xSQ{>#9Jf?Ud` zY!UUQW%ltB(|SkO7^dZ_0^25JiF;uZi1ukLSTqhLn~A8SpMR(I6Sy~fwXIacGFIs4 zGxpF6HULKju6&I%U;g*n){J7M_BLKta)r?gICHBhIqDqMf$1#QI4~*jKJ2TvUg5#B8V~nIGoItu#;)^w@5uGVsfu-QbE^+ zBT*DLflQLfaf_wsGK&H!vKu9D(zFHtZL!r8DRP=7B z`4E9Iz1%Ms$SF!P!pIsX{jA(uz5m}JU7Den(xjzSmeIbTg(_-^5ndwu^_i)s-Q}a&lXQsIc|%; z8acLN*D?{$*6@6=Y4Q4t0|48V?{s0Tw>Wox2o<85^)T$uZ8`azYIRQ{UD6LwaT7Wm^_H>njqF^X&5%DbQ%q($cWX5&ZlU| zUFXXkPY;GJTc&Ftcj)zCdt|p~BupSa#tX#qY~#$z!Y3iaIeZ2mGvPP1pJ6YCxqjfH zwDYR3YBnEfew1Y39S#xtuvuN5H~@&OU&2cCdQ#$rCFOxD%(r@hlqfG_tJB%SpmX}C z5BI7>_E1bsnwzk#0ZD;|UPBcL086lfIA@jJ^53YDP7p@Hxczh^lW5M-(1+oh;B)&% z*LpSaoRt@|Jfh^3dAV4-C4fVVMfzDLEBZ7=Oen?{%#4)aF%p<{i-|8JllSVv`7g z9*&&GwpUny%y5rcXOYN!ozo+MNH0Gtzf8*Y1A4am+v2%>?vQIDVObZqHze50yJvOw zbW_c8hPduTGqVQAYHN#mi#z?D#hQgC&88SqICbN{p5Gf!JNhpAqREl%(sGhZ5Q&@3 zoGfR+&SH8Un_P5W*${F(aj(BN=ae!o-FlBToDOhbs0Xh2)B_wm5X!4)!nP=)hSRQO zl_iw}rL(}y-cK+*Gi%HpOT$$GtfAt-@JHg#tusb|q2f_XkQ_l&!VuRGqRH;=raiUWm|aeOG8SEHqb8 z4XCVWA15mjGx>dg-e`Plw`tvIo?=f6DGi!G@Hs2c-lF&5YG*dQimTJL9z>EKuOwWX zol6a}dWVehBL_WzRK|Y8c1xQ3>v_jO&;X3wS5*&V04h`5teXF)J)>c7@64;~)Z)xJ zgNRO_OiPDvqGElppu1J9;pK5c(|ZIzI+{o!BSPvT`!qnABAPO2V(|j1Ui*N5_4+@X z8mXtgY%y8@XS4*v_5T=1G4}_dwh=>k$DjW4s3=aV@u|XNs-gd9UA70a3}NpPOo(;e zbmtH;IBn6503K0PrN8>7BHoCjLM5EmpNvEZ)#LW2vNt~brd42(qX?l_=^U*S7uVR8 z{g1XhPKJ0NA7V381DzdaJ*w1ozv#hjdpe(}Uk-+SymcP);a#%hE1piPq=W+CfeB*HiYgmS!0P7Tsq|p_)>{}jokS<9K z70TlEdvVdx@!*O6?L<7^FVU!nH`HqXWc1j-{ohREh+g;{U^v6zI9|Gj8sXK>;8 zs8Ka0kz}P8T2XD&5zABjgDNd@jJRyP#$9td%X66$T2;%b`&sg`)?Q)y1C=VI{Sgm> z$DR2*U97xg%o*+Y3Ef|bd}6VJM~_xuj=}j` zf4}NGU?p~0DH;FSeiGVMaMo|W%^hPq;B%vJyPGW9Jj zo;!a?M(P@<#6BfmR?5Woe<4#Y9@@d)cDofaUfP4!^HN(gl4L4iB zfQ#Hj8rJnPFg7W|5hsqT)bf9@+3(wB3Qj|?E8sczadFhDLANpOBviU1b{5UrPsj8c z3lyD9lzBTW_m)!!?T(RQ0L4S5Zc(3J1FD5o;4(Oa$rX1>%3XcSCMMSSk3}p)py@yD zHU9CZ(+JlRK!JO#*mP#R(9p(?sO>eXh#5)74fD2zcN+<0O3kcah`VOw@VYwhdI*Qv zHpBG@r)%DPzxo)|LjdANnD43uhQ>gJ@u495F*iRk5ptZe7vO;wfd7w(amB`qRy?~X zEzhtLJ0L2rhT)Is*2l;beWzbF{IKpV(YKdCGF|gG{sW2cc-2u2}0FLhlU*E67NtA}FtVrWxWezZx4~KP@7>Gm*nF;EZ2lG;}Dvl($ z)t`8|J9aL{dY&z>4Jymw)*!Tf!v5Lf)x9{Kr8wh<2`oMs&lG1|42_|&SqgB?A$vSD zE|J9`U933R-F~KTIHi_VyjmhH@BNZKMq;{7W#MMb1a&EfUs{_@Y8sfe;*m+etp_bD zhSyO1EaesSxH@Cy*M`*A09* zbEk!|r?7gLKK9|RVRYUHDeT)vt)oW>!Nk^Le=SiaR}tlJIo{c)2^P_qu)K zr*(-cJV}#ZQoB0o$^)wEbuT$xR_C)=ajOk$sHLhl4~0&?Ij!D}8jDmQAqy@rl=uEp z+n;T6Txg^5)fmze1TfyIPvzN1%-U2+?YD_JD6)#u{gF^qkV9x&*t&laS7o^3B+@7& z){njU8Y@{h_f|6}HubKg;W!3gPARE(e!fDY1d#w`!(_eP? zt^s|AZbq-jAXG4eCZx7qQ8G$iX?|#)zmN?OJERmq)en?MrMbL)i?hCjt)5r8%dQ>a zV54au;r~f5yf)cIY^;MnITza;?~Cs^z>(tA7T#)NEzXJd6ysTobv{mG?CXZgC}8uG zD1ONnZ+`@-7`SV|T;Z%e5mVRqPJQ`kG#fyem3xRVY&)NFw2P6PJfv&?#|lN$Sf zUyT7WKGPZ-R^SdFk2=4||J6&cTZzsq?@e z*GC)pn@%jA;ugf_=@A3oUVIXpuKOyg%z9~6hWQ(VGUkjw zK(bi?^u}Y}j0EpZtkr%jehbJ|7+WYZfyix5;!BjB{`%@vREd_u)y)iBmWqE3@1#|WO= zZCKRjf?Get2cYde0L243^`4u(%bZBH~INly?6Qv|=1dz>8FcZ4-XNL5- z6F=}Er8RZ;yb-ka-$aVrvS$b&F!kbiLbCO!?F){@T86?jQYhpZ3^}*P1U|mw=&EX} z?)Xc|p;$r&^c>?10U{Lc{P*Ew+Bt!?RI>pmB-~O;$yh~-Wn1L~t*ajy8O+L1y)`1H zS4pu_Qor%D`^R?@hAFCzpRv&{u?pKlF=t+QrEHP3B|+C~CEFMpba&q(~L$ExtIKN$+?#9Ss7b7wUT!z`+&ArclM=Yp}xhKaDFCm&K9_x6u=QUU>Q5C*8)#lhUbAaodC+?%D z6K_L1e_?>Sqo2_6KWm1Lk_!(xH?FzNxG`F|K{TKGS`)~|5Rb;4n^fXaT`kw%MIn># zbTt1}dL(3)aj$y&j@po9GeBuz%;1D?i2MjEGfFQTA7wg=F`ryQ>nT%(3r4_pZh-%- z{r-(DcElCEZ9)Z&8QvZSt+Dfh5^#Y*t1%%-Vo=P5XOekQP}tS8!S+F9x_ zFnk%;`>ndX0$fZib2KA#7d(FM@(!td!|wc7d+x8{xtE?bdv&rRSPX zxL%P7>MTlB2Gde?(iT8@#B{~b>fB(Q$8TsvcA5<|hB;M>-6t_c`VMPK^mPeNAp?gs zWa8?W0@{drS}DUQnjWKMOancvw1sWyPsoGl9n=7+6V#M2RL!8*WB!>9QbkjT@-i3{V8p3}&3CL~|q%u=-P zH6RKHoC&y?`P8Qr@#*P5UaxmUYq@C;)&YqfFWum#Nv{EtPJqTt@qL+*zV}a}a@OhI zT}1~nTqdk``i(|C4)dZAYAhbB2wwq?b0To1a)9~nP;sf$T!#?>uDz^AhfY*2Fh`+K zCAARe-dN3UIbtDzH->cGazs5^*W^Jm-`YZ=S8MSQ+ceqoP&w-~&ntJFo_Ta@zTg-Q zxRBHgB>FqgNBG;=*ArXHu05a3X=tmaQ}x&$XE(%k|D!Fe`rS#iwIrxBI>1d<+P5DlO=GTz_q5Jt)4Fvt7CrBB(T(TqChDr<)?KvW6 z3Yw{?ISQA(*9HqbU(>_5>eK8>at)dtcq7xI$ljm8m38vdSyy~$&%niqZ%?eQe{FVt~({k#ur#Qtk%AW z`=u@?Bg_Oys#@J$m1@JG5+!-e2s3o*rh6Gg!<=t=oLnz;CU!ngoq(SLjaZ{Pm+$I?K@GljpF z*Dbu~OSAk|B?)dUF;`OnOV+I|unnPSg!{2(=hjyZ@Efj#R^~3&1=!*^g#x=WeRy4i z8acCm5R`%cqo|!(yM)#kO>Q_ZqWtIwrDo9Iipe}}LYrM)D z7~Rnifo*wYjUgY4N41RwasjP1s4e8Z_cCy_hda>DyAOL>=;1Y}pKtAY9z5??qYrb8 z(U?4S@VT20 zi*Ax4^?5y!z4#ePSs(wA)WBa2j^5FUHHufbKbLUm^Kd}&byHDTOA^eqj3-DOZShLiB=bX-AsMDJi6i;{JpF1k{TA9_ zP421D1pub{UCoRn_H@rKt+KS7eC-{@(d)mBlRk`FN}713!{b$`KlzTT%~LkHq3S}2 zB-Iqa@BYF$^;)~Hcam3z4T&d%2uJSg{Z4x z^TbJ6k1Pz<_BCqXps*t(#u2e#j3>&bw8saM#UO=!_5Bb{I@kx0kaft z5ir-v>*Yn4(d7J~wZNyU$vXg_$7=(wvtc_JZntdCfZIPRn-P`^!2TJDj># zVYIu1fxfXM^vsz?mN~J-BSn+S-o=e`vauI z#G1DHtoj!2#|-i%TyIOJ{Q$$KTO?6Aq56s|$}VmUC~l(AKW$N`(1rq~sIL0@F8L&f z-}R&P&~HKzNjdRi{>14@ZlvC=pHO7mU@Qc&)OP`9PIZXsOtlBJ>MbIB#uHNlT_&tn zBMs8BXIhQ=$t-d&#Vm1YfPd96JAl^Cyaf<+HKTLo4pvd^n(icviqy62Ddq76F}Ugw zUY%7ltY3dis;Pq`6}1TkCL;3S`#2BEzv4Z`QYv6tfqS!ZO2%bBcD9CSl;tN;{42}c zGlvkq=_e4$M3Ey;V5XlQ-^#^n^}c9KQkZSFsnYtP{pQW(k8V{t=!Y8-oUfM8hgeKn zh=Mf#$ay7;f+-7ds<>@l4s!n{4C(B?*-%Hbe-J^%UJ)}=UW(KZaa_mW2g9japO=It z69fIkjzIgvGE&H>IQG%*S{_v&0ZhT%1o9 zo@UL!ij27Z@Tz-7NR8z?yF-u?j8C@Njk#qXe9;t!lT-BwoS-Q0Gbym_cte13$8w-N za@%aQ{*24EZ_%hkW87{ShBz2E`=T7V!e}Hh93EHxf=qRm8GtgHr;bvl>mBninVcmgjF0?iS&*%h5(~GIem2X7; zeXm(+RF*Vf&nrdyY_M9Ohj0lDXlyHf6Syck!Su6mjw$WcwWv}9UylnC=P)t6C zRt^4NrZas-DA-e9ILzldcm4W45HRnAF0qSN%l+%`=cV)f8ThM?VB+?19n+TAxE`0 z;&*t%*hh`H_sIUV~@cAt4MmfQk9&+9OV_w?^^A2>ttc z9@*aDF`++aWaGu37jhnm*(+K@Nm`qkO*_oA1j~AT#qJoG7fn!7pAj#Qj+u0;x43_s zfuznDmh61$!P7{`WV#p*^F@0KzAG1_Dyg=zd+YO$BJ}H`2f-#Ng929|w(5xn{9Qjl zDk7GwMLA-*s;HcHTsVpxc&3d;R`D;clMljFv#tmyAo`17TrUR)e9gheJsG(yP4j~K z0*AaGiJ-m@v9wbsEXr+)tT#muZO%v)29ifFCoMo}8DISEvDT_~6)85v&72QcN8zdt z1&%6u{7n;#j?!{?q(2(8Kl1l0(gZlDKO1PFHIN3g*;xXs z{lXCJF6f7ZG>fw}Mq95e6)@-oZcm`QV|io%n*wc{#c{342}mVz57L@t2Uf6VaFg4|+eMXj{HPlux3YJ|{jt2%O2aF3k|^XUmw0io?xe;C8Mx1&k8-fb+gzU?&<$X!ld|rJ z(Y6O`5UJ8=x5Yqx6O zfbp)ZUO4+`JgSllc0F?oIG@a}Z_@dloy|6b9;(@6>ELfgwjDjfZ*zwrwr07nO5GB? zMg3x@nOSOXSHXcU;a3i7oo}TwKtJOmMBA24=xxWIH~^U)Q>wu~%#OF69(ek!5#>@Z zt0voo*mHKBs(Gf%z{h@xp{`_FGPmni>66SKfLur=;7X_>3s#^t1gl_lRjzbjjJtkZ zS?-}~*3M>){Ij=S%?1EiP>y%x9wVgZ$It{>yH{m=mbKG`LBHz3^!4S<#~DlQ+%k%h zvRKEr!J%QYxY#P8PGKfFzUvv`9dC#&6q4$*K(MJVX6ZssOxO3wZna=oBlsfGTH<~y z#f;y;BlMvk&bbka&WP{O=)9{OUXhf44&YV)17@&I;62RIM=ZB6N@rI-E(@98WN4kz z_Bl@R*psuhl}>)1X{LxK4dKJGAQ12TnMdIP64X;h6eT7}ia|^`a6ukfHdpK2Ga~;o z0+cO%EA6J6XP-gS1B>NT$U6W zan78>1-(5(a6ob>7wE+L#`cL|=h~IbYlG>w;d^EF>zf;qt%{e|W>{~2O(_S~8!pW&>cCvXtKxYE3p2LpI=E=*}7G#_z$o&Y+&Z$Yxq?3X3sg>F$acgHuNVB|4p zn}m?Qn0iK@?FtfZEDq2AVV032MH7Qu9b_%amd>_SEMxS%afF`}g^Pqrs>blDsRfK5 z#^`VHJduLGr-watdytP2KeCY6A~;6HK>FdVrEU*}Z$kEYFGJek&s!k#bgVSR$2uL) zJzmL71X$yqY!>_$^C&xgx7+tOEPz2UlZ;OP0E_;pfuDrb)&MN4UAr$Npl<+H$tdjw zKqPZ1?^hVdk-3b=U}u`9(Oym~T%5mp7D zcx?vz-CyuX8=c@h_N(_`VPeu$xP(*;{}>x9B7r2h1Ss$mHEbpf|^Kt9CR!g<*phwJj8pdnZp5t~o69az|l= zpjGMy&Yop%Dj+pm@l9v2KFnl2D2F{du>`~<_jbekWNtw#ppidJ#j|eKpyOYn;Qffq zTiiDs-PM=TlH+1Y&L?#N5k5KkbisYS>ZE=kmLM&7tjZNT~{#2@FO^t3Vr| z2PbjQDp+oD@Ni}4kTWxtY!%g+*h|Xc2-&Pr6l6eD1@xl1*0bBEQ_Np>S3PdzxL?nqkg5XzQ>jw*Rw z#wZ3cEUUR5DWekYcO6x3bGkF>dnST?mYFZrWgHm71?eHkAy%XXWT{-~4FmIP`TrR2 z=9g(g>((Rr-#qj%(ixF~4`+~(7xPy6Ua-Y-CCxb48W9qq8uA&P-S?B_k1E@ZLJvsj z9mzbimm2T`H`Xd+I50Q(gD=nBPPl%X@Npg_v{h(rob}i(uHKugj|khhhd5t`Pnj2f zs7F2!D`B!P(Ib)I?d(11M?JD|uAb{}z^Z8kx7AHQGkPKmV@lOcmco{sL>1_6g-$!S z-OX4Chm6p)B)t2uj5q+%S%P-va(Ac|Zg*d@cV~TC#dB+kGsaIcURPYb!l?QTcBIC} zpaBPd61EtH4Q0B2X-jcoVJ$y8;+)HS&aq+|Link(zuJ}p@>*yzsFKwIz3+P+am7^A0`veb(3Nr+A=6=Vc zo_uZ{ZnOO%{E-Sr28-ddT>LD8?SKvv`|grX58A|2N+kw1a|qk%6!QDwe%Jfb8k%s6 zMSr6OQkjt?Vki@CVh*=tX&^$nu&IGuESfR@>kr8!S-Rc(EZIc3xy*xu&DCFKao-3r zem(&U`F(Hgj%4OL_7wtaqy?mv3E><`_!#5y&#!>4h__re7igZ_$Ot<%5q#t3?P`f;st$6|&p;P~;B244lxh3JR+#r{3@_o>QZOrP1RcNiN zKr=7k;K>kEh5gEfMac5mbsFCeUu*|f=%-XdR|%dwZamgaWk*EVb#-{dXAw<$H7#?m zy8F#t{*6UB+-)@ump5!?t1o?RZP`Pz_LM8($v5aK(TG#d?1(g!<`o@wmTRKbg?12@ zb~rNj@j9{dBf9k&7WTg^?zxa__H(c=y;)@xZM`ayd^mXHupyrP#qC}4WO@BD1M{$* zfPNr!nuBeH$a|K_E3GLq?8Yg$s~zScbaLi+T5ZibWwtgJvgVcss8D*@!U;8%YEdyu z<%{zY@+E~Sh@asoT1ZN*U)eemItVkGCT$`wind?=H$2O@p8K!aBesI$U4BYs%QT9saxF&X?)~mHf8Ao?>B4rcyM3N!m!BkEi){s8v6W#kmnSSrIav} zXT6`zzUe@~x1C zr}IqoqC3oBDqKw!`iAiG=^=GxfpDvtYrNcSDw8X?lv~)#R^8s+z=Gr5w6X7xyGw_1 zFI%ImG-hOZ1bg4H9Hw=cvSW5Go@VTns{ zANbN22peiXeJ zG=e8c!(EW@7XzNl1F)1|aR>83oo;2Lt}}oTPk5oZZP@J zyq$fU>AR2OMfnA%h1#fQ)_;w^npYknY+qSub<(>qaw(Mjx~oBgevN^=5o&d(=U#1r z-h+U_pP_^6%fIpPUEY<_a_IUYgsLs*9mA4L2a#b=<&Jby>1Dw{nbShr?eXl63mn^L zxp4_)L6RI%xtIEWTJ`8hdLFxf%!FA(nwFT996IIHE;tS2=LAyjDgZ?#e6v|?pP7Xn zj5)YFjSk2cXF%>J;m0kZTs@BESJ;;5xaZN3i2Ho{)o(Vn;r3-8H)cI<#6TW)^0u@v zcdO+3q^-MTvHU)dtf+e(Tt@wSLJd2Dm9t9ssRhr(TzZ*|Cwn}pyCw;lB&FO7Oa6W6Ka_(FI3Fq+E~A> zvu=h!oBw;mz`g=}3H?fU?W%c0r#Wrv3GG#SO=f{5uXcZFQq{hC5WV}lC$Y6nowFR< zwb@@2zG^kHZkD3CH|(tkp`Z3)Rh19YwSH&adcp40ImfP90SO9)iP35{97RNK!$`)2 zUNy*zS(fiR(0|`pztA0$XZHacEQCiN`&+=41_T}VZeB0w3+;M#HfU8wee&cw-=iuO zj}8a#wWalYijO>jnH-qp*e7j&Fy(`u6`&{obxJX_wRaK6s0LVLZ zgMP2j5#pu6CFqBYlW%YsW%guHGmIuA$=88AzbaMp1hPU0sUm1?yb@*Cff#Q=YG-$! z+EIUs>ui889fg$HfHl>{Ol22R*MXPh!1oMH<<}p|I*g2b!`=&Z)%$%{A>97l#M|Pw z;ko@_)S_`TVK59_e03nFvuIv5aqmj9AnT}rxr0NcmN%&>T@xY9j3 zz*6f0eL)x1``}h{dev}-V8tt6TTMZ_P*{c%y8EF!15i;AiH3D*U>TY1wb4g#O=^L; zc)5q*wTD1{wd#QY3E}Gtd0~R6^u=;rb&E{m*%QG8dLSfM#g8ikktSU7gO2aRhoYDIS&|1HM~Bh zE;eguzbCXAHQ9Yl6Ugh#7w-_b7|R3YG~9h^-`vK1UjxRk;L&jLWbs#uouUWFAh)`q zx!CBgD0{Nkf!*`{^w%z!%m2TfGFs zD!sbwt>~#m1At+Dp1?BBZ^|jqKuSRvT_j^hSVtnIU`S=s>^W-}1A7%qXH{bDxPcs4 z9j!72t@^!kTSh#G&OLDyF6fWv_q2%6ga@&BRgyrYtA|HrQa3Ic|E8{$?}+*($Mh`4d)-WHC`S!z~_fT*ar zXNfa2D_o_eg^DvPS8BG*w6yhTnc4IBJbwNB{{NlB-*C=---qkm*ZX?CUO~ZDqnsn> zRl6M9P_txS{uyl-)f#lP=7{;J;`7d93OP;EitZC5w?b4Wcq$S5I>lnn`|gGZ6`}2R zLXCMcayOL6`L?0@J|gx)&*-DC$2m;P+s_=WEdAj2c*pEf&wA z&*bS~TP7zZY)j|K)AWR9Afh#GQyhVTHpR=GDQldT3+){Q8;0i1*dT*f*OPqPgiXy2 zjOE+Pr)Yy;$~~E?ki|-O@9jw$q{~QIiKCZngd{I`kfuhhez7PQTV18DG%+6omT6*K z(^Dafk6NfwZKnE^E6?xWYxByt8}U-qSEhwAi4X}^GvA+Pi}K!%GY7RX?SBNTK>UNF zwW%M6=^vTQiRQ)Y&lkRb9G-Sg^stO5Hqi-C*gmh4y!dZ#eUSG4ncA~a6Y34|Ejgv~ ziJVmRS^Cn9rgSyxGWl%?E})jtrvNE^FYo` zts+RK%~d|Sdyp;@`#7?tO727Cg}I)Yf^oU0@{OvS*KJ&6lEOEHa&|u1c9eP9vOATK zLjqtAY`(Hr6xhF2kTHM+=)vn57E&$hA9L&zxE#$j~FaflB}bE@WB2d?52#6sS@}QSVgD|A?SOEA51uffhb1OgqmL{tp3>| z6vVytV1{%cGkM9b{J>E*9ZJSHt8DTK8E_5q&+iLJUhhx2GK(eI!If_UsKRB4f zaiq4^i8o3@>}rR|SEGFSI=~O1kT^-W4W9~e#uysU=D>TN@mq}RBB!Q;3HT5h9)o^Qg*zLL`fa?8C)6F|WdQBdE5 zfIc48lv`kcM?Uqia&=P^tC67>v{Ce|>PJd|2h@?4+->9A^>n|Ve`bq2ePA8@Srv^5 zjhMZWyr{S=={(JrR)wO;l+4yd!RXL#srcM>*axxg9fp2Fv#1BRL1%9141NfhmxWZ3 zCMu8e%a1u4b^MfloNl9v%WP(8x~nekuZh_dyX2eet9ltMzvfHP&b%X5BjzeaxZ=tb z4p@_3W|W$sD5UNe?gcMaXzDffGoz|U3YClS+Sc<5rl#VE;)m|4jyI1ztrteiIP}sd)8MhBs$!&fk3AmxRx8AdSfAC^n&0A@GkRurzC8 zv_)#6sA{w5ngmMwndRRL*Q+FK&3&&O7^W#h`UR6@np)o?yC5)v?lZN0IVt(BNal@> zZ<6I}G|ctEeBlAq*-|xeyD%u~<%3BT5_+)@znT}~Uqa)Ie{_FoC3>MUOyM1puyq3Pe&S)N|UVJ(3zh9i!KY$aPS%?s4ci$1EXaqC(S-X=7&J2eS)`(7rp zKUje`2A8;|_ly1%Ye}@Wo;N}q3_a{>_CBsFa?_Tb{z@9KTB)2fktN@mL)nGM@yx?a z#e~2LR{#Z^3_&!w=@9~DA^QRge8MZgocC~99B z5~i$eCRcE=R@u@}zdEzXE-d^(BFrxTlo*&f^~aGkY*eb47yRI9mw}xCwZ*LC#pP53 zrFUD<JnBe_8m>n2D#I77Vyhl=Km|H*}T0btc`p)8N0ESRKESWYJ2_OVTM> z`-2&pW1Kf&s)q@}HA`MKe4wNL%eFIf;J2+E z50=e>!NyFY{;1ti4SPZFp(C|}#*RAImH`lorlH@gNWeIks*F>am%?Ik`(bM8RFK~- z@PQ`UB654E@KBe*7%n6ae2W_dM1wozA5xIwH|A&};=@P2_A#+TQ~z`Yk!V4|ow?k4 z>Nv=%Uo@n(`&LOKbc%621`OC|G;fso$UJ_n`N*h)dkO|=mXTE6VHnJdG>$W_F5mYL zriHQ}(fJw^T1ODGpd&v{V6jl#YexSokpOQH0i&cmKXeXa?K;yS$E)1%0V(Aud6Ao4 z=NWgyY~p7ahTV@n-9T3W-H&o4b_VI(_hq#m_#hzA(H!VVX1HLfR^}c2F^mT&Me7w~ zPqcW(X4P!l(4tlwipRJM03JzdH}p6jKku~XU}OWJ%u zA@3CWuiWFVC_5`YDvk_fN&tPm=?W5(xK`llEh@bg$ew1D?K47Iye@ug%oMn}b5xmU zhwvEp>{Q{arTg;<=^N^_ad{(rRPPlap3G?WpM2_6SC`Msg8`Q-v!;D-yLq08(`v_;83!h!Eg9 zkV=>al6q-}D7P;gw8*2n?M<<;h}*_CwNDt(P@`|X&s^nkpl0Fk={8c@NMoqNcyaa=5Nstv)hNCL&`seML(El9OC!>OCyhf)b$ufaGa1IAN7*A(D^NT><0Z?>oi$; zARkE-eEN(Dg$O0z%nv>JQj4)^TnRnLfPttmUEre~#^sFc8T8E6DTdY7IMbZ&lHrPF z(<6F?>XslyDIgwVn)-5v+57CE5CasHJp7h+PbjERN6>RgT@{p*Pq|+hJPZ3q#hhcL zZwTd+X`{ik&sIQJK9CcU8qA^6w*;}hGsJJesHN-(Z&%bd_;;F)X4ix#ta$SEvkN(M zt;i@+cD}PJb#fm`Df}0F*!RHA++#1I~n23A~9vY zR<+vAy;2w=HRp`JW_W9MTusRRsoi8~;OZZ&&R+%am z?Wi`G>%DSXVSCY)0X!WF4#vn=Je?ylsIHh3`E1#s4KKqGdcX#-X@|(x1hpuOIctKF zmW0yS*|y#Mt(c%GVl6%4s-e%cu+l*FalbEyGa^kkCI8NQQ2uW8&7aIz%iBJ%WkHZ3^A z`68e2>2~u}w^vKSub3%*IsmHs5>R*2^~N8t=TfUpN{h$0GB@(#VN2bSO}~WjZ(|7_ z5SD1^NTGy7iNQ+t)fJ&D9H9iTP?C8dc3dbIK9~9e`~(C{v3ZW;Jh^lT^sm5ADoht* zXN{fw&Kcv4@IlO##l{9REQ8wdmB%81JcE_%ZIq^bXg3`j&IwR5JF8T61%wZ z3w(7i`|SugO~wmLa)bZtH`p%}zajW2#x@8!15cY!#@aYHs1pHGFK>_8&b#-%6;RBod)Jt0t0MZ z^e=lxO}}kQMp-5^Mbz*8y!OOx+V+DFaA~8;Jy;IaWO3+1vFRn^G0zVYZ)aOI=cciQ zSmQzpyYHDBLYEM)i4n7`l_$_&g7~H7X?RiN(1gyN$Mh5zX73=8?;VpxD+d-WQ`eU9 zlT4COLW)p2nQ6}8*``#gpn->Zjc=T_j_H<|FC zk`UczV9R3<`O2+ct!b?q*x)MHC@kU*-hDo-$4k zWZwx8+JJd2py#_@uC(q1BR!8>U+=OZ%LT7YhMGTqxgU{XhhYB;7Cd1<6r>)S1FrI| zUu+d(E`>WEzSDt&-Tng)4rG(}!dSho@mqpJ{n?j#eSKQ|4$?rF?wjkQ8=%CSPv!fm zEv|G43;4io+VpTYmm~Qv?Ohdsni|6hz3vbR&Q9OUPT%-+ktO7~AaYcFgZvh}@mi!T zndZUq!2-T%OgJCxkeGd z@>m9Xgb|k^P?G%l_J3_@l*#)1c%zw`)F)3}jiOG0O`LM#x_%`~)3@!3zRN5jI4 zt6PFvQeX3XzqMf|Uhgx?hMC;Sp7~|QfXa92+6EtQntSi51rpG)l8VQEQ1+mIb_mm7=BR({KfiDlr48~NVZbZ1UCQ|C}wDD}u3D z#!cu}`x4E2W29;doL~UNv20VD?Al2mk>%ND|Al2(FaP9m(y7#AeEHZX}m=>}`3)q9?Tp6kQ$(8Tc zzDkcyX9?8^{xvU{v$meyGb(i7`AdGB(63mg=Rme!CDpbEG^U8WBA5L4mF+|xxKt!( zz?v@5POtkz_qp+lZ;TeW1Uel@3pfH{G*0Y11#1YAuWo(6NY1{9xsd*jadzST*+s@B zHVtPUTEuxv4xVw=q+vT}4`TI+wp*$Ki(o$pK7RvzVU%_nYwp1Ol{7}Ds>C`D38xhP zc9R)#GLOUWg4TdkBw?3D48HtV_MwYIarffZZXA=7U6&n5IWkX=6OvNg&gTQEUl5Ag zqdH?iMs@3X&%m+z_ZTTOc9h`iGsgMpM4oc$>VF_LQIIR+ci?NV#}csopgb`C3&1p@ zjkr>EPw49TXwse3OIV>Kj*!<|Mu}4dYj5YG)rbJl~5FN~g-1 zt;wNV?2hb5h7A=44YO2~%S*xS z^?G?Dte!PcqB_26f(pr6YF|PJJ;bL{H0>pBKeqc)^^vg`XPv(H)%Aw0OWnZ5wFgD+ zLM{Pl`%Kc2W5$tg4Lh610o7Ekay|d1nmOsb<@WLXcJoJRBTsbwm%PQ@4dIZiL)R!@ zv7^Dj-YSHe!k?g^I{{iCxn}fVD8efI+vpL7*la8e&D$L2Ltq@;Gk{Ow#J8(RAII+u$1Bd-fS#5d?zE;+2;>!6e-&!32S9vPe3DO1t`MWJxdEyrSO>@ zSf)@*r=51^3MH@NcDI`{awNwvr!vEXK?o`0Ume2^<@xxwnvNA5aC6tqAnqV{Khw=z>7@)x+MQu5_drUu}Ol=R1i@)D$=0Nado?Z+C(3*t_$|jQr7s} zqf5(4o3Xv^36SBcaIq(P*qe@dI_M9eMB1INvvB06eihLilI>dCiH-i@BLn+facGo^ z)hlCsP0Y}w7XIkvq*?l*xbG?hb<;J`%?v-Or4n%1E|GQDc6B@oRe@?1$l$;#DSXJ zm!Kxi@8K^rUAxq5IxV{A<#IL&^?#W@NTIT0^{AVKq}qQjjTG$a9d9PPSRd@@rQO9p zcnokknYPHfSSgTPDlqhHp7xIW-AQ7* zV+0V#1n@d?KNxnzHFFHW22XyUqi=EJsEV9u()iG+x~Ia3KPy5AA#W^!0nC&R0qy2) z=M}`D#9lVm+Oju_zS%VS6l16=T(jGxU>DSL2GOKC{-jSh1pyrdBBxWp`0l?@(TR)u zmNSPvFBQX2twJZ?#ur>zdZsj6B;v7SporZazIe1s#4>&3i1)8A3bUFa*1qCJw)~-| z}->XgUpq%1K5U1UWEgeNLTEl0BjMA`TaHDWp+<)|`+@qK&{ z7Gw-Vs5vOv8dI2i#zL27+X~T^n-lwyKNV^*YWVrnXe^5&ZU^9@CUbI0>>*R>KcO=6 zvpt@S+Y(x^g-SmDsdAg{083GET`d1p0N?7-Ki)Ga>9FzB$=wF$1=fiC9mJ9clk{KH zVP+Rrp#&02oREIj8VLf2$JpHv+aK4tqAlfoMOES6=Qqc9Bg_8*>x)-p5V83~BNZv4 z^$+-ccCfxU*oZYl)LVz7hq(5W8N1NzapA$42M91Cv>)HS_!R?VWb zxzJoxWx&cqdIINBD1(=s1q&VHt9X9(3`M+Z?}l=NoG?Ys7^Rd4J|DNO+hGujAOr33 z&r0sxU5$tkeV?aqP(O9#T2DPt^Nf z+%HhtVr=SNct3qV^^?s%Y~5(Tn#Xw?(S!$vtMOeLQfpEs3a^l37RWx24Y$?03~uNM z&LDRZx7G;~bJC?OcV9{S{jf2#9zS`>Rp$C>+`-rmHORgrFM>~vw*AIN=R$qKrTy=Z z_I`y7e3mrB?hO&Zs(P-!g&Bjwm6%U_)Z0yiDA1{jF44hIsT*nUg)fne8z;6jO}9PX z$5X_zWM&Brh-hxHjALCTFp$K=or&vKzE4uO%^ZUD4z|{G{|ex{ytLd$8b;0w&3l>&(eBs9 zu!`>-ZMwtg?nh|qh5HZCHBll(r*I<6vi~Sd#DZ0vKdosT?sA^%fV5ESHytpmnV+BB zyV$3D=J(~}xZ8=R@2kvyUd4`!Z^qK%ng*FKivUWb%<-gsP0($?ll-6GnFXAgqEmh%qEZbZ!eiL}fZ=iz#!u*P#p>6dwg#RFUGRvL+}eeym$w&v-{%T{pPz zQq-vUk4GIhWxW^T@K8DAb$*Lk0Oy&}S8^%%a;hrM*C3}4S102cb)2#qF#T4-f*(&# zGk}#=u6|2?cV1-E3B~`6KNT3S81zGTq}(aDxrgd}d6vzul-cZ_t5Bss?M$g39kCKS zd7@I;JfJ!A*;vf!@^b>S3NSpr{7{bp(d8{{6JM4ER=Y~vWK5`();y?^|F;bH**u5s zx%3}D?%<^hUS_uFnzi|k-Mh^LPl4-r1F({7I&V0&ZY`Jx%%xe@W@+sRd`lOODxF4R z%I@M9G*@uHpB9(B7`h*GT_#ji)lSaIfTzq|8SQa?lK!Gfk+R4?qBl~3+P72RM-qS` z=snz<7uF}103JKTuXm>N{lNs)V7$V+BFC4~G#oyh@yu@3jZD?l$_lxyh~ywYGn9wS z3mlSy?r#aau&DgooI>Hpsp19D!q0IEl>f2h-A5uLM>Y0C@sSC@`F+=q?z_okm4Lcdm0y}&~g z1cu3e)*eHc&-IntpfR6PJ({m|H$_8Xh?|jDcC9`$1&-%c9^-+L-s{WtS;lKky_z7s zR*C`epdymwd%-h{Y6YXHEt}SgoVp;Z#-7zWMk&YC;l2s#*e_vVSpnKF00C41&ufU? zaNK{*A=NK!(qB}b81m9|a3z&V%M$O}v>1M~KFs%;Z?D-f^W4%uJ_^B~4yB5_R!1by z02YKE8}mADsz;eisSyR{44$HQ=-na0Isz2pYF(BpURcRdwYQiqGpx-)YLp5fHF5gM zLn^&*$8r>HC9<{3SikUZO1kLhs>9sc2pJrZOKZjey4>5pC?jz5wd2V-(mJ}`jtaO8Q5?;&Rzy!{Pn0)*#RX( zn-V1QA#UghZ6U;3=Hq4HD*~9@`iG{UH2n4QNZ1LDAN*NGxGa-HLYRC5ZMmX}nKt17 zL%gTvUhs^ll)3d67pe)3Ga|F8E1SluNTRRy64_mVA{Q%=VZ-~jP1fHS`ZXzGHWX{7wzCPVm-3Y7U#k0DA6dJ8a;7 zzJ9C4U2Q7IH8+T+gnY&)NvdnMcoS>-hC27z(i;|1m*j9=xehGSsTs| zmD|mpQMVDl;Kukogr5424qr<=QFXIC49{uh^>ovV?v)+Y^ZYErDrZiPzO_7bRR zG`W>~hvUCk+u#YiI2_u8(uboKi`8Vh>I~ZHX%eVyl&nnJ@LVqKae0<07GR*6dv1qd zlJ5Fh%=vuPhHc!TfKuSw-*32B;PQ`2ch_k<&0NcZ+k1goCXUu^VqZ+c0Z5+Cz`X!< z34LMZyCH23uBdQpFj=iu;FXx(Z^u?w0fFFBiXrB-t!5lP#`QjnJu09ce7^OYSRfhW(g4yTP3MPFyR8Zr;yv$&P!>jpJY(@(0)Fn%R#67PDgCIv z$FNztwTaBU!@R(IbM5DnS<3Q;hN=lDdFwYK!{YYToa;zod;IX%5*6aC^T?PE7l(*F zR0s@LMct4*_&!ZIXTh{KXD6(gQh&=;>H`VrQp%|YSB;%-Hf)eacvD$@e5Qijh7A?! zMbT>g08ruJNe0La>yMq*$5wSbwzo!8nWD2&J1;13`|{|>xqu%q_J3`d+b=Hbs7 z9^BEowR7_B4}ivqS>i>5n#grufZ?qpQ9CNW=vRpb^4R(fD!+i)%8n7zdN%i~+fH)i z{=H1CVf5EA_VtkSq-oL`o-9MneD_l$`)*Ruh21Tk6tirtzl;bHx_HDF2Qx2qcJbe6 z$16Y9P`wv*(?y-TsBOz;4dst+uvYHtLrtCDWW*~c<&1O1wa4yTKKU$9K*+PMin;Yg|zDF6zdd= zMv2>%LcsqoLQO=lRPFL$cG^TzRj2m=p9OjZOwz*UnnRd9+6_IKhi3+6Tj0~(nd2>y zHRa!zG1!+06T&y3(|42R+B*Pe;R?v;akiwj;70XCW*^(C=7M2`3E3bMVr<6oHl?HZ zPjvafyar3S-Ud@3F&4Vh)V82&7b<5S?!m7tpPe6IfSsP~F!~+u-xpdz|0XQBA!D8S zOh!&*Ve)i)$Y}U&!%Mnv?zz+Ts*X8M&){gaYT8DUGs^5-X`|R$G^yN^Es*1EqBeXF5FR~t4Ydr76V*6ItixIx4t|MUi~FZM7xE*Y;8O^ z2M1Rg1dQiSh=HTEJYw2{eN;>fWCF1tXWtL~V!kns&5!^*Gam)sbHvbT>Ld!_&8!S^ z6gHeoY?p9%Ht&+bO`H)<69kiMwLUsrn<5_!N6g!k$c_874vTHgJ_P zEZ5(loSTUYr5@^~!uPUki7zy~A_L$|#GQ>zhj7c5wYi!ZX${-^|t4toJOjBi8)ZnEDg5^zg3@;>9W_RPc^`XD&-D3w?aflP;K}Q4C=Fu zyj#C8W}Np))u)pS0h{x}FL}oGaT_M{SiV1VtEF7lUo-dZL6!>(9@_RPxE@R*;~kRvs+L8qECfMptAHod_%)G~581(2dFscfb#{ zk|96&hh(2IM#FdsV)w%v)dvmm>i6PBjIJ=Qf?VlufGCuG+)#cq#zq|%Vc>;vKz3;g z>Ihs=_Jlz`keBA3v%<4gZ=nmQPIuNMuT&%mx_dyzh9_zd#P~p4z z)w~`FzT7zsjhT+p{4h;0$j!`sw=$yfyt)=GG*qCqZs>h9wZOY+CfAvDPK+UQW*Hp< z<*ACJ+PFpj=@jVw^bLvktsg`Fqo4XWq)Ry?*vZU^-`U+GO65?At0UHXBXUI`vN!In z&Q$$i35G^E zz2bg)IAIQeH)6wg6lYtKtRSoLk2h7^xjrRgquh#!J7durudTk>ebn zaHVzeM2?Emx?!Ym$9Ddugx%D-e}PDf#gv`#DtBb60(+rI95TeyI6QBO36(E+iJH1+ zyWV1$)L|US3k?}C8CgNOS$FZ_q&t^#D~+Rx3RNGx9OcGNjy*Ja*DHQ%lWRA2#h}03 zbxfyF`?=k9qvm?W=CDs7ynh!Eo+_4=I(co@h>r(_+B?g?bfsP20x(GF1x20{{gXcySx_;%FY#g5 zGc<(^-{$3#n#x!gCjPR`eT4ecCeEq1{4Mkic1vwW{>n z!_D&zIX&mPiiDv6f`xjloWcAPC5lUbUCz3&)pKrj#vs!c^cJCmql@8^#7 z{wGW-LKYnrFI{4@YAGdu-U)vlxj`s{W5?aENw9_9h|gQcMlTb|EBixa=%nu7wv)qi!Wu%4HFxXpwdE)$Vy2 zds?Md=iBc$E+}5<85A_2kK{iDT2B17Ja5W~cgPG@ka74K=9N1Z(MPf=-yAd(kSJa?-4{3152|omlLiq3+zWlRa&%Wx?BmGE0xaQMMrL~BsiNsqlNhK}nA}by>>-lk{LABzTa`)-yep{T zchDg<&K1WqaLJ2VceAi=R-W!+ISoJ6)PP`f*V8^js>@}#86l`KAi=I!>Ns8cU4_wy zjMNXoINwazT~hR_0GdOBog^aEZUnjwWlexY+7KeT5ozRd`Y)X6xs(j+vk*21x;P!Z z$Z;liX&lC`YY^GEiE~AQSe=d8kW?d>$b1;wiGl-}kK3#nen{6QSj-_ai^J%0Qs$0Yz;*|8$I+|u0 z1Fimmc$bO@k#`sor*h#>dx-*~B_75ZC8R2|K6qc2;qxuw#~DyJ< z&BID(Wkpg;qGBBc^$R)rvcpxt3dUi_*~whjU4<5%nv8_aN^vp5FfZA zBvhCWN~$>n0#vRtT8}Be>Dvns`9`wjaBw_UJ~mlI%8P8BTxw^5SZ;#$je%=ssyD}# zho_;VnB$ENm3O5qfj4ZUeyD9Cp*<_uo-KGpYZe~#ygybvwPj8QiJ-3uWw>B1d2rJF|ZC~9l)yYmz`-d2Fi&Gx)Cm3 zV@E9F2)}2AX=o$l$DKxlv9EVRD1y$?u3G+MXG!lBPFkJt=}|has!`M;ub8GY7e+)y zCVuw3ypVN$z#Q>1LstqU@^TFBd7<-nVfXcRFj{j4_IeBU*9d%R z(N^_rTn8TUkpn@4sxlBIF1}S|6Qb?h>*H3Ez2&EtIq;ZlOpvzdg*o=6VQ?(((pl}$ z0Ss)C4R>b1(>kojk#-`V++P<#M@ct$!9hz~H%95S(U)0KfAWAGcK__a%|gY3<3nNF zqT87kx{W7(Zb|i6-_-saPApYh$4V}TTFq@)sAwhj1~cm_&P0(RfIYWXx&QItoyQPM zTf)b>AVnD1A_qPl-_XV4(H ztwa@mvWm6C6GOdfHzR91sEwZYtacBIJOw&xa%IDBag;95UAO`wtDBJ-oKB9r@nOZi zLRh2+k#lkzwjB%?1r-BO4l0n`QLY=L@=P=xynoES405i6n`%+6)`}6H9uuzMgU>BB z2c~%-ZiT$%IXw&(9hgj3w+gy^4EdE?^Nt07U4*;iD)K%gFZsQ~9G}|gy&LmpF1xg& zuY-?%WKp~mT0bTbSA?W3Gu5r=YL_LB)wOl(SxJ_f^qGcSua)%Hq6&}Djc0Nj_ce-t zpM@Ple&;q~o~b*M0rw)o=Vtk!i%5ralkn*+u~rUblw%fqJQ@7J>;~8A5RJap3C#w8 z8DOwz2bRmO@E*Ut5O&nzKn2>nCHBC&ekzRkVH)CjP6Q!mjTb7RPwDi#Mw(8Rqo!-fbqCzAI3rNO*7euv}wlR zIrEIVX?V9soXUIgA`D&K=#nDENu-|rdLFu?f|$h)NQVs6Y|E&t96kM0G(H5riRj~S zupglC(TptBpYUA+Y0YreS-Ak9j#!d1!v0~LU;TxQD7f1Fgw5ZgHjHo|oW$QZPGCe8 z-eHb}Pk8onrRI>Z(qY*J#1UDG6E6U{KjTa$5h6kY;4I2mRsu2|hWxEwGoAQw?d^;T^gmrcU_@>mHC*tlYq9z^70xr-CZ^Jgnir< z3dayHkq-V{xW7Q~N?Vxw2yA{-HZ@)5FlEn4@#(YU26R9gk?e2N;~-!1k}B^8Nqm#g zA!aoI2oXk=Gje4tkF`{GcN?Pch|k0KF1jkHjftv(PA$E&_6jk8Gxv1M&>~=`jjl?v|-J@ZGLFB4w8Q44$J|cSLCrM z_z76e_x

dp}f;V>sovAUe&~k%lPu1ju2yGC|CA*ws+5aBww+{|9u5>kG1SC?7$r zbCkZgiUg?214U0{cclBe%J-s217+pA6BM2!q4zcQUUMLJ|G@t@bAg*=g@)uPT12z}2!` z3Lo|YT|hm{+Y+|?Bdk@a_&h;c%M@XF8U}&4Ws6p1i^lz@<8X2C!d5$(iJT|6I zz1M6Ju@bH>u9o`Z@e|g5OVe#1C=wo`y2yv-#a$1$;(*_V<)-0O*Tn})u0nMe2E!(Q z;#*&SR@WlHKK6L_@E;!pSdGNxPu@S)q1^u3YrG@=GAnOoZAG}A))sM4vP34@{0N0y zUx5z%gc4P`Q;p$88PK%&HQco|&rsM+?z73bWcYgmgWmEu3P#wz{P+FOFT~$IM;K3C zB>q;_BT&kJ6rJr)Sa9m>S5KMKuyW`U=JjQ+Cpg0@M#C{R@-wGl^(0uJx0`PO>@lBr zDxqmz)bdsEhWYi4jccYXJ_t}oL}&3y4^FI&1AeeI8hiZIz6!5qOYDDyd`30c{`1Dh zEkuKY&rrp78rQVL~N7-vmtK*SmCTf zCqj613zpn0-xMlEOoXpzs05nl-D1P8Zxu6j9iI|x-aRs%Imi&1<3eA?apP8{1_!|0 z`pxX^@v9~M8GPwSI>1%_9nG;?18jwp+fm(0^8G%wO)_Zrq6!D}$k(FieTPumLo_+fTfwZWJ zd_ltNP4J|x8w)weQG5Y=C1V(b7Z)T!I1D~ywEHED_)?!yq$w~b5 zY!Qu>%sT-vep1=y)aRDpCgZj?&MHvw^f-eq)5DI^?NBCeRd;in9peopXDjtQpZEFz zfFi!PL#^)S?3ck2#xYA%{Pt(zUN*r?d{2$c^4GlX1Pokx(>5PPY_=cFwG<}aIvw=z z^`mp1!tOV{Z~Kn4L0fAcUfMcbaY1l7jCZHo<$l$?7cE^VClPl+_;hQCZkR=`T8TQc zrYu3=^N5%hi^?`P$Jaqhq#Va1hR8Z;lEfe;TUEth3 z6aSGl$!5C`4}4^ku+OUuUU`Y8j;uPU-8Ww7?6AWYB{xUigt3|?QD+y7%W~X5PPer< z)%*=x(8n%kbPArWjqgsSSNbwiL2~DE?QL~?!bKrf4a`OkD*UiPty}cyANv!fuc0^l z&UN0>tW6-w72#KA6Ii$(Zf@uSM?>Y!0k@b2pvH7kNV80{YCBOXdQ@w)8d3rnlk?|G zU9XA{pHROZ-^qW*4(r{9aky))3aNfa`7o;^)dMqVWpkB(+LUP;j>_11-HbOOLCEwAu%iqKD%{@zpDuY6Ct^3h>Cf`Rw z2q6=dftWn;M+&E+T`EFbEDYr1I<-E_o||UE6%vkwFGMu*qPIlwpz7u-ke;? znszefn=RP796o3Cf&n z(bBy)J8k^QOeg=(9oIA$f`#fO#eWxPGIY{np8lZssj9~)wrrP{c~eI0U+}p`$%P++ z(ukN9y_vEq%dhHHGBoYoMCCJ? zS@O#(f)ozF{yQuP@eVOhB#_(J{80!w$7|qh^LC zwaJ>+(s|R3XJUtP(6KnW^2CU~e~IdU^Q+SD_H4FN4D#D|+VfES;j|QG7#kc`Dx-BR zUX%X@VixLC|Fu*_q@tII(R0oNQl&fxg@d_*rhVM;n08n8*{vb%r4_;c>NCguHQ}1} zx5kZNA6gyo`MC6heO0l!HSkN>;etR{`hA(ICr)gfpn~jm!oXQ(vf^9OwYfbECf&-=c2-_OT&UF~}|x~r@`nac2S1wjnB zB?QUpU3F6HXqeD8M~Zf%eP2p{Q2IHDOpsu3G+kMCi*qqp?@^nhsqWfmZwN_!Xd=k# z15UR#aXn%o4Ic8-M2O$W|BU7%Jsf7T3q#&ryQk%(9a-{B+5#RbMfJKL z`=w9M`xrb%F3pOV+&)t|7&sYpyu9DQJ3>{$XOMsH*sz3*6GOnVx3cIgYBaA^Urz6% z>5K*Mhg=D-FhY4?QA*m7-t~o}p7*>ft5S?ly?8%{aoea$)kqhkg=Q;uavmm>(G)&h zvCn846b|MJ2Y;l z`B${h#3x;Ui~uFdY5Uu9hg)V_ZI1A!V#ux1GI(n|e&tmDWeZK2CvC&|scT>^C`+fV z;IbYd`;WPt9`2XZ$Z^P_IO{w!!!I@uvV_xm&7FwF)<{z8Drpw+>u+r1;cG2TBK*>pYiu&{2$4 z`c(WJJEan9JRh_q;c2QC5X3*}p3&BGYQ;kQztxaGZ<_F8e&0t-0^xYMsYGmcg zib$TcDEdOD{^t;V&)dgEqY^%=6q5uZt{alcMsh$tHpD z_dJWkd@0cDk@e}8+?Z^O9J@U z>$9^#*);5Kw0!vWGqU>*q1kpC^h1`x`Y63nD)O0+8Vg~}1p~1GCi$BsyXgi0L{-oS zCSB!v7o^)~!pqMP@_R27nn6HfzWF3Qpf#cM(50;YL3>Z6SOg|! zc*F0wc=q9$RF}FhdVq8X-)D04YI*qol^U+J zb_q9{txD6>pJB~HfYaYBrE|CwR)ShdCZW^$r?w#_V1`2zz3{&wU%jK@Bi8;}nV@O5 zR~Isqm)Znr<5by(e9MAsSvixr1R~I8rOQKJFoefieNJ?UNE-+M6<;tpdz4Is_%eV1F{P)uR>x zsq#s9TOcqM2((!q)wjw%Lm})T1$7$fBxXB(23ajn8|cC(-KNj(^~K0D5KRM^AoH#u z$Uo+-_$^4{5D$=Etq@lP z|ABQGZUutl;eHm_nh5&70P*8sa| zYNsUF*hD`SAT$imY2Zu{wynb!gnId?8s$%6f7LZDxtaQB;q;92#LV+u&}RB6;=4Q^ zRXlpiG1-O4KQFa#*R-er6i&=~Aw9uzaUv!H9f$()3pt+j8+nPXzpTLAq`VIS_?U}v z2k?6^q21v^zhlJ%Sv__}!o|KCVix9d`}YN|-1kNBM}sw>(L#q(ci=H(fr}IYE|eM{ zkdetKefg>7pFPN{x8KAHNaKKG%`yVG(DM#|%qD+KIIUG1)VgxyjnTD-LX2;7*NeQB zde?1Yluqs;%+N#{@qi|X;RmyN8a1ds3j*ko%q)(;wT3 zkYdP99Gu1tgHSRBboMKL7Ne(dOs)-1qo!*T-a3WUaBn*h{&P)5U3+P0?BAF z+LH@>3tTMCwsCVOMp~Fi=;fE11edud8&VJZ2HG4Z+#AO&kT?ytc(b#yTg*WwbB9}W z7ho-b&_v*+JK#A%>$C5v_GZ*jlDXC#b+GXp&w z;6CUB4;B|rU&v&sdb4Z!sijoAO<<*48QynTiZ;zCn&w0cHTnSy5Krmtw-W>hR?Hq2 zi%)qlY5xj+Ja#ftMg*=RUNM<2TnPV3(YV|wV|Sp+#xKM5VkVaEfTmDc3j#4{Y5)g( zi}nf!_iIRX4aPXNAeIlg=7#g)Pgd{HJx3TtjbkLr)DPLyIaqIvKbqlt_AM6$F1&_Z zD4O*P$oOGJZEa#`Rk3U?f)W=pZ{VpfBp7z|jJDbgZa^IEDG+P+JiLqMz5;ai%=ZHO z7H;_+WA!?O7qqaY8}V-}9B8Mex;*dZzjo^e!x+5#Ssf0q+dliU2rnxe-|NNAc=^~=tKdxqIawv0WKK+{Mce!t>3kv9How%WOY2!H$Z+ z_=DvRrU3LsW~d}1=!Dm0o7HehL5Z-{2uG?DSs)g5>J&#X*-I3uSS+tI$ituQiK4Ci z2|k2MRQl%+LE73|Qzn0cs0qCS1;-aJf5|NP%%w6j;~#yn|0i(jALQBwM6a11!4Kr} z*RguxdOyMp>^AT4oQ3>4bB5`?`%Usz+L%NR)eSY3_yDY%#2*s=(R16bkl}(h6UY;0 zFq`QqCX4opuZF|J(!XRmbqR1G-T)NU8U##0kYW}RQ;hJ}E3rBNGQzq)Lg$;}d z;JsmJ-4^;29h0-c${3Auv$ zl2CefgP$6tDA?Zlq4}}EW|(vH6cy)r=Bg*ZihHIHoHp^D|DmE}ASwK?_ESuh*dXSb zIElrg#QfALC$eK2k^F%xM}jy)bAb%u*^c2T2lPTPPkkpjTmaphS+JjZ^&mWnnVEPm zDojlde!{Z~Pui6f-n&QWy(_+S^Ydp8T|7zR(3cYXPV7z?A;Uz9 z-;a|+SXtV~QL&q`Jf<`rID-gXwbh47aoUVF><;-w@mIXYDxP z59+j)0F_M0yu`^w=4~t6?y2d}534H|C#*p?f2m7IAlhWd0n>rhu%@S5cN%bf3it;l)<1;M*z zm-8K+j%HxH^Zu90AKaxS5+o|^WO+}lx=y+-;U%bjkLJv#OI#Vl^#1BMp++MF@@zKV zsWIa5=L?Q!U+~;ZChk$shFnAkqA7_Z-?PpWC+!Zrrb5w`>wAh;-OS$S0Hf2zJikm9 zhsNmjh)4@p<`V`V$dXk`hez6d;o0S?Dt(KoI+{KuoU_`T!Wo=9eBzcGcR=@g$%@e+Uf)c>qVF<3t` z-J<_63G-Nmg)y#uiU)XVWzqf#Eo&2~WdV9~_EeERaoJ{w5p1fD zG>8h=cXP_{+5s(3UfIEbhB+sndI=-B2sPz53>dP5=>H#tTM)8see*D3Z+pu+eCmxQ z`q$oPzVAnvPg3|F@rs7*svu5NL`e_prxflu*M&TirR}LbudqniP+3RKYNXd^-1G*8 z7h?iUZz&muF<)v0PBfB?4?b&}MlIYV-FczyW#HH5%epA>iLL2csbiNFPnJU@0i1sS zx3II(-}8qDpJF>*-G620dFc0Wy_&wm&@_iH)VYyj%e>bP6aAn~2{zHn^um{%nX_tW z3{BF{_*}70E&nZrl#O!ZHjkeCi$h_=+wSN1A10s9xLbrGHG7vCa3JtT(sh#uuLnKq zPcpAdA+LEl9qr3Nj#hT4&$L=xEaj1S*Dy14EWS+>x)w_8_;9dy`5*4Vm{H`sWaVxq zKga!;v)e`Z`EHrHaaUK>;6klFLG@V-hsR(HRU%!LZDlTE^cMSP#U;;be!AGpdx7$x?Wa-_LQEU5-%+cfbGC7)eToJfrXMG2G${F>DAFRVWb4m0(Sc%|f zIJn6z=?G`d*lXB$-5u3f9Vw{HJ2XG`oq7DnoXZi!!9u#D*~0_TQyN96DlqplHv@LM z@!eVI8vlEan06q<9*jLv84uB-lol`94fojOK94K*VzIm zJD-&Eo+CEMeI7V+5+;}-Y_VPe8bPEZ`U_O=95|129-X)0V5rivAw=BAm*v%y;x5mk zT$HGCCPlJ9NyI2(K}fGdyQ2YhqZ>IJ&L1&*t)&K8=!EBQTl(lv>E#2PFCViGMNozI z=&A+Fi{K}TvPO2fk2YugAMlHK?buy|BkjTkK&mRv{1S%xEn>>)AvHkkx!k*y?{+zz z6ZD~RjIeOY`%v}D2x9l4)z$CQHg$?MYF5Ti#IzE2rV1u?ihuyH@?FI^FcPnx4@M-K z7>p{{ZRXeD|0kQ-+5$0L_KNHk|2D2WKBIQ*?gH62!a&hSO~`Y|VG)A3Nq4R#--X*k z5REzCDlp1f=6?RNoxU$mPWOq4SiRZp$UDA%*I7`hkcbpiN(CCw5jeiRk@tC4&VuUo zb7?a3l~Ud00rRam3!R4lw)XR7&kea5hkn~L*DL)NT^-KSRq-Wc zsuEA&@lW&io~A6>gJjhcXdYEmyd^y%j+L!2|5<{=gpFtej-f`s8eEsAX~&t>I&*vJ zl&RP1i7)T)egWvLdoQA^f?0V~MymSgQ@+6Y8@U8!_!{4!st%`hB$^nP(KYB8DS|!9 zXo;8XJE9|esq8KrYd6tKH+~1U{PliQoV6mVL0HZ9+xaSaq5}9;jTb@`VoE*?7&hlg z#i0Xi!yd&U#bka7Csu?jQv&#vG{fN^c!JDtj^oty!s#Rn06fDJsD1>{uRkW>NkOeu z?oWZ525qUMs?B<;W3*?JMNap}ZCGM6xSOzB6&oV$*` zB0%RAwv}b{FdF1Xm9MsP$ZC;A$lySdz4&_-*?mRrt9`c%%mivJM5-}Mi_SNA4h5Bx zRA?sAK}_#^BK3F72_BD;C%r1tL~_8u8&?nL*5Emg?Oz-T)8^_8td|&Z1x3LO4;R5A0 zMpDmh>O20JiG-a}nIB-^cBrbohS^LN4jaTKS5_J+tqxyZomk0-N*h~kGg$TZ6X-Xn3F z%4A_B@Yy4LT{ODM(d&4-OFU9HuC4@=*TDjY_FU=dyO+rSK-8rWk$_)a>USQO-@zy5 z2=5d(mbD1EugU-LvGq+Wh{q2_worvakWe@$Lj7R%g*!P{Y-O zvv%}*VhQF1Ht)u{og+_XzH#q-d>QRjv|m3{HfD}spm zbCGMW`rq3&yBeZ+Ss!&Kjl~0Wm(pd%!)d|OB*U-lnwS}zoA~0Vg!n>l(Td)$tS49CNWUh-R<~Nr*zu#N zPb&T&Gd!|J-hW9C;bQqrYL9}F;0G0Tao)IFC$6U|d%X-1yG;>O7S~tw`*iBeEWYvZ zTDK>OM^x-t)R0bbpKVV1>(hC!pSH(hgKe6BA{jjk{}Ehg z5Vn?p|Lg-&4a90ps8cZ`AN5)`jQtzjFZ)kVoMs{=$&J+BLni>C$>XP3@y^j8kz`jT z;j>cr!-vSeu~4bcfbG|mOv_Cr?;hMM9KX^?!kgV-M=rV>_m=T`*6h}!7US0f43DWa zH~U-Z2H`c^?WSi^zrN@#zjmv7O4Tt{_L+e14uuEtBH_b1r<8v$y#-c|$zKyaS{y3X z@|9jHO>h1#8=`kI>`Nr9t{`yv#s+GX{bm<8CbO7A9WWuJ>wE|JHp#{C0=_9IzPq?+ zIy(HlPuOEh#1-`vc4IhVFinHl@8kt+VZ6Pbq`3LMoSp;--j~&9(Owh{8L-j^6>txQ zsH#eXzGz$%Pube~+hqmdVUo?8;~+{yMM^J?Q!`>7b+}aYC|{XVHmUmdTXerEzVz|? zqCex;;wU5%8POY?h7|^&k@w} zh4eSAy`tQLtZ&f6(EOgQS!Da+a-t58LIY!54?iR2ml^gfO4QN$uxedcv82UKT*zHLZfKB(rfC^eV-F6f8cw z_I{{e50&mRTB=;hsQSCGCZ3rBK9lmNgci-u8j;Mau(J#wFs~V~Bm#K6#d{vie4_zk zm4K24H!PA1ZDkarWNxmF1WPNXoh%N#xIak;Wnz+~5oRwjD>djxBi9!Qm>&Sl$25)2 zBcrK<*Q`%%OUiO{+oUtq}6iu0AZ~7i)=H5I-5VA zBxE4Ohbd3fMWt^m-~b9Zo2c|NzYf`W&NaNRY93is7i?YYN~5xI!ZbncUVz>UYfJHv zth+u_OqB}}#MYWwHBY6uA;)zM0o$ZG$;TDS^7Y?Gf>n7olo1ujMZSnpM%)%X)1zIN?1&+rV*=XC#b08} zv5^o2kAhwP(j+j=XZZd1tyd@J)8Y^i4e<~Dii5F8byZgYVx$^DP|)$F_Pdp+=RBRt z5eWXr-KfCE5|%mbf< zugm%$^wH|%*%%zhy!P-t28`0g)9~A`J}kV~jOzDSRJS+7HVXPt!=5Y6Ref2;$^M&k z5}r^F=%4E9R|fYZj2ww8{kjW9ctmLILE3NxaIaL*oM3G^mg(GDf3~OMDGwkeC|xfK zYZ>d4{DZE&P^>FE$b_6qDo?AB#!(EmP%4@T6kQLug)%Bt2`Io6&e&-K8vf;5gEmd{iok+rOa+o)b>4r4ZjOi zQ0i*o!o=poND{9z$xSf$^o^hwjP)jYM=L&k@PKv`Hax)Bbe-?yc!{nipCQ{Cze~8~ z_$jQ$)yU*_>N>%4+RyD$hPJ1Cg7l#1`P&Da#WkMn+858i-;i--Yh?|m9T8r|;L^tH zys0-M%PgcEZw`_eX(#WUp4@Qt;L^a_Qm-fq$NyM|zgD_ePD;T=|7cHj+jN45FkFRz(ROzGXy{n@*VltvD>zL~#vpPqvIStjGC8_tav^R;>S zG{E;QH%@>dsuJhsgdu15jq`N z=c{S8X6$SIzgQb1MFo?T^ru}zEQKKBJ*sRi_-~~BmuoZqM1YBTzgjDn($lP5?%FOp zNK&lTVfL#Yh{XWXbcE7h&qwbFfBmw2?(mN?mLSz!tIB?dOO*w-RQhY1yh+_dvBJA)5(TeN)P5dioUTwhUqZQo8BIsqJ~B~Xed;sSe$&a~ z?DKcjFY^6+mxeVeXvE#6Zx(DkXhK7p4^rQHw7wO?CjU}=X1G8$m)?V|wL;_uepTU) z%<`MMTBEw~?PL8B4mvht*kAv4O)9P%5&BgrqT-sKYO73b9{Tu=Pyed~!V=oGV$w~x zWf&f7!1Mn4rO(o73-enwJO1QXD6IUa!S7|$bH}c=`iiTLV~?KWGcz(Y<7vl?#A%-y z*z)8vs~Ld3oxpJO=?x6)b@nXRrwO{;epB4Np!yJ1L0rw^Ej-_;iy&}0|$y|B|! zUUqZ^6w^aoOv@b6FhpU$G$7RbXPSZZiV4NqEdCqD*SdZ*&N7BiIMW)LVB>Jz+B}8N z1i`25{VXD~(ZZ2np*(8Q(V=;BcxxP+?zP220*jY$bxAHKza6S03S*!h z+pT_b=>&dQ=B2G8i^@EoZ(|7I8XQShX(!&b)JH<#-2Ge!E~#JP!*w9wOD{nM+D!_r zEmZEu{iK`c@R@m98;oacblcXh5Q6H{oJ{YfIQ-Bknpxv1NDpHA>O*zWr|T7|yhXZ3 z(tP31_S9}sk3MWSLGfuENPN()mle}>Bm>k+u^LQlwAfp`H_mEEYs1V#br9PsoL~}v zDK_DU8R|au{&&Zo?-=k8!xWnT9o_$goBwFrIwj~|en^%tijnW!;jVwf5aS_nYoWIa zIyfP9%AJ#;TNqU7KSiK&h-m(M@U;=A)1LgHnghw!hv~-PJc6kqa`GbCXJ4zHAU43L z8Cy%-{Ao8>P|iv#=4o9lp18GBBr7+lgi=Q=OIn>7fL_1%v%A&5p3hSIeqPFeAq5}f zI^+h7G+rkdT5(SSy2G=0Q{}x|C47J1v=&^yq$YSugSCT6(X6!)R?-Hrjsnv*vCOsp zA5})CN8{KDhJWkmn3QhL|9JMbFSQ_`k64hx?eEFVnJ7fs0RM2#WcafNZ! zs0OPztj0mVWr=Qbiyi`DS^>3p=f-dKF3U4uWfSHI@TG^r4}E>iQXYP@{0cPk8SH10 zyZ*Og8V4vb?)-i{J;2oZ$tvLJIqRoCvw8+Pbsr1%$_!5K>gNBk6ZkMFHVpXUsaOq& zM?fF;A0|I&)iopYnHqg_i~8N6o`indNrwJB+HraQY3I=a!>p1-26QrSE}QS_YBcg@ zdBYOQOv7x%JYSq|Jp1{0Ub6ayCGA$glV{~0;f#p6FN$90sv{u_mYOZPDG#PP3D*B9 z@mcr{7}{MPKHBn&b=@rMh@uh-Fq$ze`RlLt-vE~f+cI?25Y$!UMuO@e;^Bk}(ix3>TVT2s1-#Ju5oLDX7Dyf(3@h?-3E~XxsZD z2I44qWtqJ>i3=3Z8%8bj1P%-{sVh@a{Cye6!SQTd^(%PYXPMaR23{0$tS_o0=#EE= z^RaFGZg^M8|7NGftvth?S5W2BtZ(1j>>Z|LSQHXQ8Ui@^LdVKOJ1dRb_=~PcUdavj zo~;Kd9?KHn>U<=#^<1bdQk_aN)r^-*=etjS5LZ3P2l)Ss z3CL^}bhf;NHb;o4ojMbw4{&YFM>+z6%K(K?=7ZR&b{J3%zNni|Y4_7g;C9<1xO1p{ zgPJ}jAuBk?0UN!N#)77Ri$GT)xIy$36IM}Yq=<2+_yW>Y^*qc|@u0D)2%&kq#@@mo z;}8dlzB81CT0^O?UM5isaarS2W^;r@Yq?&z`?gR z!#o4_`ipvarg0aB4`#OEM{{;v8}A>BR46Nu#SDr6%txz0aIbU~l*De?&a(T*j1=DY zXK6MuLlgpMTQ3DMhs5#unhJmSgj^n0?m0xh5K#A|sLs)Vnbd&s5@CZ!^$ao9r}cx5 ze_LW~c=9=#&yock%pb6k`Cc1v<7(r(ZI?ovfD>XzEGxTZNVuPUDBo#YSCJuEvu5L_+vs9Rp^+v-sES)(*Tg}b zPA}0I#u!d+ZFCVo0d?bgzkk1bh7*qk>{xe<7!;oK5jnJ8)@_AK zVfgvR4UTr9nf#t(ztTKO)TOBh-GO_S8& zAgqP-mFsJZlPI`$k~;7-*N9LcK6p{t*NK~w@7^?+a3A1^Lb^MA``?;;7=ezcUIW{s ztSOtf$Cr;31>L7r&@MKiQGHeNmnj4dxFx#ke2(j2*|!P9`&GFO8wD`s*AV$S46TUH zf}Uds$*v*tw8c3PztRlvUcCvkLQxe4EHvzN{t!Jx8S2Ik3Y60ti>#vxo!|T-v$5i5 zcr`3nD=^(;hBfR~=PgY)=UR7$} zcEF>0(eqz;`m&Fh3rJK_@cQKM(CC_A`PwAAsL}(`aAN*N)F|mIyD#f(%2|ZE<>@Hj z0azYymCPv5py|i^51Y_yqB8-*%E>6^Q2>&TRjCs3Vr7?N45U^FnTwwK!u76PhPOAU zGK|F$?8GAKI5=s6{Ei{LjVmt*vWUbFBdG|c$xtc3(a5Y2Iv`zcnGDmB95#G$j3%A* z2NY?BmFS?yxhyTf+=7%3;r#tUvKrO)IvLJ6XN{b7>r){zL;0fLrSY~P?hxlYmJzu( zl)RufjOuU8wuJ*lXat~+KoG-@JaO*P%KM0Lu*0QIWZ71@fW-UIp^)y+M8-RuS_T|q?Cdm2)J@4Mh z^uTQzMhu0c4=Y6ATT>aI>zsx1K8qY{;ef2#%JWkXs3@$G)6~^E@mlfs?f}xd!v05n z7BB+UNuikskf5n4$~u35w~Z51CC{z9ORkF$tSStIFRas!_aHL#tW3o6QPtv^65x5s z+dUge{ZbtxLuO-2qN0DpbY*fGI0MCzQ3uEK{A~sM1Uo$~G#ft-{6CO3haH*FG;>-b(JrhJIM z7h3w65x9B&+1+3yk4O)=M7mlj(Pkw5z8Unnd?Yee=RR6otl*4Fk;xP)!^G22_p=dRy70hep;0k%EI-;`$q!U!>(&F&P(fv?UmLv5CS52YV#$;zESE@~da36hvu2|R?~D)#i2 ztPx=lfX8ZLRU2mL39}10S76*(^!s0Xw#!wzDs3$Gr`u8uJ4&Fl^5!J#d@8J!9pnOX z;8S!pQX1*OgDcv(v9g~+H8%pxn@E;i z^u7lxF-U<9>}npJj-TCu4N-k^W)&y%A&0Ai6hzqXBCr!5n5{?UOTBuREwsjC&9@7g zggbV_1*^%h&w58zSB@8ZpdP_pKdga|1O`&b-hgRn2a)KaD!*5gt^>RvDQ5Uw0Q_22 z@+scqatQekRj4^FVs>9vcSaVcq+*s2eT$YTju#C88N9;DCm-(nEAmBDVl!zf@J=3B z&y0Qx7GBgA&?kAMh@@G)B6@>K-H>v&Ev4F{-~}s?S5wJF7!3{r>X8r0<}%`XN4~WN z{7AsloKN_uh?KQKr(84YcHrE2w2HpGVVk+xbmHVr%o83XNt(~sP~v`pQiE7p>r^~9 z&PfKM2mAEhL@x1>#1+~iwp>LS;(n79ST@dSkf`v2D7-PHv|uXSkB_@h;?bjQaMTt4 zSe3Lmm!JfOWp=?H6SMeORvDSpFdO(ow%q?}VeMp=S73IRr_BHIkNSMRqbkqsP#(E){x~8lq?|G+pQKdZ-3Jixd3}ifjxKCrhP0A&0y%cDpAU z0uZ@$Y(|UMRCrmR0+=?7WQjSZ!Y1SF7Xp$yr>^A`qya^u90js!t1RE#x3*0@#bA0e z^x%ysmItr!cCYXPMF>Cb*WL>5K+BX2(SAOK4>OZ|fZ(!L-JwM95e~GA3&B&MNuB1B zMMicWdH7WQh9F1gnrUTKNLhbEQi+r!OR8;Ed^%Cex)Rc;hqWt%ZRimlWI{N_Vk^C7 zS|cz=k;0d(!abbOL;&oon~a*-Wy*@?KWpRy1^U*;>Kvmuvh3(M8#c?9+n&;!%YY8` zLWCuS9hDR)Nce01K(2P7yk4mAFhD6JycD36Z?H#67&J%-v3K+koeY)b_dNO4OgPsX z{<+hCn-bJbfWMR~yj`O_Ns12MhYSSD^LoK84D#wlM4h)pqz+;(c)&SCLJPoeX-lM! zYfX);Xrl-Y6%^kuJbH(XT!IJ3Cx*5Mn3Su!R9u8xJcSRSA-|u3W3AyEi%=bXRo$xkf)UNv0A_tC@Xc3B`jMV;;2t(C0|iy@IWU&tP%li2kU5CJ@~9iOuh_N(=)Wc3qI8A=0xwE(5Iwjx2y0wPj!u@ERyFYNQ*0>oFf&Q%4la5nb)*#md&pCz-01oK ztW4_?=H`6;tyNFY%rtT3Iff zQ*Gb)5yIwySceEklzHCL!;KeTrSuA!iaC&;iOs?VZ=+3g$8Nmt#v69yhkO6W7nlz? zOwE5Z1((cJ{@;6jW}&Fp*@`(Jl=LtpKMXe5D^_VQ9SMxk{|4P9H{PBTdh#1)oUiX= z0(;LRTu>_cGg0ZJ$9;{JT8u!&yVOBlFuP&r6lvhF+8xnK1nh=%U4zv1&_W6s=W zHS%I;g2DTa?yQFs{&P(X};Z#^7T###D zP=6M%0QLT-pPx_krtk~`cU>;biG{}yWDfqjY>9BB1lU3s{a1vhUJx=q0wYq4b9PcVO1JhVA^Cri@jHk5ur zwlzIc6%&E~1!?w>Sql&=#>jQanH#6W9uT4W>n*45WmH2Fnpd?gIq3_V`kW~tYePp4 zQK-j2?5pvSWy-KtscJJOvSX!VXOxwv;iR*`KXp)GR4{CJ73jW^( zNV%!^wu8vW3ppALx%UCGF?Py*Ww876vIBe2PPn--@QR`Stv^2?wxUPoYbU8(7YttR z*w(}Y9x35jMYVLvh#J|}jL2;s;pD=;zbXcE8c!&#)Bi2X#Y^YPMmj14YJ5m<0_`%P zyMmvdD&+=G=LtY_wW0JTsElS;qM-foPLsv<`o?LB-YqvU+x_CI9*tm|L#@Okbm%npYg#>=`@Y9xHG1_bLn-f!+nhc2R{ zH3|~sJ)nt?dV9o-1_C_8ZR*n=!SA-h?in0WT$3H#5$QcdD|{*vZuxwi6>azky?CUb z^VSkx7jW}2<$_0w?J`q%aUTl)Jm|79xdHd-$(2E)StX54yYDbTzI{Jjcm_b((1%x~Pv^!LiPgjwRXJwH=LwqFRaof!O z0)^Po?9PkN>;s*KfLbmks$tVU*F`Hxbr4!-6paGbQdl!^6khAJd_wl|XcJ_yVP$pE zzgUR(3W3$^NBK++A89MBROV4{{Aa&*fVLxq}3t7d^BA>1YjJsDY?t*@3JMLw*Gz!851S_Dr#91seBX z+p|Wi@E4HP71hQ+sXleEYCVYM$QmE%&D0_HuGl>A(eDe+aqeS~;?GU8O{Qeth2Ug; z?b|OEyV&BA1LEgX^)+_MHhkY8d$;Yc49${NoBtJR1lpr`y-Yf!WrBU8#=E-q{7XS# zr88C&Z>*J`MJYcN{PwA0fnxTO4JGEAO$G_w{j&KQ0_%oTvLYcR4qN7vGQ((%?SLr? zLTF4x?%wmzseS!jLPTAx(f3Q;_l5RbR=*bWN&zNd3SMwKF*y}=v3GZah3{DGbQxJB z!5mYeD^s`XM4&gAXPOqahuy6TcEF`XNE7^c_ljMPKCCAnx_aJ8R9V;HBs2gFHaP{~ zaGWDmLSL7r*y$$>wk9j&OME3rzc~yPpQ-#rA} z`aFjJ!VN$K!Obg>J5!K@Ji*Kr5)Wz2Mco0Uf82uFP}uB6$@tq}3uS7fugB3KAc8VJ zSApAhzssrA4{lJ&?->-VX}MNsR+a_gl;F@^H+f~xUX#<0l5LTAC{vK#a zu@iTjQmL~0!TJp&X*M_Nb{kxqy<0+OCEc4$8bVrlyXze8=-yL&g$@05N){2Skj*;) zg}R^iY!6xOpWm-0bgQQF8oW5=JdpR$8<3{q;?a0^Ff#C2*0`(}dWjvYW-ml+^QJWA zX4mINwlz&zIZMdMH`jFnGnmyBTOOVvFGLWR?GJH@D3OurfV`ERkX{y zYF%~ILbg#o7m&UobFP=yQSOy}I=>`&f%mMe=he1Pz4O9WOcNE6nrG_F=jFo3K2{aB z+iSHwQ?o_OGa^NpHm<{^Ztj?<(o+O4lCr2@JiW)4@*wQVx%PKkb+J528)Y$HaQtOa z^wdyUME2sRR@EbTqeD{n+`Fvlyc9kS9Nri(TS{{LI3zM`wM0`j<{hQt$}G~vm~ln` z0TUT+{@nQdxSd<|K%I}hrnUO~$P-TdjY5xLi{BExXD$rDUS6|th!Wq+5y|V>o2yYN za0}ZSB6_KGJ6^Xky(=OU)%A;CE{MsiRuU9%{>eS~W$1lr(Bh4`Q@O~p_Z~Z&W9#`G zE1ClyJyOG{zS*TZEF1g4?nB*;$W^dkqY4({&p6^1=dAjcmUT+xEGf*PdmJaG5}G11 zU+6I98rtx9vxEPM<&(}`x!DEAhmtVdH*jfFH~{yW@jrf9P5<1YpPtuFSDliwP5cqQ zp3iGuTj|RzQ#+I+H}!>{fYs}NkRcEES^@pLbI(F9g z)|Q6&3~%9}_`KMaE3g0M<_?CaRON)NK9{PUqTAb4LiR{QQ62+gh)Dh1Gc|nj1_n>f z+Gnhs+ioAqEHKM59aB|omxVnJU%lGDw+7z4K_~q-U~|Mrvaq~q1liT`8;>zUWr5X_ zoE_Oln_#J5USHAktv1HzgL1DgJJDRcO8)0vg3`ewMXM1mr7D5_Um5nw(B)GsvS?K? zZ;?i{`)FAiklhM4_3uW*6F8&TBX_y0{~CJ zU^kWbYX5$L3=&gwD+leBIh@hSd=f0sl~1l^WKGo|4rTpa1dW5#AdcWi`Wd4lv;hU} zllkqwNkGHbkeYM-rPVNJotB)0^9wnf7G)IVMEfL zhqCs^vZlq@D?!&6+Op*q_aV6|>2eETT8T{qsz|#bsL^UBT2dby8Zvgd>l5D67-`{- zn~@z^8G(1E3B{xh#5#PG>-i1@=j5bSj2GtWzU&<5F-K;D3hj^YYgnRt(@GY5@zR-R zAAkRgJ1$$suLm$3vQ`j-_xBEiUJ6co&$w#J7C=fr0<2m4YPS?BeQX)P+@L{J{>s$w zZ#u51R=)1So@GPT$AjER+`GzQgZG!1m}yl;#_jZVNNI)=gK0M;rN8Sz9FT7N**0eL zVBtFM|M7J${!G6A<9FEDiDu5BhB=>)A-rcBW=@;)xjDX_b1IT*80I|8G1Z)j$%;LMo?9rQVcEN56f(f57i=xbDYwU-xytp3i5H1+q*roH4`Y?s_}i+47Qs>Z7(+ zGRz+m%o-JXr=u32#&cqPg&1<;UiA@?DMZW>sp}$Txa*=NEd2ILYgN>@xY$ zp#O00Elu**B9{zhuRYBS@GINg3%Uhbl3Vl@+ zi|~e?FZUgQXG-^e&I_4lh+h;5D!m0O)v!{y=e-1SJT(IGM9NPGF0qTWb_|u(_El!^ znc9Bb{}yWZtI1PCvs`yTT7-s}L8MT)(Ar!;ko<*xdNfmuzu@RruJ|N<%e8nU*K$V0 zox1nz{KV&dL>%HL!q>WKUsdd=()Gm1r<(aZe;BV^MK8#*W5be` zKV|jg<~B}I*#f*6XPNB#&PVIhj}JM!8FD4UdN-m`?b)LJE32*v%F-GYINRWf6YuVP zFh@v8+>csHn==d-AbmVKnTT5(;=8k1Hahe+U`xDVq&^QNbM@i{)D&`LT&;G{+TBsL z75VP&73+wp^Ks7yN;3(4|A9f5G6J+N-pe*#_Jz83oK>#1;Yj21!t+{rOy@Jjx+E`NSNX>3IW^c5 zZ*3RX(4J)Xmq%=`P9xVK$dC!fiqVHoV`Y*Lk18&m4!Pd#0+Rjy-0u2o%5ab-Pw@8J zm)YouQ(~GwWxB}NBhNGgLAvHta&vvtU-{O=GTH}+#+EU^=GlsN;G>ZrxC=6>-AGII z020K`MNTXa30QL%BCfxBgM&>{g^OH%Xa5M6vxVSdOKy1eOI824;K#Hg>o87_Z#mfg zt#k?nrtMH2xBzzW|H1M$%T!`abAj@MWw!hU4h^0v;1hqf<5wXX1W>{ZebqIp^tfk> z)crG7(g2r|@w|pbQw#6_9H%}G2Ut?>pCeJ1L3J(bmGly1pyY#QWPkhm@Zks0cDhIl z^4R@H-DF$ID0HSzl4i_Lla^uhh;{~chsG(6<2hiJG63hnccyt{9t0o@QJ>2W zw)a`saZ$-0#qJ(gRrAJpTgD3LpmR3&3y`C8{$}PVlYak3yA+665W7%zv=}`{w|c4p8kdssKLG z9D3c(lwrd~C7}5)w_pmn%;@l}Xbup)W4W{f+TzV7{svil0NCj{e(`|(IdRuz>R<<7 zoE-dgwNL?jl81gl3#SZXOhI`YfEELn5PN zIKcX(_a2CmE_V(9C4?nRKM%0QV2Kd}Np08kzF`0_n6@4>3}O!~QGF{UnqwHpRnKMm$c9M~N=I|rg2 z9{V2O(vAcg=0Pk`)`dG+DH65`M1X|^RVpu^j3oRo?92sB?8|zR_oxufbVA=ddvH6z z#f-;!!hTLaKc;u!w}~ejI4Y9og3R!u=GYifE9$3@3M%aK`}l3tK@Q8!y_Fe+`}}>o zG)IrDOELW6AU?tXKfMC~^!M!seXD%ZP=9Mr3iOU458RUibU|8pBKdrUGLOqE`Ro9B z89BjR*;n@XFG)NK9v)5GqtQ1c4cD?R&W;zx*xV2S;&vvZC5ZI(heIYJpLQMm7HA%5 zV}Q46;jDv7D-93I@EXqe1{k_1#djtYNDl>|Lr0o9Ddh^A%j8UscftA)w8R4lK{`l& z1>x~jZ}`;39V)OPllB`_m4v&RHv7p(tUX2y@{tz8ppyEi_B5?r7~D0q-kwJNHzmW1 zHrA_>>Bl6Yl>v@@PksWZmpOIpq^u*49X^{Bz(e)9=aV)}7KwgH{qWnytB=1%-I`+} zkg_Bck{|bdVFT^v`xj___)$W{gistF)#((P2O!TTec_>+>M#D>f+#9bP3_b? zNBWLB=B>JFm1TfV6=K7)86U4w-JXKNho4@d+cEHzi{1|Xw(RK-3cW)s(5v#?0 z4_V7(pqo*Koy3v_nM%zsBhX0sJDk!u|L@(LD@puSZT$MzZ0I0|=4E~oJ?AtK5Pyy8 zKz7%$WR(o&1J?>XVy5dC4KM+-eEAU9W>1U+254$)K_0=vseUN_3vgH@5D*8qo!rj4 zyv~1R9pdpCVg@Ae+EGnE(y|w6a;^{0{Gl~_&pS1b_?b<_s3XX;89r=cGd{!C=y|s& zfC>k2c9tX#Ox(=B0RaEr&6<1aJqUy+GTrFPfb)O&lRttIkp$a4pSF(>);Sva+&~X( z^hgD_-8sOZ%@v6q;DU-B^1>q^RfUAKpQmhe4VL zAMXz0-8KewdSC#Hq*wKM8JxW5uSNa~!>{H_CFb)Wws`9G0e*K6{?!bU9h2{42H9-- zR68!+qK5xHspE0(9>)NbT0jBdY&luy;O^+K(L5ZJb;W}t-QY_+j$oV7!X{bqMqczC{@;rm z%ZFLPp};tFmLne^@+1G#2L2z?>ksXy_kQz-qXG9K-4kLsDijy9^8f-Z+g`f#`cGQ- zFpyU#=XmNJcdih65}yKrgPkko6SdOM0Wd_Wb&Lm=n7PSCJxVajN|f-u1oz5EZ#}0? zdMajBvX&Ye_?^Y_tYRjwEc1I_qlWfnUGaG8i#8rp(Dc~CJ)M*aY|eeZ2Yxo3K?7_0 zfq;}xsAi8FoI3hIOOs~>(31>|(_O}M7IxV4F@TyG+Uk9-gyP3=STFnSmOfW+kL1f7bIYL9>bd*V{sC#{r)J3N%IZOD09ttJ^*;e0Q`LX-tlSH zTvV3yM3&*5?G!wFn-4HGkaeztictoPQ~lC9yQIBH z=dYP!cBGbBsuktQ+3OBw=H>*pP2oL(9$^7ZOM|+e-lV?ei(MLl78?+U+ z58gcMJ>xcKEBFEUATrjH|NYX=jGyaDUySWursH4!kY;_i1FdHcwgifgw@Y|xJG+*L zs`SNV1|8^b!^*=El>e2aO(O=V9zk**D9P*#E=D&yxMk9mI(Q&xY z7y0%qs}A5)o%;A2E*<}tcCJf7U~NBb0hKQf3CCy zcjjy-d8Gdg-ohi1YI0BtD`TV1f7Xyq$ftj8XA7gz z-S(@WH4+aBh_Sxw<&K~)e?Eb3M1b@kyuob*6&~{Mv`3Tv`)P}A*lxD zzVZq91w!gjw%2e}?NVI4Ql=-J@5lfEAi;rWZugL8`Skyz_1lYFJZbCt)g^(RSwVZ? zboQxL$NBtgULZTuXZ`NJzxsrJLVY(%r?^6|mz-_EX9j2kL+FRuXTDz~WH`^!THhpD za+7NwXEmHjuEb@r4;G#Jbozt=xQ^u3?;yt8m}bg_7PQReuef>QVQxCaMt1v}+Kvb9 zZ9(Y1RxJYEyjvqczr6e^dv=0;ncWX=M++(h74j zmqp}{=P0S|cb$44j{Mbo&n4j*?K$x09VPhhYZ8OwGZ#*sPwC*df5Pu5IyUhYG~)go zOZkH(0vwnhJ_e_>(>{(3d_Hn^)}y0uyllU#8ts^%MVcvf%qf57pepf>Y?&^)|C`rDz5VJbL7C30u)e{FXqL)116VTryMW03Nd;L#N# zbi*~G%&tP)^Qs|tac_9pZKvy@_o@Ip3w1WNTywR(w#V-!!hZ#;s}|ibLw{Qz5e~iW zf-R%CwVPUo70F_}1h{n*CY6^v0#16>vutYHeY%dU||2N*rcn%MZehM8dQ>Mus-1W8q9l(9>Td}lM`@DMR3V;_f(jZjT*~8z!`hp zgNLSkdViasHofe8EYNf*@R<4ORo?o*!)?8lBEq{mqWMk`kDCr>aEOFtRLt9|JI2vY zAWvWb*D*&?`^9;fC9cnT*mHw%5P3@5p*S*28dHtEF>AwAzP`%?GWlp!MmPThS}pu1 zLovJ1{3j}mVg6e`=$P@49UvFo1`<(-xDBd*#}G2Eoj#rV-r3Qp8XyOkjY?jDhmsZb z1F%aT>5Z7lYLu;NWp(dKWE$u*{z}4M_qu%3*DEUx}=Kh)cTS5-Z&*>F0 zhL}kfHGntdpbf>b5O&`+L&hy94EU#@lJxm|Ct5$&C=$JUQO@?2Jxj@(DwU?5Q~#H> z&rg2=rYU7UJv`$`Ntl0Z{*C!X0y(dU|A?JaY(8c_W5t+h{*Nh7qPDhVR^Ds1sms$n zdfvkuX1S-heH(qX8irTCy@zN;|AZvSsn-QL*Hwl{iRFZ{$1eXVr%CeK{tio&Tn-4H9KCEY27ZaN09 zzyg=U^K6bO&uTDfwIynwcCm%%?|tbGr=}CeL`)CV-_I^m)GJAMh&Ce8n0sW8xD{|l z{F79kYgh-PkB4#ZGrbpfX{d7#ev(Lii^WrlO)RG=WDZ%b4a*O0hAZD#rh+vV)fenf z-ABD8sN6anon{mN6E2#dM4k}Ri^42MVf(p8N$-R2UjBA^DnYsXLHWj4(ZQp{lFB)? zx@8z%J)njrYO_r)({>n%)&-C50)+3A`HE{jQP;NPkt-3sqK6$a0 z-L^}@slKPVgg64p=<_k@3vJ4MP0t5GStFn>+3|tlI!)4)^Pq$;$PbR zm6OQw;QaYuW||`oBr0Wr|bh-K7EHXj&>;=$@)1A>MRc%`bSL`shN7*mo+NFi>eBOeYxQEu>SU*~o zbqHo@O4l1bl`=+EQ6+GuSJ{#$M2p8{-Uz{)kQo@B&>Vs?240bbpD*Umu}+X<9?3T9 zBc}468uP>dBsDr6=NXw=FNqMU*#@2Eqy4dGIeBjfVYXuhqqqV*$Baai^;y|=6~_ub zNdsT{d6s*H5>#743o&*h;M%WWZs1bbl+QS6U%mv|&q^fH<4vxgwn5D{XI9&E3GR42 zI9Ea-H%SbmSfC2H^x{Wz(4C@N@#|YM*MnXd601(4V~)}gXYGPNS&?#WO>h$W*FXv= zSukO5!M&fs<^~4HS95{j<_aNPY9(;Z-*=LOu34k3a6R(VSa`1g@~VlGdoN2B-Se-r<@1;P>li>kX?Qr4l37zFb$XS>>jM zz=(@hh!B)$fFnXItc|ok-}$5r5HEG1=`c%d&Z+|11V-Lq@6?PYvI7~<_Uct;)4dMb zdK!GQaVW1z(xs6u>X)i1thE0Sf&I>XK>htj4#>w{`i^Wh`eQP#nf@;fE8e)r(LiE! zW;zA?;rpM&x^0U{?DKLR2aSpDSSvJbUi@f^K4CZy1?6>=BYak8rDOC72#C6SWsH;adlXlilw(C^X%|f|c58PRR6IlM_N;BpJ{R>R0N$#Yi zFxsb+bbd>)|F+xJ_6hNrYUPwX6JUbjV^d-j6h zb+-4adP~DKEgn2s^a28!N7~5Q(N=(>$USxKXyz{bs~JA6IK$f0pWi~*VLRI20dIOb zcy)t^$Cs&~AZtX*xzm4FEqD2dI#|0Vl)A&S)X4`xUU&f?o5subz=2m%l1=LrSgue$ zRyF_wIm1emEGRjc+O{qT{)e@2Y_6kRVGI!+UUgrb52}akGfB9{E3+KEQ1#;18<+L8 z)~yqkTA6cD=V9B2f+JH)u!{q=^EUoK!(AkzmXy64EWYBLbvR4fkIauVI4(vT(fHGl ztZO=Ld=-(xF4Ac5{v}<{&aq4|sQT&^BGSbL#)W&m_1n8&^~s5r6!V=f4qRLsxhJfs zJ(rX4!9ml!_1@+4LcQU(yrWS!8!-tr->E73qUQ3IxNv27w8RV9^2h$l7c4 ze@*2jchezPs&{gusbf8tq`zr1x%0z30+0WbNXu-B&EMiRyLvOpRz{qyNI2SSZXPX` zd&AzfG&>}u7Ksey#Kjrmw@QMCNgDfUyHS`Q#w_h^vKB+i{9T47>xRxw+S?xz$ltE- zEdWQ{Jn}9_OHcAnA|QZjJLf@zbzVglZ%DeR-6BpY)&%yztuOr9xI zR)hbTTJ=Pk>oW#3-}s}b_bm|xW|?f#OGD8YE)~zQM(ZnRrmn=8Hdoq9ol?a671`fU zac$TAdwGs7oWUCTV~DHrvo4 ziF^8$m8N6UHa1FzEXm12^jeL4o2cxLzxtHV9vbjP0boS05ktr!ch^<5M{6d*mVGo# zvy4miR0D|`@HNZ->qMOIn4xr_YC958P>TVa46BjDwbgR6%9;#Yja@rk@|e}NX?4_* zj{;Cex{BQNF74c4mil5{;<`+D&6JiZU}btO`$a9<6p6K3FwB#e{lrA@6ju-UphYEe z8JMdcIlI|cF$|2tUa@28Xk4d2)kdu@eG3x3ZbaD#sz^8HP<*Dm_F$}mHehHrBYc_p z>|i@+fECa(qZ*kePk$IZE4v1|jyXK0DH7mhj70kIK2lEK1HaPuX)v%`$6%N)s@RsI zmvRKwKmI{7nfO+)H%=O(wCAK^x@=?RENT^u4dOMTyP0r}8h2&dx$$a&(htCZA#G}S zURwD^;Dt7fq7R02-3>Onp6N4sZlC8@UK%L)8Pcr*9mIb+KZLtl{_kaPk$OvFNUot!+5QQ(lvJ^;2@ce4unViAgY}Kbs|;*bj=ymaidN8^mCU)_@JC{hvI$LCu0Z$dsq~m} zgINxQht;5_{UcV(JM`A5&Fb3)rx&h#O7${|G{JYSX^tyLuP_oop~mNNmcalBRqS}6 ziGFh$W$YB3*8zgdmEF{-}2vuie{wyvxuGA23L zfWsp!e}@`rW9e?04x}_W<+MT-p74!pXgJoY!=*4xiaHp~fUpc1>FELZjLX=M{=A0l zsY5w!kZ|76oM%|wAj6*bA&RWT_fK;=RggiLn=Y9s^))s6WFrEr z!RFD%y=UyT*!*oV4;~Hf;U^@m;dU(58J=7=Q;~*L!+L?}0JhR)-ctigWuKL83&wQ3 zYA~uS-r}2m1@ik*H#-`wZ;6RdzK~50wG3t*E&m+AFhV03LD%~TtX2YFXUGkG39Kqb z)cs@Ox!1m0AZoUS2eu;*O~sa$*%$Kg^g*Z`l|{;g63$KqNtVTJXL(kS%MjA;GnWQV zP}P^!3}e!x&#QJ@vMyPLosAZWAmBz7am_Z&_c(QrwcuX|JL3hG4@_`po6B+=AULL& zi#i6yu2BCysz**Y#B1DZ%(E4<1StZ#)5fpe%r6~Mzm!>nj%2F(v2_|%tL$ZD;jG(5 zK-uYtSNiLiAqATvk@)Zi%yoNx1M167m59hFY&}m!wZtpTZf{x?#z(_LAGLK|mC=ZN zb^Y<`olJRCwp`n&9**qhu&&Y0Xl2wQ-LI3B-bZce*1u8(gf@abd>%foZQuB*zL^uX zA~vp3&`L^?Gpddzb%_7+*Gz!iK%<(_%AvSW1x9qR&tF-ks%YeB17@%0A-FkvrHOOq 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 z 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

U-`%`i5xH{42rjwuNC>h7r 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

N~C2%54 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 Sc9OTpb#cc;$Px? arguments) { + onParticipantJoin(arguments, context); + }); } catch (e, s) { logger.i("Error in OnParticipantJoin"); } @@ -165,11 +167,12 @@ class MarathonApiClient { Map data = arguments.first! as Map; var json = data["data"]; QuestionModel newQuestion = QuestionModel.fromJson(json); - context.read().addNewQuestionsToTheList(newQuestion); + context.read().onNewQuestionReceived(newQuestion); } } - Future onParticipantJoin(List? arguments) async { + Future onParticipantJoin(List? arguments, BuildContext context) async { logger.i("OnParticipantJoin arguments: $arguments"); + context.watch().totalMarathoners++; } } diff --git a/lib/classes/lottie_consts.dart b/lib/classes/lottie_consts.dart index 1b714a4..24dc423 100644 --- a/lib/classes/lottie_consts.dart +++ b/lib/classes/lottie_consts.dart @@ -4,4 +4,6 @@ class MyLottieConsts { static const String celebrate2Lottie = "assets/lottie/celebrate2.json"; static const String winnerLottie = "assets/lottie/winner3.json"; static const String allQuestions = "assets/lottie/all_questions.json"; + static const String wrongAnswerGif = "assets/images/wrong_answer.gif"; + } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index f5d4960..2f7efcc 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -487,5 +487,8 @@ abstract class LocaleKeys { static const typeheretoreply = 'typeheretoreply'; static const favorite = 'favorite'; static const searchfromchat = 'searchfromchat'; + static const yourAnswerCorrect = 'yourAnswerCorrect'; + static const youMissedTheQuestion = 'youMissedTheQuestion'; + static const wrongAnswer = 'wrongAnswer'; } diff --git a/lib/models/marathon/question_model.dart b/lib/models/marathon/question_model.dart index 4c77d5a..0bb42cd 100644 --- a/lib/models/marathon/question_model.dart +++ b/lib/models/marathon/question_model.dart @@ -1,5 +1,7 @@ enum QuestionsOptionStatus { correct, wrong, selected, unSelected } +enum QuestionCardStatus { question, wrongAnswer, correctAnswer, skippedAnswer, completed, findingWinner, winnerFound } + class QuestionModel { String? id; String? titleEn; @@ -99,8 +101,6 @@ class QuestionOptions { image = json['image']; isCorrectOption = json['isCorrectOption']; optionStatus = QuestionsOptionStatus.unSelected; - - } Map toJson() { diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 2d178d5..b629b36 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -15,18 +15,21 @@ class MarathonProvider extends ChangeNotifier { List cardContentList = []; QuestionModel currentQuestion = QuestionModel(); + QuestionCardStatus questionCardStatus = QuestionCardStatus.question; + int? selectedOptionIndex; - int currentGapTime = 0; + int currentQuestionTime = 0; - void addNewQuestionsToTheList(QuestionModel newQuestion) { + void onNewQuestionReceived(QuestionModel newQuestion) { if (currentQuestionNumber > 0) { swipeCardLeft(); } + selectedOptionIndex = null; currentQuestionNumber++; currentQuestion = newQuestion; cardContentList.add(const CardContent()); - currentGapTime = newQuestion.nextQuestGap!; - + currentQuestionTime = newQuestion.questionTime!; + questionCardStatus = QuestionCardStatus.question; notifyListeners(); } @@ -44,6 +47,11 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } + void updateQuestionCardStatus(QuestionCardStatus status) { + questionCardStatus = status; + notifyListeners(); + } + bool _isLoading = false; bool get isLoading => _isLoading; @@ -94,7 +102,7 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } - void getCorrectAnswerAndUpdateUI() { + void getCorrectAnswerAndUpdateAnswerColor() { if (selectedOptionIndex != null) { if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) { updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!); @@ -104,6 +112,22 @@ class MarathonProvider extends ChangeNotifier { } } + void updateCardStatusToAnswer() { + if (currentQuestionNumber == 0) { + return; + } + + if (selectedOptionIndex != null) { + if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) { + updateQuestionCardStatus(QuestionCardStatus.correctAnswer); + } else { + updateQuestionCardStatus(QuestionCardStatus.wrongAnswer); + } + } else { + updateQuestionCardStatus(QuestionCardStatus.skippedAnswer); + } + } + Timer timerU = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); void startTimer(BuildContext context) { @@ -111,15 +135,16 @@ class MarathonProvider extends ChangeNotifier { timerU = Timer.periodic( oneSec, (Timer timer) async { - if (currentGapTime == 2) { - getCorrectAnswerAndUpdateUI(); + if (currentQuestionTime == 2) { + getCorrectAnswerAndUpdateAnswerColor(); } - if (currentGapTime == 0) { + if (currentQuestionTime == 0) { + updateCardStatusToAnswer(); // if (currentQuestionNumber == 9) { // timer.cancel(); // cancelTimer(); // isMarathonCompleted = true; - // await Future.delayed(const Duration(seconds: 3)).whenComplete( + // await Future.delayed(const Duration(seconds: 2)).whenComplete( // () => Navigator.pushReplacementNamed(context, AppRoutes.marathonWinnerSelection), // ); // @@ -129,7 +154,7 @@ class MarathonProvider extends ChangeNotifier { // } // timer.cancel(); } else { - currentGapTime--; + currentQuestionTime--; } notifyListeners(); }, @@ -141,7 +166,7 @@ class MarathonProvider extends ChangeNotifier { cardContentList.clear(); timerU.cancel(); _isMarathonCompleted = false; - currentGapTime = 0; + currentQuestionTime = 0; currentQuestion = QuestionModel(); notifyListeners(); } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 1cdde5b..6aa3ee9 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -6,7 +6,6 @@ import 'package:lottie/lottie.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; @@ -14,6 +13,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/question_card_builder.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; import 'package:sizer/sizer.dart'; @@ -26,53 +26,52 @@ class MarathonScreen extends StatelessWidget { Widget build(BuildContext context) { MarathonProvider provider = context.watch(); return WillPopScope( - child: Scaffold( - appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), - body: SingleChildScrollView( - child: Column( - children: [ - 20.height, - MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), - if (provider.isMarathonCompleted) - InkWell( - onTap: () { - Navigator.pushReplacementNamed( - context, - AppRoutes.marathonWinnerSelection, - ); - }, - child: CustomStatusWidget( - asset: Lottie.asset( - MyLottieConsts.allQuestions, - height: 200, - ), - title: Text( - LocaleKeys.congrats.tr(), - style: const TextStyle( - height: 23 / 24, - color: MyColors.greenColor, - fontSize: 27, - letterSpacing: -1, - fontWeight: FontWeight.w600, - ), - ), - subTitle: Text( - LocaleKeys.allQuestionsCorrect.tr(), - textAlign: TextAlign.center, - style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -1.08), - ), - ).paddingOnly(top: 12, left: 21, right: 21), - ) - else - QuestionCard(provider: provider).paddingOnly(top: 12, left: 21, right: 21), - ], - ), + child: Scaffold( + appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), + body: SingleChildScrollView( + child: Column( + children: [ + 20.height, + MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), + QuestionCardBuilder( + onQuestion: (BuildContext context) => QuestionCard(provider: provider), + onCompleted: (BuildContext context) => CustomStatusWidget( + asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), + title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.allQuestionsCorrect.toText18(color: MyColors.darkTextColor), + ), + onCorrectAnswer: (BuildContext context) => CustomStatusWidget( + asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), + title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.yourAnswerCorrect.toText18(color: MyColors.darkTextColor), + ), + onWinner: (BuildContext context) => QuestionCard(provider: provider), + onWrongAnswer: (BuildContext context) => CustomStatusWidget( + asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), + title: const Text(""), + subTitle: LocaleKeys.wrongAnswer.tr().toText18(color: MyColors.darkTextColor), + ), + onSkippedAnswer: (BuildContext context) => CustomStatusWidget( + asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), + title: const Text(""), + subTitle: LocaleKeys.youMissedTheQuestion.tr().toText18(color: MyColors.darkTextColor), + ), + questionCardStatus: provider.questionCardStatus, + onFindingWinner: (BuildContext context) => CustomStatusWidget( + asset: Lottie.asset(MyLottieConsts.winnerLottie, height: 168), + title: LocaleKeys.fingersCrossed.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.winnerSelectedRandomly.tr().toText18(color: MyColors.darkTextColor), + ), + ).paddingOnly(top: 12, left: 21, right: 21), + ], ), ), - onWillPop: () { - provider.resetValues(); - return Future.value(true); - }); + ), + onWillPop: () { + provider.resetValues(); + return Future.value(true); + }, + ); } } @@ -117,11 +116,12 @@ class _MarathonProgressContainerState extends State { borderRadius: BorderRadius.circular(5), ), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), - child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel!.totalQuestions.toString()} ${LocaleKeys.question.tr()}" + child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}" .toText12(color: MyColors.white), ), "${widget.provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), - "00:${widget.provider.currentGapTime < 10 ? "0${widget.provider.currentGapTime}" : widget.provider.currentGapTime}".toText18(), + "00:${widget.provider.currentQuestionTime < 10 ? "0${widget.provider.currentQuestionTime}" : widget.provider.currentQuestionTime}" + .toText18(color: widget.provider.currentQuestionTime < 5 ? MyColors.redColor : MyColors.black), ], ), 15.height, @@ -149,7 +149,7 @@ class _MarathonProgressContainerState extends State { 12.height, Row( children: [ - "${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel!.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(isBold: true), + "${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(isBold: true), ], ), ], @@ -157,3 +157,33 @@ class _MarathonProgressContainerState extends State { ); } } + +// InkWell( +// onTap: () { +// Navigator.pushReplacementNamed( +// context, +// AppRoutes.marathonWinnerSelection, +// ); +// }, +// child: CustomStatusWidget( +// asset: Lottie.asset( +// MyLottieConsts.allQuestions, +// height: 200, +// ), +// title: Text( +// LocaleKeys.congrats.tr(), +// style: const TextStyle( +// height: 23 / 24, +// color: MyColors.greenColor, +// fontSize: 27, +// letterSpacing: -1, +// fontWeight: FontWeight.w600, +// ), +// ), +// subTitle: Text( +// LocaleKeys.allQuestionsCorrect.tr(), +// textAlign: TextAlign.center, +// style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -1.08), +// ), +// ).paddingOnly(top: 12, left: 21, right: 21), +// ) diff --git a/lib/ui/marathon/widgets/custom_status_widget.dart b/lib/ui/marathon/widgets/custom_status_widget.dart index 4fde6cc..8287bb4 100644 --- a/lib/ui/marathon/widgets/custom_status_widget.dart +++ b/lib/ui/marathon/widgets/custom_status_widget.dart @@ -18,6 +18,7 @@ class CustomStatusWidget extends StatelessWidget { Widget build(BuildContext context) { return Container( width: double.infinity, + height: 440, decoration: MyDecorations.shadowDecoration, padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), child: Column( diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 84be7e3..e711319 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -39,18 +39,31 @@ class MarathonBanner extends StatelessWidget { width: double.infinity, ), ), - Positioned( - left: -20, - top: -10, - child: Transform.rotate( - angle: 15, - child: Container( - width: 65, - height: 32, - color: MyColors.darkDigitColor, - ), - ), - ), + AppState().isArabic(context) + ? Positioned( + right: -15, + top: -10, + child: Transform.rotate( + angle: 10, + child: Container( + width: 65, + height: 32, + color: MyColors.darkDigitColor, + ), + ), + ) + : Positioned( + left: -20, + top: -10, + child: Transform.rotate( + angle: 15, + child: Container( + width: 65, + height: 32, + color: MyColors.darkDigitColor, + ), + ), + ), SizedBox( width: double.infinity, height: double.infinity, @@ -63,8 +76,8 @@ class MarathonBanner extends StatelessWidget { height: double.infinity, ), ), - Expanded( - flex: 5, + Expanded( + flex: AppState().isArabic(context) ? 4 : 5, child: SizedBox( width: double.infinity, height: double.infinity, @@ -129,7 +142,7 @@ class MarathonBanner extends StatelessWidget { textAlign: TextAlign.center, maxLines: 2, style: const TextStyle( - color: MyColors.black, + color: MyColors.white, fontWeight: FontWeight.bold, fontSize: 6, height: 1.2, diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index f7fff67..fe1f367 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -6,18 +6,13 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:provider/provider.dart'; -List isSelectedOptions = [ - false, - false, - false, - false, -]; - class QuestionCard extends StatelessWidget { final MarathonProvider provider; @@ -113,8 +108,6 @@ class CardContent extends StatelessWidget { class AnswerContent extends StatelessWidget { const AnswerContent({Key? key}) : super(key: key); - void onAnswerTapped(BuildContext context, QuestionOptions questionOption) {} - @override Widget build(BuildContext context) { MarathonProvider provider = context.watch(); @@ -128,7 +121,7 @@ class AnswerContent extends StatelessWidget { ), ), child: provider.currentQuestion.questionOptions != null - ? ListView.builder( + ? ListView.separated( itemCount: provider.currentQuestion.questionOptions!.length, shrinkWrap: true, itemBuilder: (BuildContext context, int index) { @@ -139,13 +132,8 @@ class AnswerContent extends StatelessWidget { }, ); }, + separatorBuilder: (BuildContext context, int index) => 15.height, ) - // Column( - // mainAxisSize: MainAxisSize.min, - // mainAxisAlignment: MainAxisAlignment.center, - // crossAxisAlignment: CrossAxisAlignment.center, - // children: question.questionOptions!.map((QuestionOptions e) => AnswerTileForText(questionOption: e, onAnswerTapped: () {})).toList(), - // ) : const SizedBox(), ); } @@ -157,18 +145,6 @@ class AnswerTileForText extends StatelessWidget { const AnswerTileForText({Key? key, required this.index, required this.onAnswerTapped}) : super(key: key); - // Decoration getContainerColor(int index) { - // if (!isSelectedOptions[index]) { - // return MyDecorations.getContainersDecoration(MyColors.greyF7Color); - // } - // if (isSelectedOptions[index] && context.watch().currentGapTime > 0) { - // return MyDecorations.getContainersDecoration(MyColors.yellowColorII); - // } - // return MyDecorations.getContainersDecoration( - // isSelectedOptions[index] ? MyColors.greenColor : MyColors.greyF7Color, - // ); - // } - @override Widget build(BuildContext context) { MarathonProvider provider = context.watch(); @@ -180,132 +156,13 @@ class AnswerTileForText extends StatelessWidget { alignment: Alignment.centerLeft, decoration: MyDecorations.getAnswersContainerColor(provider.currentQuestion.questionOptions![index].optionStatus!), child: Center( - child: Text( - AppState().isArabic(context) ? provider.currentQuestion.questionOptions![index].titleAr! : provider.currentQuestion.questionOptions![index].titleEn!, - style: TextStyle( - color: provider.currentQuestion.questionOptions![index].optionStatus == QuestionsOptionStatus.unSelected ? MyColors.darkTextColor : MyColors.white, - fontWeight: FontWeight.w600, - fontSize: 16, - ), - ).paddingOnly(top: 17, bottom: 17), + child: (AppState().isArabic(context) ? provider.currentQuestion.questionOptions![index].titleAr! : provider.currentQuestion.questionOptions![index].titleEn!) + .toText16( + color: provider.currentQuestion.questionOptions![index].optionStatus == QuestionsOptionStatus.unSelected ? MyColors.darkTextColor : MyColors.white, + ) + .paddingOnly(top: 17, bottom: 17), ), ), - ).paddingOnly(top: 8, bottom: 8); + ); } } - -// InkWell( -// onTap: () { -// if (widget.provider.currentQuestionNumber == 9) { -// widget.provider.cancelTimer(); -// widget.provider.resetValues(); -// Navigator.pushReplacementNamed( -// context, -// AppRoutes.marathonWinnerSelection, -// ); -// return; -// } -// updateOption(0, true); -// }, -// child: Container( -// alignment: Alignment.centerLeft, -// decoration: getContainerColor(0), -// child: Center( -// child: Text( -// widget.question.questionOptions![0].titleEn!, -// style: TextStyle( -// color: isSelectedOptions[0] ? MyColors.white : MyColors.darkTextColor, -// fontWeight: FontWeight.w600, -// fontSize: 16, -// ), -// ).paddingOnly(top: 17, bottom: 17), -// ), -// ), -// ), -// const SizedBox(height: 15), -// InkWell( -// onTap: () { -// if (widget.provider.currentQuestionNumber == 9) { -// widget.provider.cancelTimer(); -// widget.provider.resetValues(); -// Navigator.pushReplacementNamed( -// context, -// AppRoutes.marathonWinnerSelection, -// ); -// return; -// } -// updateOption(1, true); -// }, -// child: Container( -// alignment: Alignment.centerLeft, -// decoration: getContainerColor(1), -// child: Center( -// child: Text( -// widget.question.questionOptions![1].titleEn!, -// style: TextStyle( -// color: isSelectedOptions[1] ? MyColors.white : MyColors.darkTextColor, -// fontWeight: FontWeight.w600, -// fontSize: 16, -// ), -// ).paddingOnly(top: 17, bottom: 17), -// ), -// ), -// ), -// const SizedBox(height: 15), -// InkWell( -// onTap: () { -// if (widget.provider.currentQuestionNumber == 9) { -// widget.provider.cancelTimer(); -// widget.provider.resetValues(); -// Navigator.pushReplacementNamed( -// context, -// AppRoutes.marathonWinnerSelection, -// ); -// return; -// } -// updateOption(2, true); -// }, -// child: Container( -// alignment: Alignment.centerLeft, -// decoration: getContainerColor(2), -// child: Center( -// child: Text( -// widget.question.questionOptions![2].titleEn!, -// style: TextStyle( -// color: isSelectedOptions[2] ? MyColors.white : MyColors.darkTextColor, -// fontWeight: FontWeight.w600, -// fontSize: 16, -// ), -// ).paddingOnly(top: 17, bottom: 17), -// ), -// ), -// ), -// const SizedBox(height: 15), -// InkWell( -// onTap: () { -// if (widget.provider.currentQuestionNumber == 9) { -// widget.provider.cancelTimer(); -// widget.provider.resetValues(); -// Navigator.pushReplacementNamed( -// context, -// AppRoutes.marathonWinnerSelection, -// ); -// return; -// } -// updateOption(3, true); -// }, -// child: Container( -// alignment: Alignment.centerLeft, -// decoration: getContainerColor(3), -// child: Center( -// child: Text( -// widget.question.questionOptions![3].titleEn!, -// style: TextStyle( -// color: isSelectedOptions[3] ? MyColors.white : MyColors.darkTextColor, -// fontWeight: FontWeight.w600, -// fontSize: 16, -// ), -// ).paddingOnly(top: 17, bottom: 17), -// ), -// ), -// ), diff --git a/lib/ui/marathon/widgets/question_card_builder.dart b/lib/ui/marathon/widgets/question_card_builder.dart new file mode 100644 index 0000000..e4bce29 --- /dev/null +++ b/lib/ui/marathon/widgets/question_card_builder.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/models/marathon/question_model.dart'; + +class QuestionCardBuilder extends StatelessWidget { + final WidgetBuilder onQuestion; + final WidgetBuilder onCompleted; + final WidgetBuilder onWrongAnswer; + final WidgetBuilder onCorrectAnswer; + final WidgetBuilder onWinner; + final WidgetBuilder onSkippedAnswer; + final WidgetBuilder onFindingWinner; + final QuestionCardStatus questionCardStatus; + + const QuestionCardBuilder({ + Key? key, + required this.onQuestion, + required this.onCompleted, + required this.onCorrectAnswer, + required this.onWinner, + required this.onSkippedAnswer, + required this.onWrongAnswer, + required this.onFindingWinner, + required this.questionCardStatus, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + switch (questionCardStatus) { + case QuestionCardStatus.question: + return onQuestion(context); + + case QuestionCardStatus.wrongAnswer: + return onWrongAnswer(context); + + case QuestionCardStatus.correctAnswer: + return onCorrectAnswer(context); + + case QuestionCardStatus.completed: + return onCompleted(context); + + case QuestionCardStatus.winnerFound: + return onWinner(context); + + case QuestionCardStatus.findingWinner: + return onFindingWinner(context); + + case QuestionCardStatus.skippedAnswer: + return onSkippedAnswer(context); + } + } +} From 3309541142f9351bd56b6cfad8427fd533f1b776 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 29 Nov 2022 16:36:15 +0300 Subject: [PATCH 138/302] Chat Fixes & Chat Media Preview Api Implementation / On Msg Received Image --- lib/provider/chat_provider_model.dart | 47 ++++++++++++++---------- lib/ui/chat/chat_bubble.dart | 12 ++++-- lib/ui/chat/chat_full_image_preview.dart | 40 ++++++++++++++++++++ 3 files changed, 76 insertions(+), 23 deletions(-) create mode 100644 lib/ui/chat/chat_full_image_preview.dart diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 2d01e40..b0a3b31 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -292,16 +292,21 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { data.first.currentUserId = temp.first.targetUserId; data.first.currentUserName = temp.first.targetUserName; if (data.first.fileTypeId == 12 || data.first.fileTypeId == 4 || data.first.fileTypeId == 3) { - data.first.image = await ChatApiClient().downloadURL(fileName: data.first.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription); + data.first.image = await ChatApiClient().downloadURL(fileName: data.first.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription ?? "image/jpg"); } if (data.first.userChatReplyResponse != null) { - if (data.first.userChatReplyResponse!.fileTypeId == 12 || data.first.userChatReplyResponse!.fileTypeId == 4 || data.first.userChatReplyResponse!.fileTypeId == 3) { - data.first.userChatReplyResponse!.image = await ChatApiClient().downloadURL(fileName: data.first.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription); - data.first.userChatReplyResponse!.isImageLoaded = true; + if (data.first.fileTypeResponse != null) { + if (data.first.userChatReplyResponse!.fileTypeId == 12 || data.first.userChatReplyResponse!.fileTypeId == 4 || data.first.userChatReplyResponse!.fileTypeId == 3) { + data.first.userChatReplyResponse!.image = + await ChatApiClient().downloadURL(fileName: data.first.userChatReplyResponse!.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription ?? "image/jpg"); + data.first.userChatReplyResponse!.isImageLoaded = true; + } } } } + userChatHistory.insert(0, data.first); + var list = [ { "userChatHistoryId": data.first.userChatHistoryId, @@ -310,7 +315,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { "isSeen": isChatScreenActive ? true : false, } ]; + updateUserChatHistoryStatusAsync(list); + notifyListeners(); } @@ -666,22 +673,22 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sFileType = ""; } - // void scrollListener() { - // _firstAutoscrollExecuted = true; - // if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { - // _shouldAutoscroll = true; - // } else { - // _shouldAutoscroll = false; - // } - // } - // - // void scrollToBottom() { - // scrollController.animateTo( - // scrollController.position.maxScrollExtent + 100, - // duration: const Duration(milliseconds: 500), - // curve: Curves.easeIn, - // ); - // } +// void scrollListener() { +// _firstAutoscrollExecuted = true; +// if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { +// _shouldAutoscroll = true; +// } else { +// _shouldAutoscroll = false; +// } +// } +// +// void scrollToBottom() { +// scrollController.animateTo( +// scrollController.position.maxScrollExtent + 100, +// duration: const Duration(milliseconds: 500), +// curve: Curves.easeIn, +// ); +// } void msgScroll() { scrollController.animateTo( diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index e69e683..62156c8 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -10,6 +10,8 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; +import 'package:mohem_flutter_app/ui/chat/chat_full_image_preview.dart'; +import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; // todo: @aamir use extension methods, and use correct widgets. @@ -87,7 +89,9 @@ class ChatBubble extends StatelessWidget { ), ).paddingOnly(right: 5, bottom: 7), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) - showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).paddingOnly(right: 5), + showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).paddingOnly(right: 5).onPress(() { + showDialog(context: context, builder: (index) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!)); + }), cItem.contant!.toText12(), Align( alignment: Alignment.centerRight, @@ -160,7 +164,9 @@ class ChatBubble extends StatelessWidget { ), ).paddingOnly(right: 5, bottom: 7), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) - showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).paddingOnly(right: 5) + showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription ?? "image/jpg").paddingOnly(right: 5).onPress(() { + showDialog(context: context, builder: (index) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!)); + }) else (cItem.contant! ?? "").toText12(color: Colors.white), Align( @@ -188,7 +194,7 @@ class ChatBubble extends StatelessWidget { builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.connectionState != ConnectionState.waiting) { if (snapshot.data == null) { - return (cItem.contant.toString()).toText12(); + return SizedBox(); } else { //data = image; cItem.image = snapshot.data; diff --git a/lib/ui/chat/chat_full_image_preview.dart b/lib/ui/chat/chat_full_image_preview.dart new file mode 100644 index 0000000..2a5d794 --- /dev/null +++ b/lib/ui/chat/chat_full_image_preview.dart @@ -0,0 +1,40 @@ +import 'dart:typed_data'; + +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; + +class ChatImagePreviewScreen extends StatelessWidget { + const ChatImagePreviewScreen({Key? key, required this.imgTitle, required this.img}) : super(key: key); + + final String imgTitle; + final Uint8List img; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + Navigator.of(context).pop(); + }, + child: Dialog( + backgroundColor: Colors.transparent, + insetPadding: const EdgeInsets.all(10), + child: Stack( + alignment: Alignment.center, + children: [ + Image.memory( + img, + fit: BoxFit.cover, + + ).paddingAll(10), + const Positioned( + right: 0, + top: 0, + child: Icon(Icons.cancel, color: MyColors.redA3Color, size: 35), + ) + ], + ), + ), + ); + } +} From cd0b00021dd6dae91d2905632f49954dad4d5b50 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 29 Nov 2022 16:40:23 +0300 Subject: [PATCH 139/302] Chat Fixes & Chat Media Preview Api Implementation / On Msg Received Image --- lib/ui/chat/chat_full_image_preview.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ui/chat/chat_full_image_preview.dart b/lib/ui/chat/chat_full_image_preview.dart index 2a5d794..2eaa09d 100644 --- a/lib/ui/chat/chat_full_image_preview.dart +++ b/lib/ui/chat/chat_full_image_preview.dart @@ -25,7 +25,7 @@ class ChatImagePreviewScreen extends StatelessWidget { Image.memory( img, fit: BoxFit.cover, - + ).paddingAll(10), const Positioned( right: 0, From 492b6b5e34056aef345ba1c3556616fccceecc2d Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Tue, 29 Nov 2022 16:46:48 +0300 Subject: [PATCH 140/302] basic details issue fixed --- .../dynamic_input_basic_details_screen.dart | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart index 444b83e..749599c 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart @@ -74,9 +74,9 @@ class _DynamicInputScreenState extends State { getBasicDetColsStructureList?.forEach((GetBasicDetColsStructureList element) { element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((GetEmployeeBasicDetailsList userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); - if (element.objectValuesList != null) { - ObjectValuesList dropDownListValue = element.objectValuesList!.singleWhere((ObjectValuesList dropdown) => dropdown.cODE == element.userBasicDetail!.vARCHAR2VALUE); - element.userBasicDetail!.sEGMENTVALUEDSP = dropDownListValue.mEANING; + if (element.objectValuesList != null && element.userBasicDetail?.vARCHAR2VALUE != '') { + ObjectValuesList dropDownListValue = element.objectValuesList!.singleWhere((ObjectValuesList dropdown) => dropdown.cODE == element.userBasicDetail?.vARCHAR2VALUE); + element.userBasicDetail?.sEGMENTVALUEDSP = dropDownListValue.mEANING; } }); } else { @@ -93,9 +93,9 @@ class _DynamicInputScreenState extends State { getBasicDetColsStructureList?.forEach((GetBasicDetColsStructureList element) { element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((GetEmployeeBasicDetailsList userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); - if (element.objectValuesList != null) { + if (element.objectValuesList != null && element.userBasicDetail!.vARCHAR2VALUE != '') { ObjectValuesList dropDownListValue = element.objectValuesList!.singleWhere((ObjectValuesList dropdown) => dropdown.cODE == element.userBasicDetail!.vARCHAR2VALUE); - element.userBasicDetail!.sEGMENTVALUEDSP = dropDownListValue.mEANING; + element.userBasicDetail?.sEGMENTVALUEDSP = dropDownListValue.mEANING; } }); } @@ -262,7 +262,7 @@ class _DynamicInputScreenState extends State { return PopupMenuButton( child: DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP ?? "", + getBasicDetColsStructureList![index].userBasicDetail?.sEGMENTVALUEDSP ?? "", isEnable: false, isPopup: true, ).paddingOnly(bottom: 12), @@ -363,7 +363,7 @@ class _DynamicInputScreenState extends State { Utils.showLoading(context); int numberValue = 0; List> values = getBasicDetDffStructureList!.map((e) { - String tempVar = e.userBasicDetail!.vARCHAR2VALUE ?? ""; + String tempVar = e.userBasicDetail?.vARCHAR2VALUE ?? ""; if (e.fORMATTYPE == "X") { // for date format type, date format is changed From b718f96c3a37bdef93d6ffbbd9945f61a4168563 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 29 Nov 2022 17:20:15 +0300 Subject: [PATCH 141/302] counter direction issue fix. --- lib/ui/landing/dashboard_screen.dart | 19 +- lib/ui/landing/today_attendance_screen2.dart | 13 +- lib/ui/marathon/widgets/countdown_timer.dart | 359 ++++++++++--------- 3 files changed, 200 insertions(+), 191 deletions(-) diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index b8a8d95..87c6b31 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -1,25 +1,21 @@ import 'dart:async'; -import 'dart:convert'; import 'dart:io'; +import 'dart:ui' as ui; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; -import 'package:mohem_flutter_app/ui/landing/itg/its_add_screen_video_image.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; import 'package:mohem_flutter_app/ui/landing/widget/menus_widget.dart'; import 'package:mohem_flutter_app/ui/landing/widget/services_widget.dart'; @@ -237,11 +233,14 @@ class _DashboardScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ 9.height, - CountdownTimer( - endTime: model.endTime, - onEnd: null, - endWidget: "00:00:00".toText14(color: Colors.white, isBold: true), - textStyle: const TextStyle(color: Colors.white, fontSize: 14, letterSpacing: -0.48, fontWeight: FontWeight.bold), + Directionality( + textDirection: ui.TextDirection.ltr, + child: CountdownTimer( + endTime: model.endTime, + onEnd: null, + endWidget: "00:00:00".toText14(color: Colors.white, isBold: true), + textStyle: const TextStyle(color: Colors.white, fontSize: 14, letterSpacing: -0.48, fontWeight: FontWeight.bold), + ), ), LocaleKeys.timeLeftToday.tr().toText12(color: Colors.white), 9.height, diff --git a/lib/ui/landing/today_attendance_screen2.dart b/lib/ui/landing/today_attendance_screen2.dart index ada652c..f0228eb 100644 --- a/lib/ui/landing/today_attendance_screen2.dart +++ b/lib/ui/landing/today_attendance_screen2.dart @@ -99,10 +99,13 @@ class _TodayAttendanceScreenState extends State { child: CountdownTimer( endTime: model.endTime, widgetBuilder: (context, v) { - return AutoSizeText( - getValue(v?.hours) + " : " + getValue(v?.min) + " : " + getValue(v?.sec), - maxLines: 1, - style: const TextStyle(color: Colors.white, fontSize: 42, letterSpacing: -1.92, fontWeight: FontWeight.bold, height: 1), + return Directionality( + textDirection: TextDirection.ltr, + child: AutoSizeText( + getValue(v?.hours) + " : " + getValue(v?.min) + " : " + getValue(v?.sec), + maxLines: 1, + style: const TextStyle(color: Colors.white, fontSize: 42, letterSpacing: -1.92, fontWeight: FontWeight.bold, height: 1), + ), ); }, onEnd: null, @@ -116,7 +119,7 @@ class _TodayAttendanceScreenState extends State { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - LocaleKeys.shiftTime.tr().tr().toTextAuto(color: MyColors.greyACColor, fontSize: 18, maxLine: 1).paddingOnly(left: 21,right: 21), + LocaleKeys.shiftTime.tr().tr().toTextAuto(color: MyColors.greyACColor, fontSize: 18, maxLine: 1).paddingOnly(left: 21, right: 21), (model.attendanceTracking!.pShtName ?? "00:00:00").toString().toTextAuto(color: Colors.white, isBold: true, fontSize: 26, maxLine: 1), ], ), diff --git a/lib/ui/marathon/widgets/countdown_timer.dart b/lib/ui/marathon/widgets/countdown_timer.dart index bb8da6d..4296bc5 100644 --- a/lib/ui/marathon/widgets/countdown_timer.dart +++ b/lib/ui/marathon/widgets/countdown_timer.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:ui' as ui; import 'package:auto_size_text/auto_size_text.dart'; import 'package:easy_localization/easy_localization.dart'; @@ -53,80 +54,83 @@ class BuildCountdownTimer extends StatelessWidget { ); Widget buildEmptyWidget() { - return Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - children: [ - // todo @faiz: Make a separate method and pass string , so we can minimize code replication - AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.days.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), - ], - ), - buildSeparator(), - Column( - children: [ - AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.hours.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), - ], - ), - buildSeparator(), - Column( - children: [ - AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.minutes.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), - ], - ), - buildSeparator(), - Column( - children: [ - AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.seconds.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), - ], - ), - ], + return Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + children: [ + // todo @faiz: Make a separate method and pass string , so we can minimize code replication + AutoSizeText( + "00", + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ), + AutoSizeText( + LocaleKeys.days.tr(), + minFontSize: 7, + maxFontSize: 8, + style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + ), + ], + ), + buildSeparator(), + Column( + children: [ + AutoSizeText( + "00", + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ), + AutoSizeText( + LocaleKeys.hours.tr(), + minFontSize: 7, + maxFontSize: 8, + style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + ), + ], + ), + buildSeparator(), + Column( + children: [ + AutoSizeText( + "00", + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ), + AutoSizeText( + LocaleKeys.minutes.tr(), + minFontSize: 7, + maxFontSize: 8, + style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + ), + ], + ), + buildSeparator(), + Column( + children: [ + AutoSizeText( + "00", + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ), + AutoSizeText( + LocaleKeys.seconds.tr(), + minFontSize: 7, + maxFontSize: 8, + style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + ), + ], + ), + ], + ), ); } @@ -149,108 +153,111 @@ class BuildCountdownTimer extends StatelessWidget { return buildEmptyWidget(); } - return Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - children: [ - // todo @faiz: Make a separate method and pass value and string , so we can minimize code replication - time.days == null - ? AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ) - : AutoSizeText( - time.days! < 10 ? "0${time.days.toString()}" : time.days.toString(), - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.days.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), - ], - ), - buildSeparator(), - Column( - children: [ - time.hours == null - ? AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ) - : AutoSizeText( - time.hours! < 10 ? "0${time.hours.toString()}" : time.hours.toString(), - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.hours.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), - ], - ), - buildSeparator(), - Column( - children: [ - time.min == null - ? AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ) - : AutoSizeText( - time.min! < 10 ? "0${time.min.toString()}" : time.min.toString(), - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.minutes.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), - ], - ), - buildSeparator(), - Column( - children: [ - time.sec == null - ? AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ) - : AutoSizeText( - time.sec! < 10 ? "0${time.sec.toString()}" : time.sec.toString(), - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.seconds.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), - ], - ), - ], + return Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + children: [ + // todo @faiz: Make a separate method and pass value and string , so we can minimize code replication + time.days == null + ? AutoSizeText( + "00", + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ) + : AutoSizeText( + time.days! < 10 ? "0${time.days.toString()}" : time.days.toString(), + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ), + AutoSizeText( + LocaleKeys.days.tr(), + minFontSize: 7, + maxFontSize: 8, + style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + ), + ], + ), + buildSeparator(), + Column( + children: [ + time.hours == null + ? AutoSizeText( + "00", + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ) + : AutoSizeText( + time.hours! < 10 ? "0${time.hours.toString()}" : time.hours.toString(), + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ), + AutoSizeText( + LocaleKeys.hours.tr(), + minFontSize: 7, + maxFontSize: 8, + style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + ), + ], + ), + buildSeparator(), + Column( + children: [ + time.min == null + ? AutoSizeText( + "00", + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ) + : AutoSizeText( + time.min! < 10 ? "0${time.min.toString()}" : time.min.toString(), + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ), + AutoSizeText( + LocaleKeys.minutes.tr(), + minFontSize: 7, + maxFontSize: 8, + style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + ), + ], + ), + buildSeparator(), + Column( + children: [ + time.sec == null + ? AutoSizeText( + "00", + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ) + : AutoSizeText( + time.sec! < 10 ? "0${time.sec.toString()}" : time.sec.toString(), + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ), + AutoSizeText( + LocaleKeys.seconds.tr(), + minFontSize: 7, + maxFontSize: 8, + style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + ), + ], + ), + ], + ), ); } From 741259505d79ed1641007d7383b411eefb048b86 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 29 Nov 2022 17:25:31 +0300 Subject: [PATCH 142/302] marathon api const added. --- lib/classes/consts.dart | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index bdeeecd..779cdec 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -26,6 +26,18 @@ class ApiConsts { static String chatMediaImageUploadUrl = chatServerBaseApiUrl + "shared/"; static String chatFavUser = chatServerBaseApiUrl + "FavUser/"; static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; + + //Brain Marathon Constants + static String marathonBaseUrl = "https://18.188.181.12/service/"; + static String marathonParticipantLoginUrl = marathonBaseUrl + "api/auth/participantlogin"; + static String marathonProjectGetUrl = marathonBaseUrl + "api/Project/Project_Get"; + static String marathonUpcomingUrl = marathonBaseUrl + "api/marathon/upcoming/"; + static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; + + //DummyCards for the UI + + static CardContent dummyQuestion = const CardContent(); + } class SharedPrefsConsts { From 49b57cae08add7a96a70537629a8a5b2b7b23213 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Wed, 30 Nov 2022 16:42:35 +0300 Subject: [PATCH 143/302] Code Reformatting and Added Logics --- assets/images/congrats.gif | Bin 0 -> 3478892 bytes assets/langs/ar-SA.json | 6 +- assets/langs/en-US.json | 7 +- lib/api/marathon/marathon_api_client.dart | 2 +- lib/classes/consts.dart | 13 +- lib/classes/lottie_consts.dart | 1 + lib/extensions/string_extensions.dart | 3 +- lib/generated/locale_keys.g.dart | 2 + lib/ui/marathon/marathon_intro_screen.dart | 190 +---------- lib/ui/marathon/marathon_provider.dart | 102 ++++-- lib/ui/marathon/marathon_screen.dart | 305 +++++++++--------- .../marathon/marathon_winner_selection.dart | 63 +--- .../widgets/custom_status_widget.dart | 1 + .../widgets/marathon_details_card.dart | 82 +++++ lib/ui/marathon/widgets/marathon_footer.dart | 66 ++++ .../widgets/marathon_progress_container.dart | 98 ++++++ .../marathon_qualifiers_container.dart | 47 +++ .../marathon/widgets/marathon_timer_card.dart | 51 +++ 18 files changed, 599 insertions(+), 440 deletions(-) create mode 100644 assets/images/congrats.gif create mode 100644 lib/ui/marathon/widgets/marathon_details_card.dart create mode 100644 lib/ui/marathon/widgets/marathon_footer.dart create mode 100644 lib/ui/marathon/widgets/marathon_progress_container.dart create mode 100644 lib/ui/marathon/widgets/marathon_qualifiers_container.dart create mode 100644 lib/ui/marathon/widgets/marathon_timer_card.dart diff --git a/assets/images/congrats.gif b/assets/images/congrats.gif new file mode 100644 index 0000000000000000000000000000000000000000..32818b2fd4df636705c210d21fe1565138633f27 GIT binary patch literal 3478892 zcmWiec{CK<8^>oiV;O_N*vGyz_O+TBgCR8bT|@SyAqlBw#=fMnQ}m8Cl`T7|#+pP8 zA*33TRH|uLd0)SN=iGD8J?A;+{`LKw=egheb#!vDv7oaL>E@>b3Y*1?L$ z5>-8ps%e|58Ck1KN~tSrsS};m9ep&7w6$Gb^)OgH3wwQ^7=xs2lZaEM#x|yoKBl>q zX3A=2+BkC~E%Rfc76%3_R+JWrp5PilG zqwJ`y=jh?=cr2Ezj3FCqlW9@Teo>V2Cij$FkL*%!O)YOHPaka~A0uraV^bfJgO7)k z&#?fXm}Fn?0N>D9-;|Snr_P07)Q_I42(>yCp`{h!1>pdc9b0{ z%83%?ttR@Vz^IYWn;3oNwSGna!dCabE`8>u4ghcQtU`6 zp5zp7-;~Jcl$g`0XHwG|>(T~B&L+iVmRDzIWapF>@1H6DK9Lq@C&PGs;_i(ta9?K@^q@ItgiO*uFlE1oOYq6Jh%4F zShEwk+1a!CRCII7>E;^twb+x_veK{hwq6??Xz_Gz@$$ZYt@(Oe=Z%PCZ2?Eyoda)$ z`*&R`?De4Z-oMuu5YX39)!%w!ptWycU~niReCTw{P+#lq<0oz>Cr>D=K_?#uPLvoTMK3ZBkR ztd7>NEj?UYn}0bw$EzycY;4$kIsC4p>fKP=yEX3nAFp@b%t6TS31ZxQ5upcZOo7X1|vsu;I9 zU;l+!R z9?LDnUbk{Mz)%!*jof4zU?igCnw@EN;wp;G;O#XFq?uO^G$=+__R;!OB2-!FH_ z$q#g9O6#0{C%->ra(+)iMb#zTl8^!S)-kt@s~P;k85R2Zv|XP{-zWZo$}rW(&n^R)}JM)4;*9r^7cK#R@573L4cL^=kIt z)EID;R`jTV=`5*~E|5g`bhGYlBwo~QMUljV$Bp0~PUpVlDZ3tM!b79Hy#-`WXDU0O zq~ogS`29O{A~Jl7DkZ2L2WWOsM*D|5$R+vLC5t&nqlBDl<|Y+S;fd3REd=B0h%0ej z(~-5q^AA)nkw$Y*6z+Y7s}=$0u$lMtQ`K;e zm>S9$x|AB0KiW)JA){2P08fK36PYh3r1x5Gxe4|__&E;Cp}ESrn2kK;5=^3lxP?5O zK>j#K@K*9>DLY8SBFi`z6i%>4{LLuEc9M}xRJ+UITTP#XQS-VT!vY{GK`3fKY)!s= zk0_{i(MeUrFiYxpzFvo^wc}s;j%YRn9Z7RiKj|3|pj}M(;vm;atb>YMf7_pB3fD&# zzZ0t`-pY8Nm>}M2)Yqb9E0@Rp3q{Q(n-0cc4C5E(Dm=sLG%g`5h?;An0{wm<|wx(swhCIe&&f z&;rX*br*EV$_0)yj3WhvXJK2M9LI0j7U}fNHB)cIkT(c*!mqq_pM}kk>g43=Q9sj z8Ek6Zw~}JQWtQm>?gedBsL<+!lB&r)a*0HTs9Fk%Wjizr z)MH_>8*7kHASb8a>M1}B9Ttxj;LS9nTUtnJI?DSOBiS^`au(E({26{|Ia{=kaZyRw zTELPsV%}Bkic|)|6`Yyz=*7{EKDO?I@6L(m0_&0ConRTgM?Nl7i>EH1x~XFNF`@LC z3h15vHKU@rVBi;q#CRvndN;{-y>3i-!>=GfO;v^ifO&kUX293lFYVV|b%S%nua_Fp$VHI@`*3LhHX3;5_Gvy|Bd7Kt}Z`d zyI#7DY_A(TCv?nmN3f^ywZ3CxabbjurZURo3e6bDNR5UO21cdtak$x z&{!Bwm`WxJu={NgUK}v~A%ok($II=H^FT+f;30f*r^|Oeaap%GP!?9ef3Z1-RW+vZ zTl?a}DWcR(2IK@03c>0b2z482$uDCqc{6n)0nv7F&4BzPe1a zF%JM3CI23O)G1_m*z#?A5D#{g_v{+LJ%96ygxoxJ9p5iS!tPFkP-HU*o<-tul!XQu z->-Q|zF6S{QH?B;%o@jCYsoiJmgn8+I%FA4h))2SCtoanvq8$`HRl2>>9(Z=`&jA+hIlR>cEhU^G^BWnj3bpJk&awZXcElPWk4gM$Ie79qOq_MP=_)Ab z_C4+GI;n^IaFgttVp}n}W0={2Eai4U{X`h)TGRM z4^zCJm#G0^K;he>x5fMzPwN5E`H`Q64d_&-gTLQ@Hl7l=kqg1%fyWzn$K=CDf;{+4 z8CEq|!VdrvSx^8%en`TTSXp|0ggnajSt$oe`IYpaIUUT=^iz_aM;T>^4+rWuYie&w zk#4C-5s2pk**B#Cx`2^+YW(q7Pdk+Yo2c?`Y24h?dX>{_GRUv)m7fcpyw(F9I*!oI zza-rJ5041rcql|Ce-aC)gKb{*BX_vMiB)zAuknuG9s-M~Xccsp7DPFgrFib=(t9WK z@O@v2FqSOhOX?NUg>$=-Q+UB{)p~TPw&z?y*^vg>RZgdQpNq&b3|NwmKisz|FZ;>} zlR%dd3-}b}3qko8FG>J2oNVoYMl2AK#;`<1@0dn|y2%~oAXAFIDIaXY1y(lrocMkk z5lL2}KzzBRc5#_gC`2Picp4RZ(vcECjU6_&I_+qs$0Hd7KzQyMTnm)k0(JeS-RS{4 z2|y@?%j@Gk6kh8FKs;2xTR4oT4l;FZ=#WRBv)sSQmz*L!0Rl(5tb{$n%OJ@cnuI?a z#s|3q*XhR`pl6q;BKnoW4_U%P9K>lB=;UI&Vw4XC?=6o4r}x3eq!mr~?I6(}K%q_( z854myUiuri2l1HF4fI1#*&Y@}IfJcd_ z!UYKc(H7E$Qr&Xm!xBAw4v0~JI`haX{Doe;$P?Cu=baaxa4+29h|B;G`Q?%NK$k<6 zr!b+aLd)mtposWAP~$>V;?Mg2On<1s3#!Syu5^RFMB8|e*+Nun5_7}2GR0Tc|$6~0E8lK>p+?>=D zVaJJ_hjbzOF4)dI*P|EsDLL$bJLpiS=Pc3W97>VIIcIF+x8A_wzc z@I@Z767SPQJz0u^H~>uJM8!Dvj2KoS1N^k)+%GQDiVkYg0s!gWXjakSlZ1`|#}s>S zApm*QG;z`od=2fF)hoQnFEr?{_|H*fnT8-!4#&VWbw3+6<^gr^myuJacAlOWcMe1fet!r8b_I-2%ZN( zU6VYn8|yf#f$=<+F+0_o3p>w&wUy||?rZA=vUMU*ay8;Q4fVj9{w#IvRI!z-|7Lj@ zJ}8;hC=J(&yWST_+xBkrOUnvJRW>*Q6M^yoSSelTXm;qUA0kU^5r^y5cc_AgwIdXN zI<`HKFyMnjP%z)>@=&Uz<11i@Hks0i_>D)tqg2$SRLs9&|9*pvuLg->D`n6%Iw_tt zV<-(SxXT{yKZ)F-iT-4XT2aB>o&ZJcrK}a3L`j2%ZVBDb39Tz)6P6$nMf^JH!gpVh z4R-Z^0;lFX5&O9pMF+%9JwSGEG@fH{hI8lRWg|}Z+Oig~ZI*1v(8;Y)v3qt-=Z7vy zUJJLFxD@gk_;-%!Q3;6^5GdbgvAQ`zEi~387Su7tB7zTz@XNNQ1{ZiHpP(QL>WX`f zENv;ZKK$VBIarg22Vt94@-;+B{ix%3s^>Qk-3iD{v;5w7`QJ_UP#D0))1hPA+sYrq znk90Z*V_Sh=xdvX@#2Xf#+VsYu-tnzgNG@4jH zSPlI|7yX78)f>uti|u%gLq3M*^RNw8G!TMrHEI=8-`}9j1!vMk>u93HG~tgl;SrSZ zPm1W8BM89P~m$dpM znaPjw7*x@*+sw)vlmB7n@xjRo2mrplW^?E!H8ZX9zgxhE(}+oaTBk+)eYQ{=S7kZv zZ;t?BpPm}d$u;pPS8x`kX$Cgu%gTzqi3 ze*aql39qPnR;aDBD`+VqxT0&A4_6fjKEF*iV1W+t!46aikq*{LXwK^aXi60wI9pYn zlmPtQL9$6pLbNz1lb!!`fN8*^+b}vG761^C+!JWJCELOlp2l5IdsQoIRhw)vIduUJt(fjdH^c z`Nz1D@L)B;L>&Nhk2e(lwtn7%#KwK>yJ4(bia-;(zt0v~<%_(c zRzU6#f8`**v%rUzXd=>J*Hs$<67FR2#M8k1KZblipdtRA8y4zDyLStni$R|$!5Z23!K0eoaE0rmkUqw1WS3I z$9d4K+Izv(GdN%r?t|e<-=xAjsFf?QbihU*Ao_+!gF6`BcW55w91-AtdAx5Lfy=-4k{DVxS`^#6ef& zHyYAj@MWX{J5vvkKpDft*kRYZ89#lpmF6;ny0HOi^G%+@+3# zxFpH<@_*=u?~0x6FI?e*66e4Q@Cg3H z0%z({T*cSv_0lz@79O}zpy68yGNj*8@dY~L5JR29Ykc7~j>rmD1ouTk&uH_!2&1W$ zY(NJSS&*SiVCN9fmye*j8jukl47oSy27qOryXX99Q*Z8kzuh%>+{)3BB1xt5=>AKx zhiYKAUVq+S_*aS#)TciFVS4oltGJ+Ulx_W`_!jiWY|)9L?X#-c`YYFK?)S5zbT(x| zY)|UmhM@wgqP0t#Tt>`KKt6Kkhyr#B#z`)=T^SGX`jCe`+NEL$@oZ#ZXY?Eq=2W6? zh8>{t@Jz5EF1Lj@GFBjFbt)2D2WSR@p_x)}To0a7B^Q}4vydyH=~AVUaKp}_5TovX zzLB<01Z7tW1m&Nzl8SVJ#+-{^MoDRL8yp#m+W>G#{yOWb>@U;-Doh8bugQ*c{6_MlA|uKqL(6A6JDkn+2pTj_&b3j^~LRQisWJ z!_*K(k}5<~Upb$+hf~1K$D#oC-E)B5x6;oK9lh}1Z_vV#gMUCfpE&=*s*Vuqf6K9< zYJD_2WvwFaI$Ud-cC5&Fi}$M7k+<7W;`|?#2u8byuPbY?_}eP1DtfMRo&j@Ig;B%} zD=1nndT&S+NjH#x*!6_ONjseTYX#MY2?o)~J}x$JXO~B0@cvGMX(t4B9_#{u4RS z?E+nmecaa1WIk*avQA-MB!|ykla8&ZbC5sr$m*K>*xk30-qep%93$)Zg}ug=k77fS z=ZK3AR}zVTTIElYZ?5+&1gO>vhUcM(=Dlj{byiT)*=&m!eZ|csY9xxm;AVCpK(Dh; zGIUMcne!2v)c?*6@p%+%C-^m8tAEh`ne}@QKc)AgoISy^j*(wjJpbPQo&;(HELnDB z{eq+q4ImZ2T%T)vFs!~_p(pxS0mC{oyvPcB9a3T*-U$G~P5p}5nbzXlDh1Is+eGi#y;K zmMLz`$7;$tuo>Ctq%WLIK^RZb4F8^Yndq8HNP_j1-VyNgTs9i3#d% za>!RqDeXhkfKL_?i76W#!5}K+-UCh|RH(3FIN z=}*5WT(BFJ*sVlfu?8UwM)2!MmeGcNZMX ze44u1q%VxZyM3%~P-cX6^x+>-e}lREf|2)*@Be;y6d(*3lb@XZ4^0I?;Tz;|c9TRs z3vpzWQjYZ-F~=!q$g+Uqt2{WFXY$XHhw!q6x2lEVKvmEKN}2hnGHZ53)Tkzd_XG1 zn(wQ>@7YBtvyt|^{VotWJ}@S`qXiMf&;V{f+L0f~;|lLsxdhWtD>Q9X?Q)&%^IZqo zE>?uW?Fq%8u*VuJDXz0Dc}LXZ?>Rv>x8_+NyNcQ8bm2* ziFgs8--l!MPTlUm=G^CgdlNRvqn0&0im7_9ILLl1X6-~o7o zN$L_ja|f)9OvpXh7z&%)Zy>0~k2uFeD&&@_Ftv7St!d<7#mp^rSGUz=bevbPjxto40b5Nj$(5HHqvOI6hi zOsd3V#q{~>1Dz>QJ&oWzH_K5``Bk`*ZLs>Gph`QM7Fgbt7<trxE<~|Wg~7<6xIgT5!B8X7S4&mFyb7Rss%RM(CKv@W=&V7wMmCXEAt`3~56(U4pq%ycHq->P)A;JAEn zoN#_%<0$5#pToX>tXRHw_#)u8T}3dWI9K(RH~f7mM+g;~e-CCZH_d_>0*dv6=SiDK z>!eS0R@UM=-d5hr)Wbd5VZLjnZ{(gfS-=UW zZ2`xbw59XZaeIQpasT7QPqkc<2BsKs@0skUp2&_Tq$*Bvi;Ih|#7F1wosu`} z!&VjdG_0a99y8ZDKhAgZuCCHy&$2rMi0`k~OO?AP#x2|#h@~TYutMc{dlUY$@G%|; zoq>TUEbL>Ua~B`6OrW~=eqHP^IzffH;viZc#rYxlLz0=DBOrR0&5;*%Q#rhGWf%~) zju#NFh}QXdWhB81&lFmji}(}sOOieLcGKdQdiCP#1Aoqn3K($+zSHGbt91u^D0dtN zt$tKV{2pk|SdpF=9Qw1;4b3Z$uNTeIrpstC6)f5CTe+9Gj5QB-z8G8|rKPnkE@cU_ zq(hv)LXR#(rS`0yGoXh(4aftTp4co;%PbGh$SsNL!#r@_ySf26qU)H!P=U>zCz-C8 zEN?EvecOg3WINhmHWX+hdpWl_8dyFEKxvsnc8OLuBwtNkjW~Se#Ie5U((d~vH9fiX zeL)%nZFvP2*f}T1h<~DI?kxZ0N}0?tJ4@MoB;|(QF4zMP^#VYT>}C>jGc2_(iF0+V zL*)ammn~c`tG;|431?upL3U&ay&#{2WeQpXfLe4xHbWNEWkb$%ik=|hGtF2aX)02h z0zQJz@}HXU*Md4(f|bc=jrp$l;zQf)dmoie!Z(ZdUKLG`GDwU;aR5G?sF7BTuvNQy z;=1BL@O%MN{XHX0osi=+tMHKBkPx4tf@i8MGm)EE*u417&tmi;xX=S@1v>a3Ju8?- zkXp+MizfKfMtoUNne;4AUe-|>ERr&Hl$w2X*E%Ex>iS;UVF2Pv%iMQ)sHu_!xg!Vl z*(Li>N8M3bT0xmEoZc_1y+g+h^{~pNlwmXhz$kXAqsd>%%?i;n@PY%k=aJ5?j9jrCQlJX4z1;NstD@#MPNC{C8T?VgUS=`pJ@4 zU0W>0_bc>YZyipe9as0doq9+OS2%!Ox*T;VsYV9cPjN#kGnWg%azKZ+GkupG z--HuFd5)pc1gURXN6F;KDYqC__RjF5_vu+~EVIJ!_E+lberUyK76>CV|{A| zv#t2?mo^l04de&dk?T^u0?9p|d5{g}KauL&x%$9ZRFyU<4afCqGk%)1mgd`4Gyw04 zH7N02KJxBycLbH_llyYgNKECoTty^mnvIs;*AT?%f`smW?uMAMVgoQ$yMTWN=s;@K zY7M7uz^U_cAGsKF+vBVZ1&5&GH<8_-zkuZrFVFGPv`H?6*q}@HcmObu(nC&dX$m&B7#dVlaGTX-v$*Ho+Zd zns4NEu#Y-dNj@NbQMD&isXBl5kd1n97vc&VK;Cgjl7VvY3?1G>RXbyqixc0lb~UTW zq||vW$;s^)&zjuU$6w_>!Il2~Gr!+H;P)2u#H`dIQAS$Bm@&0uyEEX+CUVwlo@D0H zCD@EmqNpB-eNqtHSSoZ#&G+2;oE$(!KM$orwk>HX)(8b+SwL*3tPB_A$Qn5uK?vt9 zxIOoxoQ7rTE$*Pb-JiR)o`!{6LXXl%WHxWRReAgOLIZQ5K5QsU{=u)tBj4uDf}Zu- z4_NEHeQaQ4&LFe_gY8OU?IKP|oXwI@6LA)pc=Fg;sPrq{ET&U%u@6nQTZ$6}htH-l z)&ySn`~Mon*c9|pG-mUgo!Ne`;vULh|Z=$`z#-=LzzBb+$9C;mg+8d9^X% zW$c*w+openC$*Y9uK1PiPkG?f*&rh}6Gvkz;Y^a==0~Z`7Mjf#naw8VA(QeLxIa#3 zdlA~fXuT3oT6h~Mm#&1(u!+vJ!9%Pl3{gw}r_Lz-fTs=&-{*P&kzM-AwEti6-!wvG zV*>vD_b7H5?A&G=II!?`&Fcah7M2@82_}CS4!HT;Eo#8+sAX0##>S_!N4UblGLG~TwZRI_^;S84e>DZDmT_0eZ#>4IYa8*X%1He@(Wh`y!QPx@mDF{vJ zJl@7VaTwT_8nh8ZUz!;VUj;TCHU|gMv z+ihG{m_L{c-uI95)bto^qbyThf+sebEcX=U_-ZC0;LYH{*C$>SK>hLUMKbik0uk3K z=fRx_Ikvd|xfuO~Fo5;|*t04;VhVZ~l_>|H;N`Hijm@9>L6Osy@#6UQO2|Mm{p^Kb|Now99piRrASArFKS;)-}B?m6re)T~F;cb+_4K5$IM8>}2%e}ycv z$kpCg!J##Cfp4cM$f>TE&=6%G`wxHAtaF))mU29i*{zGn!VmfXNw~`6x+_$>H7}Y6 z{0>W%91>*%jjJ|;TEZhJu*2|7DO7&KyKuL5{AK8CN_@D7R8LJ-N2z6=ci-jKV~iU< z?AKnaelPAztvQBrUblFYV^Hq}6c+$dEwAE!rsUsjNcDwV_2tfoKsuR-NDnr9SNqT>=C=+zuI*}@B@ z=&L!trIe~#{TK}EvF&3x_`_|7Tov;Tjz70Ce?_-9R=vnDm+DGR88}o2Hrizrp18MP z>@8t6{OSU<$r_t!&Cbvh0qbDFI((+aX$I~zqr$=DU3>gT98-w}irBlVxfqSiZT?lQ zbkMabg%3K6gGS)8uKJve*oCO2tbE=I7i{flzi#EHou4pI7vYNQkBsIm1Mjs5q90ge zwG7BpRR0(EK?YR+NLm<$8dR~Gwf8!tef2L9*X^_0w_>G9)Hgvi(Sut*%8ryKZGE#g z{Lb8x+&UinQLAk*64QSv-R5w~sM8p7?WEfd?XLRqGWyG4k>etX%{_LDYV?!JlcAZ4 z?|v;U%GD;$zR{Gb++5!INk6cLj$p+LMXfB4V#<92*; zhNs^CKR_}-91H$p_vz{*Xbj+;F84|8liANjD@Pn^ZiUaC{Zk3rrJtJSAj5M3zSW^^ z?-(hsw|cVZYR_O6R9EQn>#yBB@6bM!1zi6Z8nzu9=)-fZeI%Om9@Xs4x%s{?0)qay z=%Jdc#i-8Cb&4}!O=EUs4%Uo4N=R^=SGW*#zi4c#Z)u6I9o1AhUZl9#(=?m-#r@Og z?DALZRTnWCPsvB|v_@eA(cL=olWoG97A2Z~Ad>`7(q?mY1_YAfu>IrQ>=^1PPfjKY z|Iwn)*X-83BH7*qslKsv#V*?3B_-bh1?ePpb4`=p$6I|unAj&ri9Jtz`ulHd0DpN1 z{Wh5tv74ofUD{omgJdOAl$dfWV@S*x}yGSDL|ts+cEqu}!I zifm}q87UnI|AvDi=G1tpu*3r2ymd*k%T{!maTCDKa)OTC=?&rU?h?ffptFXLt(!dQMkInGM zW%=`CzCD^?A4NF5X?CwfdwzOhaD*DL*) zawB?fqrFfj>z8=;j7&FcrZKB*OIVE@sd?dF;?{hnVVGipq#exjm4TmC=*kA7K=P)0 zwTgbgc+2+H0|jLoSs5@PFMYo%oY*px4HE(aXiyaIIHNO62%~k}oWX#^N|JJMp+uN? zf-YBGdEMZ}ZOo4_KWrT{2W=jQQYL0OhpL!4?5CiV8HPExB}p#L_!XnAsdJLFgOp^w zl^y{H-R;{J9T7um(p1ceAKk#NWA|WyV7B=OfOI_ENJTxn03It5hY6Ncp?kl;sxjX6IU)x%X-t z7vK__Rq!c$_cUApN zUbogMXBk=SnJYO8=Otg|C}wK}L^Y;L1^V^M&_)Dw(C!d%@(vbEAj^&uiL#y8F)?!V zT()Xu=cwlq>Co^3oGijq!dRzxb6?m=xhZMh$zYE3r1EY{p0K0L+i_2azMYZ?N_DRB zf=d2hbUYXzf%m=KohHV`^rt8k9~71+=}Tpp`NVaU_e#OyBWO$kjc~qp_UYG>z~j}4 zC_hnWbnXMX11+el6- zQ30)-BfHq{n1N7lW$DA@_UYRG-`dh^*H;WAy zyNgEs!d)F}H!sydePQ|95GHd<8Zk-F5S6wV_$(~tu+7ep+IWZQ zxNH2UuF&LBE(4v*ir%j`)_IipK*WDAH!_MJ=R4g;CX>K6#(*6?$1-2@EP)QO~QKMU5+s1Gs3ehmsw#6RSM_T zE53D!(CQX@Oe?DpE1Iw~9O6LzSfi~;oJe?zG6c(0Q?P6l@yeIg)dC3xP~WPYS}BqAAO8TK(8#UKb9E&mX8?+lG~2BSQs!LeVcl07e@x&ZGCe z3`}cGd;HEDB0Dx{Km&DqnBssv7N_N2Yu!C`V^VE8KcuU=5nk@+nh| zDR4rc?do&&D%K(u2YOx&%W9$B(lOrVypXkbI14lQ$1)!fG2Ucpo<>i&`nwFV=~wN( zr~|#O!o=%{EhV2Zht5ghMIw}_hr2fs1daUMjv$3ee7M&VYzidq3 zA?s&=P-OCUEf%JXAkj)-Y;+T3c*0?KffMvb1){7$$hFg}K;>b_Z};RBB~kjidTX9q z@u7EpxCBH7fgp;%c^9{!Ed0PFQWZBRxNG$_^le^-GzX9!qXDF^?r9*Lsm%KyVoe?- zUW`*qt$DWDY7Rwl1pX#*2|+|;JZDt=AjbmvqMI>ccI*Q_Lrx}`4Uob#;E%yyFdlVg zrvoxov0Vr@xhM8e>r|!Qs+o%Qn7ZLxxZ?(Ces9aSQF9Sa@*U~ZF<@%tZMxaH~(muf5hHN7?R z>g@orW5N>yFVx+<{?O|HjP{F6&oulJr4txj=E-@-ItZ^t}vVQ~cs=1^V6664YIq8G6=BjR1109|t}B z`24;6Fa)YFPQiHRDGP@1iI|-`u<#!Yi7&?|^exvBB#erPJ4+waq8$khPR{0f=ntZ%czO z#5;6<7n}S$^!Z0q9=WvkXgEerMlmbQEs=SAKf3$F34@4f#g;ZI>^M*)sXOLHlC{Im zYLQ14xOVVJ-T<=0C_xjD5b>XHm=TvDe8{{c51-tq~L9HVkK$Lm}NF?N@qmnQoTJ|v!i7|u0nVj(| z@45@#%*4Vk$4SbX zAx4C03W2E#4TKUF!uR^=+yUkLumtkyb>WMdt837rg!0QTw#$6Tm;?Uwn{yPIGGN;Q zkXqx@wC4e$${`yMNK0@rXS5huet+(j{nc~5nXXl6rxm6if4sbtsOcrPwnJEh$bU|Znd4vd-5>`XR^|7wj)ai=|A=kJi$ijpduv>rm^@bDP` zlFX3!1`rtsKzE!Qlx2kcfYS6JEQS~|HzHb7qvicKJ{css@Xy27|L80*jh2Xice50` zN45UIc+tpTK_+TMB|SDbl>wFw#^eJ1oTy5sAT3jniZD~Qk-?s*kgz03lSj;|i(<+q zZJ4zUu0f#k;1lHiRbc~e%LBGh8fEQVuJD&v1+-`H^4wo83kz-2%e2sG&^p!dQPl5D zu`rU8yW(r3b$e*wxkcaC)n4Zr4-9d0u2Xqv;Dk;zNct|Ctp~+K%4GyUtJ|iRpu+pr z@xWy@^*i28XgAq8=iEo7eclr-Sq^~vC{Fk(;>SXAR)D}c z?zIUr-kf#j^#bNYEkPxmXv}DZUR8yJqGCsNI-lB;H!I*^qXCjB;8}WTBl-(5{akoT z(PsB|$XO`VIdasU1ls;UP!yi_oQZl%fYwiO>UUf-KP=GL(15kb$K=UtJ#ros6S77y zX7jV12|7B3(90dc=DxxMol>8s264Z%>GvLzJ0@_REU>_DW}!f5!A-5EC61j&v#*l?#NBT_blZpy6H=b4|^@cX40<5K{W z3W&W?FSZ~B|1uG0;1SZ}uq^4A@Ga^>Jp9n}hG(@;4h2-!Dc-2NL2XEZ#&ab=-)e>V zR31TuWI3v_EPM7lcY#VuUy*i5aP2(db=gmG1+QGwSmw6Ja${@i=7J;@CK#!qp2E%; zBD79^S`0p34=?L)Q)I(#{#+-^pI^THYjaSxA(OaZ2gsXql42N z;)S(QI~)-{M`Q;Nuc{xpywMMVg;EH&ZI`NKRQ0m%Tc*TBWWRlM-9NG#Y=N=cqmE|Q zFGnS+`Xw~jQI?$u2=b5-=s`&zRKGz}d3PhCsr`z;2}vwqGt4{Mj?p81+@q3lRk4D($$QUqFQc{s#-G-^OajozhT0L((((BqvLeDLEdGka{Hx>NQMW9wF4|e>*s-EU_R`B=> zg}XT$UB~aJzm~Oqe@BJ+sR<*)0!sR|W0vu^o8|f@@#6G-0yc$cLdmcUUm7mU&|}!) zP@^}iJhqd95##h5;rFjJ0shHW;QckZ);Q9+K}t07qxunOj`J4`Cuf|}I7IPdQ{;Y- z+gjIl`W~vGiN?;&HaJyaWJg4Zp6QFj7JQ*SD##4>++5}PT)E-&jUCYz73|&X(w(aH z&$Vw2V6xQ$-z&qp^sgXClv7TSNr%C@h& zhH(UvvXRH9c8TT?I&UJS$3o_efo%FN6k(YzBD z$8$;C%1%z5YEQunbLls#4l5-2S0oGkh&8MdWb4~ESd|Ifez{R#V^f~3EuUy#eItC6i@(0V>e^+mqK!xHw;jB9>m~Bx*gCW;lGA0-PE8?L z9Ms)JhJ8{O{1*{>czN09 zMLBXw=;X5N2Nkb$=8^5|$PxRHnyK;HPA2{0sFRPFDpx1=@vP9Z4_@*>3Es8Y-R}as z9KlW6!G@lLpJ<0f4+oO72WkLJop#&`onTlCQT!SGQDA5@$L^kUI=xqx4l-bUwEt&J zy5XZ$?r|*&<807kc$pwxVm&c+ST2jhu z1j%Lkz7)N|L6H8*>k*oM=y0}>rS~@!Q-^kcJl;^v(Ksc2%))ET6k}(YX{gnCcn+bY z`3!IU1Ap9y41ltfoEhRR&C}Kdaauv#klT9vV&Km@p&E`*4V^mG8`SXEkZKGD>xaDm zPCGAq^ycM;df8JR`&q5eQU9apJp7^lA2@#d&N~Z$y%&h9pJTi{#)tMo53Q5up zdu4BR_AUw`)tOn98EG9NX{q#0)6ef;_&h%E&*$-YyMTT6bwc*db=p z+Ec!nch0JH5+Q7kZcr8EVs^cRIFdgq#|%HeL3LIKnJjk*`G}th9OB&#H$$99eWc-h z=*T=|%L@bBZ$_sRY1fWdtzE0U)Cbr0KkKcrqdI8fEKs62Gf`_qPr_V> z6oT(GS3V5tUI4|F2#$pq$KNsbJL$4HC-_`|GJ?a}eav!=p5Vx*tiUs)|yrLBdeClBi1sT z(fwMa{}841wCeLG{!TjgDT!1_NfZH5S^lrq?dQhxP~AjP4&K(9aO}6y?DN~=!fH+G zZ8dd(%jhFV*2|-RTsx;*5?~Kfz`04ryYU$gi7f&Z_skmInMT>>O;@^NnN0m`V`R}6 z>ytEY3wpJswKQ%9#82dlrz@2)G~XOmkYMmz{Lt6~-I)HN=fc#t>(lpOnn27o5GGyM zX%2F~hq?RQLTS9)=?TlW6g1IJY_dK z!~?UccNlavHBN~E3w!&rmTmh4ulHs5WiRX(J^m`VXnt(b+~ki5(!(km1vol4-Xb%& zCu|hy1DLn^x6>nrFrCzv8)}F8K~4>;vCRT5n8gMR2HaV`6lr0JWj;KU^HA5jSV@Lt z`JYV#&kf*MVWj~J0I4HoiG0-VgFBd|a7|PEZ<(j@ii+tGIz#iJCF0Vu%H-W4ITBRT z0j<6(=-A2Of8=!LR6qrWxss|IcF`It93kj=_c`D~?Pfbj$&uX+Sd`fY9rsK}BN-W?2TSyG%Y3j-G<`^zaWZa<#%Vj5&q+LxsE} zo5#9b0hwPKM1rdR%!!@~qNfO-ilajxszeg=E$wwC zlk@Rh{1aE1f~sI%y&jr5w_Ooi^v|lYeOxx0JMORh|!3d%JjJz{aXrbzJrgwq1 z`+%~&IPsXSD%D|M0p2xcT9Cd;nNGHxX zr5VI_o2B8;pxUgSg|*(=^8EU(HaX8Ey^KvOzmg;!%5!aE^!5`A@2lO)t%#JDajzpI z^}q2y)QJLS9&49DI^oPjTG4pz_!{G*@r&m;^Agvafy{8~%8kRYme%5LqPd$pHmt9V z(jx@&D?2{407&OobD)X~SEZce`0Rf+1?zVL;hn*B_|VPMhIgN#Q~El7*eILZES99| z&DO|$po9hE<`y)y^)H7GyIN~T<|U@v_=Lx?DG#-CyQaK4M~d5v8Vv3Ob6-~nN;K{GX*fs2 ztFjx^wMjspBpjsog(?d09<16)=S%Q$y!2&$>T|?9-bg#B=O)t)KihQdzu@u9gy$tt z0wu*hW=mJI1z_h)y|ExMBHkWtf4AOKJes^Alun@Vh3d>m{VBYDoW;eHz=0^Nv>HC~ z9Ki`T!ZzFKOpGsBBpc5Z&Ff4O{f-#NZ}AIPu)+Ehbg58}5%LRWu+c;fJm5d`NDQWt znEftTxqh_TH9bQ;l+IhmPSz=+^Eq5vE&4j1soookZQou$SRQDs>(_r5VQnlYR_&B6 zuff&!IG+FI*0{WyXS8K?rg0ZTg9aoJ!=zWz=#>pv7(e`dD{MU8fX}^+^WYM%Ew1>sfE4Re^ z-UVZ$7^Y&~x-rN1iF`?%`F zdBz*~M!vAlE32AevQO0g{J4-bx#7;Yf`fm=sVE>1{LP=gBsQpa5RtsJ4)7zFM&pHY zJCz6vE*St&cwR`(B&KOZ{}INq(o5>@8(Gn%i7dZw6(Y~A#&5}RkwOIu3cUucZecTW z?VKx%)29@=lDP61f>oTU#Z*0g2)9T4I)?v_ArIaeY+Y7GGArO$tCI(*&3TlVlmhea zQy>OmE_J411EV`ZMHi?a8l0WDC&Nc>ZBQS6PI~BRQYv@Nvu5i@u1tq{f+dPfJPbBFOpfseRoHwSy>&@FaX4yY%%UtD>Z9#0ohWf zTMzW8Jp1CC5EC%M_gF_P@A3yzDHe^}hdp@kbU=uChRp2LO()uX2PRB3-V{v4Gk^c5 z@?h@ic9JfQ@w*!wtje8og+F@`jp8vg&7#gJqt+(Wb#w)PKC{=dz)ZfQP1*?rrDu69 ziYP2u-CA*4j>Gi!KjN{qJ~uB`oovjOPaj>&}s+OnH`c$RLWZ9hrgrr`7b(#@UZ40xz)h(p3q;b{Zk_kMR&j<}Ch z^zK=i27}+lUyQpmZaXIbi3}xhS6qkm3=yDS-=zorMQ*1kw#jv1sq!JB_tK|y;+uG0 zwa5x4G&5)c27ryE0q^${W#=s^Qr%StC$1#3G^1|ow9h)%3A03!g%i+Bek$rq`qfG9 zWEJT9zB?-vkFrZj&{NmRf^Y>6pj&tKVoaPO5O#=)n=pZA+-oF34xTb*bV`12JNzn8 zDMTz8cbzACcq983{!CBF~ z_9{mZ*>p>D3ot#c!%`2WIE|~vQW+{cghvi4*qEV5oQT`!IuLgVlG?BpUavPvxBtx4S`VG1HRaL~H`^WP-nH(8aE;3E_c){6P0X0%DK} zo~M3W>ecv=d;2n+Lxf#ZNw#8{c#suLD5OC`QOCjoYP#9s(i{V>MGggmOtx-}`QJ z(fZ(!moi#0d1yop#GagHD|ZNSmN{fybY??)DcHTC^3d7s?oKs+b1(eR5w99yklY7q z8h`pMjD!P1052l6i0U+`OS-&v3y43sjEwtiw&`)rQam+Hj9P;w&<`_OLt|y$0vr#N zD$Yd+^qM%-4ZyQ$$~hF1TxX=%mXSIMRXc+4A$&8`LIa)9Hd<(IT!^CfA&}0#Vb4Zn zqZMD_VVQ~vZ0?n4e*ETJg!#39N(MJhaKBX-`DKUw zuS?po6AsJ4Jy(Hl%PBHAe1GV3$(y~@tctiSNwcAMLR08p9HID5tRMXHVlGS;$5o8h zwJiWY2G`GQ`b1FZ2)b;}npSp=aK(_|_%8a_Ny8n^sW%*$8SNV&detvCKz$1C!-gk2 z_xPweXM&vvamlswx>irn=8ou_{2Fk8k6;(Fm4aNQqgUz3bBK%1G|<5IXldbU(W}m_PsoOXG;$cG7nh*c;H6 z$3NU0_^_BdY2ZILhzjSaVjM~ARPB9ug?1i%H{gy(#>qTgixCXr zk0|pFSbFRKy|(wi+R^7&@HcXZ0k%Ns*CR=Ca!qWQEKTFMh7ND?(Ic>d5;!!R%?6|1}&xfMQT|ZZ}*VOnY@#4MHgbD>p(8;(6d+?^$A7#`PSy&dq?{ zE>+9VAl_&n&pq{_2B2+YutO(oMc>kz1p;(g`s(@gsZSf=+_Dh+ug(cvvZ{)6vA!e- zv2_w%9_7;^3K$ddmj0u?@_5O(*VOv4-YJ^~LEA^lITNXCt)s%(qrz?B9NZ_Y-x|Nf z5Z_^A?Nzd!Nj)@`&wg$(`1K=Qfwvt&98kqJ;#?e@eB0rYo49wOBQj6kao*9qNnJ=Q zCX~$@1t`OcU0UCh-*!o*-8MWUBRHETePTD}pN;d04cCcj@Si;He>CAYbO}bV$NbX^ zGY;B^cl*w`2!9$kn&^5e&GqsmF!zL;FOA22f_yNw?vp@pKUCZB%bXIE!Th4t#5ElM zVR;|5#sk|k;}P^BoCRNt{Y3jpY-66ki&fRmJU6KyGSg!@)NoV)N^Qcs#pD1i&ibic zxY->+M%G*X#A;?BDAFP+p%Ad@Nc(mY6NY0cx@J8){N2d z?wy=CJ0U;1i1s&xTipJ@onUW(y>|)JP~L$p{AwlUpI2|jV|RGs)5}NY^zS(NsM~}d zS5hSGKq%`+r`4cIET^Y5_tKgRQany;!TQ~32@f0iNq_0jgflj9r365cq9GxGv0T96 zQKbua`it*0_%-^AwGzc?c}{mC)nn|V4&FUI;e9z)qH+p_{-mZ~lDu{J+qPw=Iz z76uwz1!%ftE%5tjx(B++>X~l5_|+44c6r!pE-h~FMMY>+*$gsC*q?a>?_Q7fpNs#| zF;+AxtoKy3OgOMdHEMlA*pDdmw7Ip+C3h7jG-~_zMg6~lW$O#J(d<$?qoBme#l+I~ zrm7jSQVQ4VkIN@L#aklkwm#hia3eon__F#A9)Uyt0th7TinDrYSq|Lav}JGiB1O^> zwX{yVCJGK)#Lg;1KjKvdVnc|c2e)cOqt=A%WK1vGz*XqMQw0z_1=>f@jK>-#G2i+1 z5Q4rF*Z}x^XV#L9Vq+)#O(9ZMx#oqM5rcs`fIdU5@yTC6YcHb9S3H{{eXgx2u=tND zQ-ZWKdLvguPFw*t1*2>xLO7#*LftVDanbqLw}SZK2%*#ahRGKS8=DGXvQvVI z50=f#)ZfI>#5@5Gr8seJ493Q>cvJYn#6~gjy@Hw5pcMzIKth2$#A{nhgX{FCWTd0h z(EAO@Uz{|j(~LUSwF5b*^Dx^mf^EErQ}R+1xq~Cddi^&lMfyX{h_yhnq?+#)1nGe{{^(aU zxaJ)+u*-*sl0mV`3SqZhKW9w6c9M||Y*98BG zH!V-(ERNeY1?6Sb*e3hu3W*BYmDpPuIhgj_)sVP*IUB3>lk#TpINQROgd*XGf@?0Y z&Utg_>ga*);%U$FB=6ekr(DNEJb}fya{e0ORj&%<{=oQ}hzp%Qx%;H3yfC6%1s7~2 zui!k)F;3;Vlh1Q!iOm&2TTW(k)pD+fM=J5*AW;%T?r}Ha znFDKN$CX787`I)G2RL_weBASLCVBk1qgb9QKkkfSeGta0Ptm4$MN`Hl|6M<@xqXIl_mu~UTKCVysX%+|LB1g1^Poz#=BZrMg)adUClHG z@?YCpl36g1J5S&Xy4n4Kj!+DGji)yoz= z;iOdb!n6pHIx$J%**of7A9$}Q44q(xN&xsRyx=op0TH;1CYypJ;c3QJhWYrM{B_(?^hj`zP*p z?4P^cXBphnJ^d#QudbnQ{I);e>iDl54M`#r!1aQK_@EVPDw+Ec@~R!c<1&Xa7z)ol z%vyj#$v?t|Uj=c6Srq-l|@QfAbuH*%%%PaJ)`u`%+~^PxiR(~ksS)rRsO7)Rxq zYED*&eZGKOHUDH!!?ktX8+e{JSAMtca*5LUe>Z333|?*+l*^*xi^cBKY4mRcY#C7z z5$BwX*FIi`9!#?Q-Wz5AG5T|q0|#Q(hm8hlu$V}2V!=G0Hd>1UE#Po3(s;|5$Os(x z*AsK$D}E=RXI@7i^#drJ{9(Wqj&sb~+P%!PPT(0}At;mqr6WE(E?dxOpYLtO`pEub zlR50mw+jcvRH^eI{NB??^DlKYV+FaQ{Dp9Iu1{Y>KJ#k<1K!!v2o1)+x1v3m+4fCiA8B zJabLgCh{lQ*-3v`FHXX8OBy^n@z3Tk^@JLiBRhtmph-s|7&89vPR|)&moHD5ejcu4 zwHwK=9Nz{o_d#LgSE|WF7BD_3t85aHnaZyautV8tu$MHBc_-3z33X9>;M~)2Oe;SW zie#%8UxNK%rV1$ejh6Yz!Foir!aexJEYcq17X3ow^DePItaJuG@}^} z0PlFbIu$D(${#dBe~0`~!Few;{`!8B(Zcqh^%OW#%J0v<%w`%!T8-*>Ix8+Av3pNz z;sJ%7#MuA*`{b1@A`LR3;2SkS#}XJw%?TV6pp0NM`C#~(1BU-)PDxCp0>_oX@2tF* zCTq4W!xWzQlBHF;FT;e1`B3Runz=C$A?k-Agj{*34#u3jV}4e-E#_9bld{UvqLofJ z&b&}gdvcg0FF6E}2sS)7sit-BR-XFsO!vH6r_Vf>92FOqLU!@Ww-h>3LKiGJ(eQ53 zifr%dS}h*zx`EN5LARss7RQ!&{po^IYB96Hr3h>gRr1soXoz{(WqC%H!G`kIN?`V7 z<8u9n_2)=f{rK@}xXNBbIO=VVRYh1s#}@R=8Mf6!u`}IU$&vi^!EUT%F*JkQdDiJ+ zuu(mM;d`!HU%fk|tI6Mo|BWlX{#lnXqjl52lz0FY%r?=4D^O`SF8%9JdwuE4+8yb^ zkj?QZAHdY6lqbz#;%o+nv41mNTGf!|ex_kbCIzQzx}J{I@>qjL`S5eA=YNe!j=D5T zQ#)%ch3vn#Y+1R*c0=4Gd}ARlirRFD5DC#RMzAACri!}#5mi1vCzP;#L|gj6<2M!6x-rSYTGMuEUXsiwqk{7j&0s+?$*u*SMwnsIU0y=rtA{ zl!#9jVt(7LZCm#eaG=iNYp!e<(NLRoAe)8;{k|2iaGKTKdlNl;Wjhny())6ptr{m) zM!0eN9V~r_MqTozTzTYpfe7z^w=A6q5ACDfJ97sc@$By}liguVuJrl{H*5ztvgIz4 z^Z*=68jIr8qHerT8^XhBuZLAbVJOjC%vf7K|6_ z{%=D%ChV%_#?;eZE5Kls(G7@y^7H3;M_2%jn|_r(rGp;|uV46?r$O}b>n!qEO~w4AQUWEl$FoTCV=DI$8~F?8;`T;m}E-wqm~+dKfs8Xbsin@0#i)s zXQSq+E#?G_0Idpy91R4;OukK94SfD3?ugZgQ0s!+HhH*L=3rk0;o{```fnUrNuHy8 z345)4_s}-3J;1DHD1zY2jR&|Iv?tz>IF%t3a*Y4cy#I&03d}fK+UO^ul3gg>BtwNs zuOG!-P`E>;QYxOs5W>|UNG#D~{(X*(%8yh&{CT?)(>Fr=4)Y8D$^Op(w!JZd{#mZtPahN{ z-*ix*x+DfhRVi68#seh20f$u0kb3!y!W^W<{YP8Q|BDMt#%iP9#=f+4oy&5)3lgX@ zgj^n@_{qK*fVX)ydu~qM;OUHnYLf48DYsNfm3Dv+F?v}$C+;($Q<9%3X{irxN4(Mp zVp^KVv{x{hapamBZ0MgWlba-Lo1s?bsQt~k@cs8=9^=0pN|?$-G|Sf z4&+9t_$oOpqOPdsyI?=;ZLmj^f%y;6K;k8g3LHN9!~2R52`|m z!Z{HOOo*(~3qdaxqL+}&dEL{3qNmN|fso^Kf&pN%(c1(2Y&P<*J8GDWy3baycFwa`&GDk|~JAU7j6+ zC5N2yjdRgp7i@-uIL|`UX(CH3o+Vm-$ONhNoK%jm)yH08sz};F@zL}&w^$F2gCT?R zpg2W0skNG@Q$3gdq#NK!h0q?YsZ#fh?exSk>I}T77m@*_0D}n`-_9fNv*Ae~U5SNg z6&V72jd-UA{`T#0l{G}&{&9FRG${b6Lp=bGjVkHa>KO!`e^tcQ$>yHmpdz1Tb#f3p z7A4C;3N0BQk5>b`)r(S?DKv_ScQv?hb! zmS;)LXP5cQwQyp#crhzKw`m@>61Z%k=l~N@B4fsr_lkH0$#2@*QVs5v%DIuoVa z#dQgHC6pobh{mk=&Y)+!sU@gIUYU$?_^AiM~dN*}mkyLUJY0)L$NVzf__R6T#lnyk(@GictQ) z9FD?!Wy8rmIpqf#YTId@F^gKK@V=(5v3>bDQhmY+4sCT<88;{7n~WvVOgk z4be2WldOXp-a6p&R3ub)a`Em2AJKtdxu|E2hur%Pl%|4{d%@mRSY%$b#G2yiuiBMt zR)1j}29qZbHaae|RBv(pA}l@TBJIYBoT`00woy)K~z zB4Zt-vbGM)E4Z0gE1Y)@RLH0o7>kPmR~H4Ga?I>xoId3$Ch~Sgcn#~9T%;Ky2wwXV z=_}?&{gMpblz_{si{(Lov3UBQHA;T39Gd0zL&I5A?#t(!-corvR9+mEcNrwML$}hV zwG=_l`Zd_7v@~Dr3v=H*rSKof!IoJ_^{=9E86jX>EiLyNFP-`B2HxZ_U3Evh zg`R@yMX8|8HPQ8Ai**?(DeA!GHDA!B3ITmTyQ18RpY;w26?(Yj>imGu<7toAK@J3% zDG93ASrL3%>u)qpYFZ+=4k(F-KO*qpv+|@jE2}TS{V0e#H15OP3U6{-V$&&XS+r&- z(l8HX^1CdltT}VX`D|TU@Ls&`Y`oMi*p>jjfaki=8GidIvXR4enFTvVXjbn%Fv)Qa z474q*$vRdecHKv9sBx!Dm8MF(SzcR5~6WQO_jxIHL*hb^Jk;#E)lB3slypE>z zm*>eDt%q1Mx_iJQYT5?l!ocNaPn&PTs^!EqEEQ0f)!Do zWvoF>lOdOiT|kB$NDPa)=L*%Mu?GzbyG4EJ!=QY^y$d@|2qV!4lf2(quEX*XV|%gv&a_K0e43)YMg?)t;oK- z+r9X+z-J=zI0y80{A{Vg%v|h=y384(=MYKC>rr<^M@&jVd+kXu+&+Yej>7Im+Nif<5B>(lm$lX2U53d#AN2mFbyS@&@qhDD+j<$zw|wn zPja*BJ!v-!_xG&8&l)j8xJDg32gh*AlCjYs6}*!zJNE+nK>}^=0vR6EY509#G6`6H z6z}AmSI(SMGvGj&+9Hmv<)AZHE4x%brD}XI&{U&=`3)k|XAwtzp{+InQH5P6gC|Ua z-2H%%D};M%&nuHhDu>WW*F0EJ#N?rZF*AQsD#dqs?I3l^p!pbj%D$|bElX9sD6BaP zwjjfcSjgKixPdG&*X2a z5I?nhd=9M832bKKQj2FwJC04yX!RErmvAILIObm&D7tAY44sM8uChpG*{K zB*Jdk!Gmxx7eM@;@&e|4ltpHBP5{Uke}K5mUdYKid~9%w&ItFEYZk#WNFAM$T5s&44Ny}d#a}UrWTPX=_GPiXU7epQMmO)mefKQV75@?$j(BOIEGp@Rx z??yv_jr58~IO$nf1)5u|eW-2B{@+5cNVlEV7yi5KE9ZNWGEIm(+mE!G9$)^4Y@$4` z+eW0Sb*Oy3GHBTGn1K2NmJAi{K`qSktnYq4h??%}{P_32-}Ey-oGb5J zG_OYx58qjyS-_X2JX9Z>E1duJ00*MGF+3rSrqwQVjH zI(FD-)GUCf>fy!sgPmpen-wdrl*sq}1+Opf<`&ZSQ>yn<{^rJ#q5hrYD@0SZ@hIvB zD4MFq^=cuVWjOIW!Qy$uW4DjST-U9A0b&5idGciX9FMSy>IHy{1PxL=i~5^ebG&+FJ0f3P;kGo? zS(}^p>F(dxd|wtQs6GmkNr8Nv6T%R{Ml5&=>(!U5T>fmJg0%XrH&o^8&&nQs1z-q= zN>V5fQUZ6t!Eu2 z<5VVANX@ zF4W!Iu#aMR-y4ed#xB;n)y9{3?T0NUmqOiZyi<7Xxda+#T+>%}(a+6Okv%FTc6B9_ zPb(Vsow%rMC~Fbm{9>Ff!#Kw)A{4=?T&BGQLV2YIp9B3GyzeA@*Ks@HS}puYdpCZu zU0DAha=p7++&xO7FX|~$f|PVOISDfEacdd~yOo<_&>0?Dmu5IH zTAQgi7h34hSzsw&nEa)|!Q`DhSACc9Tu`AMuC?`vgP+Wza8MFgcuQ?^*I0>f@?nj& zHeeERwV5*!SZimn$<^l0o@%YXX$y*N&uPy@@b#lMU?wt1x5Mf*e!G3u=@O9`WLlJNt{c=$XMeeqwUjkdZ*rA`|aw*3w%-PM5FGRkk%`-O#)~$a~`EZTZmY zj{ZNlXgd)0I)A`;cxcfL%DZ|2YZ1@FC-xkR$$I}pOsevO%fv8sHv`e&!h>Tk6Te}d zKm2(o+`#yHx7k-BWl=OhWGRTxwBGqlzP2^GXLDEnLV(w(*G1{NKNItdi$V?$N;ho;zgGyQfMOh>$@es_LN zMfHfpdf&KipFb+xW!sFiEt(axE&EelQQ|djRYScCCO66lmTMjsOg(VPqUgwlwtH!p{=pt-x2BoPqzDfEVLJ1yCAJEZZ*W{%6< zmFKV5yRDB71t=U}gVrW}$s#C*tBm#eyq32vXdq1qmFFQOcJUaih$*>tLvw8km zhD*!BXk)~>@tuiJ8gAWLANS4Fv|ohdYXC4kbfD=vmd|5^F%uN-B)Vi5s@Fg3rqfx9 ziqtSKn=DJk_dL8eqg(@DU#CDVI9&)mN|5fpnZ#3kI&pTW(vR%SKqV7_*loc6ymV>% z$ju!?E-mpD0NkyU!9OE_jLU;46V|HJ-?fX$RphqsodXSr5+tNbs`qy53Q83QlrF za#-h@Nq9a|&fkpZ<~jc5K18pwzmu)spIYKD3H`oXS0DvdS`U8V2G*axvO6FvRbFPz3PKC!ksJ>y#lz~^)ltF>IJUZ z4lg@pn-#_RE_nz15aOxVaRZMLp#RKLjZuyGAsXyvl;^b9KUIlOhN)i*EXC$+KPNn^ zyoQf0nZbz4373Q=izE=hUy839@ryi*x=(S^Pd^}{j-%;DDt(>jRzFw$^gbWXMsnTzj?>m+EW%Q^#~CzT;4 zTiSdv5ke9VXDuDY=@2!k(JbGYfaQW#mt-2o1Vk@}O|de3(Q-m(+O^f!<1tp98FFP3 zHr0D^19g8i9OYH4$WIfL6|9lxG9m9}*O2|bhNCLfZ6A5PHG@1W&(iyr z(~S*vp&Pezt_XEYU}o3|xgv(39|5%XHMj=sOpAU}PWzJ|oelMDdSHNlDf)siaI90eHdUEPUxM<3+(|DEd*i0GsS|xN=!}nFGjDG|e8h&xWTcVDBXvQVl-4 zTKB!bx8}Im5?iW=Bv-M`NxIhlJj(6Sg>%LDKa?Av|b(uim;Z?mE2~D&afcz z%5VMNI1mS{-}X&xx}W=fL0Gqy0>9Cy85_vM)L4<>T@^H!7@SSPtgCHHD7!;VSB828 z#J?86YXpnz=R$50(a(L%rN#V_yXxi=s@>&jX5AmXX|-7KqttAPKjsG&6Jln}A5TQi zXDbdo7k{^F_311Z$`!$-``^>$%)7}h^@_z;{`o1HId|mclqKf4eH^tEyRT?h@kY&e ztWY+qM)34uhkQQI%KJcWv+rx^slSiY#~%`ttP89&olk&r} zimuT34kbQp`b96GFdKL{i}#Lw{p%E;Kp79;ts5SdipX6+QTfe`Tgp%Bz(f&1@7v{-&ach!mMnF_88A^) z{|^;_A!%vtv3j}9_vcM@1)2QoiUuxVBE>*|Me|T%WeB+$+&lu@FgUpjS$^M(d}jRd z;AgI%vf>5AF>{Nw7=o?&n|4c!DbqF>DX2tkoA&0eMbd5C6MIK=GVfn*$=#X<9%FIY zvoj4qSq?PF#|>s?y7+N1>=&j)uknL#Cywu(X&cBc+JE0SSR`mUAQxnKyaA9!_JX)R zW2Tg*W@os7>;Lxfk-V9V_shiCbDELQB z=8u|8QiDh(OZx-Up;C6cn)6~gyJGpzUGzXEJPw`7AsHHCRA5-Gw0MvfSex`*Wn#bt z;B2lmC~npmek1J#@ImE-c$ouG8{jg)4c-Q9Esp;Yxtsi#}VoP(LE)OKeQWJ_{7pe7m`)!j%od*!-=`QH4 zboqbG^rucn)yi38i^w@`^+W4KkuF%hEDJU`L3c*?6au_z7^=-6)n>XNiT?eDN`(4QRRT8DQ$;(o!lU0-81F;>f)Z#CW9(K{J0vBI18BX3ew8c9TLg@G@1SA00%Z^sqcMn-21M0b|>44lx#kG@|t~e zH5BSFaq8M5Yhw?vQaW9jtaU}u#p#=aYXN(++vMRHuhv1{v?{OdOqX}g!?OD>Qj@|u zW~+>09_J1-cdV;c`*1JMiywz4EY`a(*5uB4v{E|ySi9qIpTqedNblc8QSwdRTR z|I&Z8dha6h|13@t_ZfE-uH*Lr;?3$yA`4!~02v3e)gLUSALg*nz~YtQaqF{Vc3C+} z&~$+FrB$JCFYMpgHV$wz&O_$%q1xBPjck{bU%oWiGW=G!QP{h@$DOGvp5mcgJ>4(S znQjxo`@8dhz2fcMZ72_hI}_4UiQd8Lq7iz>^;)2p+#i{GeY>8leo!P!@K zuU;+h`-$Z-9*_^wWRPPV$RV{Ep3ms`k8#T?_)wkeDg<`@ukqM+_Tz2v*#v|2&}1JW zvT0<=;p&(Y3s|$nv;M2Qz2C*W+63yy*|eL;fC=#6>-fr6C09U3Xow8~GLSu9Is-U`5bR{;9aRPZa?8z0>6h61&c z`W<8~2k7b92g+||Z36G8KQJiSh+xBhz?{FE!<@V2O>+Bdch#&`15cx!?>cAc5ZFWm z=k%3Zxg10qqG7$-D!huDl&X|I&cj~@2-5+Im+gF9VxkVNwQW(w0ndcv=@`HlVT5Ow z)cX#_Gq;bO=}kIy;2Ny&(Hn`(wPFXCcSpbKPChn!MrEJ=tdHe?j0AhSIDE}SYVdA{ zs}dx%{qQF*No5lDlO3BQEJPqWc?>SnF}XV{2WX%G;yGWc{(JsOX%a{WzQ#{ANvLS# zr=0h{L>I{exuhDL>^x~W2tC;eu_1xwc7X!8$B12;ShM;wmlW{ddsmJ+g9=$j#*wqOEa51L3b!%R6ju@8PUy>zwjEf2>h^O*kTyoKutW|?7%LJIVo!ROn% zh?kZ+^&CUP)Ig)BPD+($-6puqd9n8wm&K+H8}d|()T~^;gsB^@q$_{Ey@ELADLKkO zx?RlL_EmnrIo|Y`Mo?m^;Ei!}%;{OC36A;cuV0>q$tw9rv=N>9^Hux*I64crCcpoU zuQ$fXjSfe5cL>{P1O%l;7$qU#2$51Zx|wu48U!Rn1qIw_6p&Ov)Pa_av40&ND42|ri;$em7h~lo;bj+3 z7w>%@P;?wlN<&G@3-9aVHfO4U$U;R`z^+A}tV%-A_mCGY7dxX_zHPOlB`k6^-TX&n z3mR>!oV(&4vEEVj9;vJ`Q^*l`)$=5Mz^5qaR;`(b1*2Q*1+SOujT-CkTbPfcny#I~ zRtY1>@-fm6TrMhhPQ1PF?-2#H)44IDq%BLwiX}q0Puw2+xH_bO`nAuyWu|gJMC47= zXJc-O4e!3GKXdzdhPghH#iyBjsw96c11)9UAHxNHorRWLy7@;{9GWeNzs{-E?U#X; z{aVb)<_;d4%){u&Wp8%^z%b|!4iDYgIkH2ctX^0lnJg%P!&-=3m*fVV_>=N26ji^b zN+u;7u!!@Dcbg-TfRlt5G*P-7Zfwf+S}?d7n95}?Nf|~d_wFZht_1yrW@%7qi3t8S zIt3wKN(5!AjHC~9oM2esF*(@8YQb~->*6fJi!QezqMQ!nlHitzY=bxCI!=95PMMwF zmh1Ux&BkUt8cq`lEVPQ8*DG{@AKD{qRJ#^-PBRw24Y3TZOBN)he&ZUAejsi&q(1HCyXIZB}CE8 zYn-SA4xcvsI5w*77Oc=pay^l%%j~S>@EJeW$gaF}q>x_;W$Tn^6ZB=j~b2ai(G^M*=7V2LIi0 zgy@hd}wj@*ed7qYW_^f{&-g+DO;uE zDf=^zd+N0;ifv?lYni$u_7CmlQQed6&YysA!733(GLI|&C79sU=UZ^0K#%7z(W!1= z=nvP@IRSKr)0wwd&fifGW^?R?z3RP2#V2!XFH?se4R%$03e$A*SQ`Mz1b9uCu|MfF zQRC;?V-4mvEijxzoOP|`GCso<@5x!eKx_jFg4xFZ6zEY`+Hhd*8lWsS9&DxUUTrB2l zNBFBWO*LWuX^3Na-gV0Y3P!djAgb9!LKc{&F(%x4+Y8`q0a2=jgKu*v<%~7WZUTwrs>uRyA(Bomd!SZ)!Wysz>m<3yEu5^kf!iN(XnooGF-L)|b z@#L?62hx7Q;2&hAGYV&S&G2U>xH@32US3=YrY z|4_}0aK!l@u#^ywH%uYDe32|EDdyHrBgnI}|4&qY?RW8jr6N%Nq}SGa-1471S5%BM zoE8g&XJ((ht{pK1Sy#(5lmo!biAln{?@8$zeqt+X=rJp-OmU>21o~>}2F8&Bt&h1w%^3^Yhu-;Us7=pH)`I3~KsIqBmtx;js%rY4Dmuz4byxnSEM zWG}tip+N$s8~7s6Thk9BC_vG>q>eGlhZ+!Tur}6keajQ`9Isg5UB4vNY&CDxU$MDt zXUR|eTp1enK4aPL_t9@9N7ZVrZd^MLJd$$&=Wu_3 zo$h~s6oC6_FzdVH>qxx`8KJwPvYp3PkRx!unMkHX=8!B=Z$43L7sQ`hH7XSWmA5#m zk*_nk=WLhusIxS}rA7GJ`Dpl^zJv$P6-P_1o^u(eW6+31JJe+^^ef*PZC3Z*_S%}F zS9K<8>&F ztqrUyhd6BckixN)zyymah8lPQOmH=a;Q9tEOpd5_?WW`Sf0f^pq^VmxU*>Rzfp?`xblGnD;9{6)q|7&pv7*7SeCik0F`Z9y?!pA zqQi87R&-PK#_*hgLJ+qb#m2Wo{gHNjW?@H0v9i#_$W|u&A5A7pgsb11(iSf;2Mh zu)u)LoGui*aphuTP^GEw#jb>ZIO6?F?DP;KowxN2=x;QI;{@O;DI01wK4u5J$vHP- zeBsLSKaLa*n(u6a(V_5ZlB5!i!n((V<=n=LXvhrRnI|K(q$I?-=Oj%=4AOPg8BRCJ zmmAfTnx%Jd1+Io2FWz|94tX_-JvQe|NDElQ5d9(H-mg`zxJSR|wg|t{By@M_E?JP*0cVJ68rh$A!e?XPtW%cDMTSp6#_xr=uo9pH9Zat=K`{u zc^C+6z?YwzVhAU^4!Hgr-OC$b$=Y;%bw#Q2dhf_mXi(A&qPl53;o zaL1_uNcGiadK^|>Vei<9J$_t&en2M76BF z7xXe~F4@St7Run~a}%QE%#vvrhQe`=3yUmb9TS_2pu#Jxm0oO{IJV6skNaN#4Vbdo zlil8rSb3C5Zh5JICXkjC!3mg@4M=2y!hv-Ws9%BRvde`I$@&jT+c>=SKSLt)lPVZxOes=KiPT zYHQ>Y#S@cF&w8x5Yay*mZ|BRo862`~2;1ErfpC#W%`$n1E{Mg= z_*~TPRl1KS?v(kt?fNN}zhc)K$e4W;hZIPL2$E5?66O>t9KoIc2bjaMvD@6@GevQ~ zCNH`Me&ulr8hPftdIq^WChdOVr@(UTzZyo7cm^my`L0wI%@o$N;W6li9e@}lC)y~| zsdAY~A#Oxu<2Xqam%0EaZ@^{Wl?&u)MJHY&5dBSgUHlp^T^f7YJ}k=2RDi-%5HPvQ zq2f$msq`08QPxcp9-%(wFZ@%3!(btEFTN4cY|dvTLlPx$S;t{UXL}MBj5p+P-BrKZ z1m(KjrJMmK$Z-};nd5pK^P*p^pndqBi<4)A6CwCoruS894f>FN-PYeN6u=T{Ds-1_ zaiczNYzMaJx4W{ra}|ex;02=?d~0;*t_-MN9<^M51JDq-|7I`-|9p`lMjYzk4LsF` z7p}CtE?|G%EQ6z;jP7~$sSlsx%#xa!y6o2gCrPcnUl6vsEpw+{E`N)|+Jl_DHCFm6 z^T2fTPcoz)@Vns@_SaHy?7g zX>8Ig5ZDAtbP{wD>m2uo=hUrO^bLLiTe1v9d?S%VkV%2;WgB zUUUynzeHfWaZ$T$ud(d4@o!&Jv_tbP!CbdVU8T1XKQ7k%76I6bMbF~S2Z?X5SLKla z*>iJwy47F4o{8CJjji@WxSrb8+erUa-ofIOR~dX}a7Sph-u4cTb^io>NYJr|C^rKo z1fU;y@O)7~{y${abm6-MF&;Cxh-P93NJ07pXKYxS;B=>J>C8%CsSN)RFXvK<=WgK0 zGsN!swX4k!Qg_YE#CO7jfBuDAA7OF7UykqA9#tiSN>BX`s;nLfJhNsZw%c&#)?Kf! zf&Z?fa&Lqo{+0lH$U-5neQ%6@4k1XJ68s#;jv2v?mp-2pRVrQ}Qn*eW{XHaS zvo|s`qY~Iblzh=a4rxx$*Za(?FNzO7jlVqkPL%#$V|)9h*#bMVr5A>1O7#3botE*Y zKr+IK{D0`V_JA(}8ED)%KMREN?}Mc9 z&@f0&+Z3tEm{Yk(*Pg#{+=uro zx5C^%6&1%?LbB;ucRw>b!^Ipa$=AJ(iT{#SKHRn^h4VdLG{*pL{k!YL&!I4pST>y^ zz6pfnT5HPhX>8$TsLn)cqGCTtr5_|`day@q`Jq4D%4tHRN>8}M{DjY_i7;sQd4)Bd zE6oX--9zFw=qjJ{SDxbj9DE$Kdwbo!=z8+%ZT1@a_bY9uH~W)Ifc{J8ou=XyKmGXh z>Tf0;rCA+qAB>v=G#V+fJ*yFlBeC>PB+XQCkUx=wOm|~Dtm0ldE zht3Wl$W0MWklM{yQqBA@Toni%kpiP^=F(=I`{jKA^FV|Mf#9@V57J!K|T-Zr%VV_ zj~G25j1nRO^Iyn8##A8YK8*Q}>_kO})JsHn9{_{1lZ;X{=Pf;uz+IB`fS!LVp`lm4 zd@GNAbNurSM0IVw(#H^+i>w3?{4Jw=_IFj9K2Nl+(@Cn2A<*e)rf^+RgB<}RBh{|< zT5J@NC7k!uTXvd0W7r}1ti3|}>GhlM;k$F2aWepJeuCa@4gK3DTK%D{g+RHHNM+4o z4Z|cMCmbam^{4;Wm`+mSI^EoH_1^X;E$Gc?&J*3b zbXX?=e5_w#qI1YV?g36E5DecXs*#e^3{8}6K-X3}fqHm;Oq9qXLqrlJhS`lkC(7>< zPT-o#WWuQ^e59&oj3P_HiSA>s`N|376v~HrqqC(vV`_EV?74R(GirM`P^w*r|E8tG z-dv62%!NysN1qNbUs5Mp)`h<{SM5q#qv%vN1N)B(JHHhiZd$u+W-3h#$-TCgw~$tZ zbmwRc1qOW&>>@~YCI(*J`-wc;n}qbQkIBpf3RXV$mCaiefoc2#e#LD|n7)%j?VRZzlCMsEcJfK)3Y-ahRwZXi{-|xZ<{nj^+>&%P@Eg zQr1jT+x?}%50*k)yTw2I$O(vl2^6a*D5+joSp=!74yc*x%c2MvT?+r9y~J{L<8wyz zJ(0Zkif~;3RQSh6p+4`c?u_b(cWzPz9_o|cgjnoGz5mzHal1k{NX%^D=gl(}4o5wm z|M_(Z>E7J^D)$+e__Fe=y@8kPeHpF}S*+IK5Gc(2Qs7g93@*`SZC)xSq9O?D_KjOK z{YKwApno99pLRn=+7X^17W< zv#oW4;LOe$=S~g?MRGzr^jebcEO6!9GI#PeYvj32;3*i%*$Uf8;HJDpGYq zv_$A|3F}@SFIH+@YUPtX8&sL@w$Q{OULehOpQQ`W02U)viR3<fZS#Fv^21v#75gxRCy-Vpg}+v#ak>xY?FH%5O=$O_tz#<2z=}J0G%4 z?26b-XBXgmV4inZt9=!s5-`*j^zG6N(%>}tCs8~h_S??zW7#hQi4dgG`m0S&G?+re zyZz=osen33{`b3@prmfl#aR9gTJC2mWCnJoOJZ$mPe@z)-Y21Ngtt*K`|hksiKd5l zia-KlDEHFHd-IA&*S#@*Eyra>4$i(0T5_p;eXKM9B0mAKv==6R zRO+PHW+^?Hs{No~JbtiX_h>&Z_%0qEntAu$hY$tIz>keHk9uk!GgFmtAC(Fwh*oV~ zW2P&9Jg(8}{w22JE2DgFuCac3hRm)Zl*U-6Pqx}D-Q?wI_s5Xp^XXzdyk2(i7fbBC z%WUtP876^q){G>wRgLw(N$4r$J|pyPRmR)3S{58+&9{9n_$K=kfz0dwLihb?cwiU< z9JmS>w6s0iNIGu-Qe7s$WmDY;!o`wzIZyz&;w%F4MAw(0@E~SC6U-MT&T`6wPD=Sj zaAlfs0NL?St}FZAtftLw=Ku5U?g*Hw_5)cAB+IsnJ&v;{^-8SdRT%+%NWqCDjD2%W zRs34lSXE{z#G)cQt|jFujzj`J)9R@=$-zAcq?qgl)^)%3I}4f!99TKiqULbO0lZ*w0xtwc4eKLnJ~LCPKb0mRuxq z`SVOB$fc^g;k=~K7TR<51yi1Vrf3V-$0IMju8WNctOUr6{U9cddR%>R#NVDB5bK-l zZj7nnWmjmM1?gz^T>Oj>@H--QSp1hiqw?{o6IuG;98D|*W1cPs{koO%bNt#)=*!1i zD?c-gZmcU7Bnim=@qTg)a3mmwv#GqW11TR-xJPKIniK0tozjKU-C>cVPTL!YeH>@XV{U`jl)^}ig}11tWWbdh=ix^+M%S zAN&XXRKJcgdovR~D$lDJcrRVOkl{8fhzc~+NYnFprt8+r8(BFF+NFidy=={0-LI=c z_S51uNm6XT>mX9P6qpLNB=&_<^@W4_fMY#1{D1pWr>@s1Wr$%NP|5q?W9D-f<0A@Y zo|=lA5aT3MhXrPEbPcjtg;%L7x4Ls;P74_<*7-b5n`(#34ly;7b>kkKO;N$D!^AV^ z*dJii&XPfVeY-o7h4w?}nI;nq4uAS{IO?)&Xb@92O}lxHRrn2vCt`UyJ|PeS_O`SU zIoELQMuv2Gwx*prSHX{w?MAtC7AlnC0{&x7o+noRVcCKn{NczF6Q110^vjFqcuU4U zG?+pC(}gA2?`1yy3-V{fqx_(QnmSM~Z- z5|nkhd4_8s2`m)}PJ52I!ci`KoWoOXFTDBbI|4_3163xCon!wIx*3eM=D`A;2lHWe z_8x#7z>;Z2>m9D%#B8+ z$hTYBWd+Ks0+CiB-oCyS&%>-}=kmsqL9K?jSy$hg{_@|+(CE6GhS3p09fkO^AQayY z#+Y?ZMP2cndQW*bzn~~S<8TYacSdG(9s(H4xjmUI?RsmyK^w-~x;!H5>g_a%O5$^s zQqbu6&Fc53tMvi+&iFr7%5&=mf_eoIPm0xvV4(%@r>~H;^c_Hon;bUj$JQZyL zspprCEK@n6a1HLeTTuzz-3{%+9`Ub0o>Nfq4P5HXN)0Pnwo1H$!KQo|7%zIw&tMtP zHA98rQ3Ot63wg+Q!#;;4- zzPEW1fBV0|(87jfE93+XZf(E8Y3ItQ1AI3F@s&0v5=gbYT4Rq#q{5A%CB#v)s)qvf za|MSs-uhj~nW*^8;Trc*`L?(vpTb^#ne7h)E(sHanbNmUbVr{oJ<_+`r*I9hst3jW z5fJ&vuj3X2LT6@g4*t8pOvvfH%8lJa+V>T?%p4R`9M}Rq>UaxjiT$#i)n5?Po`KPM z9cM1j7msXCuNsi8c4T(+j+xk##i$Od&kmI}5o~B43H{4wdmM|d5zyxl8a{FQn?mc_Zy5#o6$IjDj@1NT*^M z=%YVd?cb_T%kgR}iNt9@Lul~ms6O8Nvu39f_TRQ_wui+WTA7U3zvmoh$Fxn)psj3CzR8R`QNE>o6X~h_S?gKc67TLjnK-TPV=-~D(&uR8 z=vvN29g+p{oTh zVEN$S6%g6ocza~c_Qk~uPg2=Nc?!wLe|7Au9mFhpy@e1|fjd_0se$iF9|=FM_>Mq2 z=WFM*$$p#@)q?F%d0Xg*AiopC&)Ow9-b>zNcG8PuG*`>VnBd3FK#U~_l|Yo@MKq*l zc!doaniF4=8*QJamZmDfxl-_u^T@IGkggUlh zxFehSQDK7PheM$rV_RTsK)#|PTHV`G5gt_;jMfJJ*tGo#oBWw9_S4ay>bS+D3g=Y^ z{|cMZNyz5F)u9qY#uKJEwwdjXXE(6QT>r@znrBQ3?!-+%4Rnb`&23#1WbP<$fn2d5 z#SNh$F=6sLXEJSSZ`6}Cbb8jbetB%WEerBCdz<~432*3!FgwU4EQ_w??gNU@1O;%f z26HzkoqM)|ghf=(0C_$EXuflTp{5^Ns&%bF3ZFhW(l5`qEc2Qpv#~6fXb%@JL1ypr z=I--1QUndfI4kK04*<+pRhrq9F*y8pN&;SH2@=Qh1Z_;V)$L>GkiugcyDFY1SPU}~ zF8uH#zl}GmHeHcDg-)Zcs&kO)JLR4tkaF{3f(>@++^luJad(UOhQF4S#b^_MBeX95QoU_hl&Qq4`G{dxrt*PoZI- zp?9#DM21MeSn3c%Xow;%D=u7&=Oz#(#QYoCN9mkf;;pmdP#MPIhF;ZtTt6rG%24v-5Ci)Z`8|RSAuKDvxIxkA96z$#afUvvs2+x72f* zKF`g?wQA~(EM|B$GU*@I()IN48nVJj< zn#!uCLj(WGTB8%y6$&bq@0l3V;CE>3Ls<6mV*o5Ys^JHh-y5}zc^jFTx`ZCho>kwB z;zM6mCbW^pOA||dDkd`TZ9Bjaddd)*U$;G(&Rn9v|0ukx31-6o4@qKd0iU~ zx`xra$g7QJG0ACHZ%7zdq~td~H_ju%|9wMHr}W$bouF0;u{|y;bi5DO#SQ40iL*6W z$Drc-g24<-Ax_cY8Aituu1A*MtE)3|yzpOCA>a~pyIa|*PzXj6a*x9Izpvh{=l6>jq zqSQcotwBPN;ZP6!%q)xm6ns-?d-{Rx%A(LL-fv)CIC~vsNCJQUDryC=We?CsT1G02(^|exDZ}GT8s~o+tkiSxa+3}IuPz4j0YXci>dLaSQeaOS z{5O_|pnS3xLTzFKF%XmwP7%I=ahUV|)*#(E4Cf16+mp0l+(&@Cc}b>b55JB1{ z-;A;6qX)f@tXWW=vSh8u*1rb|{JAMVNXHxj3>J9VYEw`gzOO$wqYr-ueF+Tqr?C5< zyPUDb?y$pS=}nChqrzC6+={pormk(%oR14auhI0P=z0lD0S(^@@AiawiQ7&{z-pPC zJ=sfbKvJu>Korm&UAtx1g(WEYx)yi|U!#zE&I&bvr91s*06c|aX3uzpj3{`L8iBp} zp=Y>P377i$Dsc@1CnO82gfi^K94DK(iQI}`DM~ML(B!b#e@pi`DSPclxYTsrJ7J+ z=Jn&FsP~}G8?6=}i`H%&&QY1DFfp@6Zvjp`q$hDFItSp#IwWG8#a{pxMl>Jc7d@YH^UBuq|iu-+OiA^52| z*5)s8I;%k@MTXPrU0_QdOR`%jyr)z_Ah`qcl!gGuNyBz=JoZ#!4FaDBkPBJ=1=V+w zCqTl07#oK92_I3CftYWNeS0nkzEvsrU$z^c<#ie&a13o&gOT*E)~NWHNz52M92A|cl|RU@*1mLAqV46@h4{-jm%ZmN zfd!jfQf~OpFXFEMXh%~xABY~x$96uZo|Yz&evlH}Rk+8MXNT-x>f~${@25}8L2T%Q zOo6+20W456_l5B-i@P|th>2NM=bGc*L-n^;mGs;}Fmc!m09yDgA8xHf#``AskdG}9HpoPWZ3^^KMsMQGC=46nFuNlkeYA%TGO5jyLS@sHfk zz>TyNSNBIIKWtS9e1a5M;41ZsezttR?z4)fq`2!_KMMJmp8R7yi^T!}w0Q;rth+8K zeTezf>HOY+HCsZfUg}Bv@1U9=>YEeNSM&G=1;+sIF`c|l)4#QU-_s=xC%$rryW%6WW!krg|C%*GSykVM> zY2Pr-uu+$Rv0ilp!ca_)#Va_WqT0g1%lD`HPoDATN1#gKC$!_F4`EEUOBB(zKSFm6 zg$Wc03je-0ymD;^7|RcoY}gQVI_1mNH3h3TSv9mHK24_~Ka;st87nVO?pueDbmGZ) z=23fz?Qtc#pXM2|>W^NzbTVl6F$&XDZ$>QQI)+@H49x?{^Kv491g5|Vefh38uc-Gg zb}qSFeh2@E+hz)UckM) zS_SR*?_|2?BwqaD$0@TsJTpRL-@n1uPcP%%z()JP=uC9^`s%%l!gs}l6oH%1?0T;r znLqvxQYG~g{zD=V86uKBX@;*~Tls35stL%dkN&BwIX;pf%)M6hRn2VszQf4Vjz7YX zf6ztT$<9Zbe|n~8D#69PB02i?TItl|v!5sZ&g3k?ikR$&IGzYGK93q6MLcIF*4CcP zsayPfr|0)yVg9If&O*8m+sYQODd9=QB<{+#8OPnZ|3a;APTm~cSvdvZ#Bt_(?{?G( zU>O{L>Bb_$8>Rm=F+i-iQs#*Pv@R)E`>Kx=>x)*GZgHc8iI0w>UQZHECquKGn(WHi z)mOnXSv=A<-GOp-`5EjYO2nr`M(t<{1QsDk?>pc0ypk{CV8lw30jz^#PD)dO!yp!n zWP0=eqeOOs3lc)<%vmo_SXMN>NThTljTs&s_&Fo|PYGPrE{4 zRSH{^&EI@lq>;WQTO2t?%9k_~H%=A)HI^-;psq8Dy*8Zk{5tsPZvr#XqYi(*;tee^ zt?JU@)O7=k#}{-j$}H~MMUIUlxx{ZoR>zaC1kPRm`R|V&Cg^qDnJS-j)$5NITLkQ4 zWfSPWVz0j_p=QZ#;5+p|Ho_tE@(|=EujQ#uy_bklKGN? zkZ!KDi~F_6Ow!YuIO#68o~X3H##2NO;0q+-0VkhNIuHj)Qdsi1H>LTUx{-cLC78mE z(eOFpkCHmO#zk*%VkYx$3HM|WkjGk(EK~I9s7#eJgP>1pN-J!H>jat9aoRFUW zG;zqU8pNcO@xd)c9T`0bDeJI9q(V_tcZPIDKVsZUvvx!ZZ4je}E;Xp<0+n-q!z@M+ zzK=*hm-v~w?@vV#ky;4qd9UBBTIXc&l?`R3=p#X zZPrkB!{=x{Uvj3!$0fntwYkRm(h92ZIaNNOT|Au}P+zwF)3)(`Cm2&tt;^ASk}8p_ z>?v#CCTxC0j3v?K9u;`anm;Dpb9swVyXax@kp93ko;4aKku8+j_sFpBj0z1*5$IHP^!Z$PRD>ao>V z98>u@k9aceUrvl&aHO`Ie{BaF{K`gBRps8{Gjhl|a z6Z>qo&ZQ`1^?gvGNwD3wPHN>1VQ@}!j(6B!%L!-$f?r3Xe~JYT$cEUQI_Bt)Z2FZ0g(W`ZP{K&dq`%pSm8mBy9(>FRTl7tN!R z695=@G61zix`h$uCQS2_I7A7uVVMN~JW{@GGD2b-eGuV0LZdlf#DR zrAS!{o9G$D>BSnjH1$~o%K1sA`9itb+}nS@Ybl{18uTtF4Uh*^_jTOh=E>%=HgB>M zT9@UBWX?fk5E85~%|IYDa8{JUY2gRrmX?&|EhQ%_iQ!Xhl2}*)8lD0(_S{i{6i-rf z7$chLHHs1EojH%p{lyPzsVetb%-#Vnk%xZ~x zOl_bX4WCNi&L5FqlPG4CZmA8ugsc2vLge``{f^RcNo0YZaQ?tz1jf$(E*>Sl+!bH5 zqT1%f_CSD;BVv&R-~s|bUaq&ojJ0P1(%aBdtStBr&9%bU%~dxnKMViqOvAESiQ&-h zbDd{iTg)o> zk7oC(S@WRIyO6*ZpC3ajAHVauGb#-SkFl=~cCA%=vv3_XtWG9MZed#-)|+{+MNY3K zEk$WDp;xBvOes8+YhcxwI$X$4M0h&IWYt#fnUnPMw^w3kYe+2cS z*tZig_5)VQwY(M`W=f88r_hULY4&^%M%t{D`b;(N)ciVA2P9Fg>+dx*`^c>R zv?PUIVfX80af{dUCm}>4Or}$XJ)aCd^#q{n=>6*EuQPG2ny(;aP?9A14(hz?5O?Ac zC`ly)KywWRtI7@u#Qn}-e|#vYdVTCMB@^k0S!#~pUuzP-=g4Try-kz@3A+GJ&=G&G z?7tTJtWXnrSKd&l5le}1b~4DktU0l?O&`4%Cgxt&a<@49*Eyz4ggi$_2iHECZ4fN# za`c3!k`tjr^b7I9Satzk&w=gs!E*K>F-~JpfdLd3Ffw8^n+&XjitYi<2=!8~&4LYz zwF<5opAR4lc8g_cQ~sR4066i?@1ux6)qEcE9yi!W!-3ohop6+6Yp9=yQ&0Jj*~~x*FI>RX~@h z_vxI|9}|*16a2U-OymVB{m2Qyd&T6cd8LmW1(1=wkYGRqos;7?qMJ?WWXJ zzkSynd-!D{yJ=Oeu##HC zmnP2C!X28(a|*X~EAF7hFg}7BB$-Ww7oYCiw07VsQ=1htOKqCPk)mZLObIQu13Ylg5Ki#GH zZ_-+_r6*q)2&JmsM4p$M350dq?15StSxVOJQ}F|9=tgj`+YRcHoO{-DR2-2 z-iDZt+>=x1?2*k_w$%r0@Jodmu9*aX^TT3TA~hlB7Ua2H(St{{Tj9_P zME(n^83weX966H$9VFJi2iJc%JZn2@K7;a*m=?~{qFsh}j*fS)Qr#3=aI2ySHs{J9h@IVHAYgiV`!D%K3r4dMHFkcd z*`&C5xS*x-5#Y`5+Bc5`AS9!3EkWbH_+~n4wV2Ja;?Cb+w{iZ+gGRZcA^xLF@=x6F zI|*IC(AgTsggGeOFICe5)%C9=0s$o%`q-lKWqHCw^o(`E$Cew0upT_CKi!WKFki%| zD{**`^@$)dy<9ulT$&i)n{pu_I*TrfgEA0jlI|Oxzyyss`)C;*$MtS~lL$eEV0~RU zIGxOTTgVP36zvm?Y9gu=BB=T?+?=9EKl zKw(OqYQl1YGR@iBN5Yagz3GpZ8aPlXvhMbXOMKtMn-#?dzs^kE;S(a=j-Z7d$M%@I z4Mw2Pi%L6={$$Al->*}@?=~sOs?TpmdJ;f-;{F)g=%ZJ;^h7XCfunQ+IwjU3RzIsb z;E8@(iY|*%yBRgrhGnUqnXA2GII!(IV6dXB+EmBqe;0jDwO4p({s6ldd6KjQ`(d*a zwvmT%a62q$MmF)ty5Xtruuy*P;!y_~2&)7nVZo1}7ub$pV;cuJN2c#zyMeuILkGXT z3XWZkwwO)QNR+zrFc145_gstpLJQC_WK;zR(YJ>rVOfIdqyL7xZ}AQLw6&kYf&44S zV1JENR!i8i&*t#}A;7b>J1!iycdu3gjDJBXv+>XuD2uE+rh3JJT|FOP+%a>aefik> z;CF%!8S*%jKb`UA>jrTg9JMC}1|>6GC0Rk40nIlZr? z*3OJq@qYFFrMyZEzWmxp6WKMdpLQ5NTOL|b{)kOdU__6-DNPnb(g89!u(thMZ4$_5 zy6&BB!&C@))4lwCuW?Z5YpDZ1d3r;5)pTSi8|n?)f+}kf?(vcqH;E*5ntwTo?K!U- zS~xewc@3y>E9J2NG1V5$8@n7vMnutI5lrZ@4ypMcIQH4mTe88s=F=^EvDIv!9@hM= zZBZK7ba%PY1&r>UYu>;8?s4d9>gImqD}PN^+P?Q~qMT~Z+N0m*vo1xnh_#;v3(wfH znuC^R{*srPGWxUl?!SEEVG?grwRqJ=OsHh>N7L%ofOT}(n+nH1+ZT07@y|Y<9y&PR zj^yM>7Ue)Oho-rD1<$=ZD0u)HH^x6Qx_o^Ylr_yN8vUBcRyH_&E%XukZju{yM&OO6 zDga$Ju`WViSEPPG7JX>78=Y@Ykq+}r%Yo#R5s5S*qCMon)#id3M%0;i&lyk8UotFT zRnoa}QwT6;(={MQ15AlB{@epualR6Has9ZbiYPqhZJB|r7c~FK`*|>jpG@5Pu5f+U zWzFsJ=emRbiOQ>Zo$cB7g}l)6tNpK?oQ7XUS(#rn= z>`?CR__r*GdoCfmBE|aLfHvB7=c5(zLg~N@Sf}+V9JbLgE6yO|Q^q|*qX9^#%ak%7 z>;4{o2HVj-cbinx^eFU8DqH_)*0*80evb14Ip!21ya;F-7-v3m8e*nMR%CTwHrydqvmG%HG5^vsXk~ zcNo{q4xx){?-@m1GlZ;+hLBaMBuRagukT;*emu@k?{i+y*Yg>Dd6}u@BkJy-BnJjO zjZXBtsP;JIWZyt(a0SJ@d8g!4Zv?wr(Wj#+8+paml-sb(1DnxGm>C6lW+^Hz$|u}r z-XFMIFZg%FP|%FUE@UeG!W)ju-#7rR9JQw!{5FuFb$iOeLmxA#Rm`n{E4Rj+86Mg& z=yku@Xvw#vrzhZ#f4%vd*LyZahjfN`uG&$_EW)Dd95@~nz%UucD6rC|KWfY=?-trS zJLgM4z>rw9bO+unSIpkLbR~CtqJWKkytHVYb{Wdgu|GngoJl4>)K@Y(Fgx0{Dq{%U z>|c%9SpdsFoG+c2|K!+U-~D>)^{bl2R?mp*v5$Z3&{eBn3fwbHmI72I@f!V0Y1LW< z;NBrr055TNgR=X*RnF1FR%~LS$$dH_%J-%G1LdGPo7Cswn zx`^y5@dXh81AHWkB9)R`pEZccwGBN6?oNe|+<^j;>m?gfOLj?;va4O(h944PX&A5GObwLdp3 zWR3CP6uP^iD^6W;v?1yA~5N~1h)KFo+6#x!?Keqzf^nlVK%sT#VvXDS=VY8w2X&w;R- z26f6aao+lGI(VId2eokd35@f3MNw6j1G{A%EwpQ*Fbn+22=~Cm>5*YeeX4_$DASMG zkmLtfM_6kILN~!}u09W@TRDE)5L%y|zb8XpgX_Z%l3`clF{z?3B8FbrVFin3Y=29E z#$LrmCJA1M5E;p0q}}(FbM~0?TsA(tg*d)p&8I9^6ThjjZf6lj*$=Wm zxHhu`WI4~(qBtrL7jWu(WNcFSHTSnq!LmZOTQC#2QB`Djc~Insh`Tpm-U6Xh172Z} z$68J*9<@Z~LE&FV&GLH%ucjRGQi%t{Mr4~WuwbMA?<;R&Cy=IkLI`7a< z76Ms0zWGduQ7^|RkEhic8=>ad#<9n`(OM%GGCUB^Q=b|dWQSkg-ChG%SQBFD%awf| zDhlmOku#FGs*S(}A4B*iJ!;hCP2EBm>PY;M&7ga3l(4PH2WZnsqVrAo^5dmTy=FLj zAvu0}!xJLMDXLUDeh@KvT*}#U5EiL3`BrX|qzE@)+v|hAzkZ@|Eal6Eh0L}c*&AIe zHKg3N*t~5eLhoi0PM0^l)YB55EPG3&GWwi2Gc>)i~}nEvuSAM$vTJX;-49-e+u3&iS#x6eBY zvi6P1TXLK*LjKKAD~)1`rw6rw}>8zo>I~4p;QKM20JX6?}$e4dEOl_#gc@3 zX^@W&l9^83g5_&lWnNM*Z$yt~3V^;kpRhW$Z5c8pWK;?4NnO&K5n&$7*^HW-2eDnZ zkq^}(yR-fo;@-k}XyFN!it9cmj%~JCcFba5bLaVZm0uOPX-II22%0!8v)=gr*?Var zH3J{#*?N}LAXR2Q^Q`ob{kC{S-C;G=TGNKWJxha`ueUM<9)PO(B(rs1&;4XB z+yJeUky7M%jHC{7OzbuMVOTJy(LxLMo|tH4*rvJlc(a7O^LPJ})&+R&c=ftGifwCM zwchv>f#qn3TOI2X?8M%_?66O#n@#+iCc+q71QC}|N;S+LL|BdQYYDo7VtXPTTZ3Bz zl~7}f>t8N>R2pmfGgeLmT3j5hWRVF!ZMy>g z+<3ygh(`h$hQp9O_QVUku6T7n|1;^}R>ikjl&sA5Aw_vz?y4oOQGs*Ysrt)&^PY(Y z8>rn`ZF~^%$n0y_=9lwCC*U~^Xa!Ip+xLWBYZp2JvVOvnMVBkNXg0kHQu-<4AF!P^ zHN6bo3kJQcv;lK^0#Dw-ruAMk?;-{EzIU$Cb@9^0pR3j?i#Y*mH^G9+!YL0d+TA5V z%lhn-rL0G#$-2K>*}8x+ZZba28=C-;)TMEl(VxexQ5q0=Q@kk?YCg9m5Y2wJ(UQ{7 zzmOaA+DB8m^>%8?N?UcB=CL5pP4LG>r`E@pwll3(X?^cqmp71cykm0(+ zxF;#b+Z_)R|Aha>-HY4gyejfG=1(h=$10sL_sBV~#^_OZRaeSdE9ASOur&q5v1r;k z_2uG^=psXbDNSR8hniP|mB<9Ff)+dxBml9FFS)1!WW;joeBdI%xnFLakxlYAQ*o*v z(hB8Q2$?H9dFEo|*>cMt*<7YQH;U`ICwP7sDB|Cs82QStYYRC((65m}?BKhfzgBc@ z?0#AW5kA#_*4ZtC0xQ+Y4UwAI=WA*=S>LQu<-FS_409S2$Ox3U^DF{k&)#mw?#z&( zHlhBkDEVZAq)scAYy-))37;=ps)i1%T+?0E0ZGgP-+X9%`#|YN-lLmUQo`Bi8mOlh z#qd!(PPvpb@t&sTI~sn%yX3itFDO4je}Hi z!|EAks-eUG^$A~zRx&$xzh;BZ1$rb5oUMp}&L+ND*A+V;fL1it@%YVj_{)Z@$BlT7 zUXqamlmSfFwAkYpZ-kqL+EYkr9Y&T@BPM_3`haK8INJn1$Q1haK|@ENULRQ;8M%Js zL4K1)i(gnotXRDM1oIy^){7)5uaC;3;GP0x6%);ptFzKYuOtWJAQCHNmVVQ@c6js@nPo$@aow_n;o@};O}%-ExRDzE`i>7g z=({3qH3{8}vzPkCNHXg>4UFS9IJ)a~N!xxYTO6j22ZN$No($NV4uRWv(#D}GgKVh= zi}?t~3N}s~urmcSG>cIK%0`|f%THnE5yL@6$pP6AHbX;IELev?`fm}W+V=2YsF|wK z@bVL)?h_)vls*#=0O~jkXafLw?$PC*fuyB~gLdW&qQ!Ul3p%5K;;2L;OITcXUks0J zjMPMkDXi5f(Y%z<&H=pa0lZ$R{Hqe)oliOqwD6~m2^3hEAt8pyMEz_gqXURDIwgwS z=X#VJBSja%Lw7AZ**rdx)(_I4*vX2+M=pTnlce}#r+iD9)W+prq-M*RXJ@R#uWe1~ z>(IS%g^fkuyAnLb-W(VX2y-j^nBuMK1VcPA)gCtA*j|e93L&XT z=H{GGI;~43v!C5a|1+@rx}{q+X945n^yWvSwWjC1TlB0r2hlp>Wc&3xRIcdX6L(b>Enrr<~=;GJy%&tJLsgJNmD${@}}dw8GgtYoOF%O4C)*8*&a zr5Qzzy7Q!n>CO){$?sOfJXaDgMv}m*cK5pHMFA!`14I=Ji!UU}1e>T2Aju`T&d`g! zQWA@=FH4o8i_Lz24MP`xkP_EMWHU-uEkKdSa zN^-AaSU``y8J<0J|(gjW}#`$6+0K>BN>;_f<|Tg zD7hTLJvVisA9TT6f)FE9h>g^iKYmRuPb(5d=Rlsn7!TH1Cu*$N9sDdLo{WCe1?yYU zYKxg}*?Ucybt!)$Bil`ubG-iO(nV*d#JQxfP}2K;dg+9DGdQqXe-Nx0KdZ8`U4KoT zh8~wt_VT$hax;tdAFBXaW)&}GI+(+uj&LXompd!h2C`*`UC7-sc19b}1rxwYQgeCA zH@@b-(URYdVy-@jL12Os2RL;Vj@*S|DM8por@bT-(=|v3#0Hb(G@In#n;a4kvt9?w zxp?S!ga3NG{p;Z*D+LBrc-;A{A=~5gU5Ti;UP#^YNn;jlrvJc=1Y6cYUpe|NH8)2F z!qg53sS8G(7c648kO$2o>#rnlE3f#|L*%EG_4i2n#}I?3(6AHOYP9FBaie)%;>CDB z(|;?u@>5@-V_(0l#pfoP93(;v5(}m)k46QI?70C#U5)mb*9~X#v2|WI_EKWAf&Z%Q z&;EL)#ed%N7J7fQ00~%!J^lRXcU9R+&AOaq%7w-H?NnoEN27m0pp#XH+D2R14l*Eg zjM;s69~`c*X0AoADM7%mwp)FA~5Eu#D%?bqa^zvKK zl3Y=Nq#5hee(U>*KGsNxbc;_2=hMuuxx8?Ti(8x0jLX_r@WPsq9El*c7I_W5$&MSg z+|?iUSFgO#B3Vckx@)_)hZ%Ga>f(2utI&GwjlnB!u z(CJJkVSTi2CxS$lH0%w=Y@5AEq_qh7`#u3Ul)t}5Iim~3hO~+8=Ha?JPP!Prm5DF< z6ZCbwYA$bRr8(;mSSi3Eu?qqipqT;l`jjGnq{H2<*ITE!pq7BRy6-_fQE{5EVCLi$ zb|Tvzeb4QFnU7@H2dkSmUS0dTpR=*AdPwHSCVJ8gwW zqG2IGki4PJAZe`oq4EjjTv$r3Swe)_yzp1or^C-V1)JEy|e6k z>z#WxNH}ort1qWPC7Dx-sDey9ly%XysJ%2V8vz zY$mZPANFYoJw>Nalr;sT1R<`=6J>8dy%0F7YRwy$(b{fT`0Tht7mp)!KfRCci+m1# zRst&WtIaubTYnO+|1%9wZyLal0x4&!DcTT)QH0G@)?M89#-Ep1!UD{p-p^aUkBvnM zuq4}1z`_x*IYLGo8$N#YT zEqVfiK%f=}=h|5_kOoNB01jh4^Vj{t^LPdS+dtAVU|VT@CYiPQ(E?BAgv3RkTBdJR z*9E#^PwVZ(2&{ooga6%BJOBxx7~X}Uw;Qj^Amg^C7A+j(p5Hya(e@oz2Q{#9XFlN; zIool#o!&4RS73LTXdT^Sva9g>)-~Qk$!|%GjC5^$@sT`?hU*Z9zeNhq$7i3(Ald+2 zy}<8$;p|j`1t<&v?^s>gEguzUN^!3n zS*^ap*4FFDi#BL7gV*D6>bI;NJVUw_wLB;`WMiq0*i ztnoV;4-(xc8Q(@5BSr0N&fK~?76Xw*iY6_$SmVW0@9}Cl)!EGX3@7Eo?P}g)zP{~? z-kA#HFQg+UgWxe-n8*z*h{C|kIBMengjJd6$z&o4BuK4onfhh(pY@AP_K$o<4`K+* z?9#!D6rUwIUd4-+MmBBw`iTq@=bX|aLe7pLFSUDF=91;3bEc7IDV`y+ikbz_f zNoI;*r&6a5i7ydQ)sUTf70H(Xs8RZw*=vw7ZYYJb`xX5#E505#cjH~1EqnVmQTVuR<^j5MV zxcYpJvw3|Up->Z(yt%&{@dBv!mQfNQ_zI&`%kLsN==qZHxx0 zIb2NJCnTI~C!`7RD9>$9r|Z$(1&*HL&_akL1vl&(a3iOXO_GQ6oP(ueNj!dwQDo2h zL_35Ip-<)Ig+DhMgtZ^u(RRUfTe6M%=7b?REDED~*sROKlHCHe#UJs3s_U1^L)x}q zhn$liXUpY4w?BAO*%uBU_#^r^mY|ZR9yX-`W6*=Oo0AoB&3yXt%N{-J&}=ryJNer3 z-sPD{;NvglZv<`~jQ+BR3ryig_)6>Sm^9Z;Q>?T;=Cf0zA)AqH2zZGN5uW|`2F)*c zCVPaJ%ZF^5%wr)so&t?RU*aQBrO2qDBF5-Tm(c{@3~=8*l3NV~f(u_flzNUb7FxAX zte3hm&W9`7_ql{}y&-O1+PVtKbapK3Q=rBoNnwls`>{@h9{F_8roPmh@?F1V1~I~$#cp^_Sbm@i!=vTOiAKQ zzZ(+ZhEFNOEGFbZCfOIPWEAO^=maWvMUgB3{djf<^_MO;SijH?5bar7S)Ty3P{ZV=LxHH!-*cO~FD_X>><=}m8By2)rMW#66< zU85?$Z7l%Ex1CG|(z*CsMc30<%#iAO-I-w~s+Fr;vz%@5;$Sf;iz|%AXHZ4-B!u_e zQvS(?ZlJDGkv5yZfs{1)cM{_86+S95asVEWLP2t)IJYt2M&}80C#ro`t9q^MmBF2B z!+#hpZeif|JXL&sA1~ie@MT&td!gC+!K^p(QCSR>0u9C!pbXjaW(?olWU#cu@ZGX) z5f;zNxwpc)d4LHV4*JX7P*{$Te%0Xv-*RsfYD5wW7Gk7h@O9Y|;;P`Z3B;q{te`fX zm4SCQP|=fL6P2@O5!TUC~Qqk-em{~-whUsQw!@yWqE8!(nK^Zmr z*60mp;Mi{iw(^G3Q18zm`PnOnL!C~&g@-!R7Flg}W{oPbSmhsmgP>QG3jI3$`*th- zzu5{=uxe`qQ`W(ek|2>>+n#cp=o*0l6RW>WZDLpUhJcxE(-B-1@ON8qZnkLXwVpu{ zP4K9EiAkoX9O-H=%}8`7Rn+iSHo{EvwVA>>=HG)pJFkg(w_{WcD=v&DBcL42!hE)} zR{0RNBD`_>Nq492qZBc+J4fvvR4HDcA+cdd5X0JAAXGI#;(fkxs%HN;KbXxMW55`& z-lj38lw~kFWt(cQ?XaeBugCmT&_R)wn_z*shKpfX__guI>tbcjfX_{7_5$t$&s8g~ zO*7FBp6J28IX&c9>)C3Mw@dr1^Zc`wz3&CN!cYqIJVC|Wu&5^{aNM@_x!Q-jhf>=g z1k*De0=&Ym=CWpr3Er5S+By(p<=jGCY3tx9LA}No_PjvEtaA3C0+hT4nYBLfss+zk zmD{2p{p2^&bxgMA?EQ|u7-nYUG{Lr|a6fta%zyJi_Iyn%Fsd?X24F0kFtT6XEaTOl z#{R(sDxO_2A5+&w1;j}|>ssbpnoZVu${K7l;rx``nOwiO4)IbCbj(96jtgaJ%-d#a4MQ|2MUvr+A zIW_n28xTx$4RwB(>DYREOCYH9iq`L`^H8iwsN!vUEof#Y+GLEtVyQ#p{_c+AkLpmV zHM7z{Ld>sZg90B}z7~a4ba^xX;G(%g&~g}LIUosoH686?vxWR=F?ZJGny7UzGEoOJ z5h+WODEPJ&d?RbtHo8u)67IHRMUXm+)wOviJY)7GPV}(q$x!}-n>dJ6U3&GzEZiJA zlV0}kND14_bTYKeUvcPg+1-{7bJ791@Kbig!lFSxAhqrs|_jv91Vt zTwxuSsdP5UF^=RIQe?oCj7#l&$Y2(<5F3x{9SnIaZ?@ymsG6g?EP-e(e=_v*%Aoyk8{;GE{54=UQLTif z`gF%S@3%j*I@t-kt9?n;=;oQiU7fJZ5bV7d^xB`G+LmeTd6CB4?asBvfF#^Ufvl=V^bHYS6Px~$soCW_TO8of#2a4r9^x|v zHhx)#-J&&&xHT@iMNhwmzMg{#c@qb(Ff&)|)r~YMt=zqWeHUe*Fq_LsB&ned`CNz$ zMdvwNldV)(&)x{rE#NNY!M5wAo~AL4G`qgV0+ybtEA=aMGq0Fo-dZj51BvCp={0VO zfy$JTCF2xmeo$jV=zg&iHq7W!yd`)Vp3jrb3LoU##Ph4`v&ZKJUG_K-Srt$RNp=kh zu7QkkAStv#_-%u~a_pwrMzWlu1;|aN0{}fewDH6!VAf(K$E#!(Z9QLFl?wPzgfDjV z;b}dS(;1d~S(C54l(uG5a>>U)=6J|l-ca^wr8*MjBxER$GY}imXWQo>p_3YIO`ri2 zPy_ewk+io;jypfo>~eT)e~-M)q{u+|JJ!oSOXZ5V5LqHk*8kcPpheB0_?Sp5i9w4) z4wtxF57LtC(t+0L^+kIq9-XhaE#Af5z6Tswh}3D7HU%6=tf2u&d;%HzkG($!jqpkg zs{7{wE4+~cmO*OztQkugw-QYXm$<3=0*oM0G)O8NZAJt|Nq|I;2~xizupt? zut*M37NqE}3W!a{d-~NPuQ17#pIcVBUQDBA$U)(mX)o5|OsUtxRYh3)7JXp>qV$;! zNTI26VR1-VVEA^=vTE1;+coDZJbeM4LFW#1nb{a!w!gqCIzWnP#}7wp5O02$qdZ^L z+O^$WREBA&-U*~#?!l^W5|vyWHJhx&;)&$T2;!BRE?rIl3eS3)B~?s!#ot}mD)-5S zfQ+>Qzm7{gmjiWMs@!K@Fx3sp+mO_YhOhofxl1M8jVCFrSF&umKeeUq>u;IB1G!5o zOzJXNY|sX7TiDQrz{_Sq%^9u+;%Yu@Y~z=m~j*3Y!>j z)#c1yL&Y8Wr~X~v8mQ`#ZuFH1`LQm=%Juot-@P{<6B$PI6)oT89@FI=KEGgTKroUn z=0oSw?-lT6=lR)VH{Rqx^NWH5a~`FUo?|Bc;rr;2?qCe@+%(a!97c^W6TaXsJWZc9pGTXmZEZ_kNaN2eZ|-vY z%#`cc?X)A^4dBKPsm6T1dzzvF0JEY@2ZVSHJcGDrJPS)U^u{DYI(D!E*%{+P#azIr zz3Lg)boydk(G`Q&}#Qz<~a*{ZMni?Y1 zKSHLB@B%A9$5mZqqxlchJ9bP=t70^ZW^h&V8F1IVS(kO+t4w3l@W=gAhch zAWg{BnsU9y)UaSb{$p8WevgpRbrD2Jy*elQL-I##Y0bWQ(EaPu*xQBN2Rmt0IO6BI z@-2_W2$op@VJ!9dMR>>P!kAJzB#nHVpO|QxSj~Vbq>m@aLP#P%$5eSp(yBy(DSSDW zpr5 zseq-me0!Af#;2va@CcGzDVW&cZqA`^l(^S%*2FAz5^&X}E=x4>F$!RYUV)y_&gH#< z0xVL_LYa1SZ|vAu^dfb3_PVhc@N%7$tpx%Cm z+!qWFjA9RANK~K3eD4d%7bPPWL)1S2GCf@RsN~(_&%2(3!U{eXE4=z)Sg+r&b}w_K z^nVpMP2IPO;#~gWkqE*#3|lZ+Y9$(Kz{z}MrSFCNMoOPdw8r&yzESP?1p9Z<4vNO1 z5i&kQC?25M(Rb^2RM+_&)O{-}9?nDto-2IHX+A|7=8>JSdxVLIkC8|A#+We^Wgd{aDb_BZ^xo+M*AWvS- zG0GpC`Y%#px02X#dlp$W(jX+S^B+D5yDxb<L{20+~J=sI%3n7HHSY)JWcQWr6Nb=Zu&56OhDBK2f-V zFr`j8E6gE;#(*m3;OXYuTjI;MEc+#U?VpI*Q6EE~Nyyv4E7N-k8j*f$b|H+=#fM( zaOeLZR(@+bOElZEPl6AnJ~T*^1U@ZZbLIa*?57E~8MgmKT>RB}F`Xp2=Un*|&%Od+ z>Id8a`QP)}G*p{JoZ{KZKtUUGqaVgHks!elZB%aDUFpF5bk!%dtp&f-E$;rFv&)J? zl>eQ%=|)V(IW6%ds~aqPelOxU9lw>|1q^2#c>*r+&jK_XIiyAsrO%K^E4WxQO;){cB4mv?E&1ME@JujN7eS&3#w8Uri*-Le9 z4BJ}V&nnj3BPq*2dG?>3zsbP0qyGC>HbMfo0iKOq9Ue0?Ot_cDlEa)w1QuG|P0|Af zsnZMZ`uN7#MOBH$$fdYO0)rYzbe53&@PK%vRXFuZ*1G$-@Sl#{+^nU&x1K_-#4>@= z=Q3uddV{AmkJj{SB2COc&Rh*0=(n|wzS>}coCB+iLO{#0@y#g@+sY?0p$$(61OY#Y z>03;j*R8g*hj^yFLGuBQfcs$0j6iu2Vy8w1JsGI?W?l_oq->$7%+Z83Ffd4BV=jr$ z*?i7&UPvOl+V9Sy&0FkZ9kzp~)0o5*Jxp;OTTn3ELDa<+urrCkAf~7{Iwh>ibXX6L z=sT%|Ts}{>FIp=8W`%s&$JF`?z(S3wqG?%)%B};|nD3{X6H`-(1Wpcuxp}+~sL^-| z4_+L%6Elj~SPD}$%`Q<5f<<-s(X$GwdF7rIwHrX`Imym}03-nGH<2g(;IKhzK*N#LbV6->0I5eB?@KQOvoQJ7$XnY%U-1_Q&!==yuI@8H3jq|o0!m)K;C-Z1f+Uo+l6lEDsY@G~ zXrQ{V*@4BYD(R&w@*h*+7BR&zIU6^d51@HZSsaNoQbm+WyNC2y(duo?0^2j>oCPyx zaeah?wp9tvKt}?;VpJ3XnKo0}=}lcTnm?LmXW1?@&6|4hUsLO1h!59V4Mv=W_r7Oy zXS}Eac2uy37V4~P9a-jvKju%1AI|z}Q_RWwEu+Yr3U*NbXjkpxc2C##s;0gs_9|+_ z#cx-I0AaDIGhoqO@un*ZuAPJC@NxwAFkBA?!sI}$6WeqF2p{rrvge77sNxdldv?6q z=6C^@lC5D)3WRP+!6?YP%nNtv57%itUlpzvV_90vLXBHvhqeLHMCcf=@!PH zSK(TaNGktOlUdUHTc$&BX&R5;6SX%PKc+S0d5xF`QR$jcBKUehqA-QdO>|o`cDr;5}B?S&`%)n{`)T2ZSYK@A6W60VX_Hj5El5mipng2A!8HiCE_=- z{+;q;hCIS`2cfgpxTRtCNZKGgO+j0!%1qNW$JpFwk-P40L;{cGo7f@2U&8c4@%SnZ ztKjz~xpqa*U#D76P9`gsuShV>k0-qddfGdfvgw3mP7%#LIgfuWy0EkAdR<@OxNv#m z8d4jgkG_9&_9tYf+*aKZ3P}#n|9Hvl2cvSbo!h+fHPr?)CPJYM;2K9Hz`i&*T82i; zu=4L_aLU%=F><^yD zvq$De;>`sXq-x;bUv+hY-T140{t7pwEu#+Eih4sgsy(8C-Oac#4eXGBPqm-}dWiiY zj}a;ZSw29oB7V0j6TXum{3I9e`fE_uGd5me$HnpfRtAk(_7O_Aj+n}t028Iou8eKs z@-+d&X#56qWbZKFMDNEx7;gqk%gxUGv!W4}!o2=+Y7LILJJmq&&l7-Ybp(Gb+fYDA zJ4wFvp5x%$fqEJqkWm9~o*hNe=wO!`q%qfWEWDN;=^Z(Cmqv1CsZBhfm}Rvi8yzD^)JCSOz&Q`^7k)didFa-7wKAgd4QZ!a}R@c zhdH9NNxrUfNoEkRz}kU{*5pQJh)2i6{DazylI<|YQX|Phe)iy~#n)@~a}`Y06GZ_p z+7joEdzkV*1P~mW__!fyDkq2sn4kWY*-#Rj@7#Qp+WOL``|!wJjAGXIL*yF zRjuw^1|m+9X%hJmHB~ewrJj^^?Lw;II-a6KSOnw?pv&91CYoQR4%!X9k+OI2SsVK@ znDN~G$I6x*U+*BwGAI4!(oycq0l&-39`BrvKr>^r8l~?_Bh=j4X6{p|R~J&qiis1d z|A8;xV(B(FLbwgIIV{SZL!4LP7k284d8ex*Z@e;#%YK&AQ(~@qtDG^IL8+J5TU)+ z!A`Mis+Aod$V%FQ9?UqK+|`GiU|5D{JyB#fPFtp<=iOf3vg$RTEyaXtfS6e-9+;E4wg_hLU-abe$WOrcg$oy&WY63+*ynn`A zkojHnv1eAuLGNlNP2ZyM)^VpjznY~?o#DdF^>U2sx5rG6LJs3J5a6Bm7Vk0jJXrz5w(be59z0xzs4U*4XwMlPL?9DrD#rq3-R4^QeJN(>?l z*2Sk3)U15%kPT=5PG7Rve?CLfWMqP+YKA5@znW)cy_JBmZnSvM4uPKHENTdB(n=t) zHnv(ISlpUjdT z{9B(kjUCH0(_QxYz@|iINtZRm%f0sydSIqvtus`g8`a@P2p09yk z$2L8UqLY&PC}*kHuy>X3h1Hm1y7|cM;DD8^!H$)CV?!IfYn8DQ1m*zzzfUY`2lvJ! zeeC`nNc^#W)7y-^7ILFhPUK^_$iqbG5{UO?I45`=1d(PRhKdbVCP+mcDo3%4Mer)L zv0co0ZyI?Pz$f;O=WG4^izC1Gjr>pfp-M1!Ygl6qG2k9|l#S$#$Y(Rj4&-)tFYQ;x zLGdPy8o3SbYL)QwxzM55))b|_XHFzDKWMUc)}!#}0O(sNj4fE%)c|xyPIA_0jMXLo z#VDpl8sn>ufOBozIxBXCMPQAEwFfT7tj}t+x9wo7r=DzCe)~kBkCV{r}oZLFh&6}#sCI&@&nAnM3iaykfq>8rr7H;q+Y~+SdF1z6s<$cAk7B>p4 z`7=K8@!@f4U;q``)xr37o#8EoF%3YE-UCbQF9p!j4C>{ZnRN#!%pMy&>rvQ-3eF{( z=s2FSYn%=r`i70n5+oWA$+ZJ5oWa;dR3^Wc?7!iN#-4kpRPl(qTE1Si2gJxgDOXHo zp3SgBMWvmc$!I-NhDi^{`Ez!|jdy&SlN|kr?$2j0*35xKZ4xy)vS-~ zFR=tCPtMjP&$@I%fq?~qZCe5Pk_ovIU)xNXD2_xFeJ=%ZY~Z{=LBL5nBP6fT7{{8q z;X)4W`X6XL?Cx~{ViKkEn_@m-Z!%R+fLTE9e4v|&K3xKQ>R zpuyt>FjH*YEdQ`9mO&8C8dK}u_$)NL9yOdz$ z6bBN24U>xNLPU2vKf@z3ut`Td;w2!dm};$76SIfcfC=L=t=3+C>)@DmSWP}lNuf>- zMYFJ~RN^_rQqtW~BEO&39tfZdT!-`?L#=2iE+2Of8bqD;#k^Co@p8jaJ`Uc&k}0VK zEa;hO{;F)Q1U-nCF=n}qPhgA1(gyjS0_}v4Y$X@@8lFdLv4O={o?y&4ZNV};2WpNB zN3hFtDAJ}-i;+dQgZNA|H?v>V_va00s1H3DEU+*!(n0zG9pqq~FhcaamNN--8&g|bwF#;=Rq z34LQ{aq;`N>xKKCw+%esIbDKZ1AuKrSmpqNxo=PAA1UCFqACWwj*;CPx=h^Ooa%SE z^$ov_JReNc0*Kk~Fa^Q%fLG`b#h@t4D;mqy0j{o~ZG@)gS4 zSe)Ci`5ikbkpl0*CibnzhV@_$C4e=MJXSoEnc{rs_`YAfGw~5LW*y#!kAHzniKC=k z#0A$cK`H|ihG)Sh&%wFzp(;iqdQ-y+zt8p;A-oUimngDV(kKAAIygEy3XWfA z`b4Q)x$^tKzt)%T`UfYo6GRIIQ)%W@O-zywy(G}rRF7sNntAeOb zZBi*8sZycEqhN-iLP<)rp7#CJmb0$Mztk3o?%yo-OyUjyFUdOZoN~G${Yy=WH_fK{ z6PQt-o3YUL8Sw7!Uy-f650o4Z4Wd-?fUL9As<@#?KB-x@AET}FB@7?^Jmra5T_rw% z;Uhc!e?{8g9Et-Srrlhk4|#R71(*AbLVqsN(&Y8YNP))Ga)(gGoi@*l_D~lJl*5hA z)V09zH!S>v%jx8w%IH=(h@m#${RyZ0#`w0qeCqAKu-c+>N9_u-Yt8RhUf->oYMI0lh53r0;W@Ic_%nAqM3U9Tg=m7H&*! zY8~5_Ys9ixHe)|S`@iBNOq}Jnc%-KP$i~#^kyuMvYOJ(`7Om@K=%r}gA(Pqmft^VJ9 z77>PeWM~t$XQ|x&z8X4;hkxXgue+Y5%#GhP5gkuf*A8j^*pJ76XGNxRH>D4m^LAZv zaum^r6?e?u)YkX$qdd+sc{R{^8@xt#5E2$=DfVtAtDb3Z*zDBz%EH~id7~(PwX(;m zT!AgSYG>47yER9GkDGI1JJ=0RmyJV6{ANlhcpQ}V!op|49V^}c>(ZhIPJ*HJ(ha(y zC#@fVZC7c~J7N$avYYNc8T)$jrr^_$X)Qgk|9y22{^Zaz>^7CzL`!!Kr_aZT%$q*G zfD`(`#~gPqui-;oz@iGoE@BKd7C1~*aL>_czk2K7+xMDF>MiL>8pp#>c;h`-i#pGp zzQ?`)+2uG_qfIuGFX}G7qy#*`U$6RNcH0AL_s%Dz_Q~Hsb8}E@()|j_J4)B_$&+)u zuilhWZ$)cAbxC@6w#@sa)sGW8uzdf_!+-SGi|?;koL^rm89=J(bPhI$54zmSgm z``82D_dP+I{0>{gUwT4gwoJoBLhq^HRb_#U**F;-}`$hLv=SEz_7N?)KZ1m z!UsG6MAQvEcL$ukx^F}<=$jxL$>iV7cf?nG^K|L0k33oXbGX)~UR&fog|uoK5G23GygpPYuW|nXoc!(a)=6CM#<2|ezPlYn0+xj-JGY}Yu z2_qg*H(X(qB6_gexeEnzD|F4~B)xc`aAhW@eZhFV4e*dSfF-H;ir^oytbHBPC^YiUUCr5w=kqA)`|n zC86R-0c(VaU<^bAj1Pz+=6510DzYE{|9Nw3T8uVsyPAMaXCPVtLd zh!e3_nJf<|oIf&SuP!(5L8SwYO|qaIZMH4W?{}FK#41xQGfFP9hFb9=N|E z?D~V}+uqRq%MQ+6&rv0! z+|R#0y52M`#cvT{> zvHG=s$N1HoDM31wo(0c0%7g<+b~=wsU0$7fOi>BF9Wyan(zwLeUM$C7evExKJ~UIp z;oQEKW_I?{jn_;SrL4HAqJliOL#7P3x&6op`x}34spAR8wMVPIa9u7S-?ue;9y%9h zzcnck35}~oMr)~J3;U1M6FN;cKJsdXZmZ)5i*m~Wk$uw&FQoc}3B#YC9*ty5$JQpu z^q=hvwBimQ&$-qx>QU~VNb+^mGF>H|&=#w0>G;NqK2&*A3Q_^B=f?t1)oQsle#85#eqdlT7h8eu`Lm>-h?@6{^ z?#&c&n6X~!xfYZ0I%X(bniXvPzDMV}eb{=Y@OaQPFp91>E#X=6YFT%{x+kV;oO$y6 zVqDN`zMsznlM`h_q8mLLtB$@_P}>QReF;*3ZhSDgta1K&oC3f5_Y&7MNI3o#Y9m(b zE*?6F{mbbjh@NUXhd#}wX<>Oby1#t@Y+H~bF_~(P;D5%2j4kQrC8=-V(YT@h+S?^4 z2by$mTuiMFRM#Z(6pEJmyoyD0&{h99$LS^8t??bgPWh~Q*2T0zv2$l7OZ)*a9P2~= zW#?rh@1K_t3d!GM^oF)y7c%qowaeX#r9~buwRbWONo{yM>%MU64*pQ)E4`DMiBB;{ z;8mK@v!2E0X5OquHt*niDY6z1&cR05h4P+9saY79uG9F#Q8q*_<2dZaPrX<5$tVw; z{Ktm1FkPlJl{t@7q{EBQ|F7~z>h~~z3+UN`pW4#<9e7+{tcI0_iiJcYlaF^%(0y!ul~p_{nLO(UQbwz)b<4d4+`5a^2`n~X zN7P8FL?oR><3v1h=qn1Eovm7sv_+rhw z??utki)Lx%cvKV%td2Rj1gUs6PbIof(;LxhM4o^4JLRCIeglg@vio`2wo7S`obJAC z2+E+}zWArA?!Kyabxl>{5Z)!LdC0@DFa5Tg-xSD!bnI`9=-rGH8euCdjW~D8-79CS z8+3Nsc2u`L?Vwo3_xVT#@h$Ts`vw46>^S68QLZHEak&E!r;^rEe0&!JFyrKFr_IAn zte3|Tjx3p)ehOZyO~U^RNu`2FS1;-4Gc4)4Hg=3-sYD!#Q~oUeggp5f7IC-@l|syi}{xNv|mDLt@TlSRcn3-m2tUesr556DV+*@Gc9 zQkgY+g9!q~!4E;wGekaP{ai)Nw^i@Gi01=DSXnrVc1TRg`%r||$&(*~mBD9#78c5c zR`(D}@8#l;-n~P$H*K3%F9gr-rKa87JuHUOngt37Se)S${diTJoY1cQnicts_q&^N zLC#hA;y>E^!)^~FzWbFq9gqI+?^mlk=tde)@HYsF41fp&;zkWpiIBfcfLR@@LpTdz z@7_Am!~|dVE9Vys78h=i`v$e-QUsZ+I>Ks0$5!90pu@ZG$TP!@-yt$%@juZ=b7HToW{uh)^`Fryc_2{zvk5`Xz zqK0HS`W1xx8dX%c;*=b*gmn1S8vIZOOni7JHx^Ut>@zZvh_#iuL#8nbdDeV}D8lSr z5oYi^?PGnvgsxl{Qie zh`B}>H@6!&zUQMLUw-oJrhmR~#*ZKV`GuNgPc^p76@etcoUK;XG3%ONB$0VU4+AyE zfF0pLB_!eEuuL6nIN~QUfdju-n>o$k&tpUGM#X5H~eRs#^WmqDs5kXILIQrXA;r?D#0g2_8`{#d1nbDGR_wOZs2 z8~X*HWti#P_x9^=vZX83SO(b%Hymv5`ItX7k>u!qQaQ93ZkE`Z12zyyiHQ}Xs1bdW z0Xw3f^TH}3$+?jRMI$&-QO(S%Fd*4L0AS)UE%oYG+-+>;7>CkBMkH|Q;+x3UPNV}V z{s9--^Bi&QInc=2&WaZ?0=hr1q`wyf)zU)hYTsWHM{>iEE{<{LPXYMgi zjXuQLA2V`IAo6=X^LX|x8QPcglmXlNb^2{ywgnjbi>HdEnK_fUW6wKk^3C8XyEKtf zq9z8q)yJYvjMITEiug~Wgi}$iX?Pf!PiP70O^zorQBN5BP2@oFZSi`)+#_Vy+ujg! zwlbSqoYx0Dyqs%?h3H}-F)VmJ8+iwth1U?8E)>AukE~uRQDx?HXgbcP@+(tHy#cTU zB7`Rr^!T(-?2N62_~Ez!_k@vxtwQ~-@^oqH>AT|v2{b)QC0d(UUu?pyv9xjEBhS7vREB$0H-< zs(v?2q|?DoX!XEqxvxv=(}0snZ;)8*sc(`V4@?wmw;4M_*g~!H=x23#&z-WCG@VXc z>p>04-R0#qs0M$CLSVQy`dFJwrY4<8oE*eJprQir$OME zq#04ty1P*V3;9Wg72&FGV)*Z&o2C&>?aZuL2BcV`nvw#Z-<5i(tmVRh<&qJlSVWq4 z_VEws4TQ{#2WpXV_Vv8&bhJ_#(Jtnx`f2|`>HCXDocz-ftEXSpNu*am#<(%h$T>@W zwQrvxIKEJG8#=oXkNT0M=wbL+)}wMr`CIOm((66wsJSboU@t8{gz&2pMX`E`DC5+I1F z4Wv^o=|a57I&KSEKV4Kmx<2qeQ&ub9efVp9Qw8 z>Kx-5rUGD>i~2Q&derg)u|JECXkEe8!Hc+pqhqMCo-4OlsP?tISaw!WT@y=G$WO|o zavdCoMO*?PZ>;hChd&Y4ef~;Iw6B?azi_SpN0YGoHC|Ci29$bVYzz@108CZ={}S|m z!eqZt{XR#^?~U+l|7I#t@lX7ZkX<~#R11F+3lo{tjC+UsXUaUAhC?G1Tl!dqjbboc zv3jir)G$bM8PRSYuF-{ZAp(R8<1hUzQtPa2jmkZ;)}R{PLrL!^62~qt^faj^-tB61 z;}Kz>(0r{p)Tkx@Bx#@@gQ^Aa#geqGA=MOo{)j!r90Si~4UPbic!2%|(~dJe9mic6 z{+m886NdZ;&W9p9z1*(#;{N}n`RLF9D&5CfG$QpS=cmHvp|e50eD>0Q_X zOTfU76MOpT+9MH?2QhK8`(wBfK~q;$Kk?=y`Q}v)U)dV$HmbT9cFWtm^x2lKQ{t@~ z9DXJN;{5K`Gf>S-YRCrgg1N(O_nq@0s9LFKH4&D*@6T$m<_{`w>Zgo4(L6^D83rIG zMFBK={JMxFZ{s*jy9-4pQ(VJnADqfE?*6`V_aEwhV9{VA7NN}!JD`mua-m1iaLKIk zl!L6qM;WQ_&_oVAmkTuwNNp4YMXE^VC>gsD`f1`9vrEQ_9D)u2th6?M^jq=W5lAEv zb{5T7&lT)vA-irN8`ma+0lIf}sz)O7N8dJuVffr$@ZVtGlC~AwaK83LXKGW_{Mn14 z)iYC0{X?7d5O+1#sD|6~)!D0{9Oo#LSJAaG5svQ~4~=l4{FF}nl84SG_RrMG=(ZdHeV}ng+X6^zXxDX*>=zw{i76RN!v3Gyhv6}gC z)2?Rg<9Qd8-lVwGVH+}wJ7?a0gN^|FJ`LB7k?!Dy{h_&@`2n%QK-|{&^<4PKdwz?; z?%2QnBvhr0vG|h-vBM1C=!jrLJ<^juB@Mpb7WxDTFC<`rz62>9H(wkd9dXHQ0pm!g z?1<2|tB7*)^NhprX!1O(O{H9<)ZR+hTNFQBGB@UaLcA~iuCC$C!=b~i*Iu5xc1Z8h z%fj0~Zka|msCuU9t)>IdlRZ97mpvfzmoo09D_^@4r6$e0cf7DmaR+s`Xka=^=Ec7U zC%@XWyixaE=c8q!R0E7w5Ze`JC{Ikcy!1!WjF6=;1`K={anNk4;J&01gS)K2jmG(c z55ZO}&RyE6^hdCBEOt1l~NSW z$&O@h;z}$?KR+#IRSBC{i|ySMyOdwPRg0ps zg_3{LOYqBO@*7Z*8UxQqFwd3$IhCz$+a9+oc=FRPz6JLDNTJxjn-XTicG|~eulV2i&&BX``4clzU~RsnemBskPT2(m zpXYnk%>LMnd0PQMTpff?n&#{Eyp0S$WpEknM1r`ZCvL{+Ah|&M%b>~QlisOTP6Q(#$B`zDLnc0^i+9!Zj-Fe(VXPGG#tW~n$<}Etf?PXxuG>-P(LKBso9}df>g%%DSO}m_`Ff}dq2$a0T2t5%V064aG`CR3pX$~sI zRP~I`qJ65-=S1KIP3F&Je?Z><-hJMJzVP?E$-2>Jw%^B|sx;FKbB%aH9jBn5!z&9hSzGg2<&s7D%}Qu?joB&iGc(fQxI zM@B&Ex26j0!fhhrL$!U(ak1sE7Z3mUADbsu_+~ZV;pF?PVTGZ&J6p>#K^sv==0P-0 z85CIb9ag8a8O6Os@qe;K`0}Gnt6Y>KG56mzCfh$l?5SR_=+F&t(i6)N67+gyV0!_V z17XPKImk1?)@xk8XF7Pak!Z6{Yv#8C*5D#e;01^O7H8nPedQ4}B*!cD^ms9#eb2dQREktv_0C;r*RRz--z^eNsg|r52{Jtq)E|92D6~A@ zyB*dC)D^>y7{6O?H~}7nqK|#$g^ZC1;M8}C?J@e z>@tZ6E)dYOeYrOAu6Xm|v8*mc_^5+zUPp^Emc)SaD>zfd&dUFV#Zj$-x|Y{f9!TSv zC8a){kL3<$&11)j^ey3B%(VRH| znFgnM>&4@Hj(2;s4ePpy@4MWyJ^DhjN8{gTS=Y{A`{3D*KZpbE7vxvtp*w<$Giq0& zO6K!L#V3mXce(ztHWPF4p&_6BpRLM77Tf>U9Cn|O<(7{(m!5*7w!97cCd4Ln93~`g zvdIukWm5kG--8hUW7CZ{N<}(FWc;9jwp~}QkYLa(8!a4%hbvHN*DRKkX{m!`06^(C z1PTH00J?yKV+|+>1R!_-9-o{ui#QGfS?sxO{|{BG=gjCr^eK%4i+TF{bA-qu1y^2B z;21T090!F%j$=m*@r6}TGhaE{dNU%IhhE>i;o#sZs+oYe>eC@uZ|P|Yk)o|BPEe(j z_U6hXiG)ss*1#KEAY7DdLtcA@rQtESpaIt)PggN1v;5zh6FD|uU zfECFL9vcAI8bJRixA5zchi+N@L7KuK~a8pviwv^U z@R>mZi+KE}6!e4#Zs3K)uA?@V>%1sk9DKao}lyI zQ^!`&2M!3O8-mtC$y|+k8|a)}dyt_du0iC}_XdLH&m15Y6hJFD`@{JJkhf;$TOOAR zTzQrWq}E8Jv8e_e2WmgT=sUEe27@e7m&&#E}yRMKkp=- z2JzClw#+9s&S(3M;2`c>wJU_Q(F}ZLBh*us*te$U5_56$zG0`5^)8^G{Ed!2k^Vo%)Mp>wUv zdq(WRZ`Ut_knt+7%;}mNRRfKlclv@J#Ps$Bsv8ZB213m*onXjBr@g{`+cUbSy1xJP zk6yD_IOry1^d{z(9Lj$FtAMGLkB81K_nu7w`Vd1tcI)dGn{1wF0X@8Gq(ErY)~UJV zVBSHCiyV8m_VRjQAz-k!C@b~-iBKiJ7M`_Xu_5CvMa_)oEAqhR3Zws>&AHump3SM{ zdK?v2Z!xkil+`uWAax3P*~1YY2bOJD_|YJ5y^c8l2AJpzZjj%i!{uI1h-ZkH_W3>n zp=X{wFn(SmVfjhx_%2+Yd%BSFlEQyHZptRj3l;jAt2pHBsL4xZlY#8w6v2iX|Ac;X z&y~$6J-HcHj1L*=iwhOOJ#c0IFn#pka^OoX1Z2$lNE16seJtq07TGZ0me?x3PTjB} zrRd9L-Ge(w%?S8n+h6?F*X1El4$e+!;{qHMkEY2j5aIk6DJUZZ{#1f;m6#WWKapuG zCFW?>wH$|$kad24!B6#2LrK)???O39Oa3S>LV~vomd%*wPj!wIZ47`Of`Ftbd*eb` zFOluIy1ci+* zn)P0Kk@rkuMQjaZPE(Tq!zwt!g`KPlky6+v9>vWTK+&j{uHkv@HT`6#!%kWlZ z1%h@^I-kKSL2mF<29?Em0n>)beP~71ak%aZpbVo?NeTHB)S9cs-A}n*V64PfzVpf^ ziJ6Dxj9&?t3XtsT6j4P+LA>!^f-wJTg%JP*)A(j)?R0xpvJ+-Aq)4u{U|gWZR(Rm$ zv}xTpn%`coWY^4`9Fu4&K_){j*VYsl+M%Z87{L<(NpZUX1Z4jJ;Y$Kz4jyeY{ygvU zi3XE0qQ(iwYk8oQYd0Az@Dh()3coH-L!McYl*T80wdtauT(DE{k|O$7 zEQh)aiC4Dz@C;USUqN!04W-=jKP|!m$RwR4Mj*ga`}0&~lg?wx1j&qgGjVOgILrVs zE~S;(-Y*qst*X{vVOFTRdH|5koVAs$n;xh;ktu*99@8>m71Umd4#D)g37ZgI z;5*%~pksCU=8wHD`1QE&CGzW4v zPIb#D){3l2wZmLV29_(WeUHE7nF=0CeTkcHmv0&uI5se$nC-M7&*8$TMl^Hhd--{ojG0XVRLR7VO>T*N+t)YjB})q8S( zS(7QB%;Cs(Orgc1mtflNnA~^)%nFuMX8V>67WOOZe+Qc$w0>bJQtILgxV2CXd!D9Y z0XS26*z$8Jk#rl~gd3bMO^ySPz1xSIWv|29)#Vwn{6JV1qy}d=uPcioXO5h^w(I_y zIqrAtph^K&WCI}TKI`f3qo4Ms9MxAGHUvy>Vn&HgE^_YjZbGnTdjX#H1}N{B`KeUCL{ z%P>>GjY+JnxZpiia z?2|vyC#Hpim=M8hKk^3gz=Jx+T*_JZa`~HnqB{kS`zGj2fG>~8KgSe!#ub3f`y70v z&s3!i$D+R#=qae5#M=VC*Cb%eaTa z#(3}mpwfz1&^*v@0}pBOu;QA$Zg+YSWuo;8Z$ij6ehRrflNmY0z982^ouL>gDa#$0{w8fpoX=qEkrN*IcuhzYkR5#@)E!HUFbFj z{U1SKqb9RQL*N1-{_BLoZ7}A@L@0SNxx!cYHLoJ!Tlwkl5`Ir-#DHwdGvO*YP_Hvm zZ>$!8z#3v^f|u`y>F3ewA^=~vWr7*dlLWpjmh?k(>H^bd7KglykF{c%gj8zyw}CB5 zCX6BIRlIwsk4DH-SP=G9APMsMJNzU&=cbJtXA3q-@K36v*PuH~eqKP*!P)uOB3gpCsoDOzmKaM6gLhWR+ejN{Q8 zowhWUJ-IC-BW<~mV);6}bPXtPgo9thm_JlQKUPBzF_5DScqVpgvWjtot7C`VnM(3@iMjx~gm=kv)Mxki}n9de_ zY$5dcciEHQLce(=gKtDY^DmHTpEZPnDH8P&rvQ;d0EK#CDKtTHPJJyj*cJnE7FWfKD5^;0jwR?Fv5=P}IBNe8s{UPRGfHU&r^P9m`E`bI z4$vZfP%;PhSv0$yi;|6Kc|k@-b0NR(!|z4OnEc9yr9ejRfuaE#433HVA9xN~GnOlT z=zU8H2-<@WBKp+$spPDxf^!3F3hFgq?FdD$75h(KPx~30;UF86-|Tk!*z&SV0tdOa z6f)^A;Ib>!+T8(Gf~m8tYbNx**9(8Y2YhITKF`QyEt!o|^j?F6{t_A;;?TE$3T<$O zjCh{}zH=E!mKJ8xLGY$1mVp>w6Xcl-ZLA4wkOg0J8oy)3$A#s!upk4bRmmxNY&qc0 zfVBua^mVInRSg72Ejr448FUkJ`{p_@kpDR9AuG0>iPhMs#AS)lls`hlbU`DX0Wd}IJwWg~0il5b{LOc5Qm%TCpbIhpAh@taZW&%P4>W%U zlp^#SBZkC+yxcC}BZe;4CP)M1o@s$Z0GL<#H^k6AQDnZhKSDBz$zZPv9$J9G5#6>x zC+k2x0XKZ}eH9)IU5UA(5$>NmXG^|$qpVP3QBqd418Bv9y5EO~3`iG;w}M*u0aK6~ zH#8kaf3rGzb^HhhC)3V?1_2NiN_@@b*1-T%_g@g99%wXL=ITBC*~>Eb%+ZB!MhhfN zfhg$kJ@UkseNDGDxNlsR2mr~A077U=|6g~<+ljx=BME>hd@Ze_iCiH^a>T`7)L&Y6 zz<4;v4*X2Z2T2Axu@6{`dC08BcT7QqF8V!MaGfK|$5wSYZBf@I&jD#%R4?pE8UW2V z#)<>CZbtIZJ>R|jFKL&9e8f=Wg-a27Ol_3|wUuSvZ5mVb5*BqC=NmN3&mh4ZFrb&| zqTi&!#@v(GB=l!5(Jz-T?woFL)v|aW$$ZNn^CaX1J59tx^8~ZzBmm*WVM5C5f;d6r#lgLP z=m(lC2d2zOaIkfc%t*8c|1wC&K-Yk0>thh-Bbfw}=H~l!U3H4Mx*G_|Wgvx3Z#Qq+ zfs|m!0We1{SW~^*03>=~*}^;s1q(wHFlbNqgICqUh*rW`?!l{AkjE6ftA6)3?5>Hd z;5ZhF0?gqbQmk&tfw_=BOo3Lj&JntxN3eLe9a`|+ZSc4rKMw56g!gbzqeNr{))uMc zvfMu|#~nX}fyN)`tVqyqLsj6EIiW|8n3&4tBQLJ1LR z!2pwBVo(C#HD{KzCC?I_cD7_lt+g;!v(o?_+1AFIyXoXq#~<)%o%qj?~gEtHbb zIA)FBAPL5tF9XdB@URCH^-@PW#XQ_g7EF|9Kn2?cQfX!O0i8GZ7%EIOh;rvgjNXF5 zSwlmR9~wEv<=>eU@Z5t+(g~2haUKUCz)~<`fsTv=^)WX>NwC<1Jzs{C2y0w??chxJ zlg?*64%8cK{p0cmXuSJUR)a%-Ri$)_;Ek%ys`gs*`u}B}PZ^kmP@e2sqea!&K&}jp zI)92s4h&>T>-gB*!omXq@M;_~nF+>_J+n7sS$-O`8BoBv90#&T+*6MV;lP$~&7#&3 zaQM7CnFSh;RYuB08u+Qp|f!@0mc`jFIAG;KFLJ;CL@ZD|T3V*pEc0^ZyPVcc+Aa?e~)#qt{ zgkH1rjwXw@y*fKq3AD%YJzxtwA@uaTH^ej1>PjmxgD^w!cMpH94SpAI3A)(!8~msj zLPXnnVs4;YH=5;qm|(psqpMa~uFo^Bf)l)jZdf?4!JPMumCi#BJ%_1(gqMvQF?awC z_0BkOU(J7cH(`C(uRF*zr@W3E$gxBs2wX_~Rn5kGAM&JwAJ5zjAfP2e(c^zLdxnB# z$o9l!Q1guq9&Xb-OJY14@MQ^3$Dk`Q!=T63d`_F8*YqU%bB;?JvNEjZmK-(`jns5PL4v+>#@Xrre zEfRc``1TE3V1HleF-PJ1vx$_46N zk25~+RQ(5BoKxR>n4l^u4xl8XAKitLzS^K zY12GDe0-BkpPMEQU;=7MS*s1UN_lPUWSkF@X&HY_sEu`7|F{Z53v2uC9>d;4$f)dV z85;m|LHtlP&#DaOTG64zKgJc#_lqm2m~(sI+4%9h0%C{ujJQwUP#_|FV(u2FB7ikK zq?9wq@V!k2@8`d^n3C106p@?%{z?eSh(pb_JpWldBQI7%Rm82QeM3jPKd740=x@R< zXp5#a4emanl)5|_`Pb-JzG9;&B4ghk#F(^WqxKyzAq*<2g6F+AiMLahIz&{>*4m1I z7TgtG*_gG#E48<%9d4a4z0CCga;_g0GM6V0^S%J|iuPU@dfoqD4w(t~ z-FfecjX6(ST(=E4u|+?zJEBE{%-)rE?{`a5`erFgKRQTw?tMJsw?+0^+~q_`xLtIKU#kg2^(v%`S1H?A?Ai2m}Ce z$WZm!wOk=*%zESnD!W*S@4vhb8sFY5hdOFHs2M59+g}G?_|OkHx*9h(Y1?Y}bN9Wu z&0bs^^K9Q=r-Goedpn8}s+kw2sS2SpGjtKxxHW#*3$nv9HW*l_7>8MescEXWGKE#y zpWXFCXCHV!9Q~vXio2Q>Eylqsxo?|Stj^{Mo%y@!udLJix3h$L z`sjr+>YIzm)wLX+{O-S>=E>!6PVt=n(8oSq$OpMR-=D69{CS^`P_qrs`}U|}D?dkM z|2>uY{C{=V?>V=RBvMhcPdDfh+aDfOMx-rlR2lGVc(2$SA#F>?Xl*e^3}O0Md>(A~ zbF5T?2*>ulGF13rV~Z@IdHD@bFmYr<@yG7{gIW>T;9o8}+|?dW;vP6AfTAZ7L|2d# z0%t>PJrj)hg}%J6{rfK$B+$b~S!0ysoM#Nk-c|O9==$+nrIFf^Qok_U!%vNqQ}-)q zm(Bfj{o~8EuT(g1rd3$H*n(K;k;O$aMfLu0$zef&Jc&)#)i*oEVN0n~YRA6`dF*Y7 z41O29y$Z12+<}&}PeH!Yj-fwBD_QWI%j_?FFLSWIj;VjxZci)BPj|70ft3k(V{-SU z-F#)ZN|;XbW=BpF8FOemaK=+am`@9+`rXIR_RT< zH{aQNN3`7+|5SV$w9#b2rS2cd-I~9aLldh@^ zhM&H=8;K`=D>@cJ73RfFs%j`-cTX& zpj>L3gogt!WncEHTSkT9jGwLIW8>+v%i;V!86e^FT@Qg3i$;=O&}u)(sy#Chm9Q8g zeSgGBP!2-|X+~X2$4uGl0;lLvcKXQ^Fr(w&V3ISX+UhN|e3@0ZTmOg#Zh4Q8`%2jH z&_2EUVogzcsjExQ7uwbHL(Y1{^aHxIJ1Sb1l4m)xe*!wg47sniZ$Y8&$vAirc}kHt zf})2^NOqE;{%YQIAAWBOWOkY2G7;+hW?s0A3s%_!T(fxlwTH6jq~Y(ya3}97MxXB) zahG%bJOk*JCyu-RNe2q-Ejk(qZ~CICeRRTBEiQ6CI$rJ`U3JMm{-$zNx9!Ru>_c}y zUbt4ueo8UjdPCw879x*ShCKC7&jTa$pDBUi>j#K zhYAx@UFLD~b@!EuTLl-&c$)VPHGTQ)2!%ixalij5gQe{ifnZfm^v3G)~Ay+Qwth!cBZkDuEn?_%yw4dL44ktyxXJGl2DRa zzceVw&61mEcHk+mVB}#IxMjvt<8XLfm?yfBeBs6vNlN**gDWS`oCy+Da6fRtusv3z z08q(+hQqvZI+cF{A>obVTOhta(rhaj#vZq!#qE6ZoC4O3_QIJu<>lt(+J`j%@Vl>R zI^F(aNNF?nFl->*!T1(wTV8Whc|P)k7_1=$w(aJI_*QhQFyFv>+>-lJl-!>3o8g94H$eCJ%lxq9lazogv6J<^(fn=~%^dg`f({hT5 z_+-d-TDeVk7FL?*Eew!4(6cXLvdGj5K)JWB^Eqryp>aD9jl3mHP5FKAomZNv zILg#4KybGMN)!H)a7Tnn)3G%yn`l-rk_JmL1nTU?*<^Ix)c?No$^7p9{;>oUS6s7P zOWNjJeJVDTGIqBWz~>B*b-8NgoM+yMWCsHHGI~{=L2~4}BL@7UgnRgQE{m5VmG4J{J{7&9Dc9%Tk41edz7b(EMm?OER8ESjCh8)7 zv=nu%u)6{F8-FKrS8$ubvLFP%IIu2ayN;XNl=-50IE5bhrrxb(T6G>>grLlJ33td+ zils#Z_6i*lq7HQ9AtgkoEF~msmY-!ej+f=bQjWL-=>{S)=0~(JRW@gVk|auNC87jb zCsK!Sne0VkDKM8_*f%n?%Eb#+D%^yGF@b7K&><JjJAOC*?cIzDKk$NtfL=ZLHRc!k&Ia}*A|I4h~l2gBXUye+W;!y&Rtv= z{>2rgHjp6`Y&g=Nqlp`7LPWns!^&xIHrymLC^V(28h6>4Jo*KrA-ZNMa0Z|~0(Qkh zk71$s5z2^_xM7gEk+;Y%t?RX!H*#%-I#= zCAwEAOzJ{0C3#B9xyqFMKWcHl<*g-8sR(mf<^vgk{e4%@duL@gw~H^nl)8RS_V8Z4 zzW32g*(3J8dWCIBE>(_yo%8ff-EGS}OY=N?Rwv$^{V#-n2R~P^I;Yft@M}U0meiFq zsg@(T$8LcaD(ch{&;v~fQ4%oJWK0@Y(%R@om#M00M_>9xu;K%NX>dbkUI=Z8Is-Mn z=p}Uip&>|sH0#+rYAghm|BM4EYJvjhDb?h|3ILGF(0D*@ZrEQqv5}^ne=O(o{k&Vp zZW1O`vu@4(Eo^O|DgA>7bDZ?rZQW(A7%cXDcp%h+QCm5;yb@fh?cJY0rq3Jfdpbxb zzjC8TicnM%bY;6J8%FG$zi<#h%JtKj$o5#}jHum|VmEPiMCGV}bbX(@=G|S~_o>@w z-MWR&%N4Q6)#K>Lz&nGQh{j5U9HCidyQ2OtTpJCZ=8{LkpTU1jYK`P#fBQDJQM!yO z?r9z=Za@gtT2VsTgx z+M~$$#)UkEt+NUujS45U1bb*s{$BpsI<&9_ww1l69oXt*HG)_E?l#`X_b$$}SM;XG z25vlK<<3?WAqkalc-#^{B6ac3qT%(KG~ew{cIZ(V`po4%dCHNi6fF$Il{I>VO9iVU zLJzyCf27ECfh4wH+XaBJm~w4Qt^rU?ku*44=hlM}Q`w~q%T1S?EQ--rK6fAtSub*! zOK^YKEzzJk1FPDKqPk`K^R9eL-bXpV$;Q{jKO?LyDrkan(k9WMBO{PpJsQQ~6%`vA zfqkV`ee330$ZYTg=OQ9N%9JcNOvPCTkk_eewgx6TANn4-jhXsWmSskfzOL8)clB{j z9l&xt;N`1Otq57|8itL)N)AqmPib!0f^K=%vD9UQ=Q4z8xk{_5MhIN>y~H<*-s2?6 zxu1ILY4@dAqP3`ZukbVidKyvi# z4E;b$23gs`90grHiZlG`h}FZ7CitMGyCjR0NsNIGUp;CIIndx{K(dhSl$LB;!{U*K=KCXYy8 zwLam??eBVhWc$9yN@&FiC8MD6?n9`WvWduwfmH*&GHNSTK3VE_T|C1nT26_#tX1}pFWysw-#K@FIZ{rNI`@VV3x@7tGXiRy3Y z%SH5Mu)~(nN_5g$UD{FlL;X)5CD$8R?%y(c-)K+2QCt}8-a4+m^|~f25?}e{yw8`4 zSB$i;C^o}U!MnFFcXsmZ;vGhj-wIh305%~|6*4Hf=MZ4#$4?Reo!6oLzA{SR%GI2q zoFf%>Xu%B>3scSEP4xx5Xe>-qM@+V>>$WmT8*}YX`&%k);L9b1oipgDf*6fX(a=6} zhp6ZC-Eo!O`JZ<|Ak*Jxrr;=%3MAjIo>=NpD0Nr!kQk-Nyb=hSSCI&KIdG@?zi(ij zD#Y`hPn2pJ(GC_CHxZkh4!eswmv1d2I1H^NN!Gl?Ts}6xF_D8XIC)v&t$Ep7K!+HL zVG=$2jBwOhFEwcTReu$t(`sy_FT&h^W3xw-i&1Oe9>UM^_XM$ms`adx(whvpqUClXfi(G+I0lpfD*$;Y7kMFf*Bug z|C191dr)e7=H=Q%41_iR>OP&##YT&B18QAb%e-chNQI9@?5l`;#{bSfpw^LZ>(1pZ z1qgNl4$^tbXfWC$NPDCXKk!pQn{xZDALgSXVTzFtE=$ z$U6k|pF#)s5D>EFLFf7{ERW_BvGG0587I(%@o2c#U$_Y)xdbTaTNW&>_>#Oa;Dqgwp zpuM@R-p6a1g)l%`+?zHguuu}ckta;(%}dujcmy9$?Im4?Dlpa?xo(OV?T+S(0OPee z>2iC^d4lTbd_}R1o(=W~{&_mWRBw;XPt8mTy137Xfz_FAOW1>6mC-vthO;=LlK=PR zR~K2Ut$+t7b$y0+bGO79e}8{ff0+JdtlC}o&*29H@7p~sj>Hzp?69P6xUXWI%F@p+ zHf|04Rj>CKGd3S33Cr{;v0JS81Yy>Ik`7mFF{9CZnCBFe`Ey|sK>G~dl8CnD{ms%) zOF#QJu_+&bRM_h!-nD7}^UK8WesQW$AhF=~uC|@{pC%WeYzcrdnHgwt*(yf8fH>=_ z+p?iK%2rdNjJlxD^yXWPsYFz}fC)W$JH@W|-5nn(`pcWCo{BCqMua9}HI?*d2S~Zu z5fbvyu2qaYHLaJO3Vk0%N*tF^nv;}XpX(y2?@wZ$*INs5f{S31F7W0)D&VDLaaz|)jU5=aQ1?mLdz@EJ!2+F`&mgu5cK?SUyqEG zL{gE-ft6l$D4ag%a4mUu=%{$zl!KI25lwpO^N19=TgLOFT2R6-Z{ua6jzVO`g_AEF zX6M>6r5fHa$(Xxaj{V9>7yq>g;gp#;KV; zv=sZg8}m&UTqgdw9C~h(F1rw9{FpcAV0%S`E7PUy`vf8SP`^6tX_uXMps19UmPh91 z%sH6IW*t$!R#7uzd{5L}36e~^PQ2!2e27(^Mt|e$5!$qNp+?-hOYQyMt$&#+EZFx# zLUvm3{z+eb)Az9YPYmJFvO4mROKtsPaip7*{2S8DeXXBup<18%NCNs;u6unl=!?Ul zHOWlb0pLXaHMQ!;@>idCdER~jEQ`AOM4ZO&fvQ(rEOCD{{O;=V3;3D;LVBJiVF5-2 z=C@??g(*pvSY>L+1@*8!?{~NVhIcP^*9Ox3X+&d~nY#Nz*gsVTM^sjV+5Kk@J2qv+ zLmH~8kdJC)wx;Fuf~Ij132LwLco9!KBN6RgQ!ld%Ugc!q*$pq@TU%BK;K4_5G7|Pg zPI~qXUOO%)W-vnADrRWgbUWh!3d;?S&{TM~o@Jh}ic#j>j55}j!QS;RyE`3o9F~m^ z;rTJO=fCdx{s#(cS;^d)Ja?i58!{6*Tdd4o#OLD5UHnOKkK|s}Ptl>D&&7NMp2|BbFbP#4Ddk2_#7jHqua< zPn#$+-`zSwp{BFYl>gYfYK$3ara-vxHZbE zR=9_|n|_w2W$Z&$86s8D-Eea@2v#`MYib0g^VJgJbm8`Tm((iD;SSoyudR0!bMxw9RvXJ4Y zf8<8R@fi$rjM5#M&bv? zv0()X`DFOXzlByUqyyQ+Ui>&9bMplb75vvlIx|HGTW@Nl?{h!6)#dpBXOIK+d6}pd z#QYv|;Y?-kfivd$ov75GU2a`<=PD7*XI>}DirxdoGLmzFg*IfFo7{}w^S-TXUnjIX zI*)Glzb<0gd{kKe-v<-D1XItrZq2-)0|&^UJHeP;Op;OS4}S_y%;8%;f)s&7YjRuM8|)-U5cggUb{UQWQugesZ@^PtwqtJ(HD zuvan1@_Tk%yjkUO@?W8E-z&|VcR$`Lp$}MXJb&8wNou>RSENK0YC2o}3jFX3_t1F4 z7&N%Jnr0aWM}8?O?OR-~h_avCGjXKMpZDBDyo6J-?~nrj%hoh+&Ea&B%cXL!8>8BW z;qSkPoeKDmluUTSN*ufegSQzSoPF#g@|OAY4{9Nms#&4^3r~b$gM7>%-&#gJKB9lq zCFT2@>N9v<8ztS6$p@F8UU{P(mS7@PR91TJ(;WV=BE%r>XnuO)M-{%^pv9mm8`0Rb z?@Y5^+f9{24^;oE!~HpJBXRQvDCbj!D*uz;>XI-C>GCwR`IXw}2YiJE#@3LVn#42c zV>bO0t$}Vg@P6o|pygKVaC-8};4==JIHOXHuCi7hADvUN-_#}^5f){A~C z8FHZk`@P8I4E^~ni?9FUF86dgs_nn+sV07Y=QF-HRY7liUy>K;EjC5mFpxTDn&ZmV zxb0ElK7W3Huv+g2_^KK0OzZGDbuLLS7iJU~#wc9bIb`hf{l3pw?S&1e;>ZIAnup9U z7+q}Ag?6pmT(a!ui2mZwi_YB?&m>(tJq^}RW??r{i;iW31EY*wYy~*9+Z5oTk3rf& zp*%-z&LBf7pl*M%69|}(OM~$7WX;6UK8k?SHfiuJ zos}NQMpW&0r%HNU86~Z;T`WOoBk{lA6dzUP{$0(KUcacA%;L-8Tg|Rg6(>k%izeDB zKCXfU*?py*Ox%_uNO(TO3CcYqu9!a%bRcfW{+rNm(E?un)bovub2e`rOj!?r-MO1R zI*KEDf*tvCuh_j)CNRptoUi*rz@ci)6S!m6%4H6=*Mu>0`1}YdpIjW)n`iWjG{#bY0%Zgb6c>A`+^YEGo3G1hgGo@SwGKT_Q(Bvow zLu8Mu%`2%sr9!P9_DWPi3TQ7~Lb^$DWF<9-F`t~<-fMb>lI8Dle&U^jD0qP3`t-c3 zpv!xQmxucXVO6^{fBmHkk3~0oLn`Yftz@?cOnT@MA+SRCsT|*x{JRnRsBv#RRVWPt z+$}g;^~?KPkNb~OyM9S{BD7h`$sm(#PD+?_L7yBJsH;tDbDRphw3K7Ib~Q1#386;OXr zzDZ2B@0zcAEaJ}-7=XkTXc2~-FYzFfq1PqV|c^1kkWpccT^Q4y{!T~^CANDaoYTT{SG&;P|4VKbtdyZ1_P|USW z>@ip2sx@UQ)@91*bzwFH4zMnVXeU(kd7K(yA-hZ2(p@_RqCNJ4bV*R*f9;|g7fHKD zE9;ZAzwk&Ab06P8IT*UC0(lZ${5^@#Lx3&j%s6C&w)i09mTm);5eIy;(e`mZeKl+0 z14$4ufZ`TB_NHxejK-^72FF}GvNhHVhh?$U?k=XvEOn8IR{SI%8i8}|Lah~1RUm$2 z1%7tdZ`Pleh_8xP>f7#1?A|=@F7Rud=n6A!blHwY^)h8qWCI>8^VSvkR*&75qZHH6 z>CkW+7Wh7=QFVeSNy|H^I3_{t(zWE6*@KCyj^_8-AGsjy1(w>hm?Y)F1X>U&?Hg?6IkO9~nPSDtceKk+~y{y+hRSExYe#2Up7^5~6qA_f)A%r@%|=1&l{ToB`V3n|~Aa-sgug;sAk z*zdsTc3{wAEu+`9o$zNM<>x3TAXziOYG2|-WcxHc|Mnzff#d<~AUlDAm{;n*-h1D& zas0z!B5|$m*xTI8D5F^i8V0WdaedP508`%z;nrNO8*?5!{KmI;gZ;I*F!XtFogGK@ zgIdbf>ZEdlrfGL$hpYKn%J%*#&ujK&`o3KpmR{+S7d21;jarl36(jANHJ(TX7u)Ls zn2?Bwk7l!L+!^?$d}XEgEU7g>c?n5lP~1P#`qoycVOJrt+2G96{^!MrWArhVxm~yK zJF99*{AyNaG9#~`CY z&`>+1);!kpLv=6y^S_aIrYBsB&SXDoWqToJB{dJEA+lY{SW{a|BmR?4S9{S$0q_5! zrFQ!7r!dcc_)0Lls#7Dlslt`^7aM7%bHiF>=XhnlR3Nlu)SP=LGj!p5`Nef(Cj&JK zil)y`qsWPr^(?`*6`bdN*Q@|NiuabId>wa)!8SqQH^qlciC!w2GiTR^m%Rc3g8=Iv z4Sp)z1}=%9c>9d@&JtfqyXk35BgdUZI3-nb6Chqad)_mt)n!fr@p5s*&No8~k%eVau&7jZ)mtQ}WP zwRw?tKl|T}5TQrp>hZ_}GY%VZ!8gVnm=WeXLc(w%`_4hujRs9nj>Z$A?(;h~(|UJO zUHfDmEsZEoN5wOb9t0a${c=cSq+Ttt-sSC9XY5{f^T^ZZ&~`@oYks;;K>sB`|IKft zUr_)C;%6-c!^8Yep{Upds$q+nG+ zrs_Ij1Q+2$qcLqdzQX;AM(u5hhZpQM&x5v!j<1*2?0i(lu~q=a&kT4zQEI%06k?@4 z?HJDOmhChG;+fC6NoP{;-?hLP{||ZL;`&Q9%8qsx%W~1McWTIJ5%Btc_w>3Ng7bG; zF4My`^sbmt^52}p!aMVCVOgEhLjtyrYSa)_yeX+=|iDs^7Wly{@#vVBAfY{O%QfS0i4v zph^6%z;VPF*RiqA9tg<~JrFCAZcvT>Z!2v@V;z`}+90*B=gMe*d2{>op1of?k9k_A zQSnp1Q}movd!svjD)hQ`KJ)7feCGC`o5VZl^vH2cW;0ytVe#ZF33hf@$nQtwN|z}B z`eHw9RDhWdS2WF2fUpZ1UX$=~?jw#?{9C@VWDO6NlooN>8JhF$e=eezO8^QtUB@7K z{WqqML>}l=OkVa4fdMs0@GxrNTnh zM8H^?f2x8(lB#?^ie98EfFO!k(P03XO&#>#EnAh<(ixh?Ya{)1WF>vsP>|Hijvy{N!#?O($0jCfLH_Ahm6 z=5|wy%5nDng=^RLpf@)xke~4~IxeSF{^{D4cZZ83|t zR{n9bxR{*ey6-PD9nHmP)$T;JXD`X~0A?+2C2zeDp_kPm@cr z7dVtNdOIJEwYgVhVgC)ZW@T6BDhz6Ym((L5oW_by{1`=Mc+02G!e(kcs^Iyvg(Y=k z6^&!x)co3U5YzeXGk_B9F1&qn@^93w22vJUOVC zRex#zT6p`u{%Yk=Du4toX-mj1XQUMMa-6e&28!wAEc;`OT2hU2d$~c)G00DpF(z&DMg%9 zvRvX|W#V3@qml-3S=Phd1b5?`Yj~}8+N}DM)1u%^6EKrzWEqkQUsZEIl*XA>8T)$o z9A-Oiq#R478^noimwBJJnj$ZyxBQW;iZ`)`y-Dn_kiYUx`R@?{0@F*=c~$0$){w@YQW5N1B;F_otM8Tb4F2sC7Gm_A;IgC2 zvArAO?upRo;N@3sg;_O^?>mN$LD8PbSJq)GIoBLtaxhU zV-6+sn?#JlhkK8qBL$%U5&@9xqIq>1BwSH-%;{#3NS$a}dvsjyvYPFRw%8`b{W!-U z%RU-^rz%&9E?2tSzCmH=?-6mE(B~o0Cj$mo^3pm?Gvf%&r2jU)v|W)YO<2+0-34$a zB=8_sinHoD(R~h+i&(eux(u5!wO%beNV-^0!s+awzPR|-lUcev^w0Hf6?4s9dwW@E zTjGvy_t;t6h5QkFm@AqrQ6R-_cppJieV4OGLe>gu=^piyJ_h(Yv!G*wd%Guf(z5mt z+#vpaE)2s~-nLz$&kb@f2aVQqRN75W+h*^SPHE_2e8rD3G^)`hqj@!+*{mA+5u-?D zr54%qSe$zdS+hTVE8Gu8W1+7ylrQ!6UXJs?&Y{19@}gf5oF)uilPC87NV;3(o&?p% zYj@3}5^Rg=ssg;lYgo6<9+i0mXmUqwK|I7aN+$@2`aqnjXa`HIHGlM3(>8;>Pcon^ zIDVdd>;9WS?;Xj>(b@uf_dcm`Ise0_*9H%Q&n#48QfbeU+Ye+-{jVLPPfUqSD#HIU zq)2XmeyE@RkZdjy?S4i2BJAGv>c~Ej^3=Ga^^Za?YQ1NI?chOlH$o&CZ-DWXt_I5UTIsUz5VBA~{K%}eKQA%GB+*~zO3moinDAEeDNl*;wGKtyd&L0B zxrLqX0|-q`0W59w`gx)nM&r*W)TTWiQn57IHPHmT3nrn(6u7L1?||B7 z*^WSQ;?w?)#XlRnU}`)-YcjdaY}7IHP^x#<2oLC)=^C21fhp0h+0HWd;wQILTaS0* zk`!0-5AvRaO-mf#ubWVMVF@?B*k7wr|YXvRmoT^kd{Gsury;2r*}!#g)- zk?cxO(-$^>4BvJ`ZI;fzgyx7|*_kfLXJ<(4e#*Sor>Ly6wEecX?Us>03{`VTv|3wwt2tqPxMXY=yajekc7PjUI2y4jnP^@kK2sT{R--97Q*ft!DS7b?KS zEM$>lKWT6V8^0||sQwpXJb17RMZ-hn3g9|=qv##^h*_xJAmGVLVf5`E1gE_t>WSYr=C*-TDx*){U3R@;-qbQ#>X3{Sqv;K`xuLEx}YQNE$XW)BMU+LZ?xydNGL|{!_z1}A3ubbx&jB^}YZptCMA}lPgsaj&EpO43oYBx$(e%0GZ z?BX1@iiofYH%l+h->LO#G~I@d4&<9u- z^z_kdZux%dKi}~1yMmo(4^93{^=rhQYI6RVfqKJ25Yd#NABoDutx7H#-i-jlW&qyCN zP+9SR+t`4gP1T`+(Ch*uM)1~*Q-zB?@w|b5)VNv=>>I6D++iy5bpanJgy;?vYVeh) zFf5uZ4FRH_@Zb;exT~5tSQsL+Hq1E^ISY_obA_D#q#m8gu89~Le7@ga2ZGUE@OY;eC$kKf{Fa(p}OeGlDjZgYHOj4iFsHgR5+i(t)f0gY!- z8dby3ldHWZ>2aCEaf@2g-|FiUiY40Vei8A=ky%24!15pwI#^=#=bLW?0Mbu~7tn@L z0Mf?uA!(ZSF*hCG8@mJzlv|$(HnV{`EM@TvXp%G~$tLH_hefRp{;7Er+cG@j_$T}V zKB99~9TttPZ_?@}!t8mFK)hsyKEkM*vh*GQ5PIO-RHKLdvrqmF~WSCsY3l z?QYXuQaEGgM>|3czu$^*qr(6p`LpfxOwfvNI}@kYMbK$|5k!*LiO)i7NYBjUCg--+ z1(>(ng0ex(tmF$7kilrCc@@cA2s$<^iQXoEwnzH~i5|uc8g1OM5Y7<-5s$iIJg-Gq zHhqW>8Z3+ZwFw?uOIRU9&E;=1o4DpM7R$8q^!A(4H4TNmR(H+{xjHZr?y7U+j`?* zd`+eEZ`Xa@KiH*8(DDLlVx%NK#PHXzw~b*jSySkMb>@l7T+AsJU(*aZ>p}$!I#dwvS}&cU;c8@b-NL-foKh{5W~f6AuxN2bw&3%|Wjg=HEvRj;f11LmymYy* zKZdT5KTH+YSO}TNRcaW9*UA6nr40JgO9P-0tLn7X6E2G|{@u18%DhZ#1AqyN7}WXy%ia5<{6PcEkCGVs|{zjGm?K`)mOP@21uZkO3S_6zQ z3Jx48Ff?xsJYntPq~&e+JNwABxuG}nU-}B}+~o$^$FxPM)<~@5<%M+5N^4Sr;nCdz zJ_fa(c7yS#nSK^*69htB*kJ1V5z(o=UK~s3d=9&#T6&%?nm$d z_kM3mjDxbBV#soTldjk7HF3LEtMN$wuQ?L9TprAlb?BA80 zM1p=dQb3eC$TfhFb>KhM>!)njqFtStz=M5XGCd?BmKqHD3H=S$8HoS+`lB(RsFR@l zKYWD~&q5cIFE3s9dX(dmP_B7m|FeadyWMj>`;R`mscG0?1V7d@+Zhz1EI-j4O#q5JB| zpi?QGu3}wBUKH5~%qZVWCf^nr)QQqle&EfIxb`X8ihXHG!%DwZZeS#jN-KI#X+V84 zb^@{9>$3|Pr@a$mOW&?snryiTBn!U#PBu`!yUS!1;*S1Tc2aN5JtY$4EqAn^vD2Wf zv{vbYfmgJ92fa!0Zgj~`pL=?GcWFZFF+y+So^K~)q_5|u?lnB=wuXrb#K!U|~m9#Xm*4hX9&@6rR$qyK`T4mYN|302aNb z`ETS{Xv|`_tkz+2wZiKPy1CAxB`~y{6(Sig&Ar?nMLk_!q?%IOv#Vo(QY7}TIsA`< zp{s5IrO_H+>bp;{E}vsf{8fvr`!%m_YN-R5kv0KJtFRn2uMexm$Nv6>pSIY(+n7Hz zs_$#-G+hQ+i@^TGyL&~5Tf{v(aQQ`YNINAB`UCc;z?k!rP9Q7p62zy5@6s3mOOAxf za1p*MSR$}XmF{Rgr=C(R_i#mBx#YB6)eQ?|z;Z*sT7RntQ@e2uzxX_zjt8$L+_+5# zR}v#A`V)!lZKMNb1$yM*hIXJ}QVeC&m37FohRFm-cWN%$`%xd+eA4hc;CRHoZOMul*n^Kb8OJhJyY z{)P4P%l~kH1h}<3#&$E$EjR}A)4HncEIYz=;Vny1(NZfQ7iz4?j2mdA4-?uL28)j{+z3= zO>b3?SgL}+J)cS6FW(XGA`TFqw};ixjCZC(qyvK1e>3L3`0D(uCsSMPKU~W<bRgn>Rr$;?^sIT;m_h-DS4rFyZe%>oaU9*-EY0~%W@)v0M9 z&DVWIc+6Jyk9YLBh%i~TQPkSYAMUm%(Ch<$n3%VM(p`!tEY>@o;W_&j@rxadYlYMq z^NjyJy7Bn4v)$u^_}M`nmy@OgZP5cKeMt%)O*fyIj-Qa2>`d|ZKWdPlqmWvst(UoM zE7AsNbUkHBB2f0(4BEB8SM3jWd_ES+PtgnAP}B?S%1!6Rs-9F>3f-fjC_bb2$D7iP zQZv}NK_h>1kU)qfk5`=ep)OgudzWzJ3>7Hk>gS>D8QWCMI!P0({oj{NR)Y^zx!uhY z;8OztC2l^H6Fj{IzMK1g(dz5|+u?6?5+5bu0ZNr<^X7lv&^&pCApF`7?^il5msTWC zwYwm@&EY#YPmVOpw6LxyejTEJf|Y6pw($OBNu0mLIRnD1{XB7z&q*Dzw`Ef^|6?7S z-VWn_Zmk`7ut^JJJ0az5#Cvz{h3$B7Azk^Fn$dbE^A*op6CZ*nkWX<9{CMm8!A??K zeQW`5wJ^IRJz(o+6NfQYM>)Gytkf8>`In{lEWASLHPA}c3coE}6u@svhSE7gZ!PXhQt5mv%(GaQtuLuFR`NFXx&JjGTvuktLO%#G#B zRSb6Jc{(MLK<=s)!o)y1%Lx)N#0qd;ESTUO2-klQcp>(Bz+|acjT}=ltv7*cbeq`C zMVXtv?k0MyuMX-|+I-g`r!xB$k3FzW*rzMDr*E@7wF2uUjF_hHh({vAGUehbfG#nY z1Z-vVKD>p{;N1QCdb$ySm2s_r*mgPmnwozUqxXVYRI|7Yn6(`pXs<%Uwf9kh?V!fe zQ;HF~T@G(?+9XL$yyaCX@C303_Gz<}-3ra{ags|^fvBe?QfHiG#Wtx_jN;}%mzeFU zJ@@K9%rnE}q0jq=pBx&69JC$y{7I^*pOD$(;JhIN)fwM-B_((r6n_4UrE6F(QfEQy zl{@s3>mjdswV(fikkZLAk|O#ptcP5uAdc*+&0rR3f%S@rVA~|al8&*)fRMnFyX7U` zB@?$s4$RwMSEp@RAPk>ujAe$N-8?x@JbldSGx3V_#L)4)^#?9DTn1@ChA$pUiWIkqyT$hWQ(%Dk_l?q|Yj;2>?0QaBd;z>PvGubt5u$+50@2H{vVN$*jD1D?cjk#W;b#f|JoMNoT1p;?l z*~lgZH!anX(na9~oeO1t1)aE0oNi3hfEm*2zqB9TS>Pn_bK>WpJg%%5#==P;b+!EF z=H-JvdfmZT)_QjYxA;n^g;*9Ti21i){q}sH`|qTe($Ei5#GwOsLN;z(aJbyJWMqpZ zD$&exIZJdrLr=D8t2oCik!)HZ^y5_aD+^VCuydo^Wa1Upjtww;zmScV&r)&<3&Z$@ zXBZW=cCc(Tt(cr(`RpF318f-|Plsqi_Uk^Cn)5yv#KmAV?r{be1A@$iBoAvdu7^ll zi=imjQ~@mIF(p6xs3v#VuyM5PU>MGk?AmsdRmYUvBmu?$^U?sKxrV2tgcYB#i8c3a zKGVIbCLFG=U{XBv2%i8h8L=X+WeZSt&UC=`#p?N!C`gHDVZtGW2G+L$raB}8KiN(4 zmoJ@gpX~|gVEFa3i~-Qhss1-b&TJ&h^60GM^+bf!3W&aZ<_mI^xOKF+@0h1#I@q%~`iZ^?XRC z7L*iaD8Uz~tdKA#v5_kOF`&Ea@fpO8S_LuIKx=rlFrfc}$Pv zl+tYWH#^0~@IH+One!R>h|>ay&cRWHAER4ZOm&nV`-|bh`a-na4{V~_T#SwP8Jckp zm~Za)FpT-aAD!zlp|@r~jAqMS6td&$doJx+%9Mk(ir#I*mb><_ICw=Ea-@l!9s-0% ziolJhN-IYFXQg?6p;4!CQc;6`nYT^LV-luP9 zF$h3h#&RGXq#UdI(!8N5Zg!-39=6XxmIa-g|D z-W#&gG#*L}A!7^9L|qO2mwR}fEPt^g-{?iT^%=dQhohSV8i15fEXgw7W};45)gQ;< zad_ac*-VKTI64#{7D0OGW^y$@V+#VfqH<~LpqqkhTnpY&eReFoDfl&X8s<&93fC$*7 zE(aC-fX&r}5Pg{gp8aym$8ptt|Gt7%7x@1vJR0hvlbFvt_meV~A&^cFICP z>c`+*B7)%_vTB~5ajdQ98j46a`~qfH_rJ786kH921QhvEvJ=u|=c z6pkt%WQeCXpx6q4vhfnFvQSeO*Di_muB<&Ve3)K$93S1z zl9~J{VV0k=r=NaT`QzoH4C9s?Z)8X^fB8o#OK+F7TMJY;9%b&Yq6;tcoZAL`3gSH$ zPUG~sQgh5)RyL;#%v!|DBuM`$heA!5ht!-pWrMGxPS4PbrJ9Mb0Kmr&!-78Jt<}ju zQMcmI)qV%(Z-jV7b%hEW?pe_f44F!o&a&xk4-v4cP)$j;jUZeN5xC@*wlViwUEahj zm!)xEG78!j1%&nPK6wibqPZ>71mmC0Z6GAUC39qzgQH zKhjK*BjzEiX{REg>c@3sLwT`cyrkO-2Wn=#gi|n-NDgk*B+MI{6iJ@tC5ww-dHYYP zQEg#nnz#V@lGjxCF|A@D>W6R2<X6=)$8L) z+MEoLRLkW$p$70g`$S^$t50H6v7Pbiw1 zxfX+e@}L=j+->ls?Xm7Vg1kaNWD&R(2h`b{c6Yzy%>GB_SW9X_QKQtXP--4)DyC+G!%%+$rGB(!KMQo- zr(`O^qQNB7{wM^$7NCC;WVMnLtAJ=?YSabgc0t72uz2ly8;?&7S_egnx1*z-Ph%g2 zDPLKM;#jA5ti)GoD;3Y^OtvGfUPmo_cFZ>ofvqB+2YDkXCbDehTjVwYFSMrBYJU1iTQ)L(&4 z|y;NPy{Wo3lwUD?caqJQIP>6 z073&PPCyMbobhqmDH2NEzoWsQ2kB4)mBY72TxkKPC7)cGHe{R zUCSL_+G2@ubQkcvc52mk&)9z;KY- zPNIIFsUvEt#$t{M_h-4?fxVdXu-kR%TRYQE_fm&8dl_PLt<@{%73e9&@MD`Pg`ti{ zpuR0gfs5;Rm(om?9-=ii4e^^L`YLZ`rn2oA>#Rds6X~JbfyR; z6Q{@{ELSII7s0YuFd25Bq&dScftnS84i|N5Ucy1lc7Je}f0+;r!3G+{o*2fX-}3Fn zqH8X2e1MIH248H3qy`cIn!88(&GtDCPcu~*_8biatfC$Bmf{HU!p{~Jzs)`VZrsycmu2$ z{>&6Ru(DIkK#Lg1yk%*5m2R)i;&ycdAHOv$`v^R$C6V;cEk}s>GwEMi)*|NJ`xPkl z9~M1!Fy&YU_M@l_WS8>T^up01h&EA1tq7d5a>sh`f>?lF!Xi?LurMsBv+Pzp?qL{9 zTUxiq`W2-ShvW+m(Amm-5iCtq-q@@g{{Wdjk9_H>Z@GrKA$-K@LKrr)p78lk`F#7& zOgIqvh=%OLw|0E;7@Y_yb&?%+XTElKq;J18b-_6t2e=R2_!PD%$aJ}=UL=w_n%ic4 z<4Lj29jIC3uFFVq5o#?D`_ujD5cS0FJnR#F(7x@euQJG)Sp=QoF0YEEqa$x5MBLEq z$9wNM10S_A0D$*s;FIM*&{5<#F|AesUsxMxf}^_=l$c&N@VCVhgkDRy<{pVSFOqP;yMwz=Et&Gbi|F?`r<$3k2mqk_B%}79eC|(D z9H9?Bs)bj!aIpqR2>ZOdAs30L-j&>5Q^%C=j(2t(xpx8EQ}jqmk+srJG_Jf2?m~hV zP)`}kog$Q(e_b#E)ysd>&V%Q^vGn`+=vxGG_$YGZ5%ENovi)gnEiLkz)1lz5q(cod zYC^E_d|G`|!7}kaZ1jolQK=y+N3aXNYd2OW7&-JS8%`2m2_{L3Qlt&P?^EF!#_uCAdo}efMzG|5~8&$AE|nYW7$% z9<=8drgR5l{&GEX4>q=;Awj6}sacy&A}T!$QhOF8`KwBTSbQKP(HL?2i3l}F^E?N* zKFQ6qT#M>qSdaX>J@n{&?=WAyf_${YF-nGI^!(9oRW?d1L>=ahe_yjw_DJTD9QaW! zjFl7y-eD|sx4VGF@l9v*u%i}OgGcpI|1ic#FdVT^(q3X@%I?ufJw037I^4UzT|C+gq!JzLcWY0VYh>id5SFHi`~Qh#RvB?z!oB~ zwHY*X1(R6>6GVj%O(JgzWnWv#JZjtX`OH;~BD1?upq-|NC&LSm@+7wvY>8MXbqeti zkPYrCDOtn3BuX7#xOXQFn;CpXFBSW9LuzO6%V8$Wrs&vL0a~u)$+JxK2UDpqPk6Qf z{N>=Ne@$)}>me{Pf}SIfmbMVuW3%AMR;(p^$%_rvJ>H$))JimZKUgX))yc?%Obxs! z8t9|GGM9CH@s2Ov?97Tmwwq!Po)Sl%I2o)w%pW+kGpOK+2z)&^7@mC=44j1 z0&1CRYJ8)9V(7`(K~sy%$S|qu;`=DuqfcL0zoUemg;nq2Yud)#1?^jrnAGeIxD*4H z4y@(I1Q5=t+#Efi*CpnI#dz{wCIm_#mx$n*RP_g!U^gF27J%ifNI(;j^v&Ox51Eao z#h|5+5E`S9&3`TMXc(F=1^T_L-6i$s4DufKCC$eF;MeA{#mrBPva>?;Z~k;lB|3QZ ziI@ft#(ubQ-y+*Y;lr_V@rt|b7rZyS7|cw9%d$v6SjTb_FT5EudOr5;J-@gcRqLfc zQZx`(YkhQkk1DdhQT-~uSR70NLIW(YlJ8F1e@2GqqZ$dQM_#f?W>#OzZ2ntQi8nJk ze)00g4%8&CGT4}>_TmYYaEE?&_G0SOUq{j=gje{v*yEdS|8Pgk+XWU*do}o=MYs>N zNXyF1t+vdaGBf(-n4CN4!z%*Wb!+N_Jjj>|iP<*qi6p#)5?)NxNtrLv?*imRpoFiW z&`@c`ntlKCm`^>6-E>}s`kdJF$6hZd^YKcm*!05B%Pr3l(_(%$FkI@zU)n+u`hy6) zOeK85F4UpWU+}!>256ZO<|K30JqW2ZJw4 zu>&fVyG6I7dKL$T;sG%~IF^HLR#QNot9X%m-QqDZR(~dy2h0D1NT2-Qi~Em)2?&=& z?2(o8`!vslJ4yfUI`z}{yCuCX>^wZyh4V3Z^6j*VHIs1SsOo={>+&Z@G-XoLD0sy8 z{Y#)erqefQ{2aJzDp-@e4Kdom0GnVz4Nq}o#{SucJ+=wh5OncyiCrlFbv#d!v+|9D zhp~yW9zRjPe(k)!`40+2P|jd&(yqOWOB~699b**KrkMXdy9B9QxHjZ)HE_FvtaG1p9nVPDdgsgh<2F+38SgSpJGPIRj@ID_iA{ z4KigdPqPfO@9+%vi$grSA+H*4U3r{n99(WxBZzcImbA{0*bo#>d*enfi8Wc`<*tTp z1hh;QhhCK5)&YS_WbJ#gde=pjeeA89 zKANVUm4oFY)|;=F)b-r2dTd&Bti5>}dOxM!?E*^oVS;$9TBc$-sW%Z6j9kksExB5e zoz|JLWBMp_1_XrdZ0z{z@JalC44wNw(_b9NceUAu&HZj>?qcK~*=Cq)?orBILn@?F zDcjuUK5|Ra-0!)hzWA!PxvfZ)O1h0yDwU+ZD(vg=`1}K(bAC9F^FFWF^Eq92Y~u9U zAMQQ!Tj?88m$~kR=&si0PH$`M7R7!>wiVraHAD>K^=xScvS)S*<%+)t zBnvZTzZ>jfpoRqPTDX$JP6*dPPn$tV;B;fWyBVxTvVKbyGp0>U@fx!ZufvdB7-_A6 z;O@6hr~dhHqtTZTX3!xo1dMmL@!Q((K+Nb}Oi6EAR}aFBIJkon`>G*4z40L{?R0+_ zOwK>a3;&K~$e|PTsz0rrG7YX7Swiyf26VnJbiD4rbSwV& z;JXqT!F6Db47JlQC^!Sds3tj=i_%mVhTFe?`s-2|&c4^hS)boMak;U9*Yx~X#`Do~ zR)ZY%4p^i#TKsu>ZaB~dLVkPA9yde5hSK!)99YwGRGEW+hZnCwPXX#O|3RQz8zgS= zlNf0S{`_|h<-DQmX!Z#$kPCftJi?E8XABmh?*azI)|JRowd<)_R`@rEJA85R^XOx}l8uvh|qn0%5CJ zbqMN~RgxC|r!&S6c4T@$G#GB5dN1g*mT|!FEgQI3neoBsj-hclzExtBWF1fWp{x0+DU)Uk%c&8oQ>#eO1wv4$~(DIX7;f*2r zkZ>^4&DcTulcf5TyEq7jeo zitvJyHMmu-!w$2!j&}ce6aS!1M;O9H5eU;J5al}I6}1xdn8}ZbsclXAt@wNTVaW)E z7bWuAJBqhu^0SnSGvW>@E)MVhjO%`s=?D+%IpyBtG;rFdEg{67wwS84ygpL5YMRYRm(@l7_!eXMGVOtLOA7@ z`3@m4`WCJ-7rYq&4pzn}Unh+_-u6|w{i@00S`Y)+=U!2Ob8+qZ^vJ4J0oV(lN(?rl zDoiN$1-24pX8B$hm6>c&>Sv8BikZRZ25q|{hwnb8J$3McA(_*-p!uCHu;wH6*lOeC zMZ`nr9d7lBf<nxyi~qHmyT z3%q==8hUWt-tR@G&lqqefx@N!A+5A0kM*OffKN-X8O*pZ8lpr?9^%pZWaIj&eYA;5 z2fOb@f(<%EHK7rN6EZ3wPS~e&2NMqXNov0yQB3j%rszI9w9s+`Ad4lpap55P=+-d1Lq>4nQGLf3bWn<;eK%ol)GxHz zu$^z1-Y>-77r)z%l~8ihHTSvhx%pKig}cOrBtg2$8_t1jECz4LMF*p^fq|`fOPIgK)Eb*6*hT z?=X+P3YT>aFvcJC#v86{q6v!hyx1x0=HLLj*g8l3Kkgp~gimHh6&C!_E7p}XC~NFA zo`2*rBf{&uAa_O5_*g@r6U(RL#V&X3hhnK6#+lqkxeIQd^bCh)X2tA`O%|l#TGvmi z9sTTrRXLn1DY%ePGa&8WWceN5LdXn4;C0TezVLM>c4Ja6fWFDr5`9-ejGYqW^=n6m z%Y>O1O>}U3{XG&8Dj2IRY?b>AV!t%Jw#Dyx?}Ztos5}jfM6xURz=k!>StZ(_n#k-v zjDUL3D_;)V;Y{-9eNP`m+kbY7HKyIhh+dn|rM0ah&sdUH^YBgY5qQN)vP*-oZX^Mn zC{6R$4a6w7?nc)60C4><1}!^{latm0lo9~C+KbCTL2UHYR_U_jSdhAJPheDS>O zv?(%>mbpTQ|BfkoY>IyZw3B#|emfmb!@%P(<&QPRSP2>S%Ykd_-8 zsl80=;WQ4gRnOwI+f5d=#6~p-Tdb}zVC|<_7Qooc{+nTXJ{Lm;@EGVSB~7JaT|b|E zYeNe;Vjqj>(7fDu=_5)@bP3!VM%iDdZraLpWfw;#WGAj>ZJuvgPAYh@0dwat6s!SX z5PQ1j`U}?TKpPBl5Etq}6x)Q!qBW(gfwKo%O%LSm#}Mm$3gNiE$o?$fl+36JDNh#R z#65%WF>qyBczBCcq^lJ0@196OnGXx%v|JvWj9@7i*_&02{DtjeS1^N^DdL4rF>NC< z>OP;^y4EV-9G&FzIUxq^uh^yr-N3H%%@z7`&)!;fd4sb2jG75%B*&)Uoo6{CV+&S( zKnDO3)A;OB#j*R+sjeoMe`CA39sVW5LYlPrBhViB?qZeQ2I!Hxdlg`~p$fbo_qjby z4`h@)uxiM9DRR8j7Ss6Z9B>_s(vP{6hVDqCU9sxvRIWuk%EE&Yh$3ETBD+8sB<9X# zAT$BS2ls*~)oDcH>Hch}EbBZx3$i&VgJwx6(t~8VKv`9!c^=4`zL%P{y$5<)Gb?vF z!*L<0{+J?gUWH7|p_V7_}g8-_Uu8R{2AF0wGsdSjM^y&(dt;%K2IqpS4#zl$) z`?^u4)(p~!4umYT!np1m*4 z$<++b=_{#p^oGW8Ww#>g(%{)~m03p!P^|>d9&@=OWdL}UzOzQ&R4%kSTmEV`na+g| zA#MS*nq%05s{gWfay6SU|CCH70nO{H7ZTWtcq!*UnYoqt#7Tqp!ETSaTWyarJQ5%V zTiN=Jk8l~|ES7>%Wp|n&ok>VHbxQY9_G>juS4#zTEi0vASmNB0#}fb*j&`NDslE|B zdGW!?g9!L0EEHeam}1{AuwONGP~{9zBJb{GTXhBYHL{n=+Yum90wVVylF@IrNA(Wd ztxL$3ByPZ50XFWmySs19PJYToP=VU$^xYw|6c3rF6S@q}rT@TpCJyG-z1+=ZD{H|W zUK!jRce{z8*=wrw9v&P`i>XXYs5~HmMy`PrVw5m&!_-(b#xw7qb-Jpx``^FWXQ!PQ zdbe4uiO~g4M2EY{JT@`}e5gNbzQ6m>zc-JcR~VClen-Q>KXU(Y{(Tvi>A`jZ%|I;H zGQW6367vlVQ)-$@TpXrJAA*@(;h+!CSs!YH(x-XqA&-4}nYuwtT>?0>tOB|Ke^LtU zq%|_Jz*4lPStY1>nOw?7Tb;UGus&$C4iFl_6;6UwMD&0i9I6QW2 zv3D_mij8bYgLpy|aWcvsQ%8po2R^G1led~AlT^Xf9dlw+B7eQAxkzn1OtqC|RuLv6cn{7t4OZp3Y;_*67z-*+a+i@H0*{=&WvTb78 zG*es{L64U%)O6WmTg|Crl>nw@x~(>IUX+KZ;9>UO9zw8uVkIiy#0#GO&7MntV)5Ot z_S9}hzw*rk9cKEd>lke77i|AV$vsd>V?UsqW7Mw)Ku!aS{DyhGjO6?MoiuSAI(@HV z)1NRm_IYLJjH;3DfUC0J9dp!vPvzTaj{GkGt&wkN&JoW+%UlA8ZFqf&b26Hsev++~ zeQ&<*TMe88C`>TO{jh}FFPSkjX=efZ5moyqeD>Mrf#v|WGx`$rGWFClCx#xGY^yR@ z8Q76>CR;vMzs9A_pqZB8(QUv;f!hCp?N$V#W#CxF!w>uq_X~Ea@=UW#u-ZC!Zwll+ zu*j(roFa%YzB04XbeSd%%`KPfvz6iyMMtXk!l?1xdMk8V+=^!S~rqs}mW&?(&mmH3@E8Wh%{TJrMgi3cf?{Ko) z?>}M+i##{Dhf;PdR&Xky$dYAw+7487IM-P{Hf5($YHXMFp3vGWS1iYJ9s?yl)`xdB^YnK8oYW_+) zbA?)De&=$kJ4y(UgMUVI0q}~|Z=M4Zi&%(W)!>d&khaS`6L}@MDJ`fejWFMEnQ5WaUwbF^eDZ+Gv{fUXEoZlzMX+?9l!CfDa_4<+Z(t zmJW@5ZU26@>hi}%YK~E|yEHZD)6Dq3yNGA;3oHS@wh(R_@@X-Zac&SnxuP2|7KgzC zRoPXR!1T=O9{=}(u6`X&@y{~y-Y%%4F8)B5&A4WJfaHf&ViOqchVSs zGlWYcx}Up~t=!*ad_dRKK#slQ1-8y<@?yxa=&H`l!#$5qhhw*sDrOvwsqp2M`Sj)VeQ#w#|r=J#op~FT!K1q z;GvwzGmDY$Xjdgj%1 zI~v&88{bN1i64#iXQJ1PDc$HlR|?_knx^U1bo|RVzD4l*8s%rA-BBkljsz;KaAO3N zk)IBk_p6>)sFjPrC5hv20Pv!O(K~63WdOZDfiZz~r1?YOt0xv5GLep(duVjcY=pX^ zS-knjP{aMGw;i=V_POO}`ZgG?FYwb#C@oy_A6PK zf9tm4zX=_)trtY{1a##$az~I%?+hiWAMOnM`1?#H`KTGJoFa1QyQe z?K_^iP@JjJ7JjCUmc9?FIJ6dmHsw#HVepl@J>5)kDJA3WsEs;3M}3FwnSK#yFLYh8 zOlK5$PL+n{p^!?NWioElXpXP_g)_uZl@4z{!gxdhbjB{01*B-MH1Nr4%d0t-A4_GX z%zd#5PaW*4i^s4>^%7?&xX4xh1sb7L;H-GeT;P!0vXj(2tf!eNmGI(ve{v;K6u`nt0U4|lTyDO)l1dM zH!l~Dj;RbARlh1&%QX=R){2g{U*+eS3@shFvU_UNG2i4)_1eR@fiGiljq{O#V`LB2 z9?Gde)vz(ui_v^%wl>(08W>UOVV)W@B<&9WK$<-a1q!Jj$Lzc7{n8A$=05&MXgc zaT(2)f4yfFqp-5x=F2J?elL!lIT9vHBD={|9g&}wyZTfg9T0R3XB!ZVC=1|%^f&#$ zj$f7@E67Q~3A*+1V^%&_nBse%RE4((FOv_hKCRewX-md68tJsA6xFs3eyDhHh@baC zw7PabuJd`-XY!rxMUP`Qw{A?3|J{1)5}mM_4wZkh3kX39GWWnvUQKwa8hwB3sX}>X z!InabC_#ZYfGqy+n*W!Z*)yr4A()Bxv)$*&54JOPu@x6Orz>P=oKmtFjtUTx4b~wJ z{B;l^DAXssbE-liY4NLcRgFJRKg~{zy3j8i1pndN)Jm=7Pwvcx@HAl);25xU8x6U zD_9ZmGFO%%hVh!ngPZAc#lx&N%6F-Np0JZw-#Q(OyQ!Qn$hAajj+vZJG|Eqn)4Wmd z^)-vjOas)O-ibBpDh`i%F7Xh32dVPY=<6?U3T-3Y>GQpBZyH_DwSzJbhZ?Z$S4Kaa z(@G&Bl1sZZ5{fjDesde~Oc|{|T(}qfp7O|Qk-}`eCa!y$u^4eTt#nDldKI{Z>ut(W z#YSlAy+Iu3g8eH+Z#6z_j5*9|_9mp%0&Im~gB=!e1Yt?3cJ2lFuy;@9Ea`|!b;hI8 zr!0$?4C&T{Oc(U`BK38mcqEach5A&YH+miFTsmKF(5=ClF39pK&PCn!RX5v~(AwHv zmqA#p>rwsW?Y0t5QCw}zgN)iE^;8uc@1v;~zWAKK3}1-Pef-+US?0TPq$dr>UTA!s=J)Q0q>eEl_@ax87q~5HvEn1k%=TT{lz=gf&^dZRq_m_ zm!wQ1q=|fILbpS(-7#(+hpnOnP`6K-`7b%}e>mCJrb&fK)0#k!py#_1X7bbQ(p6rj zjHxL)W!{O0$mCd44B~w9&iq=`5OY#g^Phw7!!K&oY-E3PyDtOkMxIlgjDJF|dUfT# z>%Op$?(S(3j4|di~doGo%z_y&`-6 z6!}naGN&_~I*Cvzm(A}Q4I3`nK|VQcW|8gJ{&>9I?qN-_;yS{e(pxB_9rvDiA@O(o zwN1)8y;?qrSMmhO0)uoZY;@^S@}%#h=tH?F*_u<2eQB@W*4))}+8fIEelj_0toZ|S z2(m0Pb>w=R=TB=Qeva^@c1D5uSkjG0Mj+>=;5%rK;094YT?DXBSJ{k^$I5)LMky9r zgfvTkiG*9!U`X~c-_C6uMJw^yI|sJb%sp!Iu5uoGNtuj5j0)TdNkhBNe$cUu4UI76 zce&b_fb7ldE&$K8455q@F1ohLym;E=^y(k|FF&-4-caPPTy*kXfoffm*S4&Qc7euh zPO2Gx9D6#`)`@byg?kEYk37*fT1JCw$@j3{7}d?6=Ysz+HEVN92(Vg+hJW$zfX>I( zjUM~*RHnDv)iMLA)tK33QN(KMjFsqCt*koVQt_NWb#$-#+{25)pSKYJ!3CsB5lUp` z{aRu}h(~@0ImZj1Yv7lWzWq#pL3Kv%g-wm!G0_?2&I;L)ApKj7}6|smH~EN<+bAYBi{F^G^4lu|7?u#N{KLAMcFzL zo1&!ZRqXf2j3}12A36l7-SaU+koo)j8(F4aH(;jJlk$yR9#p>h3u-bqnfQDSRC$-~ zCc}2cTz4DV&chF-0P`;0a-NX4e2eVH80;nw~KSD(i!OE+| zbH~pdwCV|>8XebC0-G>3&+Gk{tFWk|FbuqoWPp|9Hl>slbA2zw=4MQeiS~QGg}6A4 z)xd;h!B;Fp4XmrSJN_yUmuLWVow*urT-s#a16`6xh#6PX&M5!2Z&uQWR%ewn|pF9<-Jz7j@nXUb*+;>ih-M9ZQ}1^@aH~hG#9l z#((`)C>|iqDgF`*QsvE%;pqe}Stk-?SnX^oV79>>;{p5BD|s^cPm)W^lsbY|4)L{# zPXeG53QSGMRD^~RS&75Qosra9b-uMers|<7Kdl%{dgRbY6os?=533dXDQf)i@IN0i z;ub_PyFDJ7{7hnpuN4Wv*#^^7o;lDe_P5Zvsn1Jdf@i#|T~m2VMk5Ne5ji|?Jh2YL zRvO1ce87a+)(Tf1!gr|TKehl{E%Vjp*rEZX#I&b9 z#BoARXr1o?e!7G0tXA!(|6+}h;d}=yDHap@D^?tKvBIm=#o*L~XUCvt8eFNbMx|SW zQN8zSswag5aETh4Ew1oQt2i~&|K(4ow>O`Vjjnu#4?A>#-fudZdKY%i@pUMmsCd31 z@rnM+ES-G*ejZ=HLCh3@>|TeO&gD8QSBBhsB3hz=ZiS2;vEyO5Bqc6MUeD#!+>@$T zvlaoP>Sk^R1;lh!=&K>_#nMA!vN*d>kNztS|7jz|Sj{*?7kJ^{Y~kTmTojgsZeVB&$w>^RDo1sEg{wqm>b@lJ=04ut&p+{z zZG0gcR!7{cT5q|-T+9c9%F`{)g=A}?N-5E4Gre5xL0PH)e2SCQPZyH_D9r7_nks!i z>K%%4^-6{l*&Ol$a_vg>tUuRtPm^rNZ+tyx|Khs}+KO^0)vZo=0GLX|^pQ@;9_)1; zJ%)Wk#txI`d_JRwyRpMv){cqWAdzNlgR^nQZh~WIccJ6rm_w>u5D=z9qeKh5zVsb* z+jjhN6EF5&80`#sktkak`M|+LUWvsp<&`uCOQm(Yn3WOv)Xa^Ph`GkA*7K7jSK#PE z{<-@MW&a4{Z7`Oasj9cE<0f+?k>yo+B)f&Uduv#70}v?Blk^sdHXW6*e4{14Lq^Ob zbzhMhxAYx&PtY*Aqs7XIV(mIAPa}d8a*pIwBT}wru(c|@_Z|8*;cQw|UW#QG9(kob zQY@{0u`K$*0AKMY9YI>j~F7o{lMVB}7cMKddi7_tY}YvmmhZOXYJGtwK-U zkwwz#XBy9f_GFONsHEnbc@kU0#k>#u?BrcMm4^G?=;v0)h(C6~=3LlJSEWJlOE~4k zMWt1$a?GNGIfI)Z zcp+LyE`568^y4dA!xA0bv5|3!5R!2lLwS=9R|RbAJ@yhVz!f71ko3Mm$BBY;>(w`l zRR3S2-l4CKG#!2z_M~WEs*BYDowV0wojy?gU37_Mk{-=iJB0-2G}X53fA#xNZ27#s z+i2QAfw0GQ5hEEl7QIv$c)L^WSe8<~-4tZXOLa ze~fDR61qZ1tZ?_+u6h8A;nu3(oks1~zvNzznK%VDrjuc}SyzQ^gWl2i>@Po=%pT$- zob}eRc`AIZ#07iv>{YcMx*4j)(_a)kn>WXxwiE7539C2e_bV25UMNtT(wei#Jghb) zQA$!NWoV436APKr(qX2k1-(d+ku2DG+tGZL9G9>{^fkJEApkcz<-lHWuyz-HX^mf5 z;a!abCMJ|{%CAem(Yg~x8KXL-_wy6ghJo8)>z#n}Ceh4?_#oyJ%oyilGYU%ZWdC7j zTfg^ZBexO&LwG87!^Ear)yilD&`f&Tb_CN8uri%|Lmb)9e=b>!n?C^iu@n^QeM#Mm zBC+&<3>h|EX-wK0R!-(21WUfy#!&*K>5)V#i)&IQq^~r~oR@evMwiY27We}tv%l2^ zJML=WfgVR7n`9e@uATJU2gU+hn=ec6L{)D&NuwViOOx zNf@@I@|A+#MVCpz8md3L3BX|VzmZt&kP0RfMU^bd{Ls}3jb%CIy~$0sn*{Q$A) zE7o2TH1T7pNoMPGsk6zmQPEv~kxqzNh5;ab2fG{k`HRC!CoFq-7nWCTjgd|}9@D1W z2rsPb_W%4^HgtX8zUP{IE`7M_Z~1noH;~WtHO=^(@zFbqdE}p|kum3QI(?rhb7X&A zqlSa@=lcAo`p%K-Yhx;og80(;(hR^%ccABhafZPrn6Um%q-g@N&Pcad1}SxXgGnoG z=^Q(2@m~BJMeGXawdtr=2+#m-@vwM}Oc<8hcCxr>cJ{cQeiF*2_mI(eQYe)%Ht=S( z5!Z*XG8h7);$ixiJ$F!J1_md6gFgMFL>R=nHv2xmcw%%%4y_JJf7A%h

fD)vQy% z)~s~3WwmO`XpK-!g8z!vpYxG_^^IJskntb~_U7mO75k!sMf3{A+Ffbn;4OH-iNUG2 z0v{d!DINB$&eHD=D6r#3@n`=h$NDMX#-MiH3 zA=zKbIiC*e=SI}R3e9`P{X^4^{b5@5TiI=p8^HHUhdcgV?zjflN1gMFC$?ZxK2*&B zWD8MGOFzmd+ROj@>5j2R=q+yDyR5O1 zaD3>-IN$A3p?B?hkNey54^d`_0S{UG-6M?ne?

FC7Suzso}12w%<502)=fb8bKV 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

gYn+jEUDpvTmT7S-?Zz7!czvE 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%0AT1cVn+N9(vW_d5 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∨Tk>9a-#_9u{+msI-yMgB!O3|1q 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�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­gmd`d{lR0-uzLM68o z1CB9Hr$UexTd@hMdoW{})zL2F_Ht3tIvO}@K+*QfWjKAc#0yh3B-ppBXtmf?owfuc zaxv4{xoz!Db*dUWgl1eE8F^6-Lu-cW8m)>nDww(P5RE5-`ZEswZiA9Gg_~CZvr@u6 z&EOi<9Q8}*lgCXhJ`AAl{&gbM!g}H>^(uq)i~1pA&s)M!F0|&MJ-w`{%wpO`(`$HD zxrtl*0PI!@S;JTBQ=E39>1dExd_cIB)k96G)*l6aEm)T6bl1_Ijj$zOsvzpc@ z&kW%nn48nQhP{5U|K^Ge<%eiM!XaY-#QR`IDa;h}kM-Dbz`TbNl-LpCk+s&P=Lb*e z-a-%JUDdr_hol{195T-V0a$kcc-|hp(U*PV_gbGUF+dWV-vl7>|1Q_%?hvE5qg378 z*)T*Be-e^!G)}gY)#b-+Yjlf7q@t=uFUmz+i_@%@!WKu=$?mSUm*ZCGWR|+9JFns? znBK5#rBgEaoLq}KZSym!_JE00!N#%7dW*DX^${|m4{5x*c}=_x`wNU{tgdTrd5BUQ z6rn?DtP;NZI1=*&!u%9$DxR zpC6uWZ??+3#gQr{H=%T!h)c7mCxOh%r@_^+2^N+t-*{}S#sq6RaNo1NGtaj6A7Y(J zkA>b~78&fVJDBiixO?F|70NgHJ2xP1)n&ER`>wp?zvrtBcAuUfx-}DaEA_ggAKWy_ z9t#Hy`nBEx!=C86|AT#c1QFj!W`o25!98L?Sc7!`H}Vl?Lu44DKxx^0Jr zeHk22oWgKRc~QFIp5qK}T=2O%e3>XfVJwmR2$SPv&mWOylyDI0qP=)_u{dSUOqvk~ z_T%^-VM>=_HYk{YnP1N<<$8VP`IPqAz`Vc1ya zl>F0?Os#Z5xuk%opUOgOjK?|v-NR7nNt|=)TGm~6JdG0$kH6b0uPZ~{22dm=7)m2V zn75}J&8T7@)QKZKkt{4HkmlsGDc&8Ur>`lknVrh+b zstXlEdb%CBY(OiNihhRnJe-w-3CDV@Q>uC4#Y%3GFuirH*hp1L4GYSdaDO}dSKpyZ z7>$IY4;b&sEc%}A1ExWw5M$&~j=WTV?vds^^Zu!=f;eqEF-bm!Fhr0s_n?Z$1<%R< z;(+hp=_opk(p7pjbsa$%gcvyiStCS&^J*C0`&ZJiDs2ic>MMK=3TK{XKsc*r*KkhdJp~u^H(>qWV`b zN@_)eMCOSL^5o@r%^IUdD5x3{#AqvxiVa!sOX1O+2lR^$s2q31myK971TXJfpMQi* zX7D0rhm`b>=*Vh>aga5DM9VvI9;2ce#q}XHVSP3x5b9VL@8FJSy+UB>Ai8|u=?rp2 zuv@}#i*nr=zoGcI349K!qHTwNvNNy=EZ z|7HKpF7LTDTe%MJCqP^wBTA`eQLumZx3u2s>AZET~l#IT^g}tQy z*KHiUw*Kr4)Yth)Ivk0A;-i3DY)Q4skkbO?_jc6FtXXx)A&qlDFW49}GBs@Qt@^x# z#-jE0Bqzm}5sgLniHFJ%R`HUBhY*iS26ue5=}jt#_6b*gUeXtK@98`;#U6lfdOOBqbbuOfT(TXh&rMA?ELuFzeiw~Y?Y|r5iwuN0PuzJ z$yv+NgdDTP=+3R4Ap^`mq~o`}OZchb7@m#90b;#mVWJ%!gYQzglb9h>)TTJi#4#%R zrLqMB;*rUCRp&uCx}dh>arB4lVJwgoj*6g7vghBS%w2-Z=&O0xH*S`1Y%n}Mw2uW2#wM>HPrARWf5jm+E7L{t`t=iCl5rKvn0_%4+-`FwYq%@> zkiE#S=+#QSaV!0`MAlPOD)Cnb{n_%DJ=5I^uL#Okyc&fZpVy|tufZ~yWF<{+xpYS+ zZL@Iwzn|PaFypO!MIj|xhd{cv-n)fLKd*cO$N~(WZSwE@x2i8W0@(ZlfaYD0WOZ&9 znTl6z<^OWVN+hyvFZUvhfvDGQsZQOg+Gcj&c2rd&s7?s#ra|zO*)bDdG9mjg6Xwq1 zsjzR!f{Io8%3kzCJz_IPH!=0cvK1KY_k3R92{lI1)mmX$*n`^^>~or>CH3*u9RU_B zW1%hbPPwXWlrii;9-wLrFzo`I#@9bpxS?3VnYX#YkGHF;Ksd;s%g~VyM#6F`vU4in zwkhyk`gfPA;Wp`TjS8T+b*HHuYMOU<)o!qTsv(ij%SS6G3a#?;^h8CxxRL5@t&|fP zq2w>77qok`1o314z4c@8%@UwGB4dvLY^}{9EwIEHZ1GJNa1(&<0htT$DIm6lTS4Mo zx-2jc@buXki$7O3J$p0QosBjQz_G?hBc@_=nxL~sMD{?3dTY16#=SL*^mC* zeqv*1o^Pw=lq>FpnrI@UU2_rISJTjZn+k*;ewXdvQTGzWq4lg|BD>T{yQBV!c)ntD zA08Zg?krzPJF-~QbFhf##3cZ@lPqxpBqFU~v9{pT11ndE$(IvbaOSW4xa}#K6^JM( zA2_~SGxpw1{h=IzD;K~q;B$?7fOc0JHnt(9&xhpNS^L(kPauaOLRLb`1xTe=Akz($hKF=3LPF=A-QyH;_V_OXRI?B!Vul+&D|zIl#T$ebc;yqog_8RBUzK(wO!oye#@w zKZ~kq{P(Izjm#v&s9~n&5qY*rceX!{@|$P9sG%j(RMSdMgTSu z#TDXFUM&}cdL@`G8X?os@x5GXK|;Ug#2dh0VWS*EknkQO%`!|b=2iZ}yxPGvt!OhN zXHY2+yX`h0S1WbA%TfuRlm^``;+inpa_2zm&3%H(Te(i=-tD^zE7-yhZS@t>4_vQn zB%{pquyY+F+HQ6CarrjA;@VY+Dv%-_c=u*SULZNsyaL!gceag}okn3-w*Y-x*%Ay^ zMX9r9Rf&+d2dRBke$tt?X)F4(mH$tDtoE;ODq!zXs|*zpt0l2v#d~t~@TB79yGpkJ zXfh}y4NL08&h`|frqQ{8?Bt3;%;P8fD`4Bvks)w`j>GlH2$_?fvbOdzlOSsf2tg4) zE+JIxKC4o~`D8LaASFB&ccvwHJaCB65acyWYn5GZPvuc^(#B)drF5l%!=-aOFMIh` zB2;=fvOt^G&Z2;kBG=7psRR$ZRj|2xW)cPKu8@6*pXJERu$TjJ=Rmd}-TnW{y#?Xb zbvULti1WJR7o8DRCr)1wTPLYuc=N$;m+Q*jdNWq4*N&r_ziSKUu0B-jjj3kYR&r=O zwD0CKXMe6yosQR?t^Vs2->&a0Xl(U@P0K}|Z>6w)tLYKYn5Vk~w)lFWZg!ydwq4!d zeCJyK$Ih(A^qksw`sMMCc`A0MsRK>Oh-%8he!uJ7VD&@@4MAi_#X>{UU=jXVk?oA_ z5*0Mbkw4-&YyaX=8i+{X7$7pTzWSxN$}0cEs1R7E?8hJBazONoExCc2I)aIh!(+~c zM-^UgTD@|+y{-so{UL0*$vG#}u9?3(oB!zqnxop?*N zDPZ|`oXIIX8Xs#0{R|u5dff_hm{I2w>h4Y}pxO6bdLZi|NeAm1ov92d< z{9gqtZG8(M#Un$0)nj#f+Y&A4E#k1vE0QBDq<_%tG2h4R#~L6zac$|WA|8W`xP2u1 z5h42+YjHcN0-LymxpAEYmjLG{FkgD~ow3Fc+T#kKHz2F9x@YwJE?7K!F9j0&5uh6f ze5<=%I3cbhnfu8wODm36qNgd-Z}#Lp`KTc!f!}HK*Gf=-$6}DqIuL>Ix>kJqV(Vjx ziV9hx^iB_dZdxbTnEl!SxO-SyFDew@m}B^OPT5%Hd>`WAU(6n+dprT2s+isR;BwB~ z{JA4G0upVO&)u%OuImswC1V#Eq2>hgx&BI(hkwiL_YbH$+oYtbbp6N&DRnbl^yRJD zf2z$5zcHm!c3s_UiKhJUei76v+A^0_5ecYh$i0CLlRJ@(AhR3mf@}#jC(*F_ontwy zuzky;&b2J_Fol7Fs4qaK@@45F=9A;cdfEd>QFmCk>|8~)!JqZu>7O`e?U2#ScaPo$ z>cJo~_F!3!Rio=1?h5#HsqFD{et?abU>(rD@fX4c7uRH~u$q99;e*wtUjF(hPp4!C39{lQv*NTha`^KQ?WR&i-FL z;??=1eo>OKZM5ofHL0dOe{))TnxNddmAVbsp&yU#n)3pQjHH7W9aV@!a@c{Rv)87Z zMoMlw?@%$%YCvEM6k;>3=3kyV34d@WvR^azV)HJ!9^jAt%6bIu9h%>bSrC0B^Vq3u z(}S@mq&3xuDpoIFFwp?CsG~^`Ezbw#$f^I5i~DxdRHntB8ykwxlC$PR3jYlUP@q0m zP^uNzq@Abd1m31tTWJT_ku$9L2KYI&JlDVJ~&|2tfIK| z<v|0CW#a2_br6u9A*qd0&1pFB3iz`en!rSm!pF-io-6zFq}Z}Uy1OI3YbCkGUlNuI*wp^edR_l(zIdBZyr-}8;avWWj~fn; z>eC`BfVCMu{)?#yy7*6++lTd(itL6pU~a+V160O++axK!t-v$Fu^B?{5r+j$35%hZ z--B-gT_>SaFP^-rL>O90LSmJQgwg;$TO9|vVOQ|%F#zz_+Dw6#dtP>4`ugR_qltR} z3B3{9{4rV`j*D=Yjs1D_w0{l`=rMeTB6*c^f#>@m)iJND_72Zz6GV0bvt>6;%HnKa zOynXsKbI%0pU&9W7br28Kc3@x9|V2;2P*JiCi&zvrQ|3`GDl85tH(7*n0$&D^DqZi zTJ_d;sAGY z>WARz6VI>2)}O?a2UL5n+=^MyI?XlT=eF}FYuJ?Y)6<@1-6Z#SP(wPvhAu2K zAUmney)<3rm~Q?wvI1MC?fX3KzRWr7um0_VA=tLt@n@8_3Ynuv=4eu)PQQJSL+D=# z{FBOZIlBs2l~Tc?6M?epHUYsy^dxJuXLSK|Xw8MFE>Bc~mnsCheiL%7Z_(qTjTNAe-eA)YZe3>4Rbk*miTFmj(< zDEuDkm*Mb!*{cg9s9l4;Olytk^0R7b?bL=bCEHqBhmB0a%boe(Se`Af-((^sK)$Hk ze4+lQ=h5cDl;?jqR4g=0cGdPTi37O*O2?5>(<9`3HdNLZJQ00+)iWUf_sPVG8wcM7 zOZWLetd9%8;P#k(p0??{&#xqEw#27yX8!nHrX>`4=Hk6Fq>3rK31O3H3E$!AV9+RO zhG>RVos`{qpieSO_F&kgj5DTt5=+WWvy*U2ND5QfbAX-UW5CD+`kE3V2loaeq*ISW{F%z(*|(L{Ak!}Lmj7ZT^=^_=8m6yMB9 zA0+sw-n5f8mhz>Q9G=!Ff*p;%D!;$AYs?ns;HWmHc%|>_C6JgG@m7MCPPq> zDrYH4%_-3?=|^Byv1a!q-`1oYFY(y%4Pu9syLxl-TgZ%jg$&BBDL0BMmYB< z=J_{lNgYlS)46b~PpnZ}dYVK_SE=m^#4G+WD7qZv0wUkLGO_uflQ9F(jasV6|M*x$isLL^J4iXC(yn*fQMI47%} z-wP61c0`_)2&AN~h(&0r%GHRWko_&$Qn<`MljmlOYD&2bdX*d6tM*xa%MT1I?xV91 zRV;##wJ!%u^!K5EL~`W#EW_D47m0k~xzx39M0frE+`6Vx-QN`6=gp^BW;<7Ui$K@0 zrk9K#qp*Q6!b>Uk@Bz`YY-oF@EuY;{wsofPjTPGHZST6n1Z<5)he){Hs#}uZW z(nXlCDnSME9d!B0<=(qTYsC!8y!YB$Yq9Nq#{&$$v&|Bh&IX~yt;URbW@a?f19dUL zkZ#d3QRF+1c?P}v?!1oyB$HyiNL38d?&>Cc<$FoNerskPU1F&tIe5ASYa32P%&&CK zU8zAZ3_Xet`+rfy(4?Nv?UK@gQTxT(d$#Dg{g9@q2kA6zp;?*CyevHV)bga9{j3)BKezT6X?w+c4T>cJ_@`b;enl zQSp#BS5j*rE}j$PE zQ+cK6MRoa)Yd7v-ZnF@P#6fkMC;BLY?y)AM6Y|OTbY5K4IIfRBh$+71_1lo0^iqTU zIzPNs2HuB-J&F2hcaHFMotT`Sef3$nS#bRJ)@kC9scvjRVrjkXzXYcLGK{Uz*s6+4 z6SqF284&n5JM(wPV~ZpI6mPwYsVQ^c55TtrWeHS@gLX1KkORc?%SS;vpq!nKrJ1WI zV2;jD??vALJ zw*1}Wz3i8thFa(#q?7t>x7_mn+?Z>QC)U8vXU=cIW81TA+-O80%YhtE<(Y3VVHzS9 z3U?N-w)jZ@Mp*adOa~=QcDJAJ84Ef=VIE%h9Q5mT!9HNMNU6C`>Zmlrs*MD9z4FNt zH+rTXbA`6-)>(aXdPn<^oc{O3&djSzk9)YbKgafZds?q0IQ@uB`CXYGNLFp7E!YP> zG*20OU!{a;^Ga;Mq|nt+oiyDTh=TFMBgNzldHJ)}d1_%vFa|r@g?{Udq53=HeS~%T z{%lfi7p4c)WN zxS3FxL@MP;QE@e{yGxzeRY--q~@xgagh}|7KTvtG~K_SAa&u@fE?4f>0 z^59(oAe%fTO%_p`Pcdn1c@|aTitr07XV52~;^Q`EyXPm%uOfKQS0#Gn`jnD8dfz0A zVAikR)la$t6jMCc)dZ>3hHNfpok6(hO}u&x4NafKZ_79XZBfboa|ivgM*z$%w+ZOZ zYDxu%LSa1~t$0ac(L`g%6`x$+vM;}(w6|c<EU65dRq%k>8;({(D1JeBcH^ZRvPz&K-W-+VQR`N`4c#+-HdgU; z!T^ArWXWCu63psPL*M+ALh6pnUG|+*Ru1Q2tB(tYK(>P~j9s4LM1BU4LoB86FN?pD zCIh+vN^ZFS$_7lXoI^2}Qk>|P)}n>3IZ2Rpxy zFX}tF(uLIl=WpR=Z*HaW3|okAo6)`cg>N&M6>MdC#k?DV^Ii_pM*`mJ62gO7Qf~Dm z2+bV;T5gglE28WY^+3{}y1h>w&FoUp?cw_J1V%Yk0^?h*sMiHq$%k;`A9t z0ql;1ACw~D&!M<+p#gUC{v1US;qaBR6KlB^KuULo`pMPYwku-`l)YN#C-ch`lJUyA zzx_{dA0Ac!;C~x_s^=GUW8k8!$5Xlk3uFno?%rTEoOIrRGA{!{$EUt~zj7|HV9T{BCLymZl)DXZ+ z_P@&YFUs%*pRX?@s#tq|#O~?WK6k(^ujubH-N#u|yx79!Y1-ZpV*Gt&G1Y~rCG8)% z_DjRFm?z5d|D)(U{Hgl?IDYrSb?wb{U3*=7rt7-)x>;H2+9T=Ol5{VZ%)0gnU0bNG zRg&rwl2k;cs4h`7t#;r1{LX)H*5iE6`}2A|pMWFvuPn$2RTs~JwFsxzQzSh1)9$MU zNrvo-*?gToA_DWG6&oWb z<)d??R{GUPZ)M9Nn0V}{s%#mFD+F3_lX>wdg?tXXN>z3sxj6vOWYr*f0QwbW!?da2 zT;)KG4$};fcwFPobouyjXn9^RZm)P5v|bVz8}*ay5zZZlCAAJM3(ns^Bx}tBZ9Ude zpL^OU`RtWCXxy9pQ}6|r3m9~b-&b5@zFWLRRB)l3zGb61IWPvhGCYq!agN-iHOJ`dP_aLe*74Dp-uIrQ|QCu*N_!AeMfl#0mz{o zLg}-Ej0Zkr@-g*PZJppE>NufR(fb9O-*i@LfuV?3(in`Cmb4DNW}Cc<)=&m!zGPx2 zN5oiHL}SO1yQ=6qE}s{WkTg|So=xP2rzL?+GOWLfw216?e{%sSs<$vd= z-_=YanTs!BGxND|X*!QfkNzr_yDIAHd;i1J@#^2lXGT!fKWZ1QPIi!go`c)IvSxCz z{aHGaV-jOP)xB;f7=VP%#d zk1Mgy=_OCDe__&NbH;;W5u=_0%u&6hse8Gf+E?Fv{x?o_AfjAAh5#^Oog`Py1#gDC zDS8}bO5D}r5AK{!YJ91_v23le()HryQ(N6xr>U%mF@V}F*yYV1pnTgPRN+tzZCZg( zskrCH=zq6tls?flUFHGZ)e4JpkPhzQO6@xxBiR1;L2~3%IFKCO`jVDT{yV3PVL0DN zlyaA3#$I(8_-z=uS|(sEsA0sRXle1_f1WE1=X~p~evv!+w0q3vCt%~&-HnqVZ5h(L zD_o%EXW25>9k9=A!NA2bg zsBc~(UvhbN`IYuD+wKL|IDMetMhRr~Q%R(8Wwdb?6`^q$U=gvCQs>;YIOOwy#2?Gu zlP1Zw6m_2Ss@t!Ymq%&~yOrH{Lp&0hxVD1)w5gwMV~}lQ8ptyBC4KMdme=~wq!VCj znJvNz+!ghZbc)}qSeD;96lQtC2P&`7RQ>IoUeK|3-z(#NZ41tQ7RJ5qqXsM-?THFU ze=jy~%2Bpfa-l$#$FVfe>$jZZ`{_0^WTpPdhyV~SEG2?(^zP}A4`If*-F*}`u;P+X z5ho#uZFq&ra!UW$HGN`f#-0Ug5A#&lDA;8>+Lv^@T*AqEk(56pl)VXKk0p_T9WSrS z(eqxuu$CO(`W;GqW7m9LJHNk>s~ztN6{ zS&?@@=O-?A_4C-)gYDXjt(~@C0j>>#*q9*%q{+Xg;&R-D_9a9S0JTb&A4Dpxpl|_8idHV%aF?k;{aR%$q_h|n_tMIOakSwqlyX%k#|g0cZZZ|S<3ub z(v}w@0!T`S(G@^5yD{VA2Jq`W)z?*il{#a~>~pt$3Z17fpk)20{wA%kMV(H@)%A>@ zeUz(a|3$`&v=*eJp*8l<-vo?wE$=$nGjCCG+D8)?)4zL2=m59w4jn?S9s7IIC~p8N zHiU%0$b^Z?CHbJiDmVrWo2l)_4O*Q&!GM3B`4^l_H4i#g9r6e92+gmfcRAYlxUJLR zaAKB@OSWE%HR5k!A$9ziGO)PA`dny=-St6h8fY(`FJdpW{}`w$_0FXw(RPOi-!J)! zbW)>}9I!sCkt8Wc$mX=bf+Izu6BU_lBR1gF42A`}hU{O%2>BF_o0R z--GSkL)@&j0T2T9S@#XTAJc{VVkOZ6te!QAoF}9-e9B&^nNR(+N~;qym$M?RuiS8ys7rXrN)9@mfA(H-F#J^Q|C;Rjf;9y zp6)8ZM!Qr?NE&s42-cEAr1a+Qn&oO+Wwv8b#t*mOD-ic|cpo24eD+2k?=}-C4 zW|f0IwMNDzZ}LRr6(&yZqcQ^#UZyylJTeFvpBc>6v61meK^&T&q6(0tqpdf=xSbf}fr}^zfzw zWQpt{7W+fXAL~=7&)#Felxe=FK1;a#)LlSAGSsp|P96~FH`mf@t-37C;{a-5beGo# z$n*IDG_fBkTeVsp(P3qePM4?(OrO4lZw_J#X&4=h8si0mQgU>zeW=ykor!07NQC;I zkXwFMywU3DS$U(EP~hyu57Ilmr~kItG25U|_o>#6hm+_zm$gyW*CRcZNCmH%h2M3> zb}xEQ{N5<-xDz#qy_R?}{v7Y<7x_eVF-^H~?Q9iIFB)+-&BSRF){~16YHfk!L@???dXCchZ>w9=>(AXjJH&ZTE!S*Q9%jz@oR#zNPB5 zeqW9DH2D{$e`ZO{3zVNo9NE8nV7ODGR#?=SVqjxom~RLegOY_gi`0~m(PV}BHJuaD zIEewiYHjI)0xPc@?NJ|;3G;O2(w?Gl(b;61K)a8nB}I{v&1c0&A`Gre>6NA>rrh$K zD5t4Q73=Blxr!rQr)H8aTU^dBjD2}Ta@Nl_F=V>1Fx~|y%4t7vspmk{?!!3lL_-^% z3O=jh^6T#c{9t7m48=azR{Ny3L0LcZz2C^<;EwSnTdGmnr~JppGcpk06YgF4-jE@m z()~yY%ye^=q|eoK>lN_p@LI#ytrqyNk6P>3_-GsWKA7A}2%IH-aM2Mh7aBO0s64-< z`wIHB!_oo#+{0R@ZFxG}2ON~?(4l~;3F zdCRy^owk}+8zL9)h`g{lUn)srd;R383Y~SS3o~ zYwU~`0*ZSpD=uuDw%1=MaP1G-smX~RM+)q?y=UAsJ#n-pLjTKvJG=B| z%V2}y8XaD-l<<-Y@sHO%OvM*1Ul64cQhq^d&NOYk{J`o_F{{?>H7(GffYtL3C6^C- z9*RHCVQ>}do7-1X4m&6cH>zn&%J#WO#Y*0q{&DMbMc=8e#@Bb}SGpdz=mrd^OAI;8 z8Y*2_sb)#&pC9RS$vo0vCJ?ZGGAMQ=4@qp0?lO>SZ8>oC6sz;6Up0=RUBmVr)=(l2jbLdgPDRnCp*4@^FN!(C1w2U<;68Hl=wZMnOum(Q#krZE1KZhNE> ze>DTS^13%G`SMr9F`sOs8Vl`dglByx^Mv}v75mo9gzSpa>h<8$d(|3Q z+mhtExWow)`FqZft1nuWt+s22oHdmU!JKiik#KNPU!ZtU4!)(&`^!37e^yb`S3?SO zI3MMPzem^n-QstOhVV+Q1&*<^OUvr#dJ!Z{*o;g-t&6$Z^JTEYZy#-Kit`2jIMqP$ z{C@6dKSXd>=Og%Iwq8$-}o@`XTI78`(kZ7=)lg&$h`gGn($m62n_bi?pIE)QVq9fC<@TZ~grSQOR zG!uucRwod==*rK`v7hTy0hZveO7{A2Ji3w^m!X8yt6Ei_o7ZVb2Z zwV>`jz9p(*cvJ7%L*6QWrB|&!>-`fUt1)+j;-We{@qK-CgJ1JXNLwK+wf94FQU7IZKx8$4zH{#<|; ztA#^S?(?x9HlA}wR!rmewJE!{6(86_Sx*p_Y6`BnA%3vwC@sFARB^oZM)i}vJW}GQ z`(KY$(&VFEr;uAi476aV;2UefkLU4i_mgj{J7E+*PTf!2R2P0V#%VaVAB$ZP{XFZ` zR=+OX6PUf?v9=Qf+SS4)+2OuJ1o`*9MRF7_}cpY zYisdT_InNwk;49A#V+=>Dg6}jlgs5Rzk>eF7Gw+jDt(O0XhAl+2}~0Cy|6o1J}I=8 z&_+4BmmjFh*sEXXmjQD-=iP?6J*Vf7+l_W@TAkYya~*l@fcy8l5&iM_t#!iJ6}{Kn z4+(8Rp%f7fq08Gk&7W{OLV_F}xGTqa!Ue~#ey`P#E~0vc|BvAsp@53BXYrM?$Cf7h z;&k*qolPb=>V|B*s|P%ZhtOJq5qH4;L})spOq$gy8uhcBjX2_YzlDvTXB#)WVM+zz zGY|W&oin+4#ReDphx1jsr^NKJ*5{Yuoec#fp7N2OUv;%d;YE$+&P}foS@>I3|?d%dry24C^=FlI?uZ$!mCRQ$ZoD`rm}PWs|8dp$do9(Q$zsYu#qxv_TS6*^8m zAv(Q{!gCvn=q4>G>0f$FO3Q*$dteetd+=&D-e+4*7`mXL+^91T!H`jPSfl4yWXagzL?q4|Nv4|KQC2v+^SP7HDYReldaUWyE%Nr3-Sye&$!;?D{O~jO*Drz&#q+q^ zBe?BHgmSMpT&Hd;{?J-cVaExb2h1?ZSi>uM1(3q4OWO_n#8DsZOB~y5kSHIxj}-C% zXUvAibt6jYe7zNXwQMA4hjfi#oc`7b5h)#dC*KQ z677xRV%sx$khC0_8@4TzHwhDm3)3%Q<4jJ9=-=+v=;nOv)-x5mXB+Hg^?1|t=@l z{D_u|-dNw~&1aS9 zyLa{hh+X|#^l!7Pmw0&t5lWv|Mk~}GttuRou)VPx&j=ZgDFM4SA#gD%cQ7?*M~Z-< zzb+eQU4|TfcI>&>o@HKKc_3GlKm|HAfu2+sOhL`Xtcl8qBdZbrGLBqv-9~nv>aw|`0KmNHGs!> zEnfVJ=YhpiK;v#0@4l0aHqcWd(tU-K@U8eZoZRo0J@oL;f|94#N02cc&H@~M6AZa< zEpqgssz3ciVirI28!K?t7Qbr{8UG{G#4>{#^al(dUWt|3IGm=LZXbR4-FIjpT`^;= zf4*7wl!*BQw-{}Rp^8mq3`p}JEN~+6)e1B;^>D(YZkbRr32|5Kr89bsqWOYPcJPTb z?<#&mgYlzy4-a9`h~Gn1uO=xhgjIWBAL1_xyGDvU*b_yQyTPZd&KI2hKe>rNTzWGA=%+m^vWkS=l?W=$KDpRA zc>b#J-pz7-e&i2l?H={(AH7P1ZDw>o5BBgKcVs%RglRti!c{!CLz5Q_?M_;T0RX$P z>RmxTi<0j3@U3u>xHOpG$H3><7aJOCV`u!=qUTdPhUWjEn!ycJK8FyIn_ToN{jSS8 zD1GLWLra>ohPK=TqYiKA`~YGIhkTcQB_4~+tu9OWRe4q7z>E)wU`_;CaFp`DO;?3m z{*D`f)@;nFutopieL;u4YWzAn)3VOc?^Z9}`@GOvZT(v=0T>?sG~vx`+k5S9{=1?L zW{DtG9kCZP4d%;BPq_R9U!ydqKPMD^ptefw-BN9Kzf#9vgLm+8T);<$(&Gpvf$P};S6|i)FSX1)aZP%BT}_h-EwTu>Nyi!0 zh}>Z#3wZlWIyHZ65bbZcQvu$K@0v!q={npp_QCz;K-3Zu^@xay=w*aW4F``G{g&QA zgT(}M3XP1M?s?v^NG54`_bPu^v1%!o^L)TRT;qMp4iGuwx&muZ^m!rlb^WKD@6&(3 zDQ|Y?>>Nk$r1U8mRj1*EvJXuZmYR=;SB{?@sE-vl_!%9j+XRu^m|yEtb50&eV&ly@ z;Hqc$-dHag==xXGwY;=v_x#cHztwo>*Zz2TMg1Qi+Y%}3(6&4D{Iph(pVOW%4kz~1 zW_1rM;FtF=5m%@ynhh)3qllO9`ZHpo2ZKNwIzMNOOMGk> z3e%%5OWsu5AfYR5FY{$SUTUfLn7xpo!b*^NK4Vvwm6@M!JN7qwz!Wd;`_FK~`{phD zxnSuljnbwJfv#y%pt16!jcXVDXH5pVTJKvjc?Wu0Rz?;@b zTO7gpZIRI%KOo60Cy*z8-t>b!^4d*Apl^3**-B!}@!v*G&^JYY{l}jv_)NrI-@c5->LuaO$U_!z*AjypG$z1EG`3~Bbs)WuxtUAmXsz(v8g}?LR4dT-}nTC$XLYm z=Wz}X#yusf?1wVLMq}nMXcUGU0<1RF7M&p)007nE2_Fn^h|q28^}KIuqV&~VTP>_{ zMztJuFQ$hH){sHV%@@X#9k?uNvwN+pOV*)k6#+@38153GKs~rj#gVmy*a~J7yS}3L z_ceYHNsP>I*A{x-!b+taFhTK3@KUyOsfJ@|ImL-2s4`@?$E8~{Kr5W&!Ue@+88ZkTKMhdpx;txP5v?3axDXg2fqhJtjw7y-$(?v*` zN?C_?%rHP2%y|Y(CohO0)@1TD8+(J}eO84!^NJ3{hIr^=H?o>^I>#C>lJ4Wja+HsT z4UPbfrLhZCne}9Axc1*XNnsK$eq1aA65^+Rv2NS3tQ3JeD{9K)W!W|s`}jkA3R1$O zv~gi|iMS_*#Dvk~W3P@6TC2XM9T&bQbRpr<#-2(oBwS*)YQVewh^;5GyuEt0*hIvE zhbJqXMwE~}GO+5u&*@kYI~Y#VQN$p+@fP{1C;8A%bx(13>R?{_2VsILi*y1p9Y(J~I%FiM2m-6Kqu*x$eT zBIBV7RhUsw!J4Xl#1mwE;u}}8%y{&Ni2Cu@;qccD$#L`bP!*%8*G_N3OkGVb2NGkB zOJqw`*jXx8^ExH0lD#N5u33scHq)%$`;a5?eOSXoR*ift@&>M@kmUNOph@|()_-UM z0vbGzvgl@yqL4;6trvool19#HPtIha?LW~V;=Z&8_pYxz!WEPH)PAiNA>t>2x4t#y z`bRY?Lc~XcU*dOeAM5>9GHta1+qw${r$&tZoKp9kNJv)gtb7FRAC6Cm`npYWSZ6K|vNNw17ZRL=*aFU&h0G8e;t0`r%q9kTD}|8(~J zqU!F1EKOtJjj}=?0`nq8c`j>v3BqMZ6152Qx7Mm=rF?U%TK803^6izLy+GI2?VAns z$SP7EzNG0gk>;dk8CB0o{h%l3|+cubVq3|syjGu^HP1x#Bb--00aqtNG0trEU$WDGn;R+*Upz`RpO7^f;U{5jyo};*G>Bb6 zE9wQ_*MGf@7KObBneN?ieHfD_-=WpvX>x%gTt&i0;!3=U7A&E}2@ys-^}?cPF-VvN zVAMc_)OzJPUe-8mX4<$JWAqc702fB^^{&vAhIw!HIOBtkuY%^c(rbZ57 zVH;i?K7>n>bke!^`l=U-QlT*Obpa0~sWamS!o47)?GA^-GmBzH^uwoB zR$+k_8ha!dYC*XuSg>}Gshb&pFn0G)&+jsr#$O5LoIIl9SKLG1Yek^&j8ijH-%X|D zu6jF`VzQFq>6WG;bEtNsOmVwBAqFW{IeN|FxUk|l;irC8G}^rXz;TCS5W2LZ#TQ}C zbd89#33=kCrJ{HKv9u^TTq7^l(M-(ilE=gLzpR>jdyyL1-u&3eot`M)gL+kjlP)7Gdz+ND8nwrVjKW4Z+rG+lVLX|e5ik)(Ws`v1+UQeEx-MA%yaIEGuS-NNm$sEu1 z+Vk_cU`4Au1(LJz-DumQCmih?Kzw}pXEdM<2mlF1s3@n+dAyJ$nu>(@6qbNXPiZx`~{solGgChH|M>&tg}?u5f#t3ni7L?z7$X3ufwD*Z7`V9BaZP z+ZnaC{2sDBrQ==ts)|X}yQfUjo$EF+N^Yo0M?^Dqn4K&PzzLi9=!CTJsQBKz;ws-^ zZ0N-kENv~>5nL!2tmLCuc!aDpn}012|0yF_HflWM-Cg=&7jV2VkEf+`!#eUFbL$1k zCCSV#;?p^tYzwLMDeP2F<&Pa%(i-37&!PAU{deV%QL=I!W#2`Hn-B4B7SpayI8K`j zJYVUQder9~CNV@K^0#cNgY0L|%>nPCrNm+Bp{86e!miELR^omh_-HU!tJjr$B6>!C zzs{#)-LZVzRwGMre-VivbbSN=@&jkw!wccB;|*7H@PI~^luIoHF)JLdN3E4w|14L@ zVG5d}o;)r^GRnJTuU@z-+i207kRvU5=bxB-_3djD5wJOBle29iF?(OOivp_Od8h59 zvQHf-=FnliWuqh2)k+7+tuyqtvB-nZYaI`sOs=|y6+4q0eQVNu_EVxjOAD2LSxcT22#?$N+D0!lZ2+|EIoV}@*{<;;?q+YENb(0=RH*2O$cGOFSJrs zYY}_|r?>S4%VL14Sa=o>*+Af{n}J|9ttG4CBS+J3E(JG{0ydq?xN*4o|08dv$pV*jMuFlC$U7uv(B9E>x&`+v_0Q)jQeMF4EO@ zY+qKFVVi0xCY&B1Ce#j>buLl-G;TP=f;E3f#{j??14dJOy}rb^nfLvrAF{F0jg*2a`|pz`L0rsbS(TZ9jr@nK-pWp4~@p0P2GXuNRvSIkMN=L~`V z{FdE#FB{ooD|z+po|5=bQ!iPOpLFTFP9|Q(LyZ|WBVNyF&Sa>a<#ih=eGC2B(nA%@ zc~P?cJ%c+2NzM{Qov?uG-U)3=CkJO8F108Klwh8>=e+S$x)yaVn~pfFj$Da4m&H1F zn7}gOfj|4gYze7bQLrdpW(^nB%Q}Bz<~-6w`LCf>hS8y{YQNk(L?1>tlHysso~JdQ zURRbS6`~=MRNk@bm>ptfBc)>D8^B*)DjHfUC6#EpaVVRpKsf2F7cDe!Sbi#5w+E8p z@I1+8&dch3;czx{qAF>&MWuHS=uMK65q|4r4sby%7h8-9Nn_7tZzA(p^gNoBd+C|K zrYud`{zDNN#?1VRIUhjndf{2&|kR6I!Vu6&G2U%9+z?lTa(JktQuS ztRMPO6>KwO91DPFVvtBZcp?Y7s+tBgQx0FPH=$WEm4Fu&L8e&v+6(@P8GfN?4Bt>g z=C6yVSD63ulj`@vt3|zHB%&_{nX6un%=qsYfs!opyp^vHA!{z_(ks&XV7v_|?czON zW)-d2fIB`jaKu8%+kGuojC4`AwV{FBaX(&nX%=KjJMntw0Hp=^C=bJCSAC^6A%qYN z8Z3|kF_>wJ9E66oK%c`Qv@ob23%UUUUMtAfPm&oHIC5;Pua)R=zq)NuPlbJKPEul1jptuivq0R41wIu(KJG}`lLWF%a4x)p`H;+X>q(HdlfCICKGX1i;nAR0$ z$G4=e)OjUTI9!hRC=MB|Zfb9w?BbhXwe|aolZ27b?g1}){>Kxgn-v#s5K_I}R4rfa0;25ZZ= z>C<}Jny;?PzbfNyD$?}vo;uu2!{_GnaQ??sls3o4)p_K;a^k_TyFM4L3>xISiDJFR z%cd69XFn!FMcjCJV+p#^i%IA=pD~NxTdAW?CoLs|N930BFt(dhUjZ&qESy0_rdscyE3I~H`e(C_nt3*Yjw5Ze;d!`r|K)v7B{`eyCBxpv8&dxFH?*D9(VD4uH`i6#AZWPd-^#ZShg!@|{Uv?gNT-+6%WjW~ zZJ+ervw|0gtNxX%zilfP-=B10U(9C3^A$_$B&lJrM8<=PWYEI&jlTDdHgIw6G^u4E zzuvHm`S;7RL(ex*P0l8Z^*S!)ZE3``;4qgukuyix4v9Y<`B5yvvAP@j{HoEQ#-@lz zOV<;h-#Oi!L~0#p^UkF2shIcQI0>oH?KgQdEecE^v6x4tAgXGF?>NS17!$Sp0R4B*^x4lz7Iz?bVm7h{JcN?eO8_UA>?B zwUF;l>$VJo?klPJWIZMN+Iml&>tOdPsT=$rf#a`w>Eku-@SsS1&X%6N44sU0kfQW2 z=gQ=L=0JsE1Kd%kuUJe?mf;Z}Rz!VCl}ePjJaY!7>@ad)|IM)Rh1mX9Pqg8EY8Fya zon}}U4{;Tht$9++B~cIp;=wZ+(SceQ{F|kSonfS?Zx8j zH8~Ftz59^eIvIIOP;khD?dGxvy1Y~4w}g^;T!8^SA3pM9M!ER8(`k)NSvi`;ys4Mhv9 zeO7S0^I|WRm_3p5YL9EQf#8c)1=A`?A{hA&do!&S3}y9PhVK3$(#uj(i1gz;2*vl9@dj1 zPC>lMt?*w5jEl#`j*x}&Hn7=M5*e2m&^OK&nhvkpWNV|8FYdXWjJ_a#NVvKoRQ0&g z9Z$3=cW~vsoP1K)9FPm*kr5trYh~4F0ZMHG*;5M9&qh|1j%lX{7j+&Am7Z9Ks&vlW zLAZ7#ST+_#*qJuem_Bl`G9yCpJfJA15uMs$qwov>+sAXFbP3i_H7=uEv_NS_zY?=2 zv|2KDoR^1UJ;PK*b?C-E>(Rv1xlMRN0gGb-JREOMPWG&M0kZh{Y8&|lZmuOiQ;4-b z_9d#S3inD=r(?2EuA8Zh-N*WAu||l#YzIyLcgQm?cw7l3cbuOb3VxC0abk)o$KjpA zs5#gZN!;u!Q`nf0iVNowOHJ5WvhQf&W)r`Qk7+fF6-Pm&G6|h-=n|9cmqfyj-Sc5@ zXJ$pPHD+)VYNIt*^YD|croS~pT8#@hI45qSXDA(6a$dDi8G8zyAat~V3sIW1w#w2w ze=@CE_FdEj_8BV|H#`ScVYRCZj2Ujdno|<0Y4_Uue(vPnOJm5S&=SL6vxFo>Gm9*3 zBB@9A3S91XeRqg~1ug4o`z{N0RF5n14k4piXqk?HaSaZsz?D2ISg@HL@Q(P}X-zQLfluybPA~~_20?6r27+N;+>uG z-lcJgVglY2K1Zbk2ndpLTj)Sn&45H*^|Eve<>L5(kAQ<+j;^bnhC&qXc+wHKbPxa} zZ@A2#`56kWS6>(beegdj@?7j;gyF((RUnw?8CKQT5PAcm zHu5|6??C0#+WCC;dy{KE*RLK}Yx-yQcvY6O2lUX%?{6spHt^4kRLmkeT_VPRw{>LC!j%pbQdDGJL%d2ks+UN2w9-31I4y3Rcy&^Tj?9a@1W)5avrWi0x1QJ;D(3TaGVeJ-6qG=Q|CoD1$GBd+nS- zUZD>SBoekzoUT&Uu$TPsAk;zs0{e190oL`z2qVEo6w44{v*kzFer6L4Ia)PXp~V!8 z&ICk=46-4~mCrx{SrLIx%&tZ31$jaBc|gG;DnvbP1VyuOKR1>FG(1>r_hrXAi~i&> z@oH1w0rjW{Cri~{&2z<8DX{Yb5Me^rSut4ep&(0=xNo!}UKR#biE@Wob_f?-a|LA%LjA<&XiK_kgEV{^~mohO-({5TST9!xunQFLSaTx3kY4we5f z(`)`nFFrB0Su&bH+Czo>%R1k_G|iVcS$8UdSPSn1DRHa?I%m#lcrj2RKS!q5e!pw| z1-~d`Eh}i3*diI3mubT*;{WcvzY>{R@j1}+&A``h_ zEdU4u00O94stBMK9da6|7Y^9>dEouAhvK-=nE*uUA=rr-Sl?lY3wB>P<>elJbTJVE z*^>N9JNn<+(aaxcr>73KIg;*ALE3E48!+J6ioyU1ye~@#@&y|bfR1hY!p6bS_x^kB z05K}qivlM=Y*HyuH3G2Bp6pT%m{>M`^gjKRn%|WKDd`y?g?g$3fXZD!RI(5uGX|4S zBbj>EgPof}-KquT8FV@Z)yYCt&mfXGFgp(DT5@KD4@D%z+xmyp zxVPebo)x~_YGN%>q*7jk2D7E5{?f-J(#57(0v!a5yf5-JISWHIl%@j?4d_vz&`cKe z=Yl1T4Gmx)2%x8AS>v!PFbe>PdJhs5a#R`sk^q2qlOZ^Vqn-{JX9vvwuIgZlr#}T^ zfdymPK!-sozjfM?pE*H!ARIw)O;5D)dGVs~apUIzbqvg#mzzvO5cUkAW~}`k>fEc! z#4ZzzGNGJ1CcFRwX;UC4sEBw1A{zsD+XQ< z0e7b}hFPKt$ztbOP~v9En?4qA=K#OdQ44_8ddU7?Fho3CCjbDk=fU(A%qp4#RWXPTG+2LFZK(6HX);28+^SV^tv;0)BB3SICm*fqw2|E>B zqQ__lzu8f~Py$e=gSJx}yeMEW1N5o~*zcQ|_SCiDTSdXj{(0`#I^m`-5UE6nJP**8 zg~2@!!SM=v#Z>aMgd~GwH8~&!)xxJMiH-Ag2@faZ_LIlg&i*=~ z^oB9{nHYd97MjHCGR`mCx5=EinVvF9zB?N7P)+Ef+UaEtDf_XLvw7E1zLZ6ndSG$R_qoPXVj)Z^Ggg5Y>v|>phx|Cl3e(zpB0^Vhq5Z1Q(CN zA$xjoAD-=3Y7E#KwTKlsPqZvVDJzcm`F+&OG(Tp}QPu(=8+R=0MD$J@9`Fi*rtiYP zDA&0qACIOgb*s@)CTp)g9vBNLA^$jfBNh6%PoyGkQzM=D&36q`?OPPmvKWN zqMQIE14JRw77pw#DzGkk^5uoeiak95v?R>I zLGp2*nL7n`h9z+xYyWVDe*_F6QV8b=a6bZ74h&L2*1L21fD@ojKSndm@(kPIa1)fs zhC;xI40iovWIz2S5Yp4Wa07e>->KE;<+PR@)7d7M2+S`Tc@hF9Q=kei&=_Y((Bw5Q z;zJ|u#nf+SHM>J(^}s>@k0Y0vY~(We+*6zra>|5fgef_FnaA%Ya`froNGq#&()5pm zIz5SEFyfOHV-p(8^~L@mA90!rHpYO@2~!|MpdkgyoZ*{e3#<@l7qNmDXwd#+6Oly| zsMU+nzSXclX!BJNSO{!LgyeIPmx-8L^m{^uh+G!TYL8`DxN`3+MiIf)UL-dL#26n& zS^@2)K-V><+FR!qWs8#K9cWOnweoK$#CWV9I<^NMcdm+o6?fD3uiX$ z`(I7PBil)k1G~~e2)#7z=jMWz2td=@%!Jbg_o!&e(MGM@Dvy;Ze~JWEV*xz2-30go zIgL>TjNJ1WIWh}P-hq|{kT(ZAw5fnQkIZoxt$lJvOJjK_>aWgu8~phb;dkz-QfM3< z2TKI>oua^!N1rFN!JSh86EyVH)&!X(Sw%q}ZGl>hCfW7QY(H^F%O=TX(*P(>L2Iml zPz9y>vk;r(hoEDU!WBdYOJW9Pud!i$mP(U1U@8{W2u(|JfikS+m4iiRi;aH(E}N8zTg^NMF;&h{J>0r{z|$Bd(;ZB z;8gWx)B%J6(8}_Roh&feS&+{x)HHSFYBZW~_0Fr0fgCW~(d>o6_qX$1(^BhI7)?V< z?;!H(6X|YqEAJOf!ItPGp>qZ%u7Dq$1$Vjt3`Ze*nXsdqE6|WxkO>7CddvCIy%lh1 z4z9BN%WRkq37zkSCR4ypE8wtEcqZ%6^P`f&S%k%d4^79S2DoxAX~GQ$m38$ShPD7C z3FN<}y)nL5QxIfQ_`A@Fm*foh`mUTAwS?Dd!+$2gW43#b4aIqoYS~CdI20?5F!?7f zldwO}J0%v$^niZeGi&xpu1&TrEpoRuG43+~5q2E6I`;8w(;^#gXbstz~=8NWbEr#`;9ox`8quJX@xAht5 z4>NndwDfFNW0o(tlhszR+n!fU8mYrk|S9=)_(e)EXj@NrCf7TY#)Y#Iv=L zABi@vlZ-Ea&2Ij)IV3ysTl(qC#s5ydQ~{#5cdt`vqjGrXkiwai9|=$i6w+Fc%(y<6 z4w68|Elhb6`Tdo5Zbsvi6Lbv-VQE3^7^j5BC%FjZDjwD{o&bV;k@NIQeQ-GNiqQK$q1bv(R|UEcE4V zg={a5kSv@PkB6+Vxlk7}0|eL1CE>rRty8+ND!)RVrS0Xr5v1`&uB1tJStzsscjGgl zVD^RarM#p^i}n{7<_*NPq--|4G`2xonaPIKpOs8lYq-1y!cqn+OCSb%3eD}^%^CTl z)mj?2q8G24tE>@nYz?%aXdO$qM@CQb)ZBGE*C`C9ev86|-u*Kzi_j5H)kxV)GeK94 zCt@2>9j(!#yobr8O_Z0**xfaCoff{I`Q?qpwaOt<5huN+Gj;$3w-n5!N$Pcrfe5FY z9R9>WU><7sK_S&rj)-G9zCQZYOHa}fdyt3mctZic@bv$pp2fa1at9JfyJh!kL{iMH z1Ptiwty|k2bv!$t^Q1H6x!kTx%_i`<8Sn-HBIl*@p*vl{(5{U;>T&Zwuw1m9em6pi zfvJISe6tcMoz@GytGT`dpM_5)d-D`%vy?D?Nn5kup(A-Egn|J{gRO=jIW*fT7Wl4= zDZC!_HYB^f;UOVBLAFlYyD`yS$}jLHoG6$L&D<$>@^WtbJ1(TqXqL^BFSvU{sHJ?O zeuClo`p;$&R40Wlhjb`4c*7^$O4(7{|7s(++2}&&kkk;?U+((VF)k{nqjtV0Z-?qZ zQF;dXZL6UqeO#EHUGdE(?WxZt(6im~aO?dT?wX0sOsZVgl-~~fW-WP|$6We5J~SaY z^4h`0j-^{)rDnQgAcMMqTgEbk#E!Z@_a;vse8!e+aeQJJ|GF9?H!r8WAc^rj_n%l& zsr7a>Qq9xf30~PFtcI&3jY4Gh4X}(<>}D7bG*v3PAabpju{CH9*pGV|A;ayLgkee_ zFUv0rA!W=aZ)KHe-W!#efoGpi_*m$e4Z7Pk1cBr0IWi7Ihg1TQvbO-~wUlbpGwAGK z5Ny-HPOBPqx_yr`z*n)44>3NDmqfSXti=ph^VC5n)qm!hMr9017WXOUD6@_Lagk)P zd*FXZGYG%54&g&Nfn}od;j$Q`vabLs#-;X&EgF|V2Hvkx>Nw_EYeQ|=n~f&QtMG|| z%sBXU;%%cB4(|g#&E?-jDsBI7(93bgjEy}2xukqb@>u8ji>*oAq80dAH2#CL8f$dh ztY1Kn9|fI$qrhZeTFwcgAvtkD0{|NT7(0D9fDOw%#eMYT=b&&<(YOMVrVKOS}uZ%`fvv7l7?hfO30f1dse4~|b5 z+|kLSFmQ=kJNUhrl3$Ou>wn!}CyC-sF?4~uLc`MbhA(fJzM zzav*Z_+7>ie$3Z8QnNcEiD#oqqN4UOuLZvxaeSdwyEl^ev}%?{EW>KtQIUlaTIEmt zOsax~F-=dnly#020K`6hj;pbYu$WZ0pFD0FukHw0hpdV4pl~xOo?#f@)dvfU+bX=4 zn{N*z^5Y_mWfnQ=e{M~o`$g(sl z;$x=EQYa<|U};`v0IvB8fY6Ag&R2HbjH@&wI=0-V7GW)_F9UIwq12E{ywxazD3^YgAYxsduB%}p!uR(pac(8ipgg| z2#Q_si?GPi(<{dxKP}hg=k&Ip`2;xC$pyT$+VOFuGub)H;w3Wr5D499VkC7SRH9BS zQLS-A>U$sOY4uMNu-E@Mi?+p@KG`V}^WH!7 zU!Mv)Ryy0e|43pVefJM#-F>Uj7OEb16H^;n)udFf*Y27<%&H$+3J14SWOWR+kAbKX z31qOGby|JL0>V6Klp{eAb8+{b6)#WqnRw0R2ztVluC+s+3=U>K(TH!oKxhmwaLi=9Md@lV8d0Qix`Xt1 zwN|Q#tGNi&CplNA05Ll*Znk;YtY`HcalZJqoFiN0{IR2U`cZSYZ4+S*j@i;U5QRnV z61$_JUhN>)9Xb-SXM2Om(6us9^j2#eVOwpkJXPfOyjZxHbEXi87Sx!2h3?;g?#E^L z#PQc8JG|O?0e5-6dg;DpE-UUd(EMy0{O5Ry8-frqKe)loh(9BY57gBTVFvvT(YWPrEajb?F$WD;JtTV98pyCS)rJ_in5ffmfB`_d%#3!vW!eS#|x((m;B ztc;+Q9Z?(UzHApCHqUXC`|mJ>z6jZw0_j__tpHOVszC!po{yU7u0q?+0XaiVMg8+D zMeY0vOg0o==4*gHJy@ksdI~KfvxztE!?xHGfl9 z&ru(MAu+fbD*#lAOpHETY6^f6Q{QIQo=OFxKM9_AdmT!~)XkS==bGL;3F|-UVBkOk z765EQoIQppABQLsd!)^0&|^D#RxyZWswPJDdPS4F{W|C7uU%?-($Kjom_Bg&O8?1E zQor=rK(fqFbAYrc?Vp$@vV{6lc*Fq|xKKIDX&X#7TUC#%h(4!YR_Gauf8-%ohgMOa zO7lvAw#y?z^(6M8CH8ME7~=YTH=t3>j39vo4mvJ2>f7HA*)Es$aDwM0cBzug9^ygw z1VRJQ2(YEtg%4Q;JT&g&9^)3p$|Ga75UT^~_MK`IMsBNo!_MFOn@TK@U9`id5Hd|n zn-Fmx2i-a8*K#xGcBq!3mYx@B1w{P@T4-X2*q)VI0a^*u?1a850|3Q{Hdz+u(}LiM zS$F3R?G>`@LC&?xMYw$XfHR%vEatfjx?L#{5{on3QR;q2057`N%oRNP)K(0+H%2HE zil3~X6c6wPSV2HDn5qc^rru;7?wsET;g?MBrQpo+}!H z>C4LxY!bG690+TQOe(w(!;igz(}>0|G~TF-Mkxxm;Rc#ASdfC1^tGZfRhNut;iIs{ z9Z@WaZ}4FaMP@$RIr`tPuuO{|BgjlJY;WGi8|wo z)u<;f*#>u!7CMWioX_Y32~59SBFTf1&JgnKSyJ|oI~7_*le9V#kFNl?ApyWvfnY0g zur{5;ykq!_4YX}fk8GD{fMzg6Tnx_bJx=1HfFU+RrO1C7uU4w9R0wc3^39Fifx>xg1b_oU3(8fy}2WL!&H zg~BQJ03rbWCvNJa=pa)7xTKe(IGVS|r#{WsVQexhU!RRO<`OAfReGni$lS6^xU=Dg zj%|VP!OZS3 zQ&y~A!AZrf~LS685L@hRaKV>o;y635zYAI14{sp8law7PvPZ1&~evat;E zz5{TdI5cAZ6f91hfqT1SKN(t>1`S~C3luGw$sq#E_U#d-e^7@O1oAxjyo)c=KC9;} ztLG3zt_#1Av4gH~3OhtLo0Vnfi@34|FGJus%@zLeE)G?c=2`|RBPlx#?|;7V`lc`D zX)S;h_YPggF~v?_+Br+cPHUFUNR9&X09?8lmPCR{nq(%o&nC5J*l)Cf+Neq4Jqu=c zmy0W7ze!atQu9S@Obf?=-Q9n_TiF!?dC|zk44R=F-s&w1;qw~pFIInQRHi$odS8)w zCkTa(Zg&0Ubj8naMmQr5?n*UM%of!cKf|k1fbtBkk|+|o!H&2dFl1{)J5gWeP3}EW zczq>TH5yo*h`;cC_drv<7P58tJTxcIvx18({EWTvCu+13f*n-iV+w)@X&1#Jty z1|N--Wecu8id-D~l-O$!e2%+qF^wjKXaWl(HVT48&;MTK+V8#SyVf|EukoG^s;P{E zNTitn(hmN+Ce4PO5yK8Mw%mHygexr31jZDCUPipbMK}jY4Fp{o5Q=VNqDFI98nR=U zn-WyuBpFg5a57v1lf*#xqE@BZ(9O>z6P-o*sW6pApel>2L2~>(M7nr)SL$4qkkq5M z?MnAfEP>9|Bz@_L?D=iv9@Taa&N3;KxVDw%G}zKuNf)9{X|6EaWu(dvc$gFHcN03; zTcn%LI7hXeV;O|h2yE4LR=Dy%LhL-PuUimNmp7iPADg2aeHs8CVE`Az;q6(KhFB349Y* z4lW~E6&^Mwc@cFG{@#7pRby;U0^FjQo1=4)2-og8GDxm1-F(ab2Z$+~2P(fD z)q{A5j+nt4qokDFXzhfrh*6iU-@v0|shKwSxy{~1+pEowIhw51$r*2$SDS2)x%i#( z3R)lavEF)Ld}eICX5fJhs2|EU=7D$8`!^ZzgNJP*U9hb#44xx8Qb?$FDMOJrBp=aR zo6Ab#s{=G_%sftTKnhkg8KJtoIU~cz#h%!dW4Ilu;|6PqXjMLd)cW9U-pKHzdLCxtSzow$Hw}shpR~;56gV=EP1u0 zU`GiTXUwMc#94^N+%>(d0;{vvMVF3$sQJw`3C5&EDj+sbtgi0s;hfz)%Al`uO7gc{}W>ES<|4+Nl zdxcxVmeU1B-ecP0*_w-UQ~~$JfnT?DL1q9eZ2(-?x^`W-y1bXF>KHf5a(dG*DI@Dh zOJ2p#Z>b!`w5<7FK1N^VHKHqYt=3(WoZ4O%Iv?`-CPM}&oZ@C=)wO?0&g9SDQ-L1($Y(?+B7eEw{hJfW~9vQu=V&2*ZsXI@j3y+ zrKJ5Tq3XOogJ%Qu9Ql}t)`2HoE+?4>duyOliaPemivqJ_tM&k3O}@II7&g8AqGlFTArhDcWE&JEErW` zGONEJh2e#a8`a8G8||fnggz=w9gbRvT-GkJ95y=dx&ok74lLu3(c@!^l zBHGzfFXAoLO=G>sd3%bxvkVMlzBx$DY?|ZA`=r*6$+*|H7D^f^M|V@r`%;Q>G_Ct; z^7UGKq%FJD!U&w-jXtYJl_ZRkT@u$VJr+ z37sX4rl3GcyCp!n;^`2OWXzW-&6R8rn(NawGtN=wy8sB8)+mcx-Fql>GcS z;|oo8?~jrD$|);p^80Y+?uN}}x2ukKip&SqVVKY!$s^g6FGm&b`TqEGH#lbd_qW-lbeQ zI)f@>1@KQVJQ8jBPAk$YX;fwV>>g)no;(+!UCc}pV8a;R&=>xUY6jAJ3MX)NBm?V; zqZ{>K+cy-yx6w^rfjy*ZsT0%DNw;X1UGY;Bp*bgXNVdB$i-FEsuIk~B&C)b1c3P#e z+oS7366-Lvdx9EI_-p6)o%4gWwWvxym~3v`dt|OoN%sG%vrVwU!mGwNqLZ=Atk1us z&GW2uq{55UErVJfn5zc24tuChx23%eo~B-kC>+E$59%yy$!zwYCH@y#I{rmSq9abteQ>rm#Vp?}{HN}4suTUg%Ru|1eRco2V7s`XDmgQvi zlR4Y9emkj%SJIG65xc$wilyYQ%bXeoN6FWerw?I}sU3UZHs9yg^8!z>dg8^G50F zy*L}ZUUgo=!i!?*8i=VNRJLKj#dJ+184~D(-p>MIYZua~CpfGxEQIG0gn)0%O>)^G zhErvN<_hnV_w?e*<$IF`zbG?yqBeDdgSf>)x1MiS1|wKXD+9w zHSHp_7is@Nvxa~Jk52!+G;r9Jss2#CS68K){{T_~QlW=Rm7ryhhg9#{?I4hjK=musR0VUmxA^OWTHH9 zAk1A{hUi4ssbn(!_?l>P56+3eQwym`Wr8qG>}_AfV!FJr0OBBP`*m|VAC`nhdTR8j zCs$?=9gf$GHzXM3C{waJ=Xd|`_Anv<0g&X&chUf}CMsjpFVidb^k}D)%(vh1_3HxPcs&q?hb)ob+k2p$2`Y(jFVA`Qmuir*2+d%Z;s83m!K1B@pd5ky$aLF1 zYj(DMz{SD=!>63+LZs84_OnLY?Vq!V#m?xQtq(7-so9=V`3bWTi@aSSZ13t2^%7&~ z)Mts3;xBq)C^H6_H@c>tHOZD%1ZVZ3cah3p)?Gd7pF3#uF0jifDl+w(g^1L+c$ZOGSjMGWHE-Lx@SwXvc!SJg5CD0ycresAw_^v?5q@9my~Bm<`DW=y8= zvqKkrw)`VTt@e(rdzV9HONP~G^|Q8p;8L@ci%JXq@HcO9Fe(=;mkhu9Md*&;lDtnj z45+Od_uCF>+8%ZKy&sb)wOLgOy=oIW-bVk8Ckkdg= z4@j(D4T6JE9)O;+a!3inusAWwaqB+Xv4z1S^5F^;jz%mH)#-X%c>>OpXo~A(bL)Daww_!7+LN7I*!hPbaShpLJPtb>nJ%z9A8{LdY|JWYC`qs#dznbH8 zc-QXwu{xarw{4SpTx%8E-SJ!b&fDu5!w;YU5c%`XKERmQpWyd&%kPC*Ex*(^KJI>C z)Lo}Z|Ih(A)n8N<0sgD~53ls0&FSencvGvL4PJ~_gL*Kzc!x0TuPF)J;p!8K{4~|7 z_U_KzIG$dL12R6hyVr{qQTw5R|NeAECH8oc3+E@|H!hR>Zs(U1zppBV`a#!!RA$!& z`!H;d^i!L>r7DgkC@(z^$3GLtn>p;BPm@nmsWk{!dC{(<@*rK;^W7UV$mi=eK>kh- z`Q9|Oju_BaiuP5Qj&_f^XPS92Cy_m_7pV-k#(jzl%366={d-1Fb^;$_ElS&+Be;3n^H@pPYnEx&fwwKlk9HYZ7IU%n;eb#(9HBXjoc z6bb*~uyqwWw(H$JF-QIdb%1|r2Bt*mCXv9_5k1xsU~6(3F^+>=;z=&#eSW@AbrK-8 zvYYe4y~8YTF#S~q_Qj5!(t26|2Nc-R)7gerX6?7TJEH8XI?XtmrZ+G{&jstB29w!6 zHtlKOPo-JGXUx^oetd8;oB*oxy8P<${GQkJ+;i^xAZOD4`ghlU9AKOZ@xi%w4IrM= zM`>A<{3M6R8I()nDYgax%&*Kev+NLO zJ%cWjM=#jfAoilTYu?<*85|1IG76cV zs=+oZ zM1}XP&y?T572OyOvS<@ZCcV6Np~T!a=SSH?*bVMR1oz+)wSD-Rh8VcD+Nxq%t4QH2 z4Nyw`BkvLi7Ha*oE`(&szY41@N<^T~%{+di4pH#*zumXslG-13q1S6<;Av|ScKOkL zh8Q^`mcnsla2(_oa1%#Cz&Tn#cL;T|2u;=Ud7F8c@820pupVEO7yCs6R2RXvv_PAX zc`cIW!?(VA(KJ$On$2B?UHdMB`WowK+IwP}Sv1zT8K^w0vcIv5N(6!0Kqjr5+`?>%!GiWzln`3Yj0GpW8$Y z*>J;c@5?|ggaZL?S4f~&Pa(BArO zQI=&dGBZRA6sUhITM-4e;?-G)gyB7vx^d`z_1(G}z2u2#yNS&!_x4SYg*C3N^JcUu zOEqWH+HUzor>%Dk7VV>Te2Ws$*D2%naJjnj`4u>$Vj=;bUL}{`i;o0IZNMQeN`e$B zCxD%ImygVSdM=%CusLq4AUjqUyE~t@w-srh-%B8O3!6cPP25`><13VxtapSKtnN2Y zi7M|LNktV?Be|PuGNxnMF}d6$v0P~riC-a~<4;{a77(0JJ{0zu5n(Cn&z&`84%yIDZH4)k<6wDwZWP`;~P<;AVJK{QuqQ8wy&(5+(l zO}+Q_7iJ>?k{2r#rMw>9SaE7=SH9|bfOS8uMxPtU+tER<`1J=DZ}RX^3!5Ecz^xXV{zKBuK#{GvNJf4Jz{8XoeOu0BImCqbmKz4m{^fX|N@VS$P>_K+q+&oQDUSB35_v-DYJmf{ZQV3Ij1wN#Z<>YT&7 zQ?A~46c@wa2MzfUHbsMuQcCMd0=g1Dg^HLM=ydF>M`sSzEd2;8XSEo`;R9YtWsU~T zQdcq>G$1%KmjH;>Z9i1s9drvNW84C|ZRFZ2@9gOHq=nuyYVK^2_j2lI_xQgcv!-YJ z9VAi9T$3!&Wb@0**3%jb99P7n~>U7nm*~rrZF6^k+a;Mm-kAfYa?1)H>yCO4wfaflv2M z?pIycnG7**Sp^oj;{pD!$W)ni0F}){|Izj61#}6zK1gS2qXt!oR8Pw`Ih`rbxEO`p z=4AgP1RMyP@@lFXo|T{eoApI!Pd1Cu7kD5j$hQwF-UaUUIe-^(fz|F`G!1>pOXdu8YV$OyZc zad@q5-(jJixZIW4a{#K+~Easr^^O%}wl?sUiTd^n@g9dcN+cUEK1&SJLwC^gB( zDe1k*C12`x&BXOvM3NlsGZYx-Ev1IC*2Wf(BCp0H2dN?%oHx$$sv={MMfNRrcgYY3;coV$e zNdSfcRHuL8J>{ft|6v~&v4sdcI-$%;ZRZzR-6{SC#XX}!#Fh0?E*_iK!sh4p1K$jC zyA5)APp_Bf>pnC$&bhHMWU&eYfLm^&j)vOr*tYF`^vZKn@+0$u-Fk7LqXrdmbX$=% z(dPNXFttioRHZ^O2PrsQe)D5g=J5!F$K_8NGuk7XvsrU(9WzrDRhKVii(Lo z$aH8cd$GEe-bYd0mkU^>+w(x*?>RSt-R=bpDDQHpTT zgJH#Y0vGha;=um#NX=g93+4&)i@1tDjmXCTH^J3(a#j0utKP^C?>wp-2D<0CVz z`x?lRD7kvCN}5Oc_YZHNjot>QK9b`nE_*+u#+q|6`t_S5M6XP;_Knujr$SRhVr$>Z z_p5sl8vG`$qU*62sYwBGbhdW{8;C>5=%ivP1IIMv4xj|>iLL`@^_>;VH^RfD3bmZs zTT8VPV|Eb{Mo%ANG~G&>_qfo5lX?Ny!*AX=a`M0UnL81mr_Wu-nn#TA2*1x21SLfc zlwsUTu5YaD@1r5#qz{+2?7!=tKSWF#t8zIle{KQ<^HR19_9(H|UmM6TK;kEKe~w4G zqLe@Fz!hkv73>>`uE)62Il2ZPaS?^?ddErU3StrIx*mQQ_jAFPO)d)lKC6O4KaGh? z>i9TvL52oH$RWyvYyeTD2`r?V_fhDKGCd)P-o(p9)G)#MDJnN=dmIdeX=t(-2Pq|^ ztGT(-wCZdp?y9~z{*=#qwL}rH?yOZYE3B5(NN;Skn!p_<+POA@3$~%leRmezWr+%$ zNthftFQXU;#=V&VY<8+l&EaZ_(3iAqUc2|e9!S%Lbb=%SWzo+!GB*e4e3idB za2qHc!U7qP?vuJ<3OaAI-gSd5P)~i8eE*nx>)y#F_8SsDfTU#8*sI5;)w2-B)6qR= zb4@S^#Q^K-oyFb(gM7t3frA5zK`90$N8c8z2DHBwR4-S~pH?1G-WR9*HXtyyW9RPw zZayZ;xnjK|Fz+jsVm4*gT|Lg;%T31Rr9W|yYe>JNuz`C8Up9I0;OnOsrk6GiNSxPl zt{bJgs^+q3xz1SLO7}5#)&{nVU6wHgydKH#RZ-?l(f?i6LSwja9Vd(w16P>UOF??^ zy_KTY+pM-$v5Zer&xXj$A(lL&oMhdRk}dlE!@22d#}QDPd7TQHt8S-1O)t#IPht)3 zxXJI4sShYrs%7$w!V4mVAM(R&YDzk8&8 z`c}d}aqqPdmKdZs9yy?xECX_=-t}^t?D=cu08x!EhA=@7ay=s`ibkWdTU))_6LZor z7J-=_VN%B+J?eAGnKoB}`H5_B`J-;^FX@*L4Y}w!MD!zewsOK8X0Au~$)to6{ z;P51|x?33g0hW2dwea}}c3KhH8-b@>>5})E%db=TTtlgKwQvAt@EKyaZJ-#}2&e5; zJ_yTvEszO=LI!dx}+lb1VFQ>7lYhy4I z$;BsUJO#kh-aOt{`%!wY0P{B#Ps7`~y54OVIh+r^HLI8D6_q1>=z^Tu#|WJJI$&2p zEnmWt4wO2LGe3Po%hijKfD92A5`B1}l{<9g9M(B4fek41pgg7&-mFv?0=5FA2ud(c zo>qQ~6Cpq2IDu)d>TDlW$?u{T|Go z&%C7sg#eFcQ2&*bm-Z*x&hK415;UL{aGe*@^m6r^`p{Yg>w=c?BKfEKEup`wrT1G; zGF~=!1h9tg-QgL+}idtX!=;HvHo!ny2m6gT_LxkTlU`v)&D#hhuusF7S172#L_VD zd%t~&R5o%*WIIqh1X5vAB|U0X=whGUc!XiRLBsjn^)e#$bpPj!Nc*>9g@OD0XM4}} z+0XhJ9&ZnG(X}qXh$TuKPOqeuJYqI4-E)RTKI>|{|3g|Ql?g2Ro8y)9+_kb3GV(3< z(S`S^peIoa5Or0P#5y6wZi0Hgfu5dG0=$0cf^UqgbH#+kjn>4O65=G<-59?v?L-eo zIKmT-t|~JDaG^4Czp?XL z$?h5&{g6Ta>U!eFFSXYsH=DZ?DBr*^^j;Qc&qCk*2ouWlu_IJh9y3I_p-VCb9pt`@ zmvy^32-oJfw4bq)t-LDe>G;o4eTQtLqgRIc(U3VQKOslnPyuw{bS7%!ue9+6*MQO# zsL`>eEY(jsMV(Z`vuB1qW|g0l>v&gM1XNT(*?!{Sn#+;ew!!hiSUJuA*4k%D8U?@S z9w}=b9=hERLR(rBn%D^QdDFn1H{>aopACO?#e2M}1|oRR_Tiqq3T?kIThTH|^{G~p zeW%_UI@St_ajj8feo{r#InsIrJr25_4c`>G6DzK)-_luTF~8E7+PUHfTbe|i7))YU zV`HnyplY4ST>MhPEy)aXl!zVszN$edY1R{7t=I}2t@2W>4^G;d zMSAhXllj1yq6il`4Gu=FOXi_AVF-GqC7W1Axjv!&(ufVsXQF5|fX`mt|7sEvO!h5j z=+bZxXxwK}^H9;?!9qNE(~3bH;t+52rZ<~h0DV?(3{`IT`k=8OZLR}-_x>jB3zYKi zzFIaoRfrSp=-};uyn@5849$HV9M_suem( z7zr(D@hmJvj8_4S3<$m-&CZpMgz{;~kd?*7EiDb_Hs1^ZqybEGu`rKUY!>=JVGl?a zVLxxdma#Z0+hFblM&fjR-zL#Ph$>UUhENVLQV^#_ud;#sRd|wF$AIZ7I>ZA#nBKL6ufu81b;$;FyA5sO&UQ-3=%4?s6nO zyO#ghm?nl!GmsHzm=6x@D%FFHP0tv;{AXnOonDXlAmYGdFxz!iv6lT0C0R;U6@@C+ z^6_0_IFC}Bn@8xoijDd5j$Q+)`T%Wzr_RR_M6;*O=V7c_{LzovQXV)nqpkleokvB4 z3X5Egu^%bsnDkw}Alz%3^W%`_!$ZskHL6^ciwzTK;NNduYkpMZa?Qx3xP_|1Pb=m} z+ST?M9?U$-Cy+D1$|=-y)(LW9iPF-Bk}204$J0y4U0^8vy{>-5jV~Yyh4^q5zS(MM z`gI&z;JxqTW03MMjSQ33zN8kKNn~$#dqUSx-Z5=x!Au`W&`Y;_OYYu`2 zK%hR9DxQg@+f&$Srqpe@WmggCpA*8R#_H$T{&S-OQR)1@_~buM zALa_f$z^lLQh|Z)pp+7@k=D9GMD^AITju+0OFjV3rkwQ2SCTt;eKUdy8)z~)CT>J! z(Ss-U?3H)@{4l`-PYQQJIU`$%VGxl8k_LjhgwfxeQ-yw3&F|vGRx3Hws!c}8!mA~8 zuEL7haL6-BJRjbh-$84HumH;}F}zhCwokbHijMGyf9ds0CDs8zPwxC7SwFXg#lp2}tE1mxpYE%Q7#h9cHVRh3PQb>m{g;Bqg2xhoL8my{U)Xyesrh9Ho z7<}`2>>H!hh<&8nP5BnJE^3fK^yv{^ujLU(oQZ`#{mGt+NqyItx<|{Bh_uya>$*9O z^=59{v5dOn8qQ!gN9i;$@DxzdZVvMYAU%`|{Z(SQ33rzeW&ey|L(2}GY&`;a-PQQc z2P{0|`)Xj%{t3dT$G%oOZvIJn76v-)k&XYTZ|~BrHtWAHz12*cw!c)q{yR^0Sxh@2 z2HgW_e?n_3MS8}~!i!U!<NIZygo)PSd;kH24aJ{BWm?(~MGO|Tm~5`Cm7^-|IN(V#M_ ziqRCMZjS3dZ+}EXCJ9li+Bd8+Is3TiubBH1-YeV=|BKUQSC0WV}4a{gj?s+Tw zID&}?OFE#Tq3bw z)mM|+jtP6NzB2f`a8zmeJI1`&c@ITm(~b?5XgIWoc`}(&aVAU9S^l%-xyg>OZ3n(YKmf`BVkzYJ>b5gI^2iaS34q z4pq$bu9+qEO=Vpe&=N>?g!R^aoYgwPJgrB`&m=ypxQUt@5F(+^=RvhTVhKJ4b>X(+ zzbR~Mi?YX@WMi`X(uN>>`Q7(Xz-vBZtmyKIjP23Cwgt&*{QwAq{tY9_Pc&N~4g!oZ7rflwcw9~{F+YAn`x=o< zXm(D>nNw2nQfbj5@P1y+jvUz3n)e$&S{5iL()zC@!Z-J!>I_u@ zUM-EMBbs$k&j67FfStK^C=mt0v>~Xe)J)bMidd+w43iRxC0u9m3pQ}$B^h@-&|1i# zG0QL1*6va{V^piueNwV#kBUJTOt{1HYgBz{t)>j_&bvztSi5%L=WR=YM8LVrbhbw$ z8};kO?MWuoGmlVwZSrGuLw>Ait+eq?-Q|^n2H+IIb6(DK4u#zzkjUD)f_Sn_jGPtA z;I-uJ=KO;=4{LI-ZeB?WPI6X^2o3)DOzAWy;gg-Mv}Jkd44LZ^_@tzN<*0PB`}Jhu zp>I+d&aH>DlhXU+PPQCBfBvlQ%p3J43e4arKwf#L;W^tpGuQrg_5V?HF8)k^e;nU^ z!?4Y5E@|dA_qj$=8*{(SU2e@aq?%Gh_1(?f@0TQMBq5bcN}@L8P9us^&81SQR4VoD zo8Nx_z~}KepU3&UKj*yPuh;X1XK3X<0VWiz7h88JXLc3TL0*yHI|W_RtCQ>}U0i(! z=irbSCOPR}kF&N&T99Edfrf2ERq$8wq&2wz%H!-bx+^d5yhvYLG5?{^?^ zESQ=l@)HR>VB33CAn(SM`eD%bG^4TTu#Hrgrn%*Ksy@hx6f-LFIGrI=i-RmTRY>~~ z*s@P0z+AWGo>J5Ci-)ol9_?$(bsBg<{8R0X~gl+fy)rGn-5 zF9r9tSVjn*8!Tarm*l;GL*p-Y=U!&+7bv;q*dI`{JsFw8UvGPv$-Q%x(Ek4TSJ~4Y zHWx;dDCCr^F6V<5s&#-bopu*I&L@wLes?10br+{yyb6*_C#%hByk9=yl1+0Q@|uzp z#2jMouov7O;63=jkZc>00!-9NBkyYe_Wbils7oq@Pg^>R$-GcE3g4CAJ5zx}ZgLJ2 z#foe)W(sGMQ_$y}?)o(j_~uRH%KWT$zRRr|kKs*#7A_{d@4>GNNct*FebJ>sF(AE^ zCrO&i`pH|YYBGzq1ByUe;$s3(@ec_mD)Tqwe|r5DvE9ZPyLd*#X3gPUkh(- zjwD9D`{S|tx>%+~^r#l_eKtlqH=|xJFPoFD2`_|*)Rg_>7q0@M*evE}NfnED5s3wctKRoRn1ZG8|F^n3a6J@u zCmabQ05CBO5YVj>Lc?5f%Yp%$kZq;00*>VNUgRG7W5yH+hT25BV&cZwO3$qI)0*>P z(uN^nZEfY5`K&+@@mNDbStGYCM!HJ8QG@{kxL8jiaTuf?k5*g_YdhyFbq-E14;d6i)J( z#~UKO!H5$*5eU^~Pb5^6*1bb;@`waRKZdx~KaeeN5kF7GJ0UA}Lkkk3&&#|Z9~$+K zZ1Dv@M99ilYq`xC1hj;#GBbPpw2@9Gz6}hY6-VjQTM;tp`#W{+Vzu3<4I`xIwj^mp zxt9d?7L%mPzfD5i{-VQz+zAkow=+!|P++cU5_Uk=6!J5atY*Og=146Lk#lt~W&^#9 zWwfYyMpI4<52+5F$F>&QDI_RimgMMkBG~_-O2i^y#v89e^DVRQgJ^r`1BKKwg5{`R zQkyp8GQ$;AQCdb!;6v2&20O;JoefWr9sK$<&qtic4oVudjSS}M1bu``?9AwOR6?1p z5u0S-qkutlFt0sJ^V}Aw+2khUyQCSkuOp9kQ=X$77RZTnY^n)-0*ezXyBu4JP21UZ z@D~BX7Uz7XlKZ}oG1roI>7jr(;pFbnqYCo3!rKQIL>!E~&-Cz)s)h~^%U4Z)GP|GD z`yD3FX_ZN8b9h0}Z8RZG2qi2RIKMROYIAVGrclvbxqS$YOgS1O@@U5IXCE?^exIu2 zNZaL$k-4zb6j~`vpHq*3>b2p#q@7)Wu)g!u$RWM_w(v~(^kM;|_j=m%T*>lm{1{}S ziAFZqMTj1idf9*~Qc|OTBTIZtq8I6*$PG?0RC1OIS&Jlci3<6(O7`3P4&z~S-yGw8 zWB(Z{5SD2{s?wD>0a5v2*ze|R*2Xw_0VP!2u#+?#!pP{+uu2(fHLJOEr>Bx=~v(sJ*b}38=o$J}o z5k~KQ?P2JMkq<1Xy&?u1<%-atke!4Ejt~BV)Y|^hnP^x&cT?{c^PxdG=^qYk2WlT2 z{pnTckV2yf2uRPjz28jArOu+t?IvP=md%e5H~8gsE>@@oAF^VH`9*CAShES}Xy)61 zXOf|pRfRKN*s@e=v$oHLYI2)@DNuvLHJ%mE_J~}^c$Tb(P~eATS?wSSWHXMrtOU2` zbj0_g)1%#=-@>T~ZvhT_L<*oWI5xkX1kdSlk5HS=xmoV0_>jOgF^1-OHDpTD3E=J3 zrv9oaUIElYfPdE3#MWF*Hs(cwFru%+!Vxhv2;u7B_4EoPB&j5ivx8%{0V<5mj~-Ai zl$Pu;G~2AhRS`!lT1*S5UeU@!bVmbgW{#`ca@q+Vc*m?m_8YQEdKZtPP|xG2r->N& zV8Nd_8t9`!L&m3fN@!3V_@h4w7^Yu5Cyq>0SUY<5gY8H@j8zZz#hv^+9*n##;Uzi$ z`K(!e$%J}$2N<#zgNZ4za(6PXA+N?+j*G}z%VhnvGGye2J$f&L!Kr9Cq$A;0<=fN` zkf$U{75J79mJ^G+g`VevA?n8O;dh188X?47aX7rfaGyg%!Sg{K>^2ZCmK#z}GToJL zQ@QGjl6h>9z4|w-GMfm}qeVV6IPHVHS)Pe5AN5#m6=KOoQ0@CjKJ+Ay)k${Lw|=1( zhV18X_b>xVgdN^GV;Gq=?ye~5K&bD=WtAAX1FX3=x$trg%fAlyM#bACaaxK^!=nqD z95gXLaDGRJOqL79@R6gt8&x3T#S<7S(8+%y{mz=xfxps45ausku*_rhyTF0V&)18p z`QmNp}2Qj zVU+kA4{C}z(vVwcVAn%j%70ka?QwNOLJzsOY58n_R;SdRy*C(W9RTb3^AX3J&eOaR z<8T>&ph;!y$1ZREsXL5tkzF zp}9r1OWop$F}J`SMvU8BVx7^i9i9%Y)MAq}0li(xb#R$dw*D&4Rx?|0(kf6*Rc#oj zq|r+DO)hqlkC8ruP1=#Wn6+1{zU`4)rha0HWccjYN;@9;VHo7XtZ6>jAe)IgORA9v z2pJQLqXNas2Z-ym3^54;Df#sco1_)>UY@*8;MYnjYt=xLNj8xjIp+F%D_Qp2QT44* zbUE&%GNSRqyQlTAxVr~c!d%FEHlFPKv(1NUkN^(Bz6^V(%|k)<67D0mJ|B1M)#GjI z$_)8g!G=-j{CN#UNGi~vW0H{he2}d2G^cCzr}1F|7(?;nT5SO_6I_nwmbj@{<7R$U z-{IvC8mcwk{ywz*VXaejj^h?kCMiB!y>p%gnFPR9v-$ATbgt26o4HYUbGT0G@`PQa zgv%T=hK^xuFSj=D@VMcX10BPCaLkXA7dziE9aSHs)&Lf`IEA@zxVe|!Xg$eFr)1hCW+s*hmW396t*Tqg_Yw(BL#}~`& z_?!QHpVc^8u-zW&p8z=`zounuJ$KeimIGfERiCo*g;G`&roi! z2YVMgr)@ghG9YS!kRWQ(Sw1{tMEo4+exl7)!71vN%)eI%Fb%NF@!cWcP_Se?zhmD( z6iTdFFNn+8;SV;~iGHjbt!fT3tb@q-pg(uOHt;YC!+m7Q*yYKY$x_54Uny_JyegE* zKI(R?-UdkF8}a9HqO?}RE)Bf42t*9h&>;n4H{ADb*eyPegH_>SY!-|G&THJ~4EJ*V znIhj%fQt4cEPE+NqqN#UTJ#V-RPJY74AjTMmjMocibt=Y?EK6TSbC^Kc!Xu5$2ZoI zbBVIAwIB)r2sF@{F4<8j(Y~P&S7vqNtBg}H${peq_XV-?Mloc=x%6t%X=-M$%Py47 zk>;n^Iu^9)s&5h>7Sjzc;YozIOBv}&weq=1bek4kh1{r&(*Q(9_hJ97q@CyW>4H;i z1pMX<_UNXJBG=_R!WJrTreU5_xyHaogLI351VA(ie8$Ym_@OV#j)oem+g2OL!y-vg zpSGQUG>BE&utPjoXD9d>IwGq$=4P64?i{$<39JW*Q;_r4MbKgOa;j~hBRVX6v7L3X z#!k#}1$MqR5uC&Y?47Cgvr z3Y0>3{Vep<6`}r?1zMtv#m+l_RP>>TQNx@{;A5~=@wt5>lSBM7Vm76ikNU|z#{DGX zBMB1q1N^Z4Tz9j%-85=z1$+PpKSnqCD6lix0DJrf;rdneX&~T8ThEyX!GFzOT=5n53ZhFC{VR|H6 ze}v__qV+GK#`9ZvOJz-t3c!O}oQIPvOjo?4nD(6u&EO+0&=f;_tjkT|K~UWzD-rIi z@LYavr6yPr08k==Rj5a^kD>4qyOWAbBYn1!BO>G!%}JbBZnogdn6WBLR(PYGnX#ms zA<7IPmVYi*n!fD^n|9)CwOpPC{nMf;83~G_qw09@AqNyTR(6}tTFvPIiDx2Gh2 zf+bW4bfLqX_2DcWf=$2rVxS?)Dz4wL5Ko1`$Ou0M2nsF$1OX!G=Zu9{_>TAui$;@W zyirGod@;z51UW$$2hT~A2@!U-5;a1}qt8&s5+zUSL!E?iLkKU&pCDr#{!C(m@v6tK zwUbS-Ku#_OMc2+vXYZtLpDIj5MYt&4z3u3+;TWmq3r+T&dE*POQ)hx#S;pxhf(|F#|fJY}QS z=?63^HvF>$NhVbuq9(r=xZy)%$E8S^HUN|y#{1zfW(YFq4Ga{bl!&0Uov;>ZV3$Gp zIe1Tz#1I`hj6$yS^MbzZ_u`!hP0x2520qxrt8Ng@T0BNO+Dh=Jw>?b={B=58RZgmWRAzO{*8;)w(1T*C|a$u>*gPe;2dh3 zWvJSz=Dg2BoDDe~!3PD4#6KhWIn)>nCvk}c_u|`y{sgNZC#e=gn@G~*sO|A_#{FMJ zkR<=oN948dnrUVism8kw?L;3|^4^(5%XNDBC9eFVZHBNGa zETU8nqEvs%MA7cal#mTZ5|L8!SAW=tip{n108|?_EQ4(ZkhqMK%w^o|ghhU4_BiHJhvbR!636Xuo>;nt_^4q6%xvam*nZ6uPC*688U8d>1KGw$ zG@WbBKcrk?+9G3hD6JEo#&?QYgWqyGR3aWQRv(1}9X*{->QSM|twSxOo-Qit21(*r z{#hs*>31BS%Ev@ecfzLmer0?APMiK+`A1#^aCi%f+n;>1d|Q3keDsu_;9hyiGE!b; zL(IV+bFS_y<@Gf!_O-=|QApq-A#xUHH&ce>^JT<9rW>YmVlDHsxWYXH6uJO<-r@T) zJ%41RR6POvlMv-psX3ADTe{5DX_;l5%p&0G5Mz>OA^nIvdAS_h7x4PMsrZLaTI6E8@ptex*~|5@0;ifs(Nht%#F8j4&YfqLRJUwJBnare_lcnR)E z2BUO;KBurv;(S|XfZ<(wlue#(!%z~~+Ms9ej%_8m` zlt^uJ8}2-l(st&o!nv18s4}6eQV>)x$WYmDjvoLD7ePb%&;WO+Rhy~uOt0QooEmPw zttrlo2MwaXs8d6nBaN{cV=wc-lc62nIH}1t+xhiX0d0IT#Q>VzwvS(kr~d=D_@~XN z2x&gi7l40M*F&FBb3)W3o>Wh=50=wUxPL?eBx-HrM*RLNXJt0C}5OO-)lqp&li;5+RcnbIbp2{a3 z`guJwq$>0GB*JX+C1DYz+D7hO0=n@Zw@`aN^PcjFOVH#u&?RXR9rX!-Y@ta)rxD4g z_6!~0bLMrY;#t(AWl2(FkdnHwDtp=C&b|O8G4HqXzX-II&{V#3+4X1dox7Gn<#*-| z_c2k321A5bv7ND)Fi!(@|B-X^lJ27i&0IF-(`5;`2J;xeo@$V-t|x}|6;&=L59xbm zk-tv_`I(Fm)=R&lpO=9ls6115XnG+GB0T;5kPuWc(!FVNd4@mEc&OK**%(nWu9Do zd-tZ)a&k`$k*H2h8NYKdCIDnAg7`3Uzg2@G5?44sWS~D~Dwbv?cdA_iqe=^(m`?hupEYD$KOe#?>w_%2q_AuM+z*9oBju5TsEYFyI@e%Izs|38ID+G%0kub zItr_Mcg)f?Z3jC`XNUdS5&6cz8#Vi$cC`kYy&un?bDK-_-Jx&gl(s>wV?ofc(c>g< z0VQ`^-6DRFN2+5cKsQYdiPkf;|7LVT6}xFUW?OUz84}WBBUd4i59k9Uw{BiB_CQo?LsNE-%AY~Di z?Qbp|pHhCS#_9Pof<d*=RZV*v{5T5J7-#kPl8AgHW)DdPeg(|Z5|kB^(=ApN$ra?@Eu$hBRLb} zrIWDATP+?~#jT|@$11;X>GVK(u8s zGskR^utBo9QN_F^ZHzMQSG-Nitd2-5`-IJB>BV5|8%dF16X`S!C?>gzNoGtR+7KyS z_>SZ5tl6-4rr4Vi&^wubhIq%O_NTjKcAM%XYM+ZVtItRNhK)6xNq_66M<*`fwsGsO zgk6tLmR-GYq+a514MUQDwc<^jD??UIgNqG|TzIH_(9o_)&bj-nv-kG(&Bbvgvff9n z%B#i_R_%5_sGP5!`X6U;arIwfvFy_tL+9Bi+cVMZdBS>trBFjw#}K(#@_(mDJu}is|$h&9JJlS;x_C*D$hPPfX!E zgm#ce0!KzWJx$Pi!BiY1{;xdZ{;e4qx2pTUQ&^~F)v<2Ywn1(c6NK5&CWh0Xo@*?P zYV^%CqZRBh-Pwp(XJ+p&0IP1vrbTRklvcCOfI_E17_Pd~pa{ATz*brlW|49AXp_?# zx^$q{VeGpd9;&5e9#={|&?Qm29afHtDoB){#yt``nzU|nt|(Q}+z}cyj{ov))2@PC z>-Ktun^^g70f&G%@8@nT;s&EM1KP8phHl>_TX3sJ(j`#)+&ZNQ`GLaYo6tD3&K|L* z&p3|?(KPcpH`3d$^Z<~5pjab6oH(O+CK6^2`Bvy5ViM!$2k?s132-}!jE#!{OeF#nc|FqE_-2>U5$Hf@Z;rY(M?!j?YHwW-taMC; z*_+zbAMqns=|mOeek^WKK8wdzs%bM}xr%TGWBaFMPBM&3oX*12O7byQ54d3@v0qjo zy?Pg{z&Gc$E@_*R6V`$5ogT?yPh&eMNb!`=ODCsh{61kW$|kqJlb8aBasR z_Ac&~O3emX_XYvTad@xDu79Y1BpI+U@ksWnjC7`DHo@$; za;SXn$(s&pYd>a+JvQ5QNdS<6jgI@5G#)&r8?0?#CwX$V{#MsgrR~LosF&s7bP;{n z6xl!FFdG>@vZ($OSvvT^dYh=c)>}GLbumu3Ff|`2sH!p3f-vm0Z$=y54 zlsN?0!2JfyIHiHOJeN$v$U1bbU@T zDP0^;hA5(x{Fb|NJI%u&qP>dSUs~D3kgcB2d>M?+^AUc+6mJYfsrihtN1{%Ko*5=O z#X3KfaHDeT^JCRl^1S|AR_f)g94KZY4^jqh=I_alcomuFV_2^d_a@hC>!h_$L88Gw z_6W@%R9L`!0Ad?f0!(m`1I{*ZVNuo*1ju#CfZ4`dpfeXYPl7{Je>I?Q*HZ4itjpt$ z98!5ufS7BIMtND(%WenQOa6vV{kB@e{Zu~a+VC9Z|LS1R-<)FDC*?-PZW3bo1PJ>? zi12EtSE>S>#OIeG>`{2QE`w_LX!QP4^HsR~k(v*F|(DD`6*Y6yV*PIBwy@LOyg*49F zKULYVy@)pxNV4ansF}wMFG@NiV^06US?to*%zj-K{ORta>3aJen+z}vnX1ujsEG2?XNx%?JhW-fic&RVH@j`LIz^aiPI%JjiB73 zK6g;1NErzZhYeaZ@&K8-*|1W@9|FwVHx$q0FCI%hAf@Z^(5tGZ2qHsZr#nKTXtupq za1Rg-JMVppRG&L@C&tTz5vFr;`kUIn^{oRKvy%PjV?NTCOZqqNPhMV%eW>7ey`g^` zzkRbemI4}DJ+^63A3XK?;$wTc__JAfF_7WmjbA6WcPjV;D>OTy!C0sdqoSLjs6#^R zx6MhV0`^MnRq+8mq3v!wzI%4LGMWLKV_m1y;cO~2EA>?7MWh=+1}qkJ{gsMmraJvvz2nLbZbhN6r)p0ce1+y{U!A#iA-Em$q&FDT_VeP zjjb<#n}RB&bhFi}7%?lD?@WRcYQWS2_y_~u(QL2O0h#)@mrG?^#%p+QaGqw^+05SF zL3Xf6(TH%kA{*%#7^Tbc(v`BANeSORaY+?*RZ=-g)^V&E|myY(}DT@qCR( zsf{Or6pXEK+MOMR<9giEB(A6!#v>5Z*vHt5$fhg$-RzaS{OR<9H}6RCZ7`-};n)3O zQxuy`2Wbr1V2Wn&>~@0w}`OSXTTSXv7Tw(FTYc}(eNysR;RL^eP> zUyc`crH6msUI;gCDz_gal z0K-nhgVM8r@k2jK__J-yh6_Wk!Mk5PyZ#2qeczlJHZQYcFLBnFm2ernnr(53&w0(a zt9IkCNA{59!6vAiY}EZ92{&HlUxEwn9sljj;E?_@>SOZokPSSG160aBzZ0pmp04#Er&ApwP2GkH^H(fw#+jO9c1}O2`ZQun5*KD@X4@{=AO}1EC zYa`hCt1tb)kB)1UkDx7Gz{Fw}*fIO1EmaKcRI>)k`-zz_MM!J6%kMEJ$}Vh@suVwG z)%O0Cm@y}$WJ^8@Ok(avaNMT%1#V^XH!}AE-CNS~K4x?ZFns=+HM^L*9p_kPo&lAF$Cf*B|QR=le7nj_k?S z6av}tLx@#RNl&0Yj=g(rLYUYyt$#}z!i{OlM7J85S(CLlSaVv#sn)`MwMH0-l}8)L zLBx5so&!`RvU%Y0reX1Q0kOTOC6#Y`_u9SW_p;_^_~j@$6McpZ0jN~0oS7mk%V6TL zoSfF{pJtr{%ynNHKKf<>+S~;C)>^5#4geh>4mc{&1QFji6^ETtnERo!%}wt zT4c*950aCFO2om-^0K<1y|RG&^=@O_Ze8b;F`h_hsvM-xQY}aLcw1&8>KOVYi1R!& zkjC*6<{D){_n9J;Ew6o(BgGIe|2%|<6HU96!f?_vILnItr{PZa^2P%&SF`N71-A7C zUyChwCtkj0LFI|mIw z6z;~c*=vvIwk@ct@h*BOw$4(uGv|KJ*kVVBU8cU^E|mG=j_}jE)MvG zN1gtzbWiR%H=eTcO*of1W?U+#c%i-tR0hVeY!MK(<5HaznAI}4mY3h};Sseip>Bs@ zSt_VkaI-47cafxD84bPy?rQ~@nZp$}YCLrWtZ#>OX&+CuR*O*1WT$zsc@x}uM)~%M zO5r46>IzeZ$Kui-KcVkVt2?mgFvM)*@t**Y9+kDT*y?zgsVS9Rb!)UJYIY*JZh5AJ zPRagaZMmW)!D*W1u00FxVR%|THnDk;x+M#lXD~Ie$^xd&7R!RlCTtWU0Nx&%{5-R4 zx#iG@o~(l(fhC*)1<5{=HF#&$|DDS0DxjEUJvzWtVk}0_b^W~M`P+l7?1XsKWikUYu^d`9 zbtd`z_1H=-k#)@Y?IvgH653Tw9YVGS145WMW8f*pWmAhN_J+6htd$}LQkf*mEnR-= zTa~({)KKG(K-$k*Sj_E59Ij{?JHc;MR#E ztJGd3WSeF3GkOE3zcbKS;QL!ZZDQ>HBhqewNn2~qUYz(hHk&&C>c76&x^mXBq{r8v z_izE=g0BbIBa5jh2+;P~^F=h7Xj)Fc5wEjXM%~N&aIf3PLs)Y5eC=BI5)C2}?|eU1 z9`J|Q6C<-eBP^0J%Z@%gy4gD?*MlAlXIqG+dcjN#_Tx0yN{$|;dDazpKQc)(Ec%H= zPXBoi1&z1$H#3)Jd)e_>ac)k?=p3gPY+UrhWYpAy{<8qxF||;%J!-?ZJv$7wt)=|Z`%sbsgr;{_oycmQ6Xm8VYXB~ z(m~UF;OO^J3m34B2(&X86@R?);I+4#f`fnoG%2hPp%i%SMbYgHV-6XMKK4fHA=St@ z>4|oYQRSMoo~r5J<$7vP%M1;=!E|Hp=n`_;>7TA`gg^5Aqo4BKSe1tS}rzy>6?=XQU2rfQ~F)#hYy?c90aJp`lyYT@f)k$CYH(&68C zyqLCQ%2g$5ryXDy$JRofE7cDDo&3Uf0ahl_b&@o`dQY=Jsxj`^vsTo?F7qM@nI}M7ew$(g$F|B#<+FcEB0z%3#9Dt~Z?V`^ zZ@kr869C&p#4;cr!w?T+s9)2$VZ2igMJ@emqiE@yyVNi3Vejoa-5~m%9M|qDfqwn5 zGcv7_5=0EyYZjR7ibR*igAWkImCvUfRq26++Mn9-KtCnHIy=ew*GKi$ti$6MRiT2I zOtt47_PgBu(eqiB<5}BM9gm2H=Gim*o;74kXV$vH=x3jA|YbX4+0#g%31 zRjORo`<6Jr{ZpR%3X(!ALBo4fL#}$Aogow~KQ1U`@w5h|qrz%OO2+$KZ$!SSc_+KQ zA#w03tv%e!FiG_bb_!ig#j z5h({9T~TV3>km0b@$H9pkct(MqdQOt)T!&*eLsJ9dNSM3V#|hlG^!^}Uko7YiCH zXpZnyJD&(DaL9rYP$}kbr!KN(wt8(+)&O$0Ww6>)x86KC@1TT5{cHAd+*m4%4t5va z$SH&*ZdZ>uKi2WQ7Tn&^Fa!6djE`*ESnRj&2*eNIAH z1oFIj0;uHI`*OY0=gsIM+Gr6>=AvC5gnI|B2|l|^gx{9nI4L?4=Xo;hSeyV7;yEt| zLx*9RTudCD1vkM_*wPyK7?i!0i)mE0b?-($LQ6-hUfzw=K(*i3HXjAm@#nD75!W>k z2h`6{N+cB4gF&wDm7FTiT?wnD<+k4&X1px^Yw(GKGN?{!Y#b|xbf=--o$zs1#4OW~ z?3$B}0Kh8cokYcy{Yt-@P}l?OdQXt%BVr#HXbDiF6cK-GNJU-HjFyp0=AmP@%a^pM zo&|PK=3{~m6Q|1zV;9PrJ|l_xE{(M+q=c61E&2y<+}$18+&Jc>TK;*RE@60U9xpU_ zW%Cu`az3VGlmODZs%|>jb+y)Ff@DxjdLX|Nu9LetoUPMZt~+t8?~4vHWeT;DN6Hr~ z78Kt{C36(w`S-lia@R|o|M~lIX&C?elPy~HSHd8NWaN(%LK+ph%zo9x3NlPRhG-uS z>ZA7~^!V6mvR(tubXZGevsg}syvZH~o#J1X&=D82i`hSB=P1sVB*B=0L9-Uze-hHt zZ1c{)LZ}i>RrN5u_2r5#uYr|kJnrG=Zj`x71V#CWuaRY=w!RlSZznJ`p3sbIv`d_l zBrMpZCR=>pcXs^%pE@{haPOjCwQ zMUBopo%4XE>pIUX@8lgD6X5TejQ?I9H*SsZfS>(1);5R+B}8(S>FXLOwT(~1XVRA4 zi+1)O+If2K6D2nnjZ%d)5pYaXSo9^wpix+#x09VF96^z_oK%>>V-YlT!N{bKwTp78 zhsdgPf{{d@UVw#Q(*U6L25e9-$wl(r9(Cc_m$2yO^V`6qaV z>pY4b6$PxI@x*!9Oza>EUVsH5T?zfq7JsmIV#(e~67J|Qo)r_<4q@jmQ@)y&*qqOY znG#hS6d4sVQ7ziLmFF6f2d9QOl7vFP6&2@!^E25k$rt4i@gZ#GsU>-KZ5dhl5AV7M zu|K77p3NljO3kHw4JQA*Q6g-j&j4Jd!<+_>{}& z3Je*A>eK@XSUkEW-qEBI*cClkrkB~&FVWWMji+Ci-9>@mVH#Ol#eon|`}rb1z8K$F za9H;Ag`ye}gt%w=2q*_A<4f%9+iz-$>+^+K&Q#skhJl^?7b2p2&igw~UHRp?vf{5< zEEH}Y!<9sP9SXSi94P{O2thxw6Iryw_PD)sBOAqaNSY5R+l_fnxZs#$hB2t*kvQq@%MtfYT;uL8I5^{dwCpwv>vtF}sBKMN zy47G>%rb(7N$Dvxk^JG^d__4P5I0{ZnuL_igkfIAjzjE9tP zwaQOIRWwXocptz!%Sn%+wFHp!99}Tv0jj7*i0Ub2);n>RJaQRVRFYm&bntDmRf}Mrp+NI%d2l=(UnkL+`J9!bVrgpKUjN zDFHb_7vI?QBOS0HDM$w=RUp{=s*{zURg-BL&#ct{@iI4P7;YT{lsQ`*5k8s-^-?^o zrL|EG+TP1!1Uwj6k|UeFia*?D0{#)n4rsl8-OyAv*ye1$kxQ<+Dq69YckZKk&g6Z= z7Xn5@oXoBB)nzn@CW1M6~aCA8`!p!kKvoHzRE{(Ve` z#cNkm01@hXZ9D6CE;-X!M?;8LI^KPD|9;_Bpx}*VC3AH7aJn++v6GdZDZfKumnsmq zwCgi9yp5$$liKSgceyG?EA&#Y&mWnz&m(Nct-0UfTgwV(c|S2RM97X{+44`IQGs8= zHuSXSzKowG8=Aoru*=nT*9m(;1sTV@iQH*A)&=`;dRHBP-}*Vl3)#cuh_gjk__ztf zQ~pqhtogKdkBR zt)VcVR4b#3!YXN3^5IlQAZ^6iW=Qe7$E!KY-q^4|y)H}Wmr_*>(AI=)vCpc6V;eBk z(NrxxsqBfi+7!FTzEU^K%0Fq?I+M=5h5{%_*|-YSqs+pgMuIQzVdE%=%R$yF?cb zc-BOU0uFd0hM2D^_Af{wo(!K_9Og{?b|sTZF8%UO|C#3exA4k!wx05fba8#OMnp=0 z@`MDBCP(2VfTYXp0&I1mDe0B%Erte`O%nC%HZV1+>yOC!tqJ7Q00C*W*ja&e z!R2G$nPTu6t@-$L z0hHd@e>GNuLlAIUc6i51({;X>fTn_A)r(EF05m`!=F-Y=NC>PTynqpPqE&Qc5uDxe z5W)x$Z}@P|6QoOJsq+9}3z&IwLBn@P=i(hk9nobCo`0Jg!v-^hXJ}L94<}oZe-+nKc!sZw0d`FnZA@T z;S^W%=;Yt0&{0@9lJCrtd@IeD-V^*zVK{jNE?yx6HNKHz?{N}DukoU~KGOOm@UrsG z>SKukuLd>tV#cc`Li;SkcYgxe&n(KvOI8iRA)uprU%>NTlhskf>hVQ8Js|hromXlP z0a1p&hi4n-EQd1}N<^BnXR|T*x5Gk4s$k7Ph4XT?F>;J_%E1{@ zd|_jK6Ip43;aW^7?9hQ{t2FoFwgI`?Wh0GAT;)Hw9NGJqf?Jf1rk6xx`LIoe(zKDh zl>A>i{9vaaJ6B7#ZVtBM_{;yDtK{c8&derpG`#etQd<;VPBuW#FjQbt@00pZi_y6; z_F8HqU43uUnq=P3YjG33)y3b`C*Abkfq%Zf*F&x`BxCQl&F8&v{#E|yOjDkYu?suj zSDjad-IPgCj(Xn{!jMgV_mBf2~!yFs4&-!F!I z15*X^4u{B5LCi{;;Vx>RcjYK10K=1*axR7<$|4DsJ!VrrV9p>bZ894Ifaueg6-~wQ z;wUlGwT{7*M+mB|T(`>rB11C?DIJg6sY?^uqc3TGe>O%6*L@+YwJ&2Y9U2NDyw^-t ze~W+1er&{t@{e7-!WioiC^xanfH)wo{JmyFgH~OP z_LO@-*Fo=ffkA<|;>^~0`-mL;oA~3A}$0p`vz1V{xsVEthC<%0Wqmznbh>_{jrxk zH~){DuV%B%?H3>06{B>|_$sO$2#9#D!?)*14C4RfDaSLNZZVY5$=EZD218`HR~Y^5 z!dT0ioWT-VgCn;oC!GUSNE5u>EsUf=m0mSP;$8&(4m+Jp!rXG~9XnLq`{`=Q6Ng&p zDLc1qsk7@%Yt?FbDi{chlmd3)ur1Tb(baP9VwckdXOvG6BQJp!P`B>J39Dm)<%7>G zjw#f>nCPo@T2DCKIH9<51w`RX@kr9yW@r@f>x`l6rtfoN`(B`&tdmRRk8qbW4Tsh~ ztHvh27NFl~90oeLnmq0B?hSd=6Z8lV{7_R!YGti!c|VznQ0vi^{THa(rl9F>|82wm z+3&aT?YGbB4}U`po-7ak7B-`eEYfU?Nz*!X4*AxHJor#DNGQryyEZ?e^TRe)2!lqFA8d&Y+mK?8Q=Ojf-TQjgE3>K|8OcDDKZ@) zJs8p%1z6yoV-O;(tUJ!wZ1mwrm%a7RN-2B@qk~XnrjRX=ty+8G`28^K>Xwa%33(~4 zzZz7`;ZmWF7mJdpEpLJ^8hCpE*C)LeRfo1fM5KbB+;$fC~OhOv56? z+QZe5kMIX-EDAJcney>91GMZ%x$<6GBysA@1!$6Y?|0AIt;3sNof4<8dh~GF3B^6Z zA5hL_KTjO!WDz_zK4A0Q%Iuv`Yn0|dR(RIXLM+Drn*b;qUCR@O| z5$vn}qV9d#+=d~`=Ch!DKuTQ%{0HK~T0G9`VD5~!-_}J1WE|<&p?pKfkbkwF{M^nj z+tfk(Nn$!>Q)S%92NvX>%kB$rcL?oz<8&*2$#s8PGBsnDFhvL}XUJByJ7+M}kpH9T zE+3kF-!_1+doUOsI(l?SBf60z9UUT$l#~%Fpz>P~qXz<#I=TcwKtVu9iiijXVvkT! zQD$R(d3fI4f583Xy3Xr7K1T`VD3CmAE2c_*VD`_>{2{Q~4w2f>w*JYEc1`sg%RC62 zmJC(~)Wzz*aGis6>R)j@v75aB+>14iRr}oa>eTHEPikMS>7Q`D<^QB8^GeUTFRXl~ zgn|>Xh-956#nV&YQWJ#Fw=PzZ-u$nZiTxZXI-+iu@==jd4+kR85!__DqZs?(aI7eyMniTIYk8`nK>gLPz}>YB8t{{S7qRlfd^*X@|O%7;Y7dyjLV2q_)1d`6AnQ>{Qsty?SF*1D`C8lkF zJJU*=V1lJZ;`j_Ql)Trh8}nuT-MQLquwmwM&;14_TJOkUrD0EleGT$>;3W6K8waR@ zDGYi&xe+3!=1OqWVzE40_ZX4R8iqo!5`JCyc$T)Xm{{9L56RQQYsv8x&GCO9SPzE|R=uKxd6)FaPytaKn&x^sWt$=jvS4<*W`k#iWk z1JikS#;HGa0w4bN)bU?BHFp1ob%nayeQAqheH!>!htogolKOAWiR;pr`L|h9vn6Vl z;neA&i#xz-lmti6il{ARTmfq{v^v`MN8z;KimuG;J!MoDLTi%HU?X2k4<#sM@PRop zbUG7+LCDM;%=N8B^hw!PDj_v*n6IHNV#+r1wNH+WBUp6dSdOeS4@0Waqb4@vyer8w z#mBeX>LuH}$ysF;`vH9*jKNra9cICZDV;W}IS299dEeH!Ly1pa8i0S5nLT{Kv)jFg6s@S< zxgy%-hIe2+ml%eI`}jEyDMK*1sBz{Sxg#4?=1qeV`h@5~h1*T%KGLe(Dqk9jMMwsm z`D|Z7G5V}#?(k)10;4_003XnvCVd*R9vOy69p(JmUDD)`&&!0KQKAfgGEU4aHdQBDaB$3ms7`4@qIM*fj|rM>^EdM!WAc0s@~Ygo*}p7m)H= zm?~TOCLUQ?$xfk-DHY&tzH+`lC>pxAV7tM=Y-ba&jx`(X`Gv|A|3YrbwgYHosvHTe zG}1mszw%DL<dnsDfic8J-8L@qm_u_Ij%(vFJv!sIvD|cJUO804kKlXox zh+cZ1d`RMwO}+N$@GKK$S-UJ_ATREt);+kqs8)4MH5$*JKp{v;qvG2Hkeiw0rQO;v zz@xACzUR4KSsW^xGuAu&I>}XJBXzo(PSc0~peK2-lk>%Kf^6OGne!#?{%LomSed;M z<*vq0x@1CpbM4FnOrJEJdw2HN)Ne1EnAx8r?n;kkBbySl3CVYkTzhg783-9Q>fv&Z z+Go6&5H&AKRYw0>o?#IPLix52(uzxa^AvWRl(D>rAc1KIDrz3A&P7}xtn-jh7%b-= zvS^eLEdQ5ar~HK=vM>$ID|oLMrbUALo@gr%i z#TaGW*N7{RNu;>d+$Xg-4B%+-Xa+Y^)tS%4a#0!vvE`NXDLf8F6{=_@U$XSZ)S~yU z=BaTnpHJD65`S~G(}!`AnF|CykGH3uZXXm=GPwUuLn3Awu&yo*(9FRb8Mt zMG{FVyzLTB@VX9a>PRVmeqZf!6vQv6QT{C=M`J>1ICgy;F>K=||JQ))S`bR;^?0cl z*NgNRnUh$u@qxY4W?f0v-co68a6(w487M@ zNrPw(I$ylh&^q$suC_6K%sSct>P&pEn{ztb5JIlb+l&AJ35b@>Tnq79dtjYy!G?mD z*8M_MX?fYsItfOS1vkB~M{-FY%q^^*jD3>3=RX1Z5ylYx)`7Y4U{Z?(uX(aPF4Z_Q zsqWv44wsln9WH?BHzan4A2?UJWa}^lOVUfO(>`-g;uR@0G1nz3l<@UIg;Wpi^3#S} zSFaC%@bAI%DgdQ}sib!5@Taz2u&BDFVg`ygc zL3SK^Dy-f&NFA^5H3Zdz07q#0rD#$(!U$-Ks!A>_`=IJ{{xLIC#IR%h!@J)s%ZHyO z_w6&cGwNQsoy-X9$&9z#@881GE+c0=NW^NxK=L8mEXkTd9qm-5xg(gcv?&@)zw~xN z2yx>boQb-F$2r}UpUtXR`4C-x{<<8(K+6!`<=2_J2PWNDe>$7b6B zz}+hjk%`J=WSfl`7N<2??za5#L3cwdti;yIXjkeJBlTM_$^NN5w8O5>>tyM&wy5}K zOltzl!n6Dvws96l=*E3ibQ&WVlASYb--|vp(P?guXXRN&29oU^C5MbDy=(_urL-eqkI4d9?b8g= z=i#!1A1Sc-Y}^tWPnmHA;#FKuX*n&G-&WD*GYReCYYp8#O@ZaJhv*#sN!ydJH@=w2 zc>s}X>tOpRF!?VxSI}!?HT}Mj_3Mj${QnX1qz|sP>Z}HQGa6#QGMPr z@K7#+)U@NqFQpwa(QyiI&>kEUkut=jaVHesl0u!2H~8Jz7HyU4zQ#6P3hgI1wf$2+ zv#!QZK$Q(@f$xzeKN&!ca4S#|nGsg4I8fBQRvagqrIoURGH9DrP7nA}43)Kb^wEwK z5B(Lksdd|>bl`TA_KN_I975A2AEIV!@N3!bm2;uD-q_t1r!?B50LZ7L&DqT>4ou0Q zc2gSgijfkYMwa0!?GDMLPqxdXGEHHtlJky%S8T0$3R z!FP%&9~6rKgA~rK-yN}U-0fivs82rZzkCFVIqYNQVYcLzG zfm-XQ;!ErAjlSvch}d3s&GEJ@9`_d+qA)~K>gBJKdu)&=FDSh&Q+I{X;8%H=Ns*(L z^ol&FRH}*5b1c zPl>Zw40}~+wP|^_$+fIy=eiqolO!9Sr!dHr&rFghP7tJ46&p5)m_@bJIB%Nhk2uzg zmoCtg0Blsq&-5(?%b5JY$ymVR{}j~Y5Rm^b!wI56A8Lj=c(`vMmu9oIE-Axka*G+j|-H=dtACjG@j z*_&zwQ$B4;##@ewtvVjw&DE~Z&eG|G8CT_$eB>s0kSPA?1}yGmgr61-g$n6JgsQ?p zs=vA)5gUcHk0hJTrS90@l`QoWt8Q}!8h0~|{JU==8bk`eC=P}Yp3?|<064~m!Y8VY zTmh$IfM0ByEcp?uE-G!1+>?B4aJ`sffwmG0pnU1()pf&fVWgzHwgCvjT&`MRDWJ? zO1$g<-Pd;M0bg7rXa^vM>yfvAC+7+j>lT1783J9&vI}C@`bimjE_esBRce^I@7P@l zU|_}Tv|y#X_l@uV=V6r%P4!m_o(Ef3;H}r+9{n9bcn|$JSw!e3S)O1hYkolp*|oo2 zWHnvA>B>+9a~BGgQXQ8UnUs%V!u9|@_be>gm4keftY4LCHi)Vft?MmN!~J(VIpYz2Z;QIwT-~m%sI?CF_cV~RJG5~{q<>2!)LZmhDI(5W`#+=K z{!=?PuNAX*QVf~ifW7#glj7&DLWYQ6NwtPLYn?`>$p>rs5(Uh2t|7Q}0@7Om)*+=J zR$(YKE`x5-3Ql7kBb*E&m@-XOl*CO#Bx&_`Q*5D5bn{HGRB(O7lv--bt=)-~m;#v) zp?w-QZob$UJX4^A1fiOeJ*pT4Q@59x3ZH2^ZwUqrQSbSLy#J?OY+r@qeiJa!cDO7_ zLR)}ty@$T_BhK1A6G04-^7UT6<7tx@0kg?|NtROuA|u~8vBD|NyAUqxpADZRDgj(| zYbp!3Zz&~I+Cc*u=xXMkhan2{^$P0J;*Y)nSfMuql?_!_bM)qHhlOY+%g3)AthGaf z%#Bq7e?ZN2L4WUhx{;b%ost2aW*dCW7KX#4s? zTu4biS(E@;=ZmXLArAn;;3RO5*%|-<*Z`c=B5zI_qZim>mURCp-|Cl2>8#gRTu({{ zE4jZK3%Kv9yzoac`{oKK3AU3A z)Di$gCs`l$OXyBOweS?fjrF&9hhhLw$UWlbz1vT($`l&@NBAmR*pE2nKCXjF(~d3* zm`{~84)JFAbv{nl<%5je*NpkQV87J7-kDw==+&i&!xfU2^``OoE0!ygnT_EuBFwMa zmL{)BHWbNLj-_{KK-H>@j#CfMG8m%a(Qp=Y{cb97W4ymlWOggYF=FdYy-2mzionSG z_77brlQ<8P-5Bs>79?};q$AUI6+Mzy@r{be`c1=~*Lr8Pp|9IZ}2$DBh zdSj`mP;ZBK-wVQcnsYtz`f5qf&AB*R@Aom^J9>-y`jS2E0ao$8Yc9+`gPC^k!9|Iu zfwb&#=D7>?r``arU11(rXn&!h;fCheyM?6a{b&JPDbSP`z_fcD$b|(#X z)v-Jgp_#6>uI6qBElJ9h81MleR5d0nIw9uU^(I~r4zTWxE=rSE9BwMI}Ml(C>Q|MS-)rqu`S>~?xAbn z2tD~B3ANdxUlTecakWt8E$M)LHxJ|dN5$&iJI@Y7m3M=!I&)2;5C90!ti+Rqfs7B0 ziM~;*;Vz*T0M;$+Glxvm8IH>8X^|Hl10zpbg#$BQjioz0k$(Aj?}t-oFVXHF*G6y3 zqeSfB)yu}2@+Lm2t^0Y3#1$Fek5)JLDb9RVT<|Y4*e1=LWap<5r5Kq*Etz2!DwUD& zNP_bjhEb?YuJ3zTTtW}>62HZ#cP$}D{?AQwHy0^mK8@zBdcH2!=H~c%OF{X~%S4qV z<-Dz5l#Q)JWhCz=K}R^&0Fi!mOhzhUcuKe<`I2OH!=_b6?YHCqnzH;VB&QK+MMlPe=8N*p`GONI%yW^zMLHVE6CmCUANof-Y7}zz=ASEio%nF( zM);33#_v)ep>%rt>F2|d`sC88-$xN|?qeitntm&OtBF3$E0!M23@l>myV_^)6f1>W z{a0C7cN#R+siY@0pG( z;Nv+0wHiOWvU}u|*9s9u7`2ov-T$N^+MpsHW9i>;46m>vW=d9$^mPvj@vn{`bi9># z`BPHiZ2BDdzIvhZShUFUt@5s?9fujv%*h93%QwfS=b$s-_k^wg^xk=OiMYN|oDY2D zQm$rI*@aXd^;bPG1bd8RjULyE>!mjb-CLcgop zfPMeoY$G;Z5hQlj|I|7CY>25w86F=SOZqmwYhd4m-Ra4_l$>{>5t)+E%%eB=fKJbl$eX|#=%Cg~ ze*$3j0#d>bM`TTAVqqDP^Fg#^CZw)VUB<0CW$|tsw#|L?`ggl2WWj;|+JQjEvuk1| zmriy)?T@*q_c0ODJ}0Ig$TOcSg^JW#FQ_;bPqu|LIo5^yghJ63I{ugaN8fupS#A5Z zp3M3mwDW@&aYW&BQLrJhITDcJ#FC|=tmptMfQImcr&9;K?rNoo|^W3`{N-0kTD z;~2BuMgdsf&aa0!D#@n|V22LuAA{;HFJdg7Rwfr&U}f2}`mWunB)C{WS*4rwk%0wr z&gfc%Eh>%|nkN>{tH7EPLyn2+R}z2`r#?<8p^OU*mLaDddKRL@n{#E3RhvBZ0&q>G z_y8Dh;4P#gg1`bH-#-k9swr20AJxiSl56W$tOWQqWk)=K%8jIx0fPfP7xPh{#t+6X zh-;3vbuy>yl5QD>K$GM6W77)x8{ar*YEqQrPu1~5@!I9yUuLg9_Z-f3J55V`W#t-P zpOv9Ivv3h3-NPT3Y(cOH?a1!gn0Aa76)5I~6GvHXJ`{H*mOWf#A3ZzD9jBdqQqG)^ z+`+u>L7eg+;ow+a)k0p^37#s8+%A}K#3F6hG>EN#k%cTsL#3k=@#;91Wa|Aj?7(Zx zLnvb8M|HK#!1lbnNN!k)+4D2v6wUjpzsvnwPfii?yydTk)`T|CMAl|33QVxclE$)A zXX*_=Sos#=I5IoXErC@vw1GQRY#R9!Aa7?NTaOPHT!Z|0YRs=}FVgCWMRcqG3_W<0 zy$I8b0d(3%Z^R7Q@_nwrRk#wj?0Q`@kH<;H_4MYPDA{eNJ+qi`?S=aD;~F2e&!?d8 zs4bbMIB8_?l`O>rjJ>mmTsL{=FuQzerdkCJ$5;_jluqrW{0}bn zzpO3ln3XBjDyZy%JvZ=SX?T-%Xq@*%32{n7+%xbPiUP(#*u5~-LunD{H zI~Q~?i=mdL=0+{e3>{p_-B$~e4^#pKToErZ{GO={7m%Pq0+4n6ZI?(bbe@8E>oDd` z0;IPLvY&1`AXKB$@SJBaugbwJ-)p4ElbTQ@&D*$Hqe^9Fi-e%+f((sr_t!ht!AI+{ zKO~W7xG)NGylFsgGDXk|){OxSbY-aA&EDFCmc+tHVTgHM>ZC#u9kOSW25(^7Bwy%* zKYB7LR=`{4e(Ev(hLi*UFT+>+Xz=TqcY9K+VF`+uwy~UYCC==U=L5( z#d5`tK&dY{;Q#^4Q#p3&ZM!qbHqb$;jcBcqEi)4BCSu`|w{Qg@Ye_q#(=UOIuVj(p ziHFcDyubTTH0}M5d%Q5$6=GoDmh-PL*F8ldM&K|tsdRi78$BNt`5srV8|mstpEAmr zD31*SOYWBIsIM+(|I7STRR4fAw7rq@!FWKaXl7DtXNKM7H)9j{Dh8pd1l${CVG~$T z36`?CCZleg3EhdNd$8Ks8vcs-XvhOFLJb|HIV%Y zK-t%M_Hv;mjd6^sB<|#Y)Wo~9AfX~rKGSyHpp-OIucWC75|31#zdt((7sMgfiy#jw z9h#KM{ur~>@A;7_P8Ss>IimkGnbP0*?(T?g2|BG@&r~nA)6K(HHw(wM1L&%JCmp@M zR4=yP9v|F6iIsM=18;ofoOM|x?Qg7}C#ctXJ#Txs-qHbjl9``Zq9EfMQt--^t^HyU zrYYca>McV>E(YJGd;^chaD*hpF_Lf*eQ@C0m_jdAV z<3VbSG@ARiTif48q{zdo!F^(NXxiJjq-4$xTF%TtT@BS!@X(k4;gS~+H$+4+Lq!c* zv=8WMVB0fQ8`9h&ynPK--^CI3%a@iJH}&hvymggOF&5P`C^+(P7W(`NCPv0qL!;$w ztV*fLWAl=0>O3HwE&p79o3F)5C;W{Ag=fliC?OIlN9i1c57k?Wsj&JQ>)DMA=V>G7 zP5CB|S<;sVEgz1HzH3OF`F#wOSn}aE7FVDD=Z0-z?B?`7r(?Fo^Bn59#Y zEyaZ@+r2*-0*c)otLI6F`U#7;13SX{@mm*cb8O-JbqV!KdomoqJdJpeJvb&FLosZX z*Rb|bd*8#s{ye3x&iod^2aBvFUbk&({T{NJsc;TasrXa2&=`Vit&BUT9qU$(WvQyg zRuOEHvdd=dYX38g=f<(tMIjN)p2dA-oAmt1vH*qW0teG2dX~#vsJ-;WQ+xAsfc{j{ zyt9xcy`ckDX`^K<+J+ASARtJ9?n=$h?-nca`RW%~EVPxfxy4@n$n*CnEhS%Q z{Lq3*;;tqhdiwJ}_<^~Q9g&Pvh`w`qwF~b6X-bhycVhxP?x>(^zXz_WXJa3@3aRt4 z@oDlMMZ>WXVaOi(7}{Y66zmC8;`o&1Yc-T8*DB#$^rmz&#?Gfz?K%Qf zi4RaV_@BPt^Pff4X6r+DPV5wbzn>qY=_;qF`J@fsj~Xs?YI2-RsSpG9D%rP%1{ZiR zZcAHlMVx30m&;zW-~W}I-v|UQfT~~PMnhtT>to6RaGP?<8Lq;e{=K&nA-8syO?a#{ zp+a5{O{79MAd9v${RSRSXDenyC=5qS4rHotZ;pnU5dl$4K!iimF4hzB@QIvIJjzEZ z6c}})SGv&*lolf0_!Dd_1n&k2H3cAvFdVUg{I1C#MlkZjA$Ezao21io)YD7r$Tpsl zHa^13G$M&g_ru|>7C`*-5xOMzEdbs+3cvZ-qndm$ZxM(!L|+qf3Jt)=2B9bUstPoa zI@Lzc0IV%kb%1H?p@HpsVBQ2+Y)_Ig7xK21;2x%)(;Ng}r2g-Ri1{_M)4j*FbQI z$;cqVds6b>HBw`5T2#GqM@sawDF*35=GJR&g|zv+c>?_jUaAKe%|-9X`(v>oF?qj4 z-U>0T3y$4ak!J)}iw=6JP2R6V^#b`tqto!mV+isI%Pj!BGTiCj5)R}*qtF~J7jPF; zjq@JkNIdY?>h3ZIY_HIldkdd{FVu6;5=~P-7OIK=WfHgnsy`1pCftGb?z+5A3m|VKgGhpg^U6<<;K2q#T7vxC2|}E@6sJ5bC7NioZuY;a zl=f@38C3*7;}e_>k19jJ2@^TkM&zAA^Bg==yyMLN3E3T++kpj%;0nIvje3X2bdkqY z6oEszcO@>(xGBBKdjbr{8W!gnz+F0Gjkn>)d!P{l_9^dX@buoC$H0sI&10>2+5&J8 z2*3dfFCoH?zvJ59j@-Nj)OZXIR)Hq2K&+|MrdFjO4){o$#_Vg;59`V$KBzWEX&)bx zV2&<}XltXQh<)Mtd8fBX5lLKeKRVr}MP~mySmk?I1R?N%0KAV%Drk@uW=S5pk9$Zd zmtg`c7f`!0DiZ+f>44D)aGC%-z$A=jf&ANfu>#1c>Cit9^Uj~*e9WoeY&BausTrI0 zzmmmEquYTm;RTwnJ<1xmx^Lt<%AzZ!>UVyz)RYq9rMWO{B33UH zi(SO_3E=c5WHGIp-Ky}W(lLE9}Y4 z4@K0(n&-E1s*RdSDhEE4>c2DE;;Fn&i_qdmXz^W5S766zc-MI3>_Jm<;a0MU zf2_ze0lFX62}p-3(L0ei;2vHlqN6;e2NvA}BKw(dfwNYok5y~rpV$R4Y1c}}D$s_q z>8vCC-}!}KMGiic^!OUQbH1hPY2FDvt@@E|VC@%Rf#E<4Dv@=#8%mWotu7pHa4=oO zzQBpx1t2FrBfiP$&8esU>bU&I6Q;H7jrf6RXpfs5cb)Po>WHrSq->$X14g}8j^Tkq zszbM^c8e35XVY3Rpe*lXoVr1YI|)`uN1P)e%NWR<1$d}IP!JKSd)VfoY=TlCKqviHlAO!(P9S#eT*# zEx)U?xiipW~sI{$d8{ zp*vb!Nr!s5!bi3N-(A6)9%^w(AsU9aaxYYw1{)yCS$0u{# z`lzV9bW|z*wr(`uS*3sJD)cb*4BQxhn4yyI0im|z?SE>1^EzkZ#8WhIASWK`#fS*# zYRdrBMI1bu4>c3gN1CNH0Yu$=@Tu%E{WGq1LxGcd%HVplPx$;30rhc4cX#Rmm|ggj zQuHHZ3BE0UI?!vQot4{d4!=G07=G(&M{!RCT zfag{Zl`^F$$D~xcLh&7Q14Pgs9N3fq+f|<*eL$5h+{)Ozulbz!yhcNfW;1J&d}I-L zK$z}gik_vuy355r5#V<5&b;@frv}3?ib;o3gmlJ9&>6#$=zZXw17&nd`3+crbxk%Xp zm#o>UK`-%NF6}#C6AI>mI5bRayhRV@&Xvuf4qsG)#4|b<+HW2ER`Yq?x8jL9z0@M# zx`$4aFZASSYCGmXB7=>c(b ztvylovA1W?=3`%4#wb8|>v6ahbkjieB~|2m@JHKu>`exEkKEw1j_ADMBgFNFKc~~~ z&T9IKNt8Z#&2wXxSl#1_Yho8se1^pf#-#Mc&v7qT9vGk*25_O6_YE*)K$F&U+v&eC zP@wa3t%SwfYfh6#20k_5{Vi*@cppTRpkUkxeGb3a^+}BPSg-VwI9HmGfB*i6Th7JE z7Tip9XHr^T?%C6Zp>4|cX<&lkt2ci{`Yycs{qIK4sT|5#w|)(?8acd8XxY*mT)XCq z-DAlhU3VqM1s}A{E8P0_aS`R?n7cd-mk;r_DBE#+mqz2riXenc@HKPz_{{rHa|3CM zia-_N+Dq!M?V_y}E|x=p>hXc6TR4XwHr!Z_56XOS9H~+IUviMgi$|mRBjysKaP36R z?tCU9^whmA)E#M2k>7tsUM)D3(?S}C;7R{|se8EhKj7C-Ht`plnm5NedgE{F!xyni z$O;lXP6v^z2X~xVOb&C-K^#fTzlQyuarSPS!y)iX-O&~jvSqif;5mXd0&@nyj&R<$ z>)}4QeLs)IZ9$xW8@tGMN8T-a?MW1R6F4|+d(5|Y_>O?NNTdXjqjF1Eq2#$tZWEi|msBoN#OG#Nn48pYHQ!{Mb%hzja8KXz9*D~-jki@(u zFcOlO`(>1%8cS_q;uyCoy9pSo*u>s*o?j+kp1*^tTL%p%8TmJ@Y$PtH*R- zXJ^fGaS90j_If^ecs-PaJh_e9yu9luw0hmV@GErT(VWpEZF{#uoqf~ZMM5dCg;wjjXk^`=*ARH_t6Em1@F5Gct*EnnAW{4$!jTwIkm{eKs%kOYQ?a3o!EZ>`li@RE0m@GX&f`m;Vg<6^nG!`wmR{n>KMLPWQU_fdif)aP7|ZD+v8p7EU~U2h)`n(6mI` ztn6_rQ{}?4^+Ukgs|b9x9x%G6k}Z_XFqT%dK}!&TQ$HKr79jPo()niaGn7{dP0IsXgNOT zmR~M6e*{G&?);eny#(?UgZN5r>7@7TL;lrnv@6Vyd z!JBWhL~o?s6L5~2Fr;Q)?SS-lUcIpFOzDP6XGjQZwEi1I7RW!@<`#bNpFkTFY?JMz z?OY)e^s!mYHoF3;rLol}=16a9j9hPU?5oUDC5j`8HeCsKdACL(%FU+;Or#Y-33<>n zvpC90&BT)}O&0*F=uKdSD)QrzA0@4WZ!}0q*g%C!Q3P>H=I-E>x?m9)(Tvi`?Re(B zk=@p3@J1yrz`sdLz?2}4p`Ga<5m$h@csLJMFF?}(6Po*eOv!H$Z<)Cof*m5}eUb~5 zV|EVQH=7q@V)j-|Dt@BEjc{YW#@j%wCzmBXB7m^0WE=x+FNH1YnGQ6DZ@#RrsfO@D zOGfS*!(%0fSXV6SB`BW>9x(55X4?F@VC_bY(I1nJ@UN(6j?V>S#oL0T!~2i&K{Uoy zV;4R2w)`Z-%y7Yb6Z-Y*xSWx1j%b>aohOgU37i%alMphrRK)yJ)j5ae;-t(&IW}d6 z`G*8wl%H)QEDwCi_fjYnjVFzZj9+C3T~I~Z``^B?!GlN>1sa}1B(yJ`T|5W4sIaI+ z%_wD@l(3P$MRCwi3GoOLL`e!s{AU$YVsn{81q;f;9A_b12sR>rJisy!d;F)>SI%4?ehgq}x+3Z8WUxe#uLGezZ-rK6O=n5) zc@Ry`3`5*j5pGUpoh~Fo#R+&vgBdX|;u`bXG6e?qFm|Gh-Et%;ve)|o%PjSNrFF^oqS;*n!GI0`je4;=-+DlG!Uk^f`df+pBoyq z5KlN3lP`eSfaN(%)SgTBMAtYU>u-z20bL;3IED+8q#rwP*%_c|g|FV&zPQ1}4V-?xN7Y^d@7 zv)wJ50W@daiEC8n2jnsxY*hGU)ce{i(u0H&Z7^2F{Ui^>YN;{#aOAly+r#Q0x)9e5P|@;ozdk)h(*978l0$D~fk%kXJ%E7zb<=S<~S>1}MR zov_?c_Rb+FK|4S@*QEbO7$Ec)LvA;y8~5*1*B!B$q(OUUm7{ExK0v0_x8HS|_dI)E zMOTPa`$e37mnjkrV3TC-_|G`6fL`zG`!#3AYnRvuDnx}H(~znbBjQUmNwf=YyQA0( z6b5dWTKsqGm>B0U;o8(kouvHv8p`V8*bY{YxWBTrc%RE>Z!5LS=C{X;iTIV z@0@)9Zxz8mz8A-2Q{RIIF`bdgHZMWg#xbGyt~B+1xnp}Ba5n%+xYj>iqUV_LS7;CMYSNxP2K*iGTaSk?B#5=~bB_KkvO-M0 z0OkJN&odM~wf*wv7{g)Yi5P}P^GdetZHmW;n2COQs%~^UvC15@J_x&a>rSsjiG^ov zjO&`*JU4|yadb+D`H$tVN3N}k0phzej-VS!CG zKak4KzHd8vg94{hp@uy@-3;sYKlo{X?9k31AtLXS$`c1AxoQZF?h9^A%+GSlZrSp zqIeDut!pK3+4L1~uAblAN0P=FmpaKV0wkD&APaLcZc@x^hS1e$DIS-dNQD+1KV!+rXOJW|x-%lyodhdGJZkxLl{9yKATH z*Bzd6m^ACL3PR!GvRV$4dWs(_qtZp_A! z$vh6*E>q$!Y+WmdPs%Y_bquZ)*D*xC8j)sglD!7Ae76z$JiWaX&})f-I)1(4)5{{m zsPj)4Oy&JA25qKJH`o9*xz0A&uaa8g6F;i}5({isrqk5teANk|x2Ir{))pQsIakyf3Ke}eOuic-=$#!BwH}B zl_fQ)jySulLxY*5jVe!kCRu=>F2I=nD*JxtC(6K&Z$LgQgH)p^dWJ}0Qg!PS*1iq0 zyUcv*nH=Nz3WdMbpThBA9>pN;B9?aUIloEa1O6_rW@>HRE_y#Eb>zpdn(8>Gea55k z*sHNr*gf#59L;$<#TMUZ3b!q=l5t+*D)j!wk5)1EhdNs??6A+QaU3uQm~?m%b>S=q zYKdb>e=h%Ay}%j<^nRnX3$UAZgHN_+2xoIt5%zV6J@wn1{-8VJuceN+XUA4%ALBv@ zJ&ZCdka`bGrH6I$?BkJwgHmk=ReKnK5!HQoS654$SKEtIO%_1p?OU6dF7YYI`pS46 zMLV18`_b54_!8Mfic3d}bC$(DEXnUC2>&uYaS#hSTiYCLfP>f?K%UrT1>-n3iSUZ= z=y+PTBR$iU2vRjb7WF)lPlrnqa`*pZkw}oveNgwo^Vwy?vQ%cz6UK5{UXHkwacwsMfWwGIf?v-Ef?Pb$z>oN6(5OPNdG%;YwB9@K5+C3%k+4jr4zB#*?1-k>BG>$q^HWS-~wc=qrR z{^BWf4b<-}!*X!>HpqelK10ql@qw>@K|fc3N2F$22-(%64|GXLYqk33cL6%RPn6Bs z&sH-70MI|Fa1$J-QJ19ATR3&Px%)u{^KY{WjQPZW!v@6 zZG%im5U*78AR=34;K;L4BtZs506?(m@UM%xui`62DP6K{7VC{*bg@<7z$b14k}?1Tbt{&s&(1VLYzEm{+f4mhpJ;WUD6d@h zLdUQ5QI!_ksn;ATj=i^S)Nsg(ScF|pmEVOTwWjBv^X-n^-Zi15pKY^pleFupcLr4R z^fy563jhEEfY@HUFbJ{}Ld;VAbPT{c{?V2hk9D~a7n*wz>gCJtz)8E8Q4gCG`T#i< zc@Tew_9|yCWf{-iN1w~Xn=j+5mJgnmd0hSGsO(j@VB-P=*--JpK3c9efNk#2_ArHb z1F{bL@4({QV2M#Mr%JX(D%*6KrHcT;=G6|Z9W{aJ!^Am%);QNr=g@rJ_W}l*bRCS- z1dsi_)gbx(%C1-1W+sluEiEF^v0NvnM7T-_Ez0fz__1d>TcvOgnYyCT###t@b|n6o za%ER)(fiSOw2r5jR4Sw7>wE?r(U|$e$_z#hiIEpTxrP0HRbZUJ$imb*(tNdlHO}$%x9bL@;MA!9p za2e9u2CeA{MMBry^7Z%4>yBxalBsCs^0J#LV6+N&5>m}Vkhi1)bQinLIc#?L&hW|? z2s#~1q<^R(u?SRJU012Q3Nqk74r$|cuvDfo7j%AEgSrpTuYP~3jXE4wu6t?e+2Hv$ z*r6rhil!&G+g=mg^md^UGClx{>dB6!z`Q61U`>VLw%an1ht)5$H7h5NFrSX<-bc;2 zT8Emw0K-&{d%-*74=q}24XStj!XwXODaz)@&K{_0^EDh&?ROs3o^NtJgT-#Md^dXY zPIuO9vqm!D&$hq5Z1b(ofJ-efO*hP?{8`UD9I!YJu-AehnZOh_S5rU|H+=>F!otZF z5l&K7+tK3wE!%s5&MhST(3a=UzTN2Jh^{1w>;{Cj(!~*n24m2cJM6MSR)-V2TPnhq z1GZuytjxiB^bdar9uT(g)(GgOw3FDQVY|jPnFAIo&YbVL!8o1g@N?kf!^!sL`Gc;7 zkPuwrjyRK2In#)S)4A-S_T1jvzaBz;=umemSl!`^b1qzhv9fRhwAc+&P6fgjCTLED zqEYC8UZA!3YR6Nj)jyVTXiR4lYwvag=8gjKhIGQ-PqElCyQJVB zBLD4^A7aIPQ{f(^O&R4t>_g;P9;58-)D+sDYyuqfJdnYQ)B2?1Or zt?$f@;>iV*n}rc2$yn?4r@Ra3Z5H`#4jr*r9EI#%{t>AZ4p?TAN#2*nl#D*C#bN=E z4HANl!jCC+J}W_?FXUeFXONPYF%le&seMd3Q-z_sU(R`-^Ei*!c)rv=%Bdyw?UpG5sEYm@W9s3X#(BwxoPP*w>#2j+*-phmoVxc@ zbve%Yv&(yJWaNn&0r9p2Y{02$^eV8>5nAV-hV62H}=O*9R#wi%sUgA6?1>&VA+@y z#<2NHQh7us=Px6i4n8*^6mc_0&s0^alq?%lQTs6GC!s0`n`uB{9DuGnVOqK=t>@x9GRf<>NE1x-Jt7rY}cQkO@zde`dR(6 zcnQ-b!_^e7GjM1ME8)p6?KqKA!d**@F6RPbLFLrn!{}Ae)8W2N(RMwy52A@W+KO3E z2fH^#aaP=hg{{NAdqd6I878-_R&+04Sd;_G4r@F%W3VXvKE^YT@oC4{Kx`o_T+dS2ZXc)ER%^m7|rGuV~B5|JXyUp0ltE9~}zg&K=&nm}cal(c$#)(3eyeC~gr0M>CGVU+8Q}&m9 z#!ko1C@(v`3H-;{e6gPt6xzY>x2=?CJnkvQ&bcmXm-Y~FV|v#Kz-p; zHuj`MR1Pu?L|TQ{t`j-5YRlr7UowSa$j(R3w6pddvj^rDnq;GkSXu4k%T^}3sQa|Giml0?(t;wAk_vAAOR3&2A-^y>0AUU0a@^zQJVv z-P*fZOJ;k^L&~l4&Zqm}LVg}1bHabTZEtkCJzr1C$C}!+wqjEhCyOt!wOeY3nW$4T zngtn;`n4Y&=kn55PNAqGhtyV3&ll-0{K8KLz5rLdi{7g-;LlKhwJcvC*6hed%86c#IE$35W>V5OJabQK-<{&GSSmN$+ffReQx0VYfqNj`>MB2JV-jha+Zc| zXCBm02L1gjP4P5A#6{h1=io}+tfxuQdJ)~LZ~DW;!jhJZa7?_nsRm+R$wC+|&|VM2 zwU^>$<&OGh7f*@#Bb*-NUk|{Znulb2SWIu-?hlDeM{e0d{PX`=TL|T{!~1nDxg>+b zn${|)nrK%>v2JpV5WzS>?2w^k*R+K*!TGC}qF7@j^L6cSExJ(h!0Bx$1E_Sd_3I0s z8SwoUo`ADpwP#j(GKlZPe)6t!&GM=^=R>IM0Ug&!dsN!<9?#BGJn0|WI@aE(0AJVKTH@U^l z0ONzaV9oSp`$$iF81cSD-UQzjg|K%3TnVs*a&aq9FFg!`%TJ6Jdl0Qybj>#TIWM4j0 z3I=oNN3x&ax;g(v`0{oGA3`vXKwgFG!8o7<_L1vkc^KizB%j>=0UB!p!IpTB1lWGB z(l3`JggIha<9l^9rhi}Dq+4}-JgIye;BAskuz7Y9$lFrIT51WwFI#0A&Ga+f`b1_< zK0OTmX09J%dRYViF`0hyY-EXh3Izz{Y-xkKy=S@oZs@r!GloRbwbfCpe9uK1=x8W9 zZLop9o{CIP)$K)w5y(s_#g8`M>pCuFvz9rhpu0A65v<%DE94JKPFUnb{7}km6ck9b)ItQvIL2LxSpW2W?vD>$vj28)KcmlJgn+B}3=O&aTg+kz&zUk_8V z@0*jd3!u_I*!Y;*4BZ{sW`*LNEoa|pwp0o>Rvze1-e8)xaC#%WN!_!}AGyGGv@K}Y zOJ>XM$8`fm_<;O|iSU|Phs4GImOq|kVSJG;sb>7`+Z2M$pS2Al2F%eARB{^*&`S|hxJn4WnDw&mT!!`-9Vuuu}n?k|))n#vn zgFgZ9Pe50x!FrD>UJ&^7L;%n#&8i+oPLa(o%rl-*U9 z+S2AV-@E7>I3h|xrrKrv9oA)20?I0RsMdfo`f;+p{B;*NEhETXr}4&h*wL=rmT$#t zyI%@5qd#1kWa?(Bon5hJh@&%ilWz?1@@YYsjcXR^sHnZVE zeg)1d4mS}L!M0_tV}fg|h-ESz(!g+mnS!$gV!Qhvvon0ca51giV``{{zw1|a9aP$& zh%_Yf?ra`G(yMD<@o2mAISW`IIqHUAMSq>0{90vo6~R==h*DerDW1c3e*uclXf|>T z#{m8gRLPl%MC*~>308*~qziQd9sI`7x)>+%jpG%xiwS`HW6(xV|Q3JIc-`sVQ zopg?{Q9~k+D~UXY6hZ8O7-HZVZHPIGs&_yyZud4CC!RAhAp^9B&Bi!ay+3ihXR!n- zMeC>~>!=s%s9hLTET!-*ydpANL!t>2RaJaTC1A{O!3y=~@8o;@MdLdSYs-F)My1W~ ztrk|cWPDR$%z<9~mM$^8f#6){z|_Bvsm5EEL!oqJ*87fUI%wof*enIg9TpYgttW4< zUIdr6Z+5r6)(oJY9ma<3^Vfd1)Iq)=stYhX)?M{9M^CMSM&YqYxwJ@&p zEuxaZPe@uK>!=$JQBwmH-7VgnCb!8Cyp{-yDR>KTn9f7y3 z#NKl=Hn9^LhIa1$@P;F5KV%m)QRiDK8y`Dy!gyXXmYYG`g+!skd0!i6UvBsFeZbxS zaMjHqgo%smiOB81^OhGrvx`EStQ?Hk=QXM88SxzdSTDn+^%|gKVsVtj<>F`KY0saK zStfM)NN_@{_h<5FHV(>CSrU8rna@2uZ;Ly-r%;IdXKPq$$MgG zX2`Sisz1Y5SLl`b?N`OP!0qJaDz?r9A2JH7J4-u4Snn-6+-Yp}7-X z{_TAOhW@FjkncWStC0aSNnYrkxfNK!==Vu2F;Ih8`z*}AdC0ip&ZlVnrqu`VSieB~ zWW_z1_2;X_ec40TBFkKgLv$_WZWa3LvzRFh48Ww$7xVoL zxWyO4=VO{`HFx*q*aSG9kJJA0>h#-IXI-lQh3v4@n!g?6kNj5V(yz?mEDeJQfMbAI zr*==Dj>0j0QQXXb*euLr6hi*+JUiKlO#GV2AcW9n!w5hn&ARWue5z9W_^(iDkQiXM zJUkh{S?!OK4_;HNsl5oflk&~b*3iYv`y$V)&n-Elk|-bSfy(jHE;%nI8fuiC7l%%*sc53VM+W^vS0BV^azAdfrOh^5A_pBkR1_Q>ge0EY} zU==5_bb5xveEeef`0eLJ^H*UupD~!akgTMW56^pc+@dqHcWma zftVG7>xjv%RIJQWwRH}SF`l_R$EN$Bxydy7x!-%qrWIzLkSaJ6sJx#Zaq7*Rhlr{n$+Au$abA&Tr7Gg%WnC+vghKHTkUL&aHN-i)qpGTi| zGo9*FI3DPKH(Ll)}d^hbAJ5Q5Bxf0?bqojYp5&bN*198Gi~07zN2%sBw`)6 zq%L_1D*=US5{(QKAud3EEReq@(S2azbD?cTLK|!#m#N=O^{?OKi)k90ZnhOzHu>-T zpZ2>?sfF=c-Yk^YpSKV81>Isox%^)}cAUP0qfvI79tlQ=!^E2(&TT*fW)Wi1?$`1r zUl_bp`2ZXGF8>3Ab^yT2h%j=_>~a8VpoM^zP9=Ov>LVwxmvvdkB z%RVH5pDp&acA$Ji!5{4>qfF9UjTch^;^e7Ybhs(m!gdnIJ}~P7vPcEZYjPa@)+jf$ zIJAN=)r_}~9^Z!ftFI1aiQRa0{nYl32O#%~;%ro5LbGwkvr5;r#nU;qJnLdF5p7vh zkSwkrig7r&k209qJQwua29PXbo(65S5@xiLHQ&Q1)PU-!EPPtFEgmqMr+zjM2(S&K z-x~!8D?*o-XMF~5VTsl3Wry!4@)QMgrPafI%-~3w6@(>i6$)XbD%iF$=uonmN_h-d zYy)-bY~(O)K^$k%Qf{f%{TDMiINLkum^pEFDIE|@7I1ZY9sKU`x%EHf%zLX@+!#FK zYB_;yR~;v>n@jgdKJP)NIEBBHah2s`Qz&g9IZ;L?xkWHJPhx%~ob1PSLjE*C|TmjU{DVr1akv zm@vTKc%N`9=#Z(NvDTR`UM+pHCsE%OD<+wGM}yY%s3|-{5FyDXc<&NI5W;H9HVaEb z^9(dKW&bGeZ|x?{Ovv&@{Fr5AGu$?5Ze~XB0;VnqQ*IB_+C}-Uv<8CH5G_hXAgjjP zd=vJM5?M*pf2t>w1S;{wp+&VdL$i->jK7b42(}3kR{xrX?0%1kOH+H@`VjR*>y~h< z3;}sH^U)>9qgD?xdfYQ~BMOPTRMM zrk;ja6IA1#jmEqh4F(boZ2#=`BCR*51mv$?5e(ipITy7x*x4skWEYYvtf{&bUS|N zbKo3L0Aef0Jyo`uW-`n3?GVgYLmPl27A}x19+f{WP=%{?&97guxu*!w+3{(ZDdbjG z?@6uHd2QJRINAf+$9E6FOc&9~s8lVpd!Md*-G5MJbNMQ)#5GLb*VZH=Fr}bDrYyOj z(ZCHvycLlhSbGcVN_y!Ew>7HiC|Epo7B0(3A>rYdYB)o>>xEu4qVK=hcE0x8Ix#7= zt1XE=l`T~Mo~U1(qV5$r@qVdjvu@VW?r#_SAx}QACK_fp9ko>rh+;gMjkTHdN{njg z{RUi;&2(`5!?9h5Rp;83p>t2~RX23o$BigH#*{Fxho0Rw_-!;qABFH2s zAq^#f-ZgZPVqI!2Oet_n0bd0SESrw`6;$Fa3DXj}4;AV;k;5-9TaLpXEp%3)lgZbR z5(B)p8`Y%S25hO8I_K;G)t^tt{B(w$5=-p&)yCd`(N~ME%ss9qM?Ld)p#)NaJOcoz z4*+6pIk1yY%bUn0c(xYM!R`jba|`CoLD)e-lsrgvXIvR%X#enA&H0tajp(S@sj(It z{vwHt7-ZsyiDF^JtpKDwyhc2nn7 zPjQ-lC#QPYrW8^zMexNOqiy9V+M0VdFXLSAS$J6&=g4sLM>Q)~<%-*dAMnZm9U&1X zc`vsA`dQ*O5~bYqPd(4gIDB!wPT``NGj}x)3W{5$v5f7Ac?TDd%>`7vJ4wF&_lMcF zf9t*548~{OHSTIZrQ2Bzg4{j14YGyBeLwEAa8Y;lB~20hG4` zm(X#1bmwpF)uKMlmDf<5w0UfHq3?f-5{iv9@A#_@iX2l6R9#hP<`K!LhntV`Yl>Y$ z8ZMh|8tY3EO>Hr2dfdMU5bS87*USfyFSN4q6n1#tM=UZm~cB7jhoEKs|g3l%_4 z67U&PD2`b>XGWrss=qOI-2?H9&N4d~GML9|2;U8^&f9_gFz;Ix^GUL)D12>Y73_4L zwk)JLy)=?tahhGWZ#k0gb78%c$E-%yvMJLCCtM>a(`cB@@HS5+U$Dn<#IT?X;o8<2 zkc}QPGW|VWIiOpV{c=n^G-%#49(h$F(MT%r@OkAoTNzqRnq{T)L|0#S2=4`JeQlas zW&qB02v@?BwL-b}S2h)Jt{-v5@ngp~bjIHD7FBkiVS|P+GUd*Q(gQpo-TBsvkgqSA z3Z!tID7STe2lDgCr`wu&K|n{JG@ZZm#G4m)gf-a&DQtDz`ny46JSr$(8GEhc*=5=E znn@>Q#o2rJ=g739{u!kw%lAjApayE^N__9Sj_e_SgPXpQ!RL(c+(=*OBuA3HHJdlX zM4jT*^iwjM;R`@xny3h;B}496pW6*jU1SqVtJC9Gy{nhZL)2B^*8U`SOn3@tonq(} zVd#6wHKQy|QZd;B_Hv#l3pbS=7M=}%L)#MQlHiMJ>>#|*f>X$ zrMA)D7aBJPeOiLA+6wn3@Q4pZC> zuJ9sECxTxVhpjfTxM*I+`*kySBRJhf5{z$GcwP z8VgodMlV0>Vtv5%%GZO^+12oHQsejBP~&S(2MX;D5kCY|b7XMV1wVxEr+}QxJrj5S z+q;L@j8X6yLt&<)If4n!rh$g80%<+jl{rwBgikCu*@NhWSpOuEqA|Bbm|^|MqQt@e z3yZncw=1cGV+9gqSGoFP0gH>7vBKYZj_e9o-weNMTpxB`$+)tsw)|OMMTgpVa(aDR zWqWo{&*Y;OIQ|dg*9&&FU>ylM@S-73`QXqn2W|rnx)}V{%w6##>dnExE0uVE7>xHY zC2Pi|xqvwl{+dOI4ti&T@k)h(WH8zw>OF{$2V*IjDTK_#w+Grv6=x?XZ85irqClhL ztwOus5!&c6GOB!Jz&Vkv*P~r+H__Vs#lLlBV9-zcWHbTslLm?nLRW=N0j^py){fE= zl1>10l1eqto%K;3FBo_An7fo}eifIBHsqrIk}lA31ogGFcIb|j14Bn#Ulg+ms4IH`M38`ahgH2~FJ>JuXi(mxZ#D&37V( zd3qALZ{@0FAVxFvgXdEJGp9IpWS`7D5N<_GPRZ7lH(ya{1RS;)uGN^IBylaSC%r*4 zl{X0Pqt8EIfoGA0R08xzWcCk3(Z582-BQu{>i{PL12+(UzMVm=olPtkxXCPsp@2k8 z(>3JT7qP-q_iVLg?6$GfO1qpfdUu^cP@R@&vJTWg_muO-;F9bF)FCVOj{mQy+#DZM z;S82-6(PR9DxS`&ZG~#y^MgDJLdz87YmerDZ#ru3c+t`;PCQaLpA1J?%5H4a7ya}n zYz?bwV2SXQNj5T4Y5@6V8r8Fc_+cr%)1H#CZnh2EKa`(V^0#CUJ%F(>ou56JS-Xt4 z5>k8ly_X(^n}q*6lp80rkCR-C4z=lKysdd|EQZ5j%3iWRCCDV@@*% z^_#cOUlGpo*ii!VmA7waz2xbu5-WSK-L#5HR_G!jxQu&kM(f?*|})(*!#M*cqE`ztMxfd2qmM z%`x+0oD-^!!b69RKfi7Ki~=d}f00-G9^;d`6t%Bmn016%!z3NT?lbW5>0FGRlTQuV zrnYeQ;bKdeZToLLEPcqS*>nv;oi% zI%CEPbEh%O6T;q$1K+r7RH~0SiskT*FvIl~7$=(PJbINLj$bPP#|@eOV#71c%RQnB zj?vjn^K4D6klz|P+*0Kk=~)WZr(zmeM6r2`%unFWh8XE9pYTet=f8+KK7cq^@#NH)9VDNmdDwhW&32I zgqQa+C#)3$5OWbOr`7{e`uM*E2yg*{v_f<%BD?MkDpjkkd{cH@=TsN9Fz!%2-obe% zDJEKJH)}tv5%zT#7vYxtsUXUfzsf_&-mb3U4e;hJkypM8s>yG|&4vE#GlM@0vAy43 z4;?z`HZAOxty3F!8iJo%wB+dhXR93DZbk|e&hLcfli?wD=bx-FSKI2IpHNL$EC!o8 zy497*5}eLB3sGb&?={8{noz5aAY54M?`Mccj*IG=T>lYhaYe3(01@ZRM%XSoBeSg6 z&cG+_LqDVU7lz#PF?L~Uupa`Ts2t7yM`PTTBg4G4(Zp%1d!GUXd&<_-ffY!^gL2iSphD6Om^)wB}`xmw^YLy1O-1IWLAg%jXy?+0HCTbloSlX4lf9roQeCqHPqHzj}@sPPf4 z^sy>M)=$}f@alQ9$RtKzAA%G29s>&-lOLC?q(AiMo^hFq$)C?)A?Zsu9heWlISYRS zYlWVxrGuRhqFL#|d2@?~E%LnVzf?wkTK{x+I#9i{9t*LTsasd;%*Tk?JDC;>_R&3V zUkeFeSDLsk%ojOIz0c!Z1?iZkR2>?eg1(0RNVsmi>+u548*r1QL~_3Lien2wxHCb~ z>!Zf2Yu$j;TgqO0d?w)?l*aC`FxBuFXBtGQlu4sIsmRv-o8I+JJ#pBi;^CD_jn?%5 zntSEa0~MJy5`iIXR=Hd+XBFq;5efZRwMi=(8u(=qlf)RAD--uq<)@v9z9{uy=piX!)(VVBAj zPC;ZvFGh+7{0_$9IU&LcbWKS*T|IevYntm;Qf`_G+b1@rU5bIb|pA*Z*3-fV^GkW4wiUt>wh!H{M>H}rdEI#AQ!Qkr!eAly|%krvjJLem# zB>$d&@1VqT59m(hUtso9bYV9m&d! z;=IQVkNsi}wwQ9sf*)w`A#3R`8)_Ofi0iFcjgsk>KbCCR*&KVLJgiW!hTQcbgAY5W zZk=bE9e)2$)4ZiW?N`u)8Rmmvoh;k7vP;sW#O*6px$Z73qDsi~aQz9&SF@|5R zL;q6=Mvnx9yboLU`CTZ8UHOzXBOg|laSF=k%TQVUW25=D&ZMH75OorwSWvF;F1V-u zwv^AsHNzK3m)7bs#~W2euM8C_kZ2l$htjo4gCFLy_=0^CEHHu=&d>BBISicLe)0EN zTdNGje?^sR;b*kMS zG~S9H$~%F4WLf&S732Vk=;!9O7q(Q?O`Llrbc4I=7zF%}z-#DcGC+4zYLHz!r4xT% zN%-6|fb2Z?&cM@*UP+lou{d*v59+1ntbF6|pjAGnbzS?9zZEc@d++7VPcutxO;6?~ zc?OccD==lzVOoEg^RY~7NLk~1_fXBo+}vDNk80S|k{$0VQ9# z6cJo+aZXpCNpJS{A7yP(F^pGxW@|~Jg6{OI5S#K*>saH6 zd!@Wm6YbXu#za+r$EjU%A*w7TM*k@2K!>t64D57kUR9OyH1l;N4Eew9I%;EjXO&|P z@|SXd zObp#3u%A5Xo)KAy4pwS>=ukbN=_4cOuA31%IBgip{@`B^p?OSQD5%ISue7m=XD&y_ zIr9u{tt71dm${X|-0*!>Cw|R=Km3@YSm^>3rZ_Ol9?Ao5Pd>Y5O&sq$ zJMLe^5Mw(f@1C#YuT%kN$M=lO#cd@pxd zhF$uEg++y!NLz^3%cxcX|9o;K2DrF)ex1o`ParjrNk{%>!hzgdLef96<;AL^cVQAd zv7R!@Q*X`3?A2gTH~pVj0tV<1Fh~v~O+{Cw0{3_{;v4`BgK5ZSrxyKL&&Su6dYta5 zz4UyPyBF~lfX33b)6mw?Tt}?Pi$YGIPcQ~RHm^|S?W!pa7c(y84u5gsOnjTExp?FJ z)$SjgiC|`Y3*JgQ*`AdT&sSQ?nmEz!J!~B3xI&@B6?nn|2Wm5QWL^7|B*Jv`M!<}} zL)6*?Nh?WQDz1iY#FPwPEx+Rc>KR6L+<(KdIDCX!h`U7UJtZaD4e1~-LIFkOp60*> zRy8$SK$mACgP%xWuTwbrMI92Ze}b&^(oLfa_eqCb@Cz*&&(pk#ihlrI<5D{QDf7<5 z`Rh9gcY-FL&{Q4f2IcMY>{>_Qgrqs|?+*)*t@)36W|=EhCN#sCLnt%5mD!U*TU&@E zN1-{hX!k;*<})8U6hlQjr?5pIeI%R3|FT58%;=T4U7jh@MaQr%z4A@Khx~%zjqKw!Qb)RHbRLT+$l(#dgJOC+U$rEUv-$gW)ND+G*`dqo@t%FJ0z%`jvLL^GBGZ(d!QA@(QG9BF&UWZfJGM<`XN9!9y( zciAveN2e;=-uX(M@`8_D%`^Q#-9R!yeziVjuoc-CvUQ z?{&;f$?;#NSppQ~;MR{4082%8eXX$KStKdV>2Y#M&Y5l6g`4rXFDcpIqp_9F)=P%J zIJ8vdPNC^AGY{`fBK?>F;JS_sjx$0c{4_|oXItTlPESL>r$w<+|2UUc!wjWS+WcrO z6FS}i$~FwVg}M28#zV?Sp**GhM7sM^F2&Jg)tZHl_)GX#w#jf3KJ@T1S=p@%bRd} zXHWbUS(cq@<5V-B27MjL-Izo#Nenk8^CriVWgD~|eWYoMZ;#}52eBE7uvZ;Uh~2G} zVSIeIXun*nC{xL<3RZBaUo64laVkiavH^-*FK!c;R%2-ggq_qpKv)O6WmZ&fh>qfu zt%d;bgLl_pTzQ|zQZhuMWh}9K;Dou;#kFmQ9s|>|ZpF!3 ze}p(=lQ_2tjC(pj&W%w5#`A;}4i>P*} z%e1$1jO$89r8Pc)fF~QFTH~$AHwMPHOx}gdz7{oR6APdATmc^3tEViCo2VJ_nJFkx zNtNG(d5orY*cNkjoV2BVPTQw&qYCHp`zQTmyvz0wwoT$e%r>JHUN7#Ho-12K73}4H zm^M{bN_*!K(6gPy6HDy8lN*jivO3L%=;kS@;N)efvpPO_15rK(_(?EGKsGeP`eaRT z?#!_FOU$rt2j%b9h}9=sJ%pusinq*zm7N;@dd#T2kjQZ2@mK4s zWiRSYrxIEo=D(1iDQbI%@{~;*u=!(YD#t*FIENN|CrJx`Wlh(-9MF`TQJAi$K2uu$ z;vCS)#&*cX@?1&>wp@n8hRtX(S)5jLy;4f2bw*Dzq#C+A?gweY);kMW!*v~n?tHxg zV~eu{_xkxjW1JFCnN?;OxW@r^O#)z-W-XxxfCa9bwy8>mRfvqZYC-E2PLw&FgDOcg z1oI(r^5}ZN4AjgaHci3%J0Jb!#JwSj7ovJ45zOw>>zp-C^r?nr8l1t`ts?>3u9C zDh}Y;wc$>jgp&WEIak~T@dpPv7BHaky~*-f49Fa+UfQLTW!5xDo`(Tc zY>#S<&^R*W(!CFwr9M38T4>ekTY*kERjE`NgF?P6SAC8&kvCp*X8V+}ygYB>H*KGA zC7CJH%SHo^8Tk6Th=v$c3I0&-VdIK`ziknB zo1vDTfB|SeZ9l7U(RSVr5h+Vb zl^Y|j1s%_7^4v_R*j5zwrYD`PmSuY3y}v_-Q*|t@GSVWpIyzL$x^XjWbCahlg4W#t z3>m25Q=@JEGpWyvtsx^y+h+xWzML>^kfF50f#?A792^u4Vww{mTa|2Y{|!>KB+J z(X}=ZY}ctg|KwoEDj5`mjB1gBTMD)*393~IPDcWvKNUt-tr}0gG}R1luCYfW z`kOPG*omXwz@yR=Q&1Gm*)wq@**FdluzTsCN=iVToTkm~AP^5$! z;StI&OLegcb3Qu2aP;%iBaoFd;*0%eT_D|YpSTg7l&wb>jJq%B4C#iAxKHX{gRdpq zK@^{)xN}#*m%=alAE72u4$nGsvg-8RV9xV>m+^iXSq=B zlF&6_U*v3d5+1fp$#qI|(8F_I-A9|W<#^Lzd06HyEd0nE=+SZWJv8I#ubZI&DDkIQ&QH{3I!F@$ifIQSXSE=#WTZSSA6<+J zwMAA5yO1Cu9*zOz;^v@38n9Ufq>qN(!NVVu z;CI?UXtoLqj+@s8jLUWM_VR5z?L_sXs^*NGq zm7qixEn#$LS)Y38taj1vfwl+7apcw$FM}kRYJZ*)Jef6VMhWY=xjR*K zqMFgUJo6D7ozn=PJt61EqSd8Ma;|#B>Nnai(%feH%bvf=ByzUkbgW-5G1v9v>n);F z2?D}SM4O}7G2Au6Z};ctQt;uT&tBh)bhw_8;aAjH`d{o7B%JjMtD`C%q--sWM*~ya z2|Q$&-j}nn6s9|Em;MumU5|kp<#H*~g!4m-zXn1a0gN|h(6`V`3HblBWn=WHl6Cbl z5SfH>z2>Ue%hUtn4i+U)aQ>gYP6|NGSte=!$;oilEz@lw~|jtT2{L5xGT) z2tQQ!Tq6#Aj^CS!=U>;54?^hYDrVeESCu6C=U3e6X#NUm`81kf-5qjC;#!%I#Qv6c z<8dkK^o^?NC-iv{VY|-{otl!kuuN1^Cym_s=i#NO7^r_6#Nr{)+N2m+bzcJjR%pv{ zn1F@@7{js8EXiQim3lE+Nm4iWjo7a2b|7_#2ZwD)!oy$Apwq?)+()VrPt*Szw`io? zu;3RCu@9uym z7~Z1q)ARJ9=Cxl~2dFlTn1{3#-Cb*76coNdVAb?U26=YU@Nntfr)ToZu~X~NQ($xv z*kuK+fp;v90vnu3sJReiKS%@6X)g~-4glxnfulF;4RgC%h?lkKT@T6d1rJ2SDf)4O zX4LL~MBkFf!C?i(PDVX~d=H+A^6GV$Vlvw0?eJC3EzQKok0`$w0Q$@AJ3dUU4(BwZ zuEeZ~d#;{4wW`p65pwHGX3rmmI*M7J&RKttlJqnf*v|Q?y~cp^DR`Eh@P#)uw^MrZ z=^a4qT}!4Y(wTh$iEamG5p(p~l+Q5A(s;-4PLL*kNTGv401aHre70;t&7Q4STyd!T zB%_68q+0eZ5Ri9gfbz=57nIXkYJ&F&+6#5pZ*}BpEaqz0S$Xo|TQZ5fog<`R7gh!} zCFS&>U+CH2CKDcr={5vjz5L0eQLra}5vIa6AnWdxioxY4Bz-JPR)_v+#`L>dJ^rD( z8GfQ!zoxlcqehWv>NR^#DvW`j2J|Tto;pM^BWGJR)NTSnELLF7t3vO`Tb^c4F0>&h z@rcM6=rxZ}X9F^{bWSp!L3;mn{NFh_84QDDU;VRr08{SA)67^NaUe91HbO@(c))x= z5uWt-ojd4rzKHFJ3HHht5pVKghjTLjr*5u+Csk51cSOIw(m>5JD+NVy{umA9yt!IC zeHB^LDsn?r_*JC+HFHeQzu?G;PiJfokU$s|l?ay0=btn+Qm1+tu1Lk5B{l?MPvFc8 zWYjhd^_jr(7LTa#ID<^*a9cgS^Afl;%OH)GR+wX;5P8x9r~yOs8HSfdEy02Kg_l^= z$UYRYal?3YxZ-%2KS-3o`m%^;ktIeT|2uJ2THQ$oKdig>;+b{z=PVs3;yRP*2tGs$ zsvCGeO8Q2}>#x{vseYzvQh>kgYuP>BwVbxX7#W^6$Ys2cD+wYjv^;)TR#%G`>EuuS zdJ)Qs1_=HJLqLF2fb`j{8(@V2#Q=bv0zfcbOPU7*2*S#9{A-$iwu2yK>=WH4G?vIe`XIINfy%&rK`08Tc0pPkO`g4H zSRm>4qEliHU|yh&r0-K`PDS{s#vxN~MeCYq`GQnrg_2+IoPzhyOk1%_;fK31Kejm< zt$P#xuIV++-BTxR1;^T@FFbI1Xldu{8gy`0S~s_&EYu+cRDE-IXWBtVaDGMkkeLQn z|HPRFE1ThHd_7Ps-r9-R0ma`FvF%m--Tn$&mE?I89+&-w4q4YcjohH~B?0Fl43lNP zO|KP#=7%D`)ZKS^6gW|QbgGaNfELn-FZ2*E?RoZJnPqmWESkQuQ&#t#cbP{2ZSe`Q zX`7dze$~grfW6m}4W*4c&|y=fb@nIl<1AMLFn!l&^+#7D$Yv^TIIQ+h?!p4{tX}O} zhIH!)8t{!fl8C+AS*6EK3OF#7c;NwI(s3&qE^)l_M6X03Z^ka&EwD(NSu*{vwXyfD z{ngR@g1iA!uX?=gxIkRzDkC=0)hjK#_)$CLoI(VrGb4{Jgf&pGuVGcsa#+_=8+8>6 z=5G!7j@0##%{a&`( zrwCzG^vH^}drZ>I=>e$rdKV)hPIAgY$m*yp+AEFE_s=|VP%C1seS}*x5XkIfoCsIb zt(mkB$$;O$V$bLMnZ^>B->aj-nJ*903Op_X{dlk9hZwPO zgf-|n=kC>!a?Rk-VN}HcRm@0IiKb{$A)33%nWl# zbIKgjoC>MtkaXS&b8Jqbs5!)vic(RkjS*6RUBbAujI;ZGvT)G( zmIcdqs8~B52tr!sMr|ru`FIUTGhA(Q`5VUII5Hh{ujnSsAz@XJOqxIP8VkP`pVXed z(HWN+$E(2{0BT&9!&(q^m1Q#>Mqfw)jtSxLz@SQtMAu3`0O|5cfr4*NdRB}Aam=W# z`qR$Qvv;#AcZKqz6tP84WAlaj-_gKB`|n38_q`FGIBUIePsG?c7#1g>vLO~CASz-J zBqDZ39<@&%kU=S9C4ji&-s7rK64#wcVyi#CDeq~wE;`)}%GqHQUXpAh)O}K!UyxO$ zD0M%7c$Tbr-FwLBt)w_&l8fb877{P_s&36P*F;y1SZlgpAIai6m5V}#mNk!#M{!fO ztblQ|i{9(g=l0NrK&)L`uV*?C<*|>eJ^dIqxu8JMSYW?Tw?giWl|!>v0+mGJMfqPj z2)Y(^qV)1)gVCKF`yMdJ(nN8cvW<~0CiC8VH* zcz^>V-c@X-mODv^ekl$p=x|n6q%vDI+zalyy!0n}R^8sVaW1H&wx8a#AsDzZbqxEp z>Ih|4im;N9QG2HYD$m_*`#UE=ZB>9wmzl7X*|-3T@buC2v+L7LCE5C3KjK#lvOVK}+e_O=3!m)$!TNRHilnGG=>10em$Air}gX!$IF zi0);>9NuVF7IE3+fqcGackP^s-1%|=RzSN{zG+GdQzO$bx%QlL{QLoq+j392;zzjZ80_F@aDF?vCzG>2VU8C9=iz6s&(V{i5g z&7hVhK>aa?BEl*9WU}4GLURBRMPqW%aUvgM@*EQt-FRS`s$JLHQj;n;e7@(egBFNryKvLdMA(A z@?`HwIFoln34rTyjDTmLSXJ3`!j%goSD+H}$gT`ETFR?+MfXr`9Lu-NB2d0`>2q~C0I=gkd(%0eJ zwt`(zJX!K~k9wdj9ULiNWzfQR|Nm|llzj`+n8VW}6kOl5M|CcAB%fUV80%6+_WMzA zXH(Rs>0A#Sd|MCL^_zOA1k)^mZIYlS<>-pC)MF;o>Hr8f4(uR_ah>)Vj!NAvS?=n43N5dKed)JA&)Pug%bI33X?u^s8 zyxa3fr&nW6?(h0sJwlcP0bayLiC8KSf$=k`-Ps(K1~SY-o(HmCon>0;^Ua?-i(AXB&68sE#tx`MD}hWSBK3 z)@uao2QGVos5G4_h51&(MW8KglU2dUZcLcT5N1mE$hY((t-IA;(^0<*+?^5F;UQo! zjaRL;=MRTx5WUKh1n(i&cL`C~3n#uu9(-+X z6c~8a7GtLXyC|7JZ>EJ_5;SWOC6=h%QP9W{$lW6#w*dx11pILt=-88*R{+^5f#siy zp(3FU3fSp-=wUXBEp%Bc@&P{vm87}4TcqrIRPw7x10GXSGov4ht5!07=Er^VYXR;; za9S)hm3*`_9sKN;L(8}3R}9l1Rfz|`+8mUxnp5h}3EQrc5w?o_n;n@7Qf|N)#{J4_ z3l?|bYivI#M$lgQ$;PecMyff9tLV1%eLDO)-uf9RD=*U&#@&qedj8Uy4 zz&GNG{|x)!Bt9#-XP~+%7$G#52@4wtjs>{vjMm3JjH+f@_>F=_AG4I-)Qth4fAdV; zr4UB~3+>D@-wST;)sH$2fGM%?NcOpfIIx8f7)}L8^&MPiQ@QR+-0vlD z`(8v1tF1wPeh(A8b{qe|udOCl4hD}hx2&j>sT#&YXpsUb5F+l8Hr|n=qB2oUJuppX zW7)gB{g##2l8v;hd!o0IY?5(?bVxSS#O>)Sl5~rn1~B!V>b&CEdF6nrSOVQQ5w`Z( z#k6_Te;Vy(yEX7K44w`xAs{_7oBCNz#QL}3u7tPx8V05$VdeYM)<`-SkMmE` zKN?8|QNz!pRC3ULK&KwqK{~uxbpH3gHs!wTv!kZB)4cZE9t!3I{%(Z}7LfuR8#L2C zVUKWS(;FHK_YFB6O-}UdrM?3lT>B6d-*e%hutTs2+M#?J&Wcl)D%9NK4Xqh!tNxuS zHfn=t`}$`WHQC$Okg7n9J$fyN(R09XI<)V2+w~stJV%2zVFc1IH-i{20*S_F0`J)q zH|bqY`rWM46M_aJ@>y%p_oEIhp^DpSGh|dOV8A_qc9;$e1q`f!Av>XvuBlBM0mxM( zD?YS#_-PGY0Xv_n|NbrP3V)XY4oo1YB-)1dKLxHlEV;GKCsyC5uD`|nSI8dk6vD%P z?LX>N7Tl)m+-~;4C-q>a(NQ7})crAc^NO3j0(vq2+U0BKmB)auiCVc2;y}Ms-TZM( zFlh2AY}+C%K?2R~f$kE*a&Yi9Jo*J!5>V-m34!F?d*pF6&eK>M6widOHt!G0uiGj> zh_we(b@yxH(qft&5jxWksbNUlpUdNOCpe&60~+Xs141;r-S-#Dv;4$#my7 z1@>4w0Fdnp_yGxK7rVwiK$P!K+X+Cfd!It=0F&h)VVTT;En7(upg9KyEmP|Ziww&L zPA=(7YEPPG0s%}=v}mN|cxki{{DE{oaVey#Ly|J8Vs)htW$QTM=Zp5K+QL z_6u*9qfi1I0^I^iHPX_G&_;+7Uc5`MkM+jTnI&su8U2%!Xz!!%TS3{tdRkW+dkuO? zPq?Uekb@$ffd(!nzj23eT1*j&fmfa~_x?Ef%D_cQ-jzmnIouGlO*BjvL2b~8T`Y*V z2&(cyq*N4^(ps=jt--}1l&y8(D=qZ}P=}g*d;TCumDSc-3~kej^&VGEZ6-Hvh%;H zpJNo7+DutT7}@-GOU*R$mOwd7MExxMfhx?N%u{EBK8sMdarg`mwRbE(5gE0E4q{%v zxUFr16LZOVPD6JNxJER+1_KTz!**<_&#qAEXQ_yo2)(Lu*CmE!s{wtXcNTGZ^EJuX z=uAoA?4G)zjq-iG*Fkp(Di=_YGyw9D2)Yq-z<^x*WA7Q?tdunNke3L!gN`~(Mzwnh z*mUGl3LKf4f;x`a5LM;cVK1@EKm5parLkw`$ws4XHL|E-aD?J%RIZ^;paL}n`G1d zT)@Vem;Y3~b=a5c-(Iyj^P%g7nXYhZn-G@W1LH|B6{|73vw&66VQ#F-ExKyw1@!8) z;v@^UezC5va6$}9VS;8oV553{Uzar!K?*WC%ZDm3!IWbcnPShuZ8 z^HZMBS!~J~{{XDiuaGG}W0vy!e_)K34hwj^R~pM&M9&3#Ql4BCp${{m8|kn^RnR~= zi+7gc?t0>hoe#SQIzIrltm#g}Aow%hGz{W!kF^(B6ex%75<%xC!TCz7bD{Yf)XOcT zdj|}U>8}rvU#rl#Q+z;osSwBltj0`M8Mf|Zup1dVeehf-1L`IOX^Ap|^CIK=fcA7q z1OOJX_`}@S--4x~iuv&2N9LJANzD-X)`g$=9FhXA2>hPCWOBhgLZc?k^(gp%=%kk& zzKaQq&>R3PQ!-k?gj{wrP>}-~ zQz5!bZ(?yF!zk;awzq+}rSCci+vcybbYKqcy5||_7ZT$g*T+nfvf&060R?16+k~G0 zvt3Ryd-d`rSXZe{VBMDlg7uxP>1?S?MVA!O9on+ArLYW@YC`X6=?FdUw0S3v9Qk@g z4X2)0j{IuD1qIdVAmmu`!!qEBtJJGlPFOwcXr|k~s#IF5$q|EoNiw|JenUCNoM?L= zXXLug1R<3cVk|ZsLzK)7QK1q|h`M!o60itSq`KubyJ2XHuECb}nij3Fm zg)YM$C;)KS879O~AV^2Kbcnfv!qA>o0BiC*O)R9f2CW*=7nv8Z>8$tA3WQ+1<9Nc? z66+IL<_eEv30KLtaTS@W1Dyc*`>qON=2^Dmn$-w(Ta@7k_WAV&nceMu57`{n?m?~X$3v~%h8!+Vumr&KYmU)|iuHq2 zK84$ko8P|NUB0pa>S(Vvvg~M-S}Em-4X5 zjQ7PGJU>T8n$nuh!W#^SMGLlbpPssV?Em4iDR#KYjo}$$K6l>SiYA#+oB-uB=DG8; zB*(dDuS(5@WG+1ObxTQzeUA-bE=rhSbfbfJlf6m3{*N z-6>!1ctU=!^!@FbSLR5^Szp-vVUL1W>CYA5ILD~RbLLuWBF>Ax;Q$h@`g&FnS9gbK zD7E$sZn%j5c3W*o^r@h&N(C8e{_RNf=THj^xgc4Mx%xmW3BEpFvO`i$>c#uVGL{lp zUDHYfh8f!)N~>#1cD0GQf7&kccpMO)AM)|UhxFLZM|L@R9yg}wp|%=p&uqFujf?T7x}g;cxSD{M&EA}HzK zr)}m0$$88FJd>|ySG4>F#O)*q5zZ}$Z%NulP7x(et?$A@)4`_8fRd&6XZ&ok+2U+i@X}`P2#t8`hO&_ zbt0)ssE7^ugRl&X>^y!$Ct_1C-S*q+q+kV8Y&j!$_C8?f1JsiH29Yf$L(6xr(F})_ ze!Jqdcw3?QND}E8JP?D4iOz3;%7h^(&(;+;CW#8K=zs)ZF z<{OBm<_utqCvL>rn=rw8Dt>jKHXwf88?e6Ecm0>_jQm*(xXG9Xyk~1-gU{ z*Q_E()`FjQGN;fO}9lA`o)Czh110&2Fy4e|D*Hh0^BXvfd97SPm$&O zE_z%qED6XGLCj@{2I3+B<4LbCi@WGiq9#>>7QSkA<0`i@so7rk^L zNTcCrpW)4?4LfQCWyECFEf^^?yPq6(?|)mrJ=Ff2vsFLr2N~tluy^a)H`G^G0dfPg z@0E5dxoB*dv-2=2^ED_!?CEa#Z1rnD3wFI`{1AOg?;SaC50&li_nJ*@&Y9P90lM4gYndQac@Ev=MpF7H4I10+wW>~WafZOB z0?1;i$9QYCUiqVk0wq#>u>t30m*a{WV_UulZu@ZRz_Sa#V$V?{omwqK(&{qWlFx{K z4I`=4S;GO%0$MC{OTU5EjJeq8ak}@{CEhR5SkZKIk#t~=fAofg(jcKENLV_Ax(q67 ztu->R{&xH9?24I%)Nq1{w`uT9NY&ONiS!rCG=*Yq0*9Ge`{%c3$%@(G+jw0wqr_NJ zw;sEIzPRy%sl(c)V`8GuMKph43bL>gHGKJ*xUN=XDN#>JP7nRUK&)so( zZAvbLu?XEi7-%pH-BM5(vH%HGfCClhL&W?W$D0pFt+lYEkVt3Pd64dcA@#PQP&s77 z0%XG&L|Hz`_m?B>r+kkPyH>nF%d5-NdLFFpy}4#)rxF%HHU&VQ zU;mjo*^>g>*NjpxF^?)=zkY7@Hh{PZ&LRjmuPgz6%?~`gx(*PvuJ#zZ=mK!v8P6LU zE;n)KHh1478;+8}edOClQ`fFb5$357^LG!BU%fa+>BZ1Ia#v)bpFEhC+bPEDWOFT^ z0h&Q{peLQ@O6E@gs&@p~clWF9*Vn_Qa4Z&iA^m|{mJ6Q^3iM~829w@OufmAsLgg03 z-3Z0CC-1MV>j9b1g4uk2QTvcpIjyvtwt)%#XawzEpw+X(e0q953WS8$#^1%=A1GP` z70qUZ55DW7l!P`b^~1FR2AkF;4tba_=x@@$`hwf2lU@5z?`n<<`be^BZ!cgB&V~AEv__$ql(;Qx{%Z&T+n&9G~AS&x(8NT+~Qs+K5o`Ab47u+NQOAMM4Kl$sDOPbnlnm1l#WKE77xUnNtZG4KCfiB!HE)<_B zoXi4PII`zO>&LLo%vhcIezs*l*SNpNc*fQ;{n}wXqMm8r3;^QTJmvbUh=YBBsd(74 z*U&8@X$+}w_78k3vnW;(xuu^Uxm+0Bz$@$~)GN-jUxV%PAf>5=;XPrSFr5{D;Ktv< z#%m*0OECKE$++znbq;59ENt8@9~}MWF^b3Ek~iwjS=9_^ROn%6LoSHGUf!+~$B7g6 zN$1qNw8lVmH5>;DS50w2T}3P~i3GR&u`} z84pYC7p#7cxl~vN6P6}~)o+fS%PZQlyr$?=V8C;?cWBy&JY+lz89qiUpP~db47Qva ztZX)Mpf?=ux9Y}NeuyLSzu_C1*4dPsL$QGWWGz^UpE;q?tATs|IzkkB53)}C!lQes zdDwt96gbUb%cYC2e}mk{E(Aq!O-Z;Tm`=5?RA!3-76HD{#4p3l9xf;&Dq4(Qb)GqX z@l3A1OBctW-_(x9T|HB*1`vV^hD$1ayVD-mrpL$&#k%arQ<0&!md!>8{TmI>KVh*A z79LyeAV;V3^-04Oq6jg8QKaQ2A7q;^KUYq1)OS78`(%dM1qOY|E^%Mr>vu;sBc2>4 z!`^EbC9{gwML#*Z+G)I=xOExIK+xWPzO~tKOTby$M?N%;9Tlfn7_A4bm>Me+@LN`w zoSUcKOSq>>g)y2qRaXC!O!fS@?3hONX;mt~@&R@P;qAAM-|u0EfH*$4x2{CWQx zP&`C>K13>iNh<~7TwfCaN^ClO9S#!Ah=^7|Y!RHtq!b;LG4IEu`wEpfz%lRV+I8tx zL%1;_f*ZeKM>cBftG6CufKrEso>wCpJ z@bQX%wn;39NaJr>oh6DO>qMZP0Rd`wPOaQCGRdZkVd1jhc~pe!_N+YBkJU$xTv*E| zegrGsFd&kvMOX+BJJX02bMnQ7DWp|}P*ElZp3)DETwLYsb8r7GzUC=@R`v&zcCA7-p_Nlh9EbAwG{@gz@uDMn_aR}4qmWH zOG6V`WmgS!ltW(3LX&2o^~}XUr_5$1te*8G_)u);=!Pw0ZkyOp_5ZQd)tAZ^7SB#+ z#tWtnFF)}g=?2JmsoCr>wPMO!~!eV=pKFxpjTi~tlu`&H(6E_=Yqd4id z^FapdOJ@4cg&RLqA`(?vvai~{b`af)VJyP7 zv4mEcN#x8OFC#+}pVVJco%;?|f4qSqEX+|dUJ#egCjJ+`{G_FV?=Rr5qeEhDAVNM< zEJG>H_+ID9H+B))1Ma{&yPepXt zP2Yx%j09Y|Y&~W1oT#y+4NErJwISXcApZ8;#sS&k7NlFukg>460)VcD4Ctqss1 zw%GW?_chZ3^23sF`2R{Sr!W2FNVd^0+1VP zPU)@8s@_T3J34%L$Ax9KCCM$vA#szwA9mPceLsIQA+4FQ_^vLoV&=upJx_uXW4qH6 z;Y#?2AJA^ao!#3C&ll|}*anH&1hMC52gvt?rnxQEqLc|cx3AY}(T!xI$fsYu)n`6+ z+2Mc1XgFMZ$CWA9$EFBgkf4)JE2I$K2lewpo@fM`jpEV{fxm*N%&*jb9u=_{D+Ejd z%4*cPfitiiLUAq~o+no3(28>aMc#Ce!{Ak+Dol;Yl#@A!QMxW!{e-!jswgaz!JacO z0wchzPhvS3Wfi?Lbvk!}-n{xe)DFQ98!1ejIjcV#}h(D9k!w&T&&lI`wi zYBBXrn+pnh7ok&F+jP8!)<{`x;g)v2Y_Yt!Oy4@80dMxI8=$5P_U-2ZDp9HYFU& zh5!QpjZ-6yQ6r29(>(T)k{jakNM31D8|o4iv>T%t>`0D{T$RoVBBvax|145U27{J( zswzp8akGQ%W>7sQP5MaPN6{lxK~+T`jm-+`5rP^tEn`3^e-Qw=`^oOd;wUED^ic7- z46BribsdZ|WmcDGD19!qnLtNexJ-wJ>*cAT-s8Z%s9pdUYS7aI){0xKGH|#iyDZPT z^gKV_?*R=wdwCM@-|?7k4GXl(AST6W&5RR7#i6g~)lP?2L94MvIeuu&{MF~VTQ~N% z?>V8P@>zj_7?5#W4kD=2LZC_mMoSf_iN~QV4%Bks=w^j4Pd$vmfor#uZ&^0gBfPGoM_H8(~_y|K#M(=4|26FLa}L`N`Ye7bY&UQ?zJGQ zshnD<1>Z3?VMNhu_{Oi>foPBMcHdMjsz#k&R!=wpCe{XOM~8+7YWv(=whB7f-P_st znXVaZXVT#^Zq^{%TTY)opcUmdtH>#{43o=;UxzWi@O8uRb7@8Rwpo;UhC`oNOW?%! zW7M8FwJBgQ`xtp9xJC$6b$dRrCq&zQVhyXg z@ZHy`IPyC<(h0kEf5XZim9p(UGp~+OEizHd%I8YRHEe51r~{W>*7MjzvtLlu)QLtV4ecxaaiTB@8I4IozzEhgg77Rdd>>}i zg=~E)t2;$cr4c#E5(ME>ZEWX*ZcpXGowLF+wrlwMHC!;a6}M}w`5N1@u(fZ)W-7#= zQMi5#c&V$!&ukMIZk67{=7>k2*mS@rG>cVbfN{MktdXe+9amPIc17%nzpO#!m)$0 z;YB@SJ4!Dmh5*q@ybcaFXz?(7jXT1c5Klx+Um)4uHRdb-6g8J8p*D8=q7%htexLT$ z9B!xR)(xh*<~Wy;ElbV9(#KGn01-u?bDRW7DXfDzNZ!ZeIC2?|HeoVuwzSVX9cY>Dh;~I}dTnlgqbz zq6bdy0Hm*fBOBELVMnSB9^5OGB$<7xdI9Yz25`;=6Ly5K5fd_BL$o;APV`c zTUYd1qfcZGq+EzdaG2MVB1YG(9*UNApH1WQ#*{D$A)wib4YJLoBWFR^Ks_SO(~?5_ zoKMj;P$%uPdRVI|h{f#>Ets{j0mVmJQmwvG$8%R;wPiUf8y6hW?n~Uwy`Ku*rY@;l zfBR_V*jN#ZFb}VS@U*a(@D>fY-tOB|+zr3f!!r1h`co08OhTbIL+4`8Aeo8648DH< z;OK=Fhrpu{`w7V{&`1;lfDr-TI=Am{mh&m+#!=hX7i-^58*@5PWtih4JJ^vA^Vl07 zmWtoj|M9>!vEK&tH)*n2<6>~Z;s6}}uPyf7FI~v9Zzhlbwe1M|uoGn7)7y|mAbJTvrzktSJLr9bT z=luA7;|8^&{RV?%iU~6qItHnGxy4Lv?d|vm@gf&0ydc%4Q7r!~^@%qyGTl|-RuYUL zetEyatHt%rU&48|F2)%UB=BSMppLHT!M|DIY+o3FyO!9dds^&2acFivF>lPQ7Du&9 zf8=At^X{IV_{Dbv6xLYXb#~x6Wwk}UV>6#|>efddXY*mHF=rhh05Ulr zDuMpd@>>StNJ>i9-jU9W+zbM(-yliZspJXVnXJ~C~ zaXu6N_OtY7RwBG<)6@IKy^cX3>NL0SF%J(Z_kT3nB=L)#^dUTp68KsWhmJ85oZ2Z) zeUri`bzh(pK6q#(xln~XqN0#!i+zn`M)iArQA9w~z)5YW)btbY2z4g(`7^gwKb(l- zO85Kk;7L**m^j6|-#*iUk@*u6vn9r%x;6O&Dcd}!R({cCo{njiuxdOH5^j0%M$48z!~kQ>K~ZuUvNv^%~EWV z28G>j3%Srxq_eh$GPc=@q)5+{^5TYq}ri-~+SeMLRHlUe1qw zBnE(HGkd(uASckTf9@w_l0pD}>j6Y)8ya7(Q1Q}v(69y4JpxHM_4~QJ?Cgt3LVPF< zs#*Z_*AAq`y;qs zH|(hgHf{&v>BBAuPP&KkngLDAz5ceBn0na~RJ$o5hip3lrR2Tv!8OtW%EFkWguGrb z(1q_&&hw}pCe;p8$WJ`-Qs@qR=XQ{_tV)mXyLmINK8Xo?!B}hH=c*W*7g2BvDaW3- zQ4UBGSLWjqAm6Gq53~8IQvmHL0BTlas)fCK8mNt?srQpXt6&3aYWk95FSnVRD5T)k z52bJ3)-?LenQuLIbUEwk4u7*9Kia!0v~<)GUsfD*ZGYI0FW#Yt_Zq(!s#&~7l#2c5 zXRxoB@>*rR)OR1Azt{2OLNEB>oj3;a|OqjNDePjF)9tL50wu0f5@1bnw@h zXD!bw;k_rO(2C75W1UP{dG=rQs$bX-|5^g>FH|uIsuXP*t|M>VDm#`*1ps_4WvwaJ zchlW1V*U68b$CqH{^;GBHQGV{BO?+;q|^fJKnLTJi9%`?02Z6Zqa82n(!F?} zEwz&x(5F`Abq37FxL3ORbm`kUfc2*Ch<1V92HO7BY&La>urTZ{8brn%a%0{LgR!d!;DoSYdH=Jyqi{CZbn0&9NTWACro?6 ze)J7_oZ;=~j9%gHy3Cjco|T))IXgGuEcbE@(T zPt7YuYfM!H%}Om7W7Xw$g_14jr>pmOZS#li^iL!gKPaBl0YD0%7g_42i_%%&A!|I9 z{ttZU>Cx?0oo4ntuaQH^7R=& zgH(=={G1N{jSsqvknuR*P1ZSBm{O9S;`|6c)~GrsFYSma|5q%1Dmglm@RlT1|IXGV zIqZ@H5?rXLKkRDviRv4Y{sF4#Ka)asD0ES>n#LtE{oGl@?#$KJ_gTzftHVFTMz6O- zhv7yqz@6!Ca%;t!QGXB?fROOa*c8`4@n#48ELcO9lP9bkWMM`;N&%13&VzY>rp!#a zQJw%d@u~~k9-Rv^CwJ-MA;(TNVvVMK`UF-C5WawG19-06^jUpY`{;cjlQB$`AZS?J2ps17vx1p->KZDMT*XGVTcD?~ra= zH4WJg4p}uxbu4|+2wyEdibDj?y}$cEeV)k-04%;!HKm`X38+i&z<-$P2u&~%fy`Mi z9k&mAcKc2i22K9LHenR}9X+s(s)ez4NDgX#4tCW~ULKL&H@xrr_PgXHu@sZ_)u(BP zf!G%(_BCiyax^S~%LdY;m)c^oDHb%Ty0?uV+7ez4&>+h0NoePC${~_1dwNmYK1A(! ziC=P%)L~NFe*5`4UtRB{tPIM*3qy7@6xx6H+}7cDzPEItf?WpHL$;q$*zyUJshrZJ zkWw>1Z&_Bm<-i55wE)zy1T%WgDI5a&B#C$5KLf>=Lje+~r4&u0La<+#g862VKd6k| zkoK{+`j+tByE!5Wg%8xPrH(oCW$siIjq~La0e|?y&j4fUrI;~c_3(4D23C4*S)$ra zM$5?RGHLyUd9~y4KPNxCD9-ePxgSP5%|#oAkzkEoI`zl^Ho!1y$iKM+OS^@bxW^*CM-&p7w10&nJow{h`3=j>!^2e`OdK-1shPRRe@kTnTW%X+Go$OC)|Jw8;?D5Hm}V+GR6Wr|SddlJI1 zZI@oYM494mAXdMot4-NL{rKe+@Vx3NC``h}$b9u=0vmkKO5R}419>qEN=kn+5HvYhb&@OZKuA%mo4%zkZp&iLP6c=*lH1W`J=PsZ) zoAc2}55C>veuam&=OaDP37RDSpCDlZ5qAt*6Xg?#6St#Y&MU3BfCBRSYt!m3rb+G)X`d(Ox zDI|{NZGVgULo)xQXU(RV<5`cmAUu()$1j&TYMxD2Scu>2&K+qrZ(rOK|82f(&STY;ZTQXA{c_!bz445G;=F1-`^XSw@?rjr z%1tWQPwr&UUi=oR@;|%&0;Q9VgN%RE-)s%!ioFt0w6Q;R10cp7(&!*Fu8P_11fi7X z3k!#o&pWQwqswRNx<)!+{0 zuDXu6W=5!l2*69bM_sRrcR#+h``QF>7wF~>Q2N{MpzE1t7+hhJ>q^WW&)KgohzaDa z`$(0FR*!B?`Jk>~x2Xe_;|w_s;#ZmaG|@d}$Qs+Qj!@34*S2!BhLLrEV)1{b{u zl^CF@9hy4xUOJ3Ww+$#4aX=OthQWfV0lyNA)m)dLI6@nnqE|jt*xA}1OfoBPz=uD6 zsFs4l;`=%mo%Y+P5w^qjCZ~5r+lST|xP54Ym1AvvA_f&g5gT~aamUYkB&Tp~QHFJ0 z;?YJJ_(Y!t7n48e3vbS|Y+?-|9)-U%%0BuYszqOsh)dT~x+v|hTj}PgH8MeRg%_0y zsalW8NVOphvOpGVK9EwCnqddNYhXig$2jI{!o5obw;M~(ZuedFAcJc)<-2?u z5+|yyUawZ`olPwBE-~RwUPdT{s5fDAXLdFetdl3_l(d9~Th@f?ghQPD|IF}g zh>C)`-cf=V<&@hT6|gF7d=|tJtrw7qWnmw++mJ4Vxl6hQT@^6Hf|ZJasPf35I(jDO zuBU?VB&aTK@bA(7sHpMjf&4Bpu+ZeesU#cSsOr_wKV}J16E6=@uko7I0;6r3mVw2( zE_6W1zdzo~N-G_O8MHQD>yu9{3 z!VkTMtJ!v>;m7AT4ZYt2i^RI2^xj*1Qucz`#@GG8@zx5bV-{8mB1*a20>h%hGK$2` zJn_>|0s?E!;5cBk{GL_ie$ARJk;F3Bra9{BX|{?JTVd0mJ5&zU&m&V*PB?{^)RC1M z{H>ZT+p5hx?o^4%*$;zwP>FB&3^Q?ohoB8=I;gKvVzF z>tb$i@xNw<9OtS+1p5~05b&SDP;+|Ff6slvI?Ks1w!auIq3Q`NN(E_URYA>v5P81JYhkhVSwy+d!*P*XZ1W>AO%B#7s-58H_D_);__YD zKMog<@kM$J-4BZpYkG|#irlpL2Gb(gnr@)Q?wM&Hc^k&e>=oL^Sv6R|psEo?Ac$0e zEvNIFEhU-1-^V>JMOlb~kdS;MO|1N87ylP2-zc{}8%{Fu0 z+%oq|E_2PLH20Cq+~wBHB}9z~rP{@1?!!o;=9;7$sZ^@XT~~yp`hG_x=|)%et@iW# z7e1fQ*E#3;)D|N=x=|LFq!~)xF$rgnub^~<_t5^fIFlDf5^(2KH2d$OV;L{d z#$b&Mqd)du%PB@>^73?y2 zyzc;xD;##2F}2Y!D5D{BvB@aTYR2YhM1fb1sI@ z<+REZNO8vYMfT&(Xg7-3aZF()H3rAQ4-la{X(t|%=(qc#=t!mFaJ`G`o~i0DwKE14-M1-0buPK06iCysosx43 zm*$ZnZA%8{aoF^m!UAbb{awSooogT!B+QwA?q5kA%H=hRS`pTr& zo@i>~#(LIpL$9$n%>d5>_2w9GJ3AR{cHWQ%p$C?c5`cJ1Ys-_#GVw?vJn&$Gk{TJ0 z9E zLmO@PY6QeqN^8(sy|!zQ%d-W5pc?j)-w`uV#>oZ&BV*-}n`{DSbt@^X+7h*(m+pl?s6mM(ULE&;}@ouKRxNxpw*^a5H;JEC&!>_>K*J1 zV%45;rgUo>J`abc9VYRm>G=+|vDmzoeD8SY{`2uJdhB;<>T$nh;z@A^yqj?$RnBEz z#R&nN;Kp#{Z?gX1k_}EW@^zFJDP@fM3&rVMJ$RD+%`;gq90l}`;Sp}yW&oQJP#q$| zb->*IpuxWWAuYi+vjdBPYG*XYu7wQlu6^~Ha0TH`O(lb8|GI8Z--JGyOr35hMx)oK z_J}t20%}*r7H;o&UB&AI`V2vU2ueMw0qOi{o{0z%xtaC>-(-+iKD?QKV;Q=m)QKV$ zLxsoQ`2Ax9luLE9iLMaKwh828q=yS_`T6IG$85TfuZQV58_x1t^{K2((AI zg<<5(e+=W%@s7V5eAb+0*AYE)%InAa`DLGuZ?NPl)`ql03)0K%U>M`r zL2L!-ELLP@DCpMCD6G#A|JpG_nEH$iSK%+agw`1Xbt+u-GCr!^UHtIzoC|O0vPkQJ zM`>gy2lo}A<6Y=D@Dj=pA*N}VM8gK!t7ETpoLc;lhspUqOqy{2m+obd6fF>`il!Ss zl>Qa#iOlp-Opq=8x`)V-%0%#AYNj-+-ew{0IDfn!tJ>d;-!E3cIb-t4pOk6gOR~vs z0G&h;gdu^qm|@taF(OINFcIC!#FDg6%@MH!WK=bif{;Az!07aOV9$L3UA%bh`^#(F z?~435`y4I-V1lnHbe}-~w5x{tW`f%$OmW`eAgKkK`sgePB)>6y{;$3QFul(E z9B!|{_|nKKD8pqvKsVuMKI`CLt%J6D=DG>^RbS->dayccT$?pS!v3~1$%-hNSa|UL zFYEh4xj}~^(23a|e)smVG5+7hPsYsGslHM_n!!L^GqH48ddN`8@|~K96=xV9M{0S{ zFZW>o#9>``>eBec`VXdtgwF+@%bU;<38~4GR4{jTuz4EAv=-i zr$`|0hr)zLGSM4g-Pw_{#7nu|0SzJT{D_n7@qOl2Ofw@J$OgV2zW97HUrcv-F`eiW zMTbTJd`NM=@l5EJ0KH{mc|349TpSeYtl%adMkDR{=3^b7MlH{p{PvX$xc%DSZ89gX zGwot>$Jki^W0f*^;=Aaq^?Qp5Prdm|p@3INDP3MKcv)J^)mr*U_M> z`;n}d>8$4>qoX~nW(1iPi60Or>+beA=(9j~+8_&4hCg8#E#7(5IMB!dDO znn%y4#gOL8MoaD*?NaYN+1E;U$;Xkjl%~O(-%booMh>Qhod$eL{m_KSqQa z(V&TB$8-^VxoV(p9LXo^bqS^-KEv|`5K1xO*62PnKznET8$kCf@3`a3`v7fADzq}LaesEeB?z8;X&Z|!C9rwAL?_+x1D)5FVKNUQ?)(|J6&f9G1Ij)==&m@vKXG-aXdvO$0u{MIf#>bMMFv!Ut;mW!*2X2&vpMA8IZX75u z&M+$oD$%NxLLRETryOX~GS6St+_LCC5#sq~IO<95pJg|A1pqm7z%v=DLk8%qenXV4 zf4==eCwDMO*{XvU2f?m7-qMZ3+H&j?qX={Mb1!p0G7(f7-K%h0jw^bYiD)6(p4zIz zd#!1A6%KRB_XB_fQSUM=4KADNepA#7A0$p7wHA{h#`Ex19PNnQJS>|pCe6{1ydss#m0Fh{S@et97*9s;5&|Lk72cqpO)=BUDGeg*3w}!zn zOjx5x<}OZ0@w+A|C`+&H&7qe2fh>o<0vwh_+iJUggp_?S8#ByAd9Pg!q^-f|IYrq{ zuQGwWZ982;_hFd;6U=LUrJd;NYu{(UbfTS?+Y$E`>>L>h8+6PJ^#V^%yZP<A;F- zC2RM%-`5^99<0c(3YgpU{<2a!3{ze*V7JC$xoqZeTKmOU-o3WF`j!v%SZS~EgY zkJDd_j_R2SHl1&W4qs;;T8g?Ns?Hf4{{D(_b&$8cU0y0Sy^xhba#3xuuavfZ!*_gA z%G1g?CjPhUZeW+OsqnKrQ7ju3?%7@qB@6b4OF-e|!YonaJ6J~5P?L?Q=+D+&rvCcT zB?ig>d-d_TaIh_rd%a-;Zb4V+)7teV*?_c3jsZTM13w+uWD-jr0UpS-&|2=3PMz-1 zJ8`JsuNKO?FeixSSMvmGL9ei)Kl@0~>o(2()|&MB61_u$OZ*3rL@rzz8Jc7d%^A#y8{IwdeS!M1CE(Lg&7C% zuPaIP0&}r!FEeUiQPV+VKL=W2`}D45UBh|-^q~r(PJ&!6sR&^ZUiy>#bqx29?MW-I zt$=%n1`tAnMdwA4j5RHLXv2{5Y_}lK+l&aB{;zI;*KC$R~2G0jPqwpUsHZn@J-Sj z5_-X;CGv}d)d}*ofL@EAADe!i-{&Jbd{FYpn+D}9@u4d)Sxcv6o9m%*-3ByJ1wL#@ zHw=#k1k>QDBPZ14>Zh_~Em>*T*x^0XF330RlQ!nJ=_bDR1NS`N|Fcf&40BpkDA`nt zx%ujw_%#L+LfCS)z>_=jw$iH%?5cL-_XZ_(2S~LI8rpZOeq6yDzA-)VDA4b>+tFqP z>)4Q9rln;QgFs0F7^MkS zaeJnqbnZbK`B|Hx+%oaf2LNK1*h|E6BZ5Ss&!?A5{)$0PTIz|-n0OlO$#7UU`;SnN zS#oQb_w+}9$$q5!x$W-Cumq|y+|+MTQQEirl>2)6D9BXpVc^A(0H=984d`!|X#CRK zGWBc0NkL)qhMbY3Ars&{LHQDK{guU|y%tM%$#J(16!H0A@7}q;lEloN13Ws?EV+}W zzWwrw&)QX(3u?()fGUA)>XaJm3nv+^=}88GuL`z1>2?C3mZC?OzfWBHsDIS9V=IwO zPxe%_c`7_No8t85PFs8LkvBJwJNyvtHT?uJUS9FKh4S8kW{_W9JXvcf*^4I?6)|{m!_|PJv8@j{EhHl5>X9sw&Wht2R`?Mb>qgd|5)hMD*eo z+G1k_rzOl6bG8y}7sak6az;sZ0WJC7O|E%cKlyfaVNt5qfxkDLUw)A_Iv znLqFbGqzv#@~_PRC z*6k6eLm?s>2Lr+Z^5s43VxPg{?JZzkXn5uH*ea?vxANwmqVbl*o*RZ|o1*38(eS;GR zAHFUy+@r=_34^Sw)YCs`&c^qc@!lmU%F&OqG=Spm+?;Wb)* zPI&@g%K@}xDaz2WIa(uMy_$04_64m`yx#T_@h0!ShPR3(ZU!WS zD0{seUS`+g^+2!Z^OT3Z!9+>5_h**UsbdaGm(keRfI`i(q=^KJ+wUzysjd?)i3ze6 zvCz5We_xJmiMh8MrtY)e4nE_j6`-e>DE?Wgk}^7gkIr~=BJ9?Bxso_s{e4JNZ2##) z8gbUCswyg3H1<8qg~lMPLwPGW*B;%}CFANg!*uC5+aCH(#vq-+uB zEL?Gx+naw(?qz=cNf;+50!<|1ctd-TOgMvw=oKYJ^q1-rdXbH}kiE)N#I5Q*2#@AP-i59%1LHmF8QaIgQ>J9Rbz88An^DW&Z`ca;G~VnvzcxE6TZwNL>XFo@Q?LfsDbq*M z5n!b`GSmXcLfBGTxyyqm`X>u=w8J;~kVe}3R3t|LE@ho)VS7G6aP2lKvKoKuRjPm{ZSdJ+L)Y>+EMfhnM z?wK6T@1U`?LIp;y)=c&Eij2s)5^NjbvEh&4N|N@t2>JI=Q(Iz+l^=ZMsc?K2=PJQ2i^*=y%CfcuKoeKTBIrr^?-;5mp+uLA?`Vx|@N&st72}$Spm%{XFyb*Y-H|t!)q=QN2&} z>H+hlkT{s+w?k~6+u(s zXy8YF3ti{sKZYHC)#K6OJ^14vSs0JTYFBznyJ@}D9q#rR=)Ak+N|#~5b;VmU7MXVP zzND60sYIjup@l)PMKTn;Ia_dOl3h^tzWKiZwLSB;%Kaoavj@AsB&zuYTl{TxfPisK z#)hvy$JF?SF||)Q21@_fLlXWjhFSpLblG+~%X&-##17;gW&rTbaq3OQ`mtlb zSdXp{0@(zLGinEejcFuv<<2OU^X*^Fa?Q6=<06 zLI$je>%NWLzeV19q$b3_=%e;iN_l%=oJ#zW?^(>_8VWn3w)24q9Qg490P56n@Sx%_ zQ9g|_+537|zThxk0ebkF!8A+XqlfEG$(EHe{wpfKTNhOv&rbaD+w)O)dU444V(;w3 zce5_Yx7#MUrv~30l&iT~WP9H$S;2H7{E%3#F?VJkBj?lEN(PmqO9O!C0Z1nSd#j?B zu`)mmxwFJKA?3d}O)z>^FX`E6>o@w4 z-;9d;X}gCjDY!an|1dzbN${f<7;n_WXe%>0hg_k#N9xZ0c4>>Sx>CP5^Tz%{K}9C+ zHcLtODb#AkslxI2g;2K4zx^$Cn8TBwwoqc{2H$OoX#sDa_!U_HA=zK+hl^_AeZcSW z=lAZ^Tc!Ff1H5d~k;)b-alVA1$o~#XBQf)PnWK>ePNpRTiSP42A%Tew;ddKENB%&> z0h6Ud`0llsuU};&oDX>o!O;OM9x?j7ew21Ue6y54Lb7TQA{!>Nw6x@#c*s&fV4_GL z(*A#D+qGp!uQf1=3^JucGHB5zwSi`Cfg$pNLA|!YD>zfKX*$PnE+a8}krw3+0^=QY zCsS>NM}n!~$qqtEI{uXlBu)-i_;Pz(l~;@a;tN$d^$L3RV0bJUagHi;MTBi8BeICF zF;D1CXUG=ewzz-;pTxlC%k*LAgK!D{TM_VC_0g@9N1qoRI0`)Ygbl2Lt?;w@A4_}-B=hmKvMf7O z_|4br4Re|h`DjD76em+E!u3dGjC8X0s zE56H~ASnkuiP3_>Q*nVYRt9A}4w@yWZJ`{^QTAs92BbsWnGjO}$Vmd;q*!m`DTRvR zX_L5U=Rl9P%GABkkRP%RA`sLAFEKcF)CO1(P*^C&^Q%FOP%t=H9H4SAT;;%U z=;0j49Sp||ikbQo_&Fi^F$uH4K!3!cyT~Dv9FvequsS0{Yb>|v&9N?P?{5a_+QiZ` z{h;Shqzr_|!Q4e!_23ruNdUdJ?&DsSZ>$|x35D;QK}WN^FS&u~WLWkTJWj6eyKQNX zIB(2uTc)_|fJN$3Jh>n0Cp%uh(3k0U4WB?#ZXuyAF;EpEh$T(O6sPRN&_l25MxE9D zYYk8E)Qc43%@F{5O!q(mMf_&-E@2dWz^;5yG4it)A}$Q|M_-k z$(#Rc!F>nee)MSc;-URxm0^@1A2K!0Dym_d_nv+W1%Si9Kbtmejr1A8f|o$9821{c zZZT09EHXx0q*)8`FAHmGbzufDmBJAf>7npbZIDk+RNS(PdP zM+UNoh-7s|}>k<;427<_b!-eyp zE=i|ynWw54mc2rm;ggMdJUzb*WW{9XJ+C02sj6QD&XHK?SL^E9 z9*aY})7FZE&rTWZFhJee8n2aA-k;M5(@Q(MsFHu#i;gQg#g9X?q@YV-Y0fH8?xf5; zqF_mYSr*y7mS9B!RQ)8pCjgH7)!M3;s%>1K|5p9fd`RJ9$POit%-B(V>hW;s$iAu`I?3q)Yq4k`iVJ|XO);of?awvSg8n=HK$WC>E>~B(yhMfcczoxpJ|U(Te3n;!lB7&O zNY!Zt?lUgNRqmj`lpvy8rEZjbSe!-n`9hJ^hJJRB&9|!na~e2=0Y5B& z^EWM*BxJ;?)4?6FS9Pu~WrV9L?^NwDY0^@?rnMiez2EMqtRXFY<%!B#u2Ee2vBs+N zx%>DFYna!#?$?u;3En0gT9657jx{W;jitG$fys|=6D!I) zd7wte(AmouAk4%t`=jsW3QL?J*<|Du8fKO_c5f1Wiz#z~DbqhGb0t!xV-mp?sqJIX z?MFSD*Fn0}S{HrO`{8ZVbibbmg;lBA0Sf~LbYLDpW?>xnjtNiTootv;+Ux-;Z^$+= zD|Y591!dr+^D*FrPMZuMa8nn{eUrae0QDq6$V{7%Bv=HEa}ppkz(n6C-?x7yQ!$w$ zTV>_2(XZNUln!xpgPMh;QENF-a0=v8;*q6j%384S6 z5IsRg9_8f;@aB)V6}uDy4om^Hh>&Y?(4Bzdx9QuLRzYX9pnej_PT^K3;mBL7D=ky4 zRfLOH`XkE5rEnpjhoDiLqp^bu%@?4?82Duo?m6}5kpZ-OGT-;s%q`j_bTdjl5An9~ zVHO!4vj(;!N zx2*%DME%=eX;A9|W90i%sZ^60gyr&}wbMlQzy z`G3c=0VDHI)saU8h!PS!E|v|2#!!U7hf`Wx$O!}=1RsaG68-Fr53+{$tnUM=i!@s^ ziO?y$QrB#9ub1mTg3Bg{T>EhtSRPzQ0SXjAhbGY=)Ubr;iN*BaTSLqH!U9QQ=|8uG z&nRm!z|kbcrVzS@ftc9FFk7Z|uS2_9VaMmeW|C>EG}F@a}M5mly3g1R_~ssTLD1ijJ8!WW$+p=G2BPaJVf6V+qD-nMe>qKvoGZi`?%<6+>F?XW>~^-k%X&`g&SQ z0ak{#g*T}Ehw_~^jdG0F%*jr9IonjBwb{CE^tSucA@2SWU(GfdUoy(JKsJ()aZ|BUa!3|H9r$CL!0L2M96?;m9np&1G?}%N-(-T0akni(u~R2jyY2GDXt2A zLm+dVCv!nE_G%Hlv_skSSlh6ppVq<5zd^!sub1~qUm92f(%EwRHC&D`;XtJnL2*S~ zy1xDtlH6&Xas$qM0Fr%OktcyMiHH+xpU?8-&l|}#QIS!fQM3~=Ki;A56EWyT^dLYc zdHP;VtK#SIg|_ksWq>!QU)X35-?HmRRtdAJ1QSOVlTAjXn(kLT2m|823#euqx1dv| z8Tb7P@$DE5BL-lIA5r?JpZ{|R9yf)E3xHqRw^Wb2Sx-jlm@UOM3$i7ri&@)iKf>Oqf;8kuoc@6JLH8deA@&|I^+H4*VlJ5!(l?RhzBM z>_G3J`iSeG?(=nKVx#Ehw(3Dn5lYETkg2{KRAkz@nNW3nh`hFcwoc{UY?o3MoZxe2 z6XNlDm5;9{yR>(!TudA-d!3S1G@3tyQtYHu4|A)`X|Evix}$|~EU6(M*{bUf21C0d z{j0QLSoN*S4DO`Fnl%H*66|=N9pO^cmYA=MC3mO09`%QPFMt1_{%-bOcrQYA`XFUUkQh>mtK+pa-L}B9RMI4V|Z-4!fsks`vmV$tX>V}J8h`MWPyup zFV_F%-eT(S?4{7A9@{P-8nZrfA}r8YUoWxIdGtiIHH(9>mXN*WPL{og)OpjKdmrgK zYV}b=8PmG$t<(iD*0h`a)<~afS;or3Guth@m@hBd@9T9!8h_}UtX>$&z74CbxUYMjt|wrEur3HtZKT=bL{YMfReP-~ z6>*?<5P9IJmFZJ_64wRo@QV=7v-w47tBvUR32RTk zyZeG#dU%bkC?#;I`_u!wXC|UYWmC{=9;)ku2>h1+41gHtuZ$r%SF`}|ml{}gMb*D; z!TtQ%(S}h#d|SXfAk|p#7ISZ{pgx?&O5g_^3iu*V*?5<)q<@m{{xCW|HbJR1(Xv3sZnF)uiVUGC3hev02qORy*%)yut*%etY%^ zunzrJ`Me0MVBCM(LXMwci}Bz8wm>z?6mF{;vSDodM;04>Uj!i#SVtHV&IhkDu=++t z0aYIKIEM(c<~|~>FcEG(2)&}Dk)x?sHTjb`z2^cC^VG-ZkFSyRV7(`8?1qS^Uvwzd z35HU1r6N_Z-KAuIwAx&ktqs1ov!uJH;Y)bym2>Iq#gWe@0WcwF*L#HWUQU5|qjT9V zJGxErucGHvQ0eS@I{x56d6OlN&RtP1y6x{;>y^b^qX%vNWsw;3{2oe;-H=LYpS%7V z&A|3O(1B&>+^tK@IA3ZA5;H@)`Mi z77I(*Y=CS|>h;-}71tAvh%cJ;fHLE#=F-jhK<_bSlv&+VmaqcSt4Ycy99{#D^a~D` zT|YgnO|B&}#8@uCT}Qr(>mYcvO?e2AyJT>QuSf%@bwZ32olpIDWuJU-Cld%0HcMqh zL}Uif4QOg1aa*wxEM(b)WcS`uN6mU1|5%QwL*c;MQgYABaG z+x=MaN;vFcD!01Csa55C&jaiU3k*MVIq?Nx%qqL1bP}=;w)$zfacqGOF$PAc%RzfngXv?@c^R2T z>mw=EiXF28piJl_5Vw4exf-n(6yHCj!F^L3v201$1WuSAJ+~_iC%qJsdr~PnycIQw zNK~1yE9^V;OC`FGZDY+9)4Ml2Nw;fud#tb(^GAVSHkRqH-_~V6sL=vv0+6*E1(xqm z+(~@Cl!wL{I%loHyz)SDrwxgQb}U4qq_t&MQf7Z+vEs-p2~@TABie}zTxaeTziajO zzG?&|b;cGPr7a#+tCEj0iEH_l8*#+9syecdo@cK_-8-W_oU-DB-_D`xtO#Ijw~1iw zHD77phPAnOZA#eDs*np2t(Pw7d+e@VNI|W!ER)!TVL))@%s7gIo;W~u39Mj=e=c?Oy8%y{DE*{oAEp+vBUxKu}(aO}a2Y$afmRL0o+2g5o z?RrmP8t-Ly)B%uUoAuoQpCoVZjuwEN$uiVPz>;6ZMMh4|)xD?5n2RlB8Ec<|&(S-g z0zq3}PjrP|BwjQQo|1{C9t@j`GApvsYPR7zBdwG4?2IPG-!4=F;Iuv03~iLWvfs^r z;-8o@8|HZOTaI0$7T(B+EpeEn0YTISD02<&8sE=6O@SC+1)2i96g$QBE~q>vC%%?; zuEV()!u>d_g1%0Kf%x=0+!XBf8?t>JKdLRbgc}q?5 zog=2F3)8qIr8;vg?CrnKTfLYp%=>zG512ILenQ1;_uRnv_Ck6QPr?oFPUm;86>QO1 zgzpsAQZtTBzj$9?ZFgM7J7?GQW@@@((~7*GnPt`ZdO$UDo{k@|xaaZt;a9hG1nZ2tr(ufbsPu5HlNg`BU=aUcHzw5vYvzby`CL zDB7leyeq!DE96p_>$1(A#p5D}x%_hl7AZXqanzdY7f1yb0n^~sfNg_P;v>qVn$s;_ zznZka?GLibWGVNFvA+hOS9=~HEgH!{jcF!!na0idciYf_2ySyaARrCWuO{v+8c3(U zf1Jmd*A{Nuu&2J=GI{Zk;aiT3^li-|=O73_N}zhzO~sU6&a^3)Kn&azh9W#`&KfPM zq=@s+$k~~9TD+?QKq&wXt182W>+rnm8j) z`c~7St&R$p>65+sRW*7*MeBsL65k4bR^mj`~Z3 zZW7}hKi_a%fZ8T^JKWTn^(uB><5-eRLzXJRTn(RQ;1I|3dOalax?c2M(+SQ%j6&0Sjrj+lCA>e zT*C~qKHVLWCv9HWi6d=Hxs`gE|4zob6+4fUyl5C3D#v*RT#(}N`|zmJF9O=C|BTU@ z+v7V6-f?t)!GDsx+dx;*B-TWd{kgZeLo>!%GY@ned$SeQu=W6ZyMl09en9v*SN%rI zms1ZGpzbAYo*i&-7PVRVKl1h!YuAR6h0Fd<@;%tHE#J0kF?{n$o}q9L`eW; zFgo1DzUt<9u{xbQzU@XE%W#mt0eDAY%C40oI++TLb~9bJ@%X^J3v%>w;q&PU1^^Z< z(zoNwg83jd9*9rycCgF$>U0%tlty|%hgJ&Yj^bu?Jo4kT9M;&Hl8%x32W}>|>#NFN z1yktj1QiVaz;&j~Bui}`q(cE|N-l2Nh0~0|oPgV)9i`tr*UgHIe((R~F(s_DLfvxt99l&bq zUY$LNai$5(QU3CX>LVfN^5NeF^rXgZ&LMWioAufjhZ;Z664(#*0(UzvkEuoh(fTIR zKVI<2K5|w+3L^;5cc*EXK-7BgZyO(H`t$&e1?-dEo9RM9K=J_8#wMGh6qYn(BLMxR zvNJABYKo`}PpLjMO#C1uE$VJ4EsQV82YdI=0#4d&ccz351l3rA_*Bka>(P2?NHcFY_yL5|oc7pZ_K8z1n}6Bje7`jf zd{r*|K8kR5!MYbj=)73fl0CCKgt9yxu&Sg<4g}VWK=hZQv7c*C;xqb+w z{rVW4TR2ODCG%jZJXlzPN!YDt+r;9L42p$}|6P_zR2C#!1F?M`?9O=ZJe@xodx|db z-!m@m&G5fYhx}zU9p7L=-H>_ruI+j|m~1oYD^uW~y#2+r=^04afnX3g7-Ym?KlNSE zWPmK{hh`;{?ZKzrl8heejDB;?ue4tvgBMCHvKp3EX{ZeAb!3=SAtb%u<)b-(vJT8FOXwTpB@Kr z%qeVba`BgtAk;3TgT%+mhE^58v8I4YJT|;T*!+#{)Xw66VJeI>M|l^|+p**bGbkYs zoo;_oZ&7}^(mh&EH9eS=(!jC=AlCpcjH11ingC+W)X#!lG>BX`vX3r*wP)+#1F^aZ za=>Qk){DsC5c+sVVN(70jf9$6gntjGdiG~gJvC~(2<$#D()=47D|j^KrC{p9F%g3F zS8i4hj&Qw-cXkQpQx`V?Pe-c>faDAR+CQg~thf9n z(b!;>uQ&JDEA>B<`m*vONx2Qfz5KqFTlK!jhM{dSn1F_Vbvrf2V~jS~@V_iLg{d_T zjZT5Q@pfRB!-FUuCd>W4fspHrZ-oHO^;9AuOWPZLi1xdtA7s>6e(vZxOXq_yyFVP1Vq+UNv3(V4)1e*gnlfM>@%FSjZ{Z?mZY9EKFOxq+uw0!Te4H9YPdE zQWOHbTW2NUos38m$MM1TDAsdlT_^eg=H{(v%I!2=yL8IKY6_pEqjspTKFQiRHp*i% zAD{Zj^|G35zD`2)+}TOsd~to%+%`Ues@4g#KRw|{c@ambg+}+lM<5QQFr)ex%*Du(=d00ojbgoKi z{~MMu(^NMZ0zkHJ_zf61|28+q;tX&s-#b{+XwC zvAcFiB+qa0^yR(@Nd21CNv6)|$ha9+?;)za&)({xFH%ENi6jE$neWj_1b!zlMLLUe zp%y$(mWe)04YPy1ef#*-_aNun(Q0e#lRn4+p$xx&AD=-(MQ$Exi9>$<=pZfCpq9xH zH~m$>YWeEZ)>~)azWS2nrFYLBd!30{QGPeiTTN2M^aK9JhkvEoMs)+K5&{+}Y|+DL zw(HKnhCrEBLo+3s7{*}@1r1?OLOqJDFO0l09e&DZa)IZx{p%-|m$4;GdH8FbctLLc zz2T<_b5x|tRO&m^4+l!vR6voJughE~(vt?!_Cj9oDH!ib-E!FRPXQttNT-8*X(*Wf%^G*Tc zlFP88sG*?bry!Ys>`R5z0H{52le2 zlJQZ%H^e-n2dnxzezKk4p}Lov7>u1-Judo;lYVM5r~V5VWo@aHb-YD7gIR$6Wm}K1UhQCYHW6Tv4DTn`c&J4MCr`z? z&)Jz{3g08ldLw%DKFm)D3?)teD`UrbHGaG_C*B9YD}E2<>7Ee>ZO?oe&`3&U9Nhk| z+z$A}s!#EUC`$Z1G=iqc?{DLiz`F*!&1{<_iQVf~35=*+FGZeE;Ze zpqg~yz2JEJ6KxL3XW;tE%M5oUQ>ZmkD6b~{>t(<3364?q;~UDo94VDAKq*8-8M=F` z+Hh9TE;F9GEu4L3iNRc;>s<~MJ&>17TV`=!@-x4)72dE;Sz!!Km;y4O*}Xv9lo2}w z?0_G>Js_MZ!fE*{F>s4ZMREp#BFay?E)uJ079}Bp64O)*yb`-{a!(-93RY1A{VR|% zyv@E9Cd59eT-AowP7tpTLZjsr?Yg4`G|Sg_)kr3yvRuo;vpe?cYf!BL$y06qt$s%r z`jTfag8O`)Hmm?zfGG;5)c-oEV0oV$DM3yL)$Vm7MjW`Y??mhJ!&7^whf#AES8wMl zxfb46u_|~fyz<-3SJi6ocwOmTx9FRf>F{%(KF?ZSA8{{J|0(7qq8r`eDyB=^%!W)C zfxc;TGfzqRt-uAMKsI!SYWtAc`FDJI&V?#vq(P(+&dozZr-A}gf(PhA-B3#LuCCS+ z9tg9OvdEJUv|9|R*j(!1xY!xKYW32@OnZ8#r1IJB@(jUbkec1k8h2>?tD2ha-@dB& zP|E9`QC*@XyMyAivw*T;opMF0jREyfocE;Zy32c!mIs}^2t8ByBgX>VqS7^j*~mk% z;#Nh43+n+i)P;g@y7{DyR*lp|W0()xZbUQMd&+NlW-l_ecm~i@714DLenmeb&8Xa? zA?>PCt=xWdBS0g3i+};wV-NSr939zcnK;^DH^$XJSq73Zxf*PMwiv;^EbE)5ebKOe z61vZHb0atiZE|wpnvBIl)=inqH|^e`b5I{LB+h9jOJiG(h*(h7KR@v(ZLtTuT(V~)v zifJLZoMxyvPvnF{MrDoasm>3L+~=lunT-@a_EY`|i3kkQX4KT5D4Y}l@$VUhx~J<0 zCxX~r|#Qgc{}g?`0Z{%X_L!LtO45UWo?nqP1J{g(SZcrjYk82 zHHJTlPP)POdo$`|N93MqmI>Q@JaTvtIo_Vz`M4uQOAPcJg;#3cHQqxuzfE#MSyuek zE(gu#@ObcC;$Hn6AeIzJI5{N_R%DbRh~SePCd!%=fbcoi(r1G7Wki%911($lXETWq z9ukO$1;C{|pAX9YEAHl4CJ@;!LMm9G!*9^?d+JBPbSt(ysT!gwayQc^Xh$cmvA3j` zn;)%GE5UvNkC0Qi@^<5ir!(5obT1%kYNkCEq&lc#Rz~+JPYQqC6>QXI9c^6lD$wQn zDK{oaW*nfTuZ8e6JnwK@TZ7eb@XU%(oA)MTu79+hw?0|1{dHBH72^bQ#U1YS#D1Ju zs&(P>Z#Loc&mv6;v(Sa`vIg55US)pCJZ|-{s-Ta$lwCVJa_kYH#C8|EVQ z04o1}`fB4)4Jmnz9oR5UO`Ha9$__?rV1w!gvPZF&4Ep_U5-z@nT`JKMO|Q+_1hZI zlWOW~{dCjh)}=tbQA?O!sM*^>^gFo+0o-qfPj5<)oT|Y8 zQFP|fQ2l=xpWVzD%#59(F}AVqLevaH_H0>78f&&RqP~=BX6*YegvP$4j8ajmnX!Z< zl}e(9kc5z=b$)*5+&}L*_n!MX_kHhqKF{-dLSbsv8^Y5O1nf7Dl+LC&g}|lf{!2k( zhQ$F%j$3}6kvcqbJj6st7jxg8{l;iWugpEEpw#fk7%f*7S zMDqGA8ustVQk0C%hTsxGkA4qiC=iaBl+Ta11jXr*rj-i@bznk21v!h%h zg5u;aXV~oxaCAIHkt_!8EFvpq2I3{=gj}MTz87)jbl)HO$8eDL$=K@Eq0oKp%TWP? zn{RH8ozV?_%aiUOS6TC&&9GW8MK~33v3Yn$<8m%4q5QIjAh6>+S82$)N&5J0Y56pa zsi|+G(vICd-^fkFN}i?QZMMg_Q<;Ja^Z;#9ka*bx6C7dEa#Sr*{ z*B_DKLt-b)9uI5o1*++HifD^pk-!6eeJPv_lXkdrsTlYuC8hb6HtJS(ftKzyy&H1( zJmtP%p(81`t)%Uvln?qfeQ6-(^L^A>UZI2vfAs#efNA9bAA8FzJa}FJ)%Hz62q9K> zh~LFV!ZlA}s5c=3qVbD#+ZD*&<#BiuZuIw=CGW>83puzTqDGQ=L$f3m@cc^A0A+bL z`s}U9PrOJ^lTfg8531y!5)VDvvnXLqiq_*W?O7m+TO1+t&7Zk3_!-=%r9nfS3s4NL z5)*GfF*-30NgYhxwN8ZlZiPVh05G}{*PJE`?CULO)-&;kGa?RJXn^MD_k4dfd|oG< z`=crTVMXOvSF>=5SM0PL!EN}*ZQ%r;3dc!146RdGoBxYP0a%d0nzMYNPxj@Qi$iZR zzqpQxF#6sfm*3r#ILA*J zX6n$zPwxwNS$Jw6=;NmCv%1&7EsoW%2GQ}${1>4SSMf~&8o?3&L)IAOX-6lUp?&ry zC7a@B%#-?zw?MjHB;*!d8dXxK;)thA>~(NQu%JHk4tBkMQ|#CINfj7Y9! zkPjp@b7mOgGOys|k|v=bmGtw?96TUuXfUc}B%)v9;%7N$d|vhJ5nvKsbcG|j`({#W zJZ951p*g94lXdi;^rVz_5S_M&yk6fFy@J{7PV)B3m4(^TUjE?+?XR}A_ekMCtOWuE z@*FOCg-c%FHS%zYe`_RB3|mVshV!n-nGp{nFokt}16Tia;;Kx>8~MkbTIg`?%)fzj9LE17Jm z4yuBlI}Au@rJ#;vKI`tkHiL(SaEu$DAu>qQ?uc1L!0eLrC6QV5FZ@ZBy!jokkLERQ z_{p}(e!%V(yXf*=kk4-A@y-W(-tunCmOjEiQzYfz9(b&w&yzuM(QJ+Yz4Hn)?Ib%P zEJqVl;=OwmO2)0dSFn&-UMD-;nZ>Uu;==lce~O4&WRAIGbVDh{3pxEWBk2iOe*{(y z(f91Qc*lPfLm#Rtw z9CW0G_FeZGpR9&_w}UPmgP;n6m2$2<@RnPxv|b9H<=S1Gft~DjjF1a#?IKjmia>`c zC;jOX$RVC90xLvzbapQ>+49oYWwGk zR0x;cJ&)VrDvohwZ*mEo@(nIo%92a=`gCB4F6uTC(*Ne%bydlQqLk>+eu^_~LQK_r z&Y-70Jh0C2xxLt*XXGmSJIUAJ=N{hFMy`RsMjhb@9~#^~SLN3~c%SGWSm@dKf~c^0os(i z$g)GVxPPx||GnBIb03k(wg0X>>SRc9$nq;(obNJj=dn*ljwxS{`RM` zy4N8*fa5i?-t zk0N5;4zMO{$69bEv7uvInve|S7TdyH)6l4u1C-bbr~OnNybNFGlxgg%9N_;v{qDc;;?_GeulX;Up@mCc0ltdy#uA z?d`<{pI@W|TZd_lYshvIA9h1wypLR!Y*AvfJ3CGF!Mi&IX8yZJlp)o6kHny-=)}ZN zRhf7))!Ob}OgIBJ;;)U!mnyqI7}XnDEgX>7t2^ERaXqx+KQrK6Wbxj)cO0>__S&!v zk>MHj!p{S(}hjG7hU~2xB-Yrbw+E zea7SNs`K*mz@KYenb9lTA>_n=$*A%P*ZG?8bg z%V|Rnj_;#kqyf9s7aox=A4N8xzDdUr<8wV_q`=daO&cwejg+P#0{=aSJj#r%?!!1~ z?Pc+_Wxytu$p)6mnmFsAKj`EZ*0FjH&M>bfem5m1$L^a{KwsU+CeM-X(k=wG z)p`hFx<|CCG;CW~r)Z>%EI+y8D)znmy=J2N_WYz`2v4i4LvNj@hwIm>vfgExs*;$> z{hNw00cUS2J>W1lC$bA>o;-`pKki3SWHSgveM@7uBx#+TL~>lHE@n4dYftmYw?wTo ziW#qkJ|F=X)(s;3@|Q9^vv9@K0kd1HE=Auy0K7yWuluwQ`1<tKvbJ1OQNmK5C_!l>j^;q9rC49(ar>S)n7@8Fl~O7df8= z!7p<^q5BFe9%<37#R}Q+43miM#zQ-yoUh(rA*&_35zvn~J+dN23GAW_*4z5$W${nq zhH3-|Pu{-wL^GPH&0!MtnclS?Dx_x*DNJj?2bmSFGKZS#-b7mVhPJP#if2ZgB z%I6VCE91&%yd-@{*kSvtysojnk z2ZMHweVRM&bvE<%BMAdJ84~uV9N%*kq@PMjGWf^%nKfpP7`j4`p<40R>z}ct^D%`; z-+qx^a%&4$=+9NqlBuIoq0jhr;qV#6)T&t@|NRCkAK3&B?HWt+6odr9!=E+-B>m%` zy$<^}Any>Nx}7m1!oL(q^m}6NZsl^1hw+Ta#*klW+YEIPzeY z%%&gz`xV#n{y?-fTVSJ-Q)FFEmKr}w{rpxW()0?&D5tOcpp)~PN?edoxz{%&H?FvT6Fh-Au2uwdum=t{C6;@E3TIF^TPffSop1{Da4u zA*E{+(Dx7!M;nBjzM|~K^xo6VP=2iCo6`Q9x0>)yx8U~8s@rPwP6a)$j=Ykw9|71; z$t)P~n#6v43jbEL1o{VxK@KoPhd9%>FBe*W6E^Sxhp%_pWK>7=JQ`n27Q9!obPs66oYxeKXn5p8j-4U&zwq zGS>@|wOuA?(2%E<9N=WoJsy+k@B#8fm) z4LRLs1+mc|1sk)I6}$Q*WVV7=@aAv(+yABk3IQ+rAV-mdj=1h$CG>Vse**sYeWwQx^-Box}hA{?X#uoLXpl=5)zGmQ=OiX1RIWN1l7L zg_ughvIIB{?yX8e7nWX2X_nMX(4S?rr%Q)Ee<-stmyR`v>hC`W{&5f~t+rk^IRZ=u zJwpD%y6JyE&TMf9X8Rf_XBO(&)x>Ccr05Go_Za!Nk83m6pMx!IaJEWX0-5_P@ycsZ0#w^d&m;YlO)~s~)l-bH%O@5mU1^?-MQdDN|IdiwkW#g4eREXy| zsW7M?zNSc7-;WPSV!}<q7SJxJ_!~z8#hD3d4kO^D;**?+8njo3FU2|>a{@Z+@bJ*mZ zyDey&%stL6eDkF+ac8p+HNV>Rn?Q%L= z;M;bSqN!`WPTXX89#k82T139KW^3}OUeym`#k{CeUZm$EAS#>66bDq{lf~_K3OFzY z?MW(BBnACw4Aw2yh7uoQ+lc0C@?m@bj1NDl_n00CJ}Qx!Qd%D}98zs*0d#om;;6D& z=#;gkJW|?_Q>3aPxa{wt>SC9rs#+Sp-{@)m9c{xRE1BVbG1Ic4IcKxUC6wkrRQ);q zP{EOH{~HZwCEAzAkyqNK1BPz6S-f{VijZH!esLF-K*w0NUi#jy=~B#}%QhM-xR>dU zc$ovP)-PYCJM8tHO_NRPo`tEnJ|N#3J{oM&#S`UsOkEoJ`0U$kUC}!uUiQAR`0(n! zs3X#OMY>v4!M8Zb>OJV2`_h_dSKv2izU%b$$f5M=*-sH2RzIwt2V*U);dt^ti41iT zz(^km23H;MJ)bO@#^$zeU;FP-hL!e*xHj|XK;Z*_s1$Vx&lKCTdJ0CitloQAx%im3 zgk!V%AQf5;5TMm`W3gj75=EXIUNCzX_G2@5OGT#+MdR>1Wo92<8dbvPu=(OO+Y$;x zyAH0Fca77O)_UJm*P|aDp=LJK?C@*uy5+TgqjL~dbemi31{2$`&irI46yqcRjAq$) zRXAi!|KltNl|@a_>YYW>6C9gw(4a%O0YhDMS(GpIUK4eVc6r}OXjs9Z{7Tm02SrD{ zPz5+MscaY47rKngU7XdXEhNv7dkl~%E#rt!3p8g4-T0^=pb=&U6!w}VpD0ovI$+^-8%)FN z3EGWE^$vv4#Uy~ia>>WDqC15HSC~>2LlCXAv%-Nx)|e~AK`mcQrsX^r6-KHY9gin9 zRL^7kcLwyT3SFzw$<+sy(mcI*>AU6eM9Mxn@|1d$YWS=(MYh-_WSr?pUa;X9*BvLY z8KJkwQ=e{3*;EH9P+Uu*59}~R|68&#_%n_$MbDvYZK`|}nq2;nIcZg=&0LPvA}k^X zy&e`os%6Mco_@e^(O{lxnStN+3a+QhJEWH z@#mrX&X&~6Ba@wmWDlbiFPL{NEb*BJEWA7wXKJzwmPego_0?YFJ5epRVJE}EnK>l| zQo}*g7M-a?!%n2HeX;a4x0I|9Oi4j6sQObCd{-?MK1=A6eX(@iIO$8y6t++LJ`Jz! zF$b?GB@1u$@(;+&3fYb_?wzOhiPvzRHCX=GLn`1x2km7n&Z!l}?vwWR9V%TyZ${-Z zXDHu7s&~6P5R?pIg^T6Ka~v74iPK}3e#~9oYZ$Ak&~mv^$}?pz?rf8>3n+$e+ubZf zZASPK+$1j#8hf}Jm7TArIqFkID`-KA1eD&>O%U!6K&T=x&s!j9u^=DGF5ql(l;j=m ze=Sf2&l9)=caAr{o~4+Yac#qLw*rrUxC1(O?VH>-@B-rOx%sJ@2QV*vWKWR`Wa>~V zyZ!1hi$H7}+*T(NgLKSLqF#Bx5xOy+X0-^S$o_ACqfp7)~@`| z)>WhwAan<2(^0`EWk`^G~>FJp~1+}+4B z9`t3Tg#%M+PfmrTlw{uQUl(|qoY!mZK@A1hNcZet0=b}*Wtq~;fQuG1B?GPRdqR#H zh_0_Dzv=xonKbgm^H+=b&G_ba{wC>*N+M_#_4c~?&_QCx-I^ZQ#~bOy#^P$B&=Wtk zN?WTq-|zg85K8Un6#o4ceD{&PvEgXNnYbqL>M`n|cK5|GrDp+U6t$!llcaNX^bmfL{eF2`oeSKmDR0JSo3B$4;B{bcnQX(9s| z^LAEl*)2U+lZ$X=FNvir5drBEe(XAS8k*%r6YNWs_eAvHZk&|yNR0LA%tR)91qal$ z(R@AzI4_JS$iH20?5qCWJEHWYzmHWOEjh4PGz_4#y_ouQaC^ja@U+yeDJt?@H(0iT zq$}1{3NM447JUtk&Acllx59!b!QIm(x4sYGFebID^EcW<)=0j2Xl?1EtSpyq>oMI< zPyAonK zU6y#Nd~>a8%%R&g5SrW|p4KmBr{bs$cbO0sjR&ockks2r>NFlQkE9;Yx$jHrZLzzI z$}%fRK8lN2Z*#PGxcHjGbL9}An*!m?`M5%MmIVl10-zc-RY{W|8A_1U&7f+M4h& z&P&&Z<+!uexYND9qithe*70+_PAf9HZMz?Q4-7SKO<)1#ifToxSg?DD6v@;Dksf0cGoI!TV_A3EAK?JmmyN zw`E;&UhQxGiUqi~^Th8D{5R(K z`d3SSh)5l)L+31fGGXav9ZR>n;3vmT59EwOtn9ImUf@MTK@9!wKzS9i=$VC_HEVQm zpN2DWOBXO>iZ^8%&a_#Zj)u4Jo(dIlOv02G=0vPnFKjfmEj*kDCJ7(%g8g=M^!~s- zw}X@g!H}t0#l=8HOAXuzSMGIi!frfi88BqWf-Ngam}V+?%!>NDBfL4oNKRr^ko40~ zzndFWc+*^TsItS8T2ALZp9UZ#WBRjQZ78~WG;Os@~NU_T0+%z zYl~wVY3qA<&Z8HHBT;?+gG^Wp3)x0TM$=*a3kU-bi@Z8_mcI7V7v%#*=~eh|57*7M ziSmbU8tt=r|1VHT%30(Md+VPPI*A3R(Y+K$g^vZtqdu|6S7XwaO?KGuc@oz6BLGf% z8_!FrT>TcG7pG4L)jiwU)G;p){z+dr;{OS8?S!`VbE|2t0*5Q_HX%QHQ%av)vPBm? zM}?Tt0d{n_SEs^M;OF7YoCGFdqY;Y(8{N%ZE+N|-yLG^$@ zX)l;PiK(Is#L6(l{_LI)5sRO5ZcDk^LQx;V3omC1eOeRpj0u8g*{6eDRq)^vz9_O5 zO{_(4(NS*r4Gy!-zH}c~T-%?7ECHZK#3#=#2^n(E>{#n(+i<47wN~B=TGE+n0?7jy z29BWz?!!H-ImGjuAn!HM8l1?uxfk1Pl4lLY3n2Fb zlZ0YG>J4h;t~zaQI`JyQni+giBKavXFiN8q>4EpYN;?+3wCD7y*MCnD9FA}m{!t0l zok-V{qx(jm;dq_q3@(u_)*FRmPiqGsFtE*E&*P!`*;&gPXm_YJ0BKn(o5PhU36u&W z%ldz0^{@O}JJh`YgypXxNY>SC>Q0xu6Z+65mAn=X6W4y%S zz~MEHus1(WQTQA`gG}t#%O?c>Zezn#Zo)_O@9-|Ow*KYZ4br=#bZAvbEpCwml#8zw z<8a_K5)?uOz|{Z%k_azQO0xy_mx}r4tS%F7o1_w^JWH9p`|MZFrJZy;YmoiLvV#}x zdg>@)V|OoPP?Dq9_hfmyBn8a|1|4- z5a#kG#U-77eUl#U-xk!6x4;m@_(^mIRdwZz4mGlY@{T~niy@8mRox<;n4(C{-dt72 zW`ACga129nWH#do8P{DaThQh|@KJ*yz{oyP2eyN>+lr!n>*EUw+IU$HGwAS(aG}ZX z5IfH78c=T3@T_P2SqF^XR{)BT_H{j&yln&iWhng{8<@IPx~bQuNr&Bg28-rEP|A&{ zCmnL%9JD@)o}QKKot3k1-Nlds3J!zmKI$-*wPuyEc z$+VVWe+~EXGGT46N<0rLRwusYbr3&CTy%Cna1viA#W*tuKMU|U6J+kNU7jiNBqJCY z&iSQX9;LyRRAaz&4@Vne4{=^TsA9s1hmgMCPd+m;mumagU+~{CD0oq-I@|t~Uy=Si zM|7Sl93K=blOB6y6k4-D6BRt>+{_`N_Y%IpjSMt{BycpwW^s9DyHCg;!P3iVYqeXm z?tOY-SNX#)x=wHs3RMjmZCAI^2}qRepR;%7yd>8Lv`kt_+nxZ8T) z%A3-C&f~HTe%Js5Sg;nnP6=`^9L*AZvxCYqZ16~8H|`WBUNeo=;*#{#3i(<^_cwpmWPKYSUr3$C?Jn7qRV zMV>KTDQoD@Ip8X22GW&HRi>Kq>clogr^DzqvX6yU)?cN7H7R3HIKsWGIrX?@fCXS? zLTJzEEbB3_R_vEtSbe(k84{X9vd>|SE+BGGs&~T7MP1c1I6BAyL=ZsxUMO;MK*7<% z_9f7k%b+-Hpl^I@EXKrP=BXmv!#i1e;%VGJBj89n{PZrx^QA>53pDiD8vP_lNw}if z7Z^@8{7iy2RC)mTZOu&a_@JaG9I+b^#&uTsz9mY6iju^fI=xQZ!(3(Y(;lyR4ePpg zBj%0fJXwOv-I#32tp3$Wl3QU}kBlTz!b2#b>aqGtV(XpA>LH+EDOz`jsm_Jnuvxd0 zyrL!ejj#d;fl^^Zu(bX6$sJ*>i$gJT7S-~VdgIrpV_2~&CtCLN{Z2Wm8%OsUclln? z6uWZ2C+_H7hHqxx9N2;meKD>vGE2NierwTuHDbyEBX2N~=zYTGXm!x_n^%w-^hbL~ z;O*To&e7d3R>R?~V!KW$Q6+cZbaV2v2j9PHpw5n8RqrG;Bp6YEnx8GMc^(|5B4uc@ ztD6L%RDh_zGJV+gdz8`z2ayczFLksml8T zZ-gc0KSfQ;Lnd#CSB9_SNPlDU7U55rSn$I?F)@c?agR0B`n>8STP`l|d7Tso|3vfe z?isiS4tdsEi8MY!mq7iJ7rloYV^qy%Ok9|ZEYpdK7pniSPqV6SgMCz8X2D|qCVDco zcj1-7q)p>BJSqnOu5vMGw6m|(2FNVR$ZkKOKLE`CnVHBb~+i=tW27$u4ErYcZ8JawB$HNE)umj?fYB4V{F zk4H$NT$Yv;zR8K`qPyRs>&LU8WpR;wtIJK>zT*|J^%q0=mitRc?csnzh(P0t$g}94 zI4|>ZYiJzM`dvW$NJkyPR3<>((N^@<()Otj8cT_DvZz$e#irpJ-r4)D+XYvvdGq;% zF7*jg`9)sJA=QsfwFc+nRjH6X=0*ug-P94ThLlJ>Xf-Z#_5)Pzb)N#g_GL94Y|;Nf z_-xRj8%?)9HQoRI_)|AXDic1$LdM43)I83=}p6D-RMYIzW-z@Z9mzy)T@ zt4VdcaX|EZ00Y-0W6~dnh9H$xNI^Yc<^y%u~ z9dowO1W9|=>E^M9N5w?w!{9y`Qcfcvq=j0?41Sy|dmv1^&Uzseqff=NWo_PPpZX$2 zNl?1M5Ro^|E}!ia%2V-qSXDu6zO$<5qwX4ZM;7u-0 z&;D`%JN`4c#gEi8@O}F3=}-3*$}`@~9eV)#`!3sWMRK=s4!wnaf<-AYBH8t0ye~$egm@Xe_1~`UQ zh<&!wi({KVP9%~<2?)B8+jiu+XVxC#i zfWLPLP)I(G$g@|;iLMw{BU#-XcDusfM0&98Q%c-B3JfLn9#t7iyH{%SGL+Akm^4z3 za17EZ`k%*n{?rysCB^EWksKwR7h0H@*hqWaQ0!VKr1~F`3>HaOTI2@FQeOLp6dexJ zgkl>;xS&dn@yNtaXV7n;{?&K5NUa_H=d#Bq)za|{z`i%q{;G^Rr1zh?3(Z?MN4$=I^!${D$@B0mz807uqLVIm2}57Y)AnJX+k6q zT*4-9^aU%k3T%`xb~31aT!5z&u~x?3LBUKg`j~hxx6W+toSi7^eFoeLSx5o1n`^V; z9q3Gs(V*{u#Nh-M-B#AHayHM{rz<>M`q(<~z8nrghdr>5f9jy|bS`~Q-a5A*W55lu zy=pqsV6T!*3A$Zgm@zz}db3L7xi0pMhl58)$=~e5fv2t`lr3icq?`{?fd^$nS9+3B z%w-Npcn>^i1bJXe+bnJG`RM0QFq7zy62;50LXxJmd!L(>z3_!C*|`>PTd}m;bWp~N z!5bc&7b}b6<)e@|;u(8cN-OBTps&N=MBX2y0NB+;59NwILD;fASX~ z#w;G>RXIqG661N&%Q;vrsOM5rmRD&fs?BRa(+2~HU+Z!ItjlJ|%Qz7pF{@SfZ)Dm! z^3HHKOL4TgR08|UUaq-d?9?Ji$JKCL2i_uTtIJ~GN397H;Wg&{vj}okoy38n_wB}8 z-1}z8{hJ$#0dt|8^@Yc<#g`>P%O(s&6`l%?JFcX!nuauH0WYn*wvfNPvhG={ zqQa{Ma4*3g^TM~>Z?MbL3bNPU)JCP=Y}~AJ6Re>y$}w>Sv>DtB14X;{3?|F zlseJ7bwhV^In-7CV6t@lt#a`Mz(a4l$)7V{TM}yR2l&H>l}|bcL-8zNk0CIViU%sm z`wjKCwlEV&%*AOj5jD4~XDiD(iIsVXM>{xx1X+5RE`-Z37vk8B6!oxKgqy|L&nD)>7_pCdW?F-0(xzmb8|LSEYeC;%QxVbj%RE4kM zTH6xxKKRw5!{1}SJXuuk*pL0@`LmRC^j|Cqn*cbDRpDLSY=k@_NQHgzb!w`fb|E!3)i;hTbu6X0YP@l&__mRl|E`lbTW|KcvkuE=%I5+ z_yAusB-`WgyTBaXs9Q^pJC;L<%X0qr3ySVdlX1Y%* z^9EQi0L%KSSl_yG?69Fy)Z(LdYbvL}pN80`L#_^gcq#*m6}=EnfsAe*&=h`{9ZU@w zKjE{o3ci+}<36IF1%dj@OZRpZT zxo|-0KlAUPp93fbiM@Hla{!Rw(x0@fXwzBgHb9+b?Vu;B76+Us|5 zfbs%BB6b6)Szs%mfo-XYi?LX!tLlM{OAWq$ z8lx|1)dR7oPHOfv%TA~4dC(k!rGQmwUZ!=#oFMcwkEFrJija5`HZWGEId<^1;wvLp ziy-L&kP$vaI-7aqfT8_MY>+1`Mji<3;pjfrKdM<6cVSWJ2;frh!bQ?$Xf$0FyP+;1 z#oH(ew~w3Tsi_sL!|j?6#nFr}>Pz|Ri_b`k*Q7zj-6I>%>gce*Qh0Ein$VXZ#_Vfy zM!0g9cNAd>INq{f=@ameEihLJ#FdK1(axK1D+=n#DyIYYodCd#+>njy!kIsW)Aj~t zKF*Ug#c)8{Hx*C=xmKFEOo)|Yfs$FmFZGYU(#KF1BF#Qr=C~h1U-U`KsmeveH2vBhyJUHOT8UH}wK7Du@ zHAksdF?vvWuXr9UFipn6S$#=n+&)(@vE!)*h;H_XPITWle$bw&E>ybih&2#iZb@j- z53IqTl!P7b0BbY!E4>FKf44*z@0GUY1pZpml`A|Q_Z%pVh7{3+?_>&>(ZMi%SQlEP zp)>UpHx(5NsOroee49HvnR4@l-8@EbT7nu+p*`>c6AM6U=%oDw`@pnxg`4T(Xt5(_ zVU)8`!MU2Q@9}Deku|h7^j(n)d;+}{pN&jV5v9alC!eg zp2OmCXp`)+OV|O)TM5SDh{z*sDQ7xFLXOB}MvBT@KHUn&yFtpR2oF3K%_myQ%B9z3 zy!??W2(7YJJHD?Jl#Y-UDDrm$^!3@9xp#!@TmMtWVdWg~LX36CN9)3)98`I0LS-h> z5qUUw%YMT9BsLc2Lx=3;?9-vk72O33TBx>eFkDzAy@UV`bDCsE+T!JX*q{UEusZ&g zzR$VP*GdO&)}2pbhGgZ$Gm18_Mb>4q*XEkBw2+sHh8h6sg@bi5&(W4gl0+M%FUn|& z>z~f7Blh1taB*1KqJm*$8&oWJwNhQ@LcK6H7W?t;)m!vqS9Y+~gGVh{N5wJmM>sGa z!nKQho8!aqxaY9=Z&jT87B1qEcngw)KAty<{ktg+IeEQrg_)} z74Lm7EHF4chJKFpFhx)8Xtm^c?nY;-6~YrStDNAAo>l=#tGD8WTo*rIR`*HIW@e=A z5MvCYJ`ofYxQcRAmoL_*{1?Dg`XUK;R7@XB&Y(rjgoN@)$MV=^E}o_SU)+;Ut6scm zlY~YbG!i;bW5vCMg_3LSX{EgbkozVD0Vg6+;kM#RP&okhyevR{>Xy;%#Pp?r?O2i` z^|~O&*nHCQ`uls`AF`O6LCS$gq~qKRKDXuBS_qHPE7tEdw2(Snmm8QINsl8Apo+@) zPN;vOd|V(X(5oOco=s2#hq95X`e3Eq|1X+dGR3x`B&_WOTMb`QbU>b59 zcEOXw^jC?VY2g2JTX!9GH0EokHrJurETF00=rC=66@>q1@dQ3@II2 zB-%1kH5F1uheHw*^%qY5RPOp3=rw8(A~|lCYQUpyfo7(5dw9SGRHd3u;H55_;5JWE z2~co3qTvOtZ@Hx*?s>!2Cw&?5uzIK3#%m}2J9k&RKL(GnCH39?MpF%9-)v2J!Ij(t zfaa5+fqbY7?Y_j(&K0t!Ru;46MQ9UO`HhjZO&BTC(oe8{94K^r6PjCEEE~Gyoe_R| z;&-UEaA@f=S|||Bm-n=K61Jq8_LX2Q9@}Lb)um9U__UB9rw?|~IvR%&ed&e-g+KCR zw?%P{k9~2E^n-z%?-Zg<3#gnJ7F1$H^3*#{V^|~`cR6qZcupRx0lL2#J9tZ~NA)A{ ziiZrhL1WrtG+PUr{l#Zvj(1a9i{J^cE{B}J!>_XPUf?mW{)oL$J1MwD&0CbQ<9OuP z@59(QC+?*~aAEoTTl#J3;If6{&J?+qo$cbCyCYQSFdBAdTB2nQ*Pksy*B5C&;9(yqxu+ZNr~oW-ss(c*70m);yRLQUm)KhtDt7h8 zRaV8c|4Fg!8#zK_a1{HR`6MrJ49gYz*d2H6GuVL+7U;RL*Ns1s4iO{su3X9OHLKh<35f$y}{FA@D<|bW}%fw6KzWQ|JQN z&g|g+R!u)?_FUz_(*pkM|K^4~{} zdQeB-xACPD{hn`C3h))%GIlQt-ZZWw8u|7`Ziwr}Z?H-yy9_W6qmuUgKmo1)1RqBF z(;@zRP7i(cWUAb{vvmGbpcWc-*iC3c6q$^N2y_c@m;dTg!_T)oT!>Dy>biTX7g7yq z8f?Bk9 z_%pWk45!2?NaO=mMBG56g%2|`pr6yV-3KUm`0LX^TWwehO6Gf z4!zaKF)DbVbzV_N%T7V% zLVc`Nw&X{xD@AcFg&{IOp^1ydPjr=}NI=r`P1R3M!zDBLPp*l=1#U36pi2ZOBuy8? zwU2C61KYbqinMIDNL}WLJ&CuwD@MGW;MsoL6SBT)wCqk=+9j6H%dQm3#?@YrQGqUi zogH^WO{CQ`H25yj-&Ozh`w^byrStEJ6>Y!8YFMbdEYwq4T-@KDPESO=!^zA~H@X85 zaX|FZtdb2z13#DGGflMoIGD@1gvlPwKpT+gAdJbs`|OPmuzZ{z&Wui`lxwEI19_0h z++Fb?ESl){vI$ruBe68mGb;d$L10K3{1IcILxZ`b_5j*|>57mcP|jF<|9rSbromOl z-F6p{S>mizL|@|B5F=p!_S5mRh&x z9w9#;Y+#Z5(nQovTMAlj9*zCA3A(s)Ny$1YQ4}Omkjz>6)tsScde64P-+07MHX^LB zp@^i3qM(IU3n8U`(qDol8&Az4M+iKnI&dTpUVp_JSqm+& zl>1B@c9HFyc7-3k)((BFcJs}NU+a_^2TC->cv zi0&LvNnQato!lhSfrKJLT_o|#%B@o*kxy4*YI>kWri9I4F`aS%@9tFO$=c*R!fs$n zD&||b*?d8^y?MTNr%Ig(#621HS-V>o0AQ7R?}Jjg*xHnaVolbN+e#o`ZCXWQ@)Gu&U(SS;(k++tL zNV?{jaj^KkxjC&YH+N-Rm>Y+LQ-2u_Ei#!qSudK?R#)BO>zI;f(vrc0%jn;3H)JJg zqHoltX=V|5UDIV6Ep<1Sds_#S9Csu1<#URr?@|UUqiR}JOWcqMTQLL6L62uWo6*A2 zJzEn_x^jJSv;KrBHC~#8{krJUYRl!=`hLxUl1}H}X(&dvE@+}M@?PfB757KL6B99Z zzx%sh{vp~3EBFF{DRcCf@a{Q_Zk=v_^DKCGK(6v@W%HcWHFJ}aW6HV0?0V6u6~(O56``#qKkwJ;2ZvBNY^e`qsrKq#QrDWd{^bkGk#-e+ZqJEm zCO3bn_)yn}rrp||L>cV`& zM|Ek)tZ?K+9=HM5_?arX1caOQTpwzCSh=WZM0h^9*J7H15^3Oy8B&?31VEM~`}N^6 zkmA+(lLm6-tPk3ffP54{*#Ifovj1b@GyOHWyTqs0w)K0I0c2SJ?A$3qO5DLQXtNmy zDRuftJ$M(MYIxnVEbd5iniw_xY}ULN$kmrOoeDW8Nw4c33~kwiu4TmI!JBKhbPcwe z11@C-Ae=QGG$v56a?juB{JL$G1r1WZH92S=ohX`HP=~!=HF@AHiz)TT-lxDBykQ8dXKjC&7wjCva@c9xxt4d4L&+hN}6?M@9czWM$@04ez=>a(a# zWxs+b8Ac$^T78WW6YMCK3~hoGzl2YCAz&3GEE@64HNs_npb)po z!Zf;a6us2k3Mte=`tEU}QJlEgt&x(kK+}0v*SXGL z=eo}8+~>aUbD!7!d_A76vQo9_T|z_gdaC-4TpDSG8)Z;{=)tELx$vQj`cf*QevMQw z(z#>Yp>&%YcBll=a^!4cH0DTkN+({rti6+PB$yTwbs^JFN+Gx;U5v{8;x4kkq@+;1 z#VV_eja$&^_Yb^tdzENBN;hIPP$SaTdqN-Ry3r}5Ytqt4cUUY1B!D(Vc``ue89op} z=ZZW`TcMMiSXS|$jmw6LgDs7qH)oP&EqqH1x$nHMSXz2}?88=E$iZN$2gF+>9AM*d zBa)n04rO1h{&%*u@h^|eNPLH=tqOiNRI66-#PgWkHRCK6Ew<&4gzPuhC^#8_2L%8O z2;P^+T3a=5#f21Ciz@5^;z8$9yE;#B)5JE;&eX4J)ujW`sjPfuY&RdB94)}a!c`*; zxdWV^T}xyPq&dsYN>ne=`ITvOfNEd)i#KU>fyDDwM8W%2;A6p7=63A>_+QVx4!%o< zUV$;yqH3|~mg6tlO^uDjav<_ei|OIUkYk_rU?)91oqJ*ScSQ4me3RnossoZ-yxS1D z)SvfYkv>rEEyFke;lUC=E`{Sn2C*dsh+fjeM`mF}bdYa){_f2ScRL?2sM!K`XIGRi zvw1`Fu73rvm6R4$BMYj;dv(|sTmkF0K$=;d~KxwX}$`jFD(Q#)%i#sGiA}HAs zZWJ(vc>c&A!y#%{!mUYX+J-AL3w z)&tn=Dd;i4R7jcIikTPl3E>)I-U+nN}1mi#tKV~A-;RTQ?U9GfbN@BP3HV6 ziy8SM?cfvg^57~$Kuzt7hnS(iQXX$J>8*L`{xS45SZ@O?pCjJu?UPY#K|pKV>F03( zFhn`GJ|GEy-X9-)I|a#!Gn_yiqom)(YU5{5YmuKBspF)_0477dm%Gxp(#oRvsVl<@ zf5=)=wz20au;%CvZ$#XAotV{!Qn%Eoao(*0kvSYJq(m#mB@toa%zo*LPB^;B*r;v#qcyz-3!qvR*!bv55?DMkk%QSK zS_SWY02j9FP%3Lu43D?uta7LVf9~#hx;}7yzbRmw5?@0N+)?Q*?WX6(r!h3m!Nio@ zcyep>C38SA1M@Iab?>~9#W?*zLo&`Uwi_95t6MO-tZ(Pi@;W!}v;h3oiD>CaE~Dgn zguU@G9a?475Php`_EWATv!iNMsG)i~=C&^ow7O?-l?wkR~TY zskXIXA_7W16?Y5*kJ5v6Q{x;$K>U=FwNPrryL+;8_l{`*cQ}E$_oH_ol>dC7gNs%= zLJ*q~Af5Ynea+BK=CH#5Pey8MK6&O7a*Y={XS_qdw$e=0}FA&lY!x zActlj418_w>`E6ycHQiGK5h$kpJk&)UBy%6%`Yt{mleeMJIDDmt4{)GE}o}#IdC;i zLzO-tev@8$S{sf`T|}4OOhN!K06x|WhHF*IUNa;uaqUmi$|FkDTZGhFg&uzJJOXCs zD&7sW^r!+0Gs?_v0mZBO;%)=uT`A~%s+3N2!uIhYRKLPogdqlEL^$g6u}5mO^kth% z$q2TE299noq(%VipP6+)TVu6lW+i^~^oO`n=UOSP98w=Q6x8U^I4nAAAO5Yr5G`eR z`w#LzO*A%%S1!K1cZdq?1(xv_V0Uo7~*Ic##wEF4RZVGAy(7RsTZYWXOw8TF-&40 zGbIh=_Lg2`q>+L(>XTDcs)lF>TASs{OqUy7=+ z?(iRoeI$~N4?(~u?nA_}9pgjPQ&p9e3{j=tZu4t!M~0SMRgq~!M)w||8V~F!qv0m# zfB(gMqzx$IY_fLgiCT|Jzr9NFaH6K5UK`SPtE2DNfmOm;CXNS4Ff1>RcYYL zLFoWPZ*~hf&z{;-q14!02BV%1_{Q*J(@7+U4|fuhUbUeV-;Z) zV{KX?x;oK#i)cfvy$v2hc7~1pgNL(hu9EFTSP(YQgO;J*0k7w^#7hU86BZVlHRB915M2uuTMY7&qQHMrq8Iq&FpfhP21lrA{Y|EHz zs}mqqzj4X}Vi7D3+0!Zj^rc~diz0n@!L8mDXERs3&W$6|l7RUwHc|1kKxCUqg)=ay zz$(T0rH4M$P$xP`H(HbaKP0o!8kk&vM(g0?p-h`gBxG_Hl<&yW5o9PC(F?DGe;vfT z;GyJMr%O9+$d%g5`;;Sg14N#YLI$C49GR(O2e1qQ7#g&7v?t~8^6}%~KS_~miS`2S zcNF47$ZH`3arS<$;;1F@0qU(*coMfhcGAYFEJlF@WRB(iv>ZiXfjl8R-N*R8*Tk;B zN2p#f%ht3ZwrYilU-HdLPGdL~CfnLqywVGnEsXBD3z+KB%@TJi2&;!2_k&s!KyW8k zO#MY`Kd4a=RMrFds0mb?y<&C;^vH)QIZGq70!5Xu=Cd!cz)DZ}_)o)SP<$A{HFysyPA?%+H3Trg zL|B!G`BLxe3%eV@(DkNnz4d z+cSQGqM8<kM+oW4W4`$Z@CSug?#Ux?^o`gFjQF1JjXSa^f;XpIGPoW%e*+|q z@%$KvD)mSrt&?h#+@8NZ20*_5bmO783VhAlHTa0xhY9`4eO%mf>UJ*N(!%Qps#Om| z-Hyvt7Lh_Z5B%qR0{tdCg?r0Ct(hxMEY8TjXLfyakoTT4s*S{H%vjaEYm3&gV&+BaN zfA2U0D2||_jepz|5dEQo>UfF`+TLUP8CH@vH3t_@z5Ed}a7~&HzdA_SWhIIaz&EYk z^6zSyBfu6!P7@o?-E1E9`l=3tiC#gc1B>{BN5s=)nlOX19eK^>;&Ohl>Im1*!WOr~ z;N_vc2d9F2aQN6uY2*}n_7*)iF8|oE!QuUr$?4LwAZ;Dcqas1hdVtU@RcfsH!5Cro9_8tFmArqkUx2bwN^;S+`u{@C!d!EsG9-%|~OKs+h2$d)YY-?g|%WVdJ zNBu?+_O^2^q6aI$>dn8W?$D)XL3e*gJowfq$8)woiwRh1!?l9OwIP4^;rKM(qDztW zQL=)BIqnY#3k51yN5=Yn1MtS_jd>1dL~pt2J`mHEkyC5vX#|A za%lw`u8G(a-EE|_QBttwbLz^jzpOTiZU4~gY`3BZ-{_$n4!Nm#4maw&c)qWfQxqlD zT2FaGP2@QyN@6{~dJ%;bB+V-xNc@b!NZ~T;-9dYZ#lEB*(uH0K&&kdDXd!Ml-JHel zgkiRJ1^X&skY~=8=ZbW7j7Q zVS<5?+dZ6-MOa~X8NbXzQw{8ibX>6?Zov4m+cvZ`<=}ptxO;&ly!>3yV)SLwUdSAm z!8|&~wB%u2FSq4dW(@B|Oei$CRc#+CjBO@Q!IYhT-n%BYRZh8%+1vkm{lz|;qsVkE z_IKeO+@XdcOd4&7#E%icqiKq#HIl?|lvlu;OKL}jE%KB1c__cwQa^({_5%?(RpJik;nnp!7@OB;jBmyptW&ZYlJOR>+o*^p`J zFThM3)@oWZl&Gaz5T}nU^TrBW>vZi-=&)EIH(9^3nF~A$^<5l%lKVVTv5DXOh>1lFC*KEZ z-0BxT7a8Zz`{0(|TtMNacId~_5A{8@$hI3sd{!Gm?@Kao0Qo{hU$7$`!-hrhf3CsT z=9+IX6MuhQ{Y*UzeA<7fDCik7Jq^g=NVem|&p2Outu@0@qTIj^7XyO1_0e^Ab@zge zI0O;j7dkk4Ex^2v^AF*qAC{lEG#^?LV+CC9Z!x;jr=A}e>LCx%nP%n*%SOr)R}4eW z34T6;bf7;+%k*2mwbGf6@@8v)Y61nE6-E8_GQl#R-mR~Y=l35Py0cUc^)j>2@5wWT zG1CTYgDgx>ok#d?fn`XNlJ`tUx*Dzrd;?jcwu>GCQrcU+Rg`!U|L7F`k8On@%ofG) z77KWMivms+q(+pd6R%?-akE{iQElGh*zJCOqAgsF)=6mdYWO%3I$y-L`E}U(+pKfP;Cb5#;;*71H7dJ?|>uG zE1k2Y79bV^L=* zBrMh>!N!Yv=Ff_!r45>LpD-UEiBL;5p7L`7x`fqp3{PW;!h`k2TAE?ersBak!35dt z8UX?)fW;~HK6kVNR8cW$=?#89H9peb2_#?3pT+^XTdE;=(!=^Qcp5KL#9A2FYcn_Q zco8RsF-Mj(CJ&Anhd4VWMEVBrOd?S?0AR^YKBUPcO(-p`SB7I$J8z0E36V5W*k@@g z&oW`Y)viLy0>D9C!Zik1H7(MCE#=YVCo1;9_GC$D_~3+4v}qcR_c;sF#Ch+A$B^#w z6_t*DY3~>XyyT~K$&6PB(;u^;2*#*M6^41`SMvEGyY{O(jc&Zww~%}qy=wmAfKwF3K&`&sRnX$btp1zM5#V1Qh+tLQgOA zX*~#=;W~xKaU7L%JGmHWczVE00nx%b@=)o>9}>8Ek#K{08qa>;_UxzrRY zO$u-?t%GlZwqc6SOMJ09HOlO7TH3k5+?#uE6b_?D;?ksqGsy4JRY%{&H3EOA7dp;P zhWK1B7)Yyd!GQhRP-ec?HA=(r`+s3UUrQF& zq>#>r9_3EX$Ct4UiX`m zjR3cH!+ty#Wh>(Jnh-J_+!e?tC741$wvO=zm&*|+M&zZO&c#tHgzaJc*a>HpoK@>QjwQ9vW9E`*6x0Sk2V&8hXue!*9^y?vM7fBC697x0QH7g)O` z$edHLe+*_b&!rY$tk%sK|FyzIx?7ft@|}Q7wdP(JJWm-coHvZI-P! z|4ZnHkN;k;APY=u6L~`nxkNzdQ767#Qv?aZ4&ta@5y~7mSCAn7oaMGnnya7f`@a2w zhRWZx>U}PfFOhI|himErC4GD0-Pr?hqzMH+MtEV_{RPmYRu7h;kWe8K7f8Ljf{tSY zIghI6_GBQ!3m?C}5T#8C|0$bjDW6StADcnG4*qk`J}a)C*VXyJXs9X979AhvVLa|O z*utJN9w)_!I@p_xCD(;M7@D5~UJ}!??HjWkk+idSPj|J)QCK3tMXO$99$?8T1{vm* zDM)2Fe9*s{SUG9G1~t6eG|lC6960s%^Fa#Vl?&*E1h|;ex>-hrk8+jb1m57r-h3 zzMI~4-==0Ix>3m-#f6rc|U9pv28u;xan4D&I*Jb4KLVlvhI8`gg ztZsmfqsowsW3r6Y3%bl{?uw`H@9U&y5}0l$ppG~exHGvW#Th*GaZJD03ZJ#WHgmN9 z=hzWDcJH7E`L6WL^m~=W3k&ryp2ek{*b7eQU9RrIP_>k-cOK{${aIGtM1eHZ=ZWI8 zK-7T|7T1feqcrEuy0kM`Bd@s;?~Gevp$Qa@E${HC_|qSXiX9~x4Hk~*iip_)k;MxJ z#L3b{@$&5(RPi$w#S%pUl#sDG#i3cq`Pn;NC~&n@67TH7U{+Yo>=Tg` zh^=5~=aOuHF)6qgihDg_X7}FQEm!)z0Tx zN4-lk%eE$gqyUm`x0YS<`vbOku3+AYuwHZj0ie?<&yn2G8I&jUxdK&r9P`{a{UFh0 zZbBuzsx=M}O@K-0Xqnk+X!4rT;c^5Ez=Z+wnj)gCdh^1^-F1^^kW#f*Y=Pvo)C+w9 zs|&5}tQ#MuBua1*>JUwL0$?5>)e34jFw%_#IUJS3Y@#5>eToK`&yxG>nZ8N>{$%w& z=wbAzGxCoEGG{`N9*YAXPG!1q70>n+Yc9HYB{Jw2J^|MXChmWUwF+eM^SqPkvXcJ9 zm4+pCV=+Y6?7aU(9~#dCc;*S5ZWQq{YLFQS+uD`;+Ug2h27;pHAx8ir03#j!9*q!? z_rU9mH@G9~#~G5cj2H7>UzT@H=hHLBi*x-FoaRK3jvyQ=>Jrb}$E%~vqW#%KQ!=`h z_fx9QsOBFOd2HdaOrWOAN^tBkp+UPRyzuCs-RG`HYwvc8gb+E$5TGzjyd$)%#Ouw! z3ERe5(2K8UeNLz!faQWQe+sHU`d7-TLzOcq6KjwskUS1I9uWef1ji5ILpk3r z-R34^u>tSI6|_O699ggryKh|&jbxl_#3;SU*dWv>fP22HY2>VK@7WFcXlyOu)ExJ7 zwE@~d>G$=LJ4zQVl_|CR%OF3v&mG|%F30k&b9L<8^L{F*6Kbw^262s2U&DOL!g2*Q z-^GlFB-k22+D;5Mo_L%dY?Hu6JF#_9Ymz709cVRKIBx}g@NEYAToJ%3Bg@BrXnXvo zDHrP8OIa{amOtBJXP-Ykw-8`99K;m)wB)|GtiAc}Dn;b{@uRGf_?^T{|8aa-{b{N$ z#7P>U_KGH2%S+BCPk%nfQNq!Ef*iyf{iKL1&y>+f9;Ps zL7EKgjKe6={9#_u-z_6~8(+TXFLt0-mSkgS(^d=N{rE5IIsfHV)WViSWKcWn7Y{jf z%zH&j-y@7I z`u?JHs7rcFYi{eI{28L;Xcl6XmCd15Xe;TscM>A8KV8%I#$B*PcqYH#=Dqp}%UT&3 zzc}~MUC%#5B8dWLulzI8ij0;Cp(;YSLDmn#Is<`Q>xnFh!G z+~m1wl(g%ho8XojH27n;*YD9s1Aolj*(|7S9(|Q7FB^KKGmxn~94n41wWeHJ`_oV6 zt$R>jYP=$Lw*(|L(uk{~^6n83gkwon4R%-N&oq^<7j4EY!B9n%wQ6~pt@^>tXzk3S z7qt-;6D=3XSN(JIloR0f{s)zOPm8GnjOa`_!C{Qn3lC|$CJ^(e{D=rQJjisBq)h)p~YaqVXZcC4E?R?M{Xy0*Hl?o-1xpAr}D{K!v z`=Mdv?^2ff&F>$k3RVBO|8*xT)!98M;+0>AEFDHKgim)~7wS1|fIXXDI$w8nKK4oX z%}PfQJtM8pERj~0B(iwZ5tXDI?>6jER5`ef*R8_$dGz()9k zDTY3j7I8|K@R*@A0+iI^^1zdM*L|dW0|eRxWyTr zAhg-mshg&mwxyMTWr>f13}(H3uwlB1635FO;$xDNe*s~DD%$jEmeeJJ`r#Zc!d(F1 zNnsxIXdc{4(#SC~XX9d=lL(LUDSU3%m8-fX{}D{5mc`a%UoT!5+2+XKg8F7(T_gvf`0kiwYoI>n(B=OeG#IU?kl~(81>o_C2x3_ZYyc^ z3hw^UphTZ=qgeVi+3%qsK?L3^swg&3oCGYdy9$ssZm2YrX6cx3UkdEYyZ1|n%)DY^ zA@^qBisa`T0J*knzZ_Hb&SIurc^k=?snU} z+(A{NB_qlsaI=clu^ix>geGf-i*>Des8hh zTb3sL+L$($lpCIyv5ooKHG9XlHO4-&+DJ$2(+LX7!M1Vc1p**QL0oXJ{r2}_4wQt0yzwk(kqY6LGuNk} z7olJ=9=EhspbsM1brg~jgAkN5Dn<=<`7xyXIiV<@f<-XgS^^QeV!XBtc~hioV;PAD zK~uzU5gRzmImVL_QVMBR_$BUoA7-k{(`jWlbv$2{4$YbT5GQ_xDu*6RNpcu8Rp>0%1h7`{i}id^$70oYNtTG*~~v$Lm+ryQi0rjGVn> zA9oSf`%;Xabz0u4hyxs(44H6L<^o8Y0RZSIPoo||4Rno&CW1GN{VF@xl~`svl%r~A znHLa4ZxE2sh`Uc&!#rOGBm*ftA%{`RfX@HUY`!i!y}!HIW2AG{@XnpC9ski69iEbc zQt0}J%>sMaGA@IVTB)RyenF)Odkb`Q{{}urAQNqS0-davHbxmYf1l7$5Cuq-6AlsO zs1h-*S1f^Nlt{)Rq(T6Xk+>}u_l=fzSbjha^0SC)@(`<5eCB*c0~FOXT-Q<3q)44b z?}REmhl=+rh!p0xq<8$dt=D>rg5^}TEdvgeP?RVDcOfx9q`Z^PqsZ7CHj+ei|5z*GIA{l9*WE|ujneWx{{{$w!h(7F@Fbq>GZz#Qe z5(JMS$~wOIb=YwJMZd>s!D*L^CRq*Jhg59Pen1~v@H8h=k#P?5<9xP5>WTqYD~b6C zDVc_Hr#5JBFcG{qd<{Y<31XVORPK8LxVdZ=gK1_|qB>+e-g>2ekLCLZNDqmg9 z?iW$}5FJS{f7(CoSF~fU6LoS^e2Wy2d}`3kAH9>2T0K(PxvC$vKSWX%buVD>w&zm$ zn{?jA*niSK_p4Up{>2AK0N2ErOpakjEA?Sq)a<*~C8f4tKjYDh#kw))Z+_HG4ohfi zGb<=HN-26-ddsoS+v=yja}Q~zZnXwb_nES0=omGYebRNIk{VQ+^a<~!G~$lFIv7Ac zt3FT*Ub_N?uZx+Y43!;FAZbO$d(W2UbWV0Sz-^H@fb5(q87Le!Vb2jjWv2YO%wCV} z?jr#rIhG6nOV12IF(F%^Dajbflds~DK@KKO1r$g(C#naQRy>6@wPLSLWZltL>rHD& z9{dXzmHE-I{$l%PnIS2_xBE=YtiJ=o1x*abcjBUer~q;_HZ2-~N0sPidyJG}26NqZ zLBi=oh@7TiHA!t%S33j+d>XFMpana#Ha;i!#B``OA^tu~*A@KPe&`3&*qOgUI_9Lj zc3-StDAEw|5x)aVrgZa*b<=sVF#vE>6*xC^e8rbhB2vJFD=e9{mgLr|Y}eDQhyyA5 z^_gV-K7k7)kf|l>$#fwW(FdW=IT18k9cz|NFa`6jCbKfcqJ-CGl8Qkmgt`T<^i~BuA%OaMj5voco+C=!Fddm z!YfZzJF}L+|JqA1yd?JeS2x8|i+{ihBuQX~=W-Rj=55!!wVL+#kQJ<<5Rzb@owD0@vxG45>a7Z_5CbJGM-?4dJhPAt~)%OLvP(mjA4sS{8Ub7lI{7e}vnfx#{ENH8x;#$F9OsEPCWB-gW8J!_~&o2StTM=~w;w(YNPa z&tLy=)^2`?C!=*OR?ThL+Z|IXj9Cn|;4R^-c-PX@;l^__IKaL}GNSUyk|+R+E-wDH zJH+<(VBe{YB7o*91CeRN-0@kHLZ$=KLWT+p0>AlMuji=U!1gsCKIF5(S3ur%KOj8B z5UII>ZkleFyJUBSsg3w+eD4bG;|R3Nd^$`Wh9STG$R#%CbIQdka1Me*fIB*9xEPi`fk+;CaWV*VXnM zBG~9ql@+H*)b(g=&_gvbb4cMb;~0l|inO=Y0Eh8dVKZ#sHTupp;k12ug!I?w>z=!M zZ`ePT!&oGE1CrB=B zL4`wvbL{vPDTgK@y!AgNWSuKlZXy>Z>$xWw@<%Vt2*Z|nD`qW|5KmR{j(n?4_Qm$OJ2?ASVE%J_S4 z7=xF~878OhRF5eOzewUWj#_)n2Y)RU6HxJ`17oy>k>+Y=!XuF^O{uG*HV``!){?>! ze-fqyvNE9j(6NE)sdfl_Q>pPQ#C=;Tqrg;BC(?Q+h{2t4L?)BKJ;{12>dE(o08QS^ zBo0pQ_N?KIiev62?Mdmwq%F4+dN!)nNTqw`8|DOA>!P$bd#^xB4@Fz=tyjF+H?7>S zcrx2b=FCz4TVwr?@mLQng}m{ZnjAPk!F`TZ`o6vP8K2*9Z5(CwP2eqQwtk|b0XIvz zY9$`m8=wDahc)zl{)_oP>+g~NoUN>@%pSBTS`yEy=4g;UNdZ}~F3#5ELx>Bq#Dn8r z@EZ)MB`;3>mB&i?xVRG2X=@3e`b1|`@DiD6nTmouEKxH2RKG3}BNq`@!}WVP6<~BA z1>;Uad(%`?NgF*vyWwj338}lrXCyH!Q5|9c(*8w)aA4($XCEfhY&W?D1B7g$hi3Jz?BzL3E^ zeVH$V08ohIa`BJYN%&0GPZQ9f6v0nCs^ToJYg`|F2 z<7@^{x^_n*+*33;So-Zxd9e9FI_9OU_%#+?+H*}kFt<_L&qjQ+EM z-`r7EN2sPGsPgv!D!!~8N^)&rxt1tfdJxHE7I487phZ*>eWT_?P#&l???xQ)=A^ak zVhU=cTB-$sBTK=yOigQ!l54$BO6E?_ zNig!R{nQ;*O-94?CP_=>jeHKz)7+~mlcqDGp6qpeiD-L+SQAjcvqY^C{kOtqzh?AH zwqe=mlRthY0g1x~N{osn8)e`C1>$$^xX~F%)xmR^(n4vg{s|xsD2TjAjWdO^ik-h|6FI~1J@WK4j#b5mdT#40rQ<%y%crFF0{sWALT$Lr7S9FKo zA~G{sLjHs&rs|sI1TEfftvsXua*aMg7?J;I$XEBAr7Nay}9dJ`j!J@z#MFO72muwlVi+k6&hJ3vx&Oy&ZD=lp@TvZxv zGv4~c+B5~edTW`p4yY)$EY{S;`N&hG;=bO?rTx0^ z<#_!JhVvC&R%dP8PmS?vlzQt&q_TQL0O& zfMmO*0`HO-25j*XZ^4!nFJAobJdoD_+Y@xzP1h`FsbM&K`1Imb*6bU%&s+X&f>vMv zVa+SG(FgnSr#IjlYp)5B50Kva$vMg(3lbQqPt8hV3<;~LniQzcRb)6ovfcxp%@EMN z`cg9sLW+SkdP9|ip-Ia!?))de$)&F_@xO>cI&u2dEo-vBef&4QVkUdepL|GbMqWPo z&^cMu#rI6Es&M^Pk+^J&oa=f|`7Okxzb0D!J+#jJ0{&J~tK5}!x8PT0Cl|Z+vEz#M zumH*0{grSY|5UhrWiX5lLwj-NGcU}vaCTBSV4bp5@(nj=+^a?_i)!t)(W-xH-wwM!rJmjHjy6U(>Xk)vW-y_9Kg>fb$?f>rgCEmMfC+o}kMKf;4Ix*CtLKcATa@O6Wxj(araMJS@mZmGe ztJxGKAS*|;lp}_CKBM0+*}K1QjF`#1{{MP#-eF@|o*#|~?F**SS{R5{sNJ)~(_Wjcg^jtRHwmw!5yUUN?^GTXvvPomvc zPb_-9rEYeA%Rt@tTMddjuzEK)C?M(gY4qIiwDml?{j|4E+#4;Wcm1}fsvQ4(E_U0z zaa+elAEaZ9U`w|$FO2`P+?0KNV<2pIX(tG-vDpGmrKsHiAcI-3?()1ABWUL{l~tJ) z>$4MMu{e|K$xte46022CfJ#~5gRY(JsLFyz!~62&&iFgUPZsAkSoidNPEPRpr=$B) zMD+2tdG|X;&l|;!yy#e*cuS^1-RL@+_P3@>FtH(QVKY_b9haKR{oxdYg}0d|xyP3s zN)kA&ED{*PDm5lTSHfoFMJLo~3`89>TTKeNV;Ru7e}iLL+Q2U!+i#7(W|Rj&n!m3| z$GTCLpw?v`I`L|Dax0^sAnL)mb6fu@{t^mhfmipO+S(rE{T3GK*FAECr#@}{@7g8l z;ncgK?84tmn9I{Qi|VaA|AddH4=F8*Htw3cpR3GFq5arL+*3TJwp9Dj$!Tb6c*&Xv zS@o=7`ZQlVW$uST2aH}j_&r>w2bS9!I_h#Kv>FdWqPw&68ehy3XN*hLWTgx@)Tz2W z8fG0$RvidYxTG5(-Gr#q5ZSHEd3X9?*s?t}n%)3j**1e(mgU~RL%2+kO6|?(Xqn!SHS3PM*eiM?oHyCy5J>i7fVa~PJ z#tsJ6kzaJY1u8E6e1Fbr*)d|?T&T4$>y74x0;jNv)G9vlcA)sJ8-GhuPo0Z6-*w6& z{L;agmb=;d%;Va*S$pMA_4VT!nYW{5HEF^5cw<_Fr<t*W>?<+j z2H*DsW+#;Ml!mPiTQ|_1T604muboczPZjk+Z@&-Im{Dt_lyOeJUnuw#6YRAmfE)V_ zCd_G^{4Q{%9WizqNg7@MPim*72QpCd1Tah%wb@|}b`eLRBMG23&WPaH`J#PKX0KZ0 zgWs~lH3{h{i&In^A)jfNn{^HHSq?tjkrw&nml3R!&xsaow$TqA&xaPOHSV6mOZU*u zMgEyH=&JZO{xjfa&f!G!r;oe_${+Ky_oP?9Z7&pAm@gx@Qq*=FFTP|TF`Al*MahKH zQ9+!cPl-AbDxJtO&i}BRfBg5kvW33^Kj+rfB%UZZoZV4){QFIr9B=o>tC!d{PjTAm z=zh*3?-I7ze;M&JYv1ei)IP|+x;DAkHFt^n@7gm`707R6Gtc7jkMze)<`2Wxg9?iu zb@63tJ9)yWUeAAgzgyoi<@x{>p!_V5HK~m#b>4~VVE*pA+8N)Q4{roW?_|B_&)`(3 z>PwxK=7ShE?mhjcuM@OyoanKV!Q4e|EEbR@-(>-xO}iZjAGy3obV;plKV-`HnP zSmuq!m3kghYg%F8>iYm!gZt3|fxSJOO7R{MB*qE%h*~{OJsK1f&52)PqcGkDxtH$U zvhI5IVpNe|hfpFJyks1=#8JlLsKe5qP*x^}!1_#Z+>w!*dXLx>&_MSS=T~1oEq(SC zrxj;Um>sVr7L}G4Cq*jkdk61dZSGfFolIdraFh=Jd%Fj-m(=@9u0BjJ$FW1z`Eh(p z`lq?qg(0nfKg<5U718l;h)1uW?VB5qSjp6>)(Z)0$M1W9msdqL*IWSlH94F|2jD7o zJ!<}G>)N;HV0?E4J8GqWU80V1fe)p zb`s1;+5-3Fhg^wzm87>2$#-EtNpn#b^;a2u%T#)4cy5y2`f9O_9bSk|>HJp#>r#A9 zJ76D5_`2&|`R{rMZNFwwq*KxNjrAlo@Dupd&ZBwPB;nzu#^H||na@^F`+*vdZV65| zSFk9(B8Poxv@6o{p1pXxC`XG3#w8Cm!c3sPU*5cWg{Wh3%oDgr3EV3z4pQ(Fhp@eM z^&Wmyp$~lHv-Ddws3*6jAx$i@;0)vYp7x;2zDaWbTT=g`kH$2twt&2ykx7kc>oz_B z_44bV)cNNitSFXe;rbBlp|8(~3fg#6v4$S*aBEF|;rjWl>kHqGqBin4w=8CTEj;y}JTo|$YN*{+!MD;y1)HV@|tYfh`R*oY3|A&VjsV+hM#l<;d zp}>aPV}m2wCE@YKc$X_9pTIq13x%E{|H^HDu=5R8CoBDY^t%$3Xg>fw+3de}Lf!g(Nc)$fnFZFVzbKGd)HNq4Wz$oEZyj@VsprKZpPbV`#yS#8gX??>Q8?x>Ps`2WG1Og zZ(r_X#JjpRI6Zvg^y2>4*t^4)x*~_at~%&Y_{}K%a^b)mYu~Qd2s&Cprzg#WLmiUsF?OGfC z;ytwDDaEiti^tzZ`u(-9In2oR1jNi3EH}RBs~G-iW5v@!nYImVwW7Gi^ULi9R+|d0 zf#3Ne6YwBdCQs5`8AH8{c~y0`v~E+=FauRb;Q>74vwkRW2PkO{6f{`m#~B{Qx-?*R zCfY=$cEB`d;0*VwtlXp8@`|_b&^_5_TCb}clfjWBu2sJ%{GBKJ!#6Aa^!J$4tuIBK z9!sd5bTu~Jo=RqalW0}zA5;^4N7FXYuX*?{lI%ER>N$p=19l; zUajG3OT0%yfpa`qh!WIeB$$>G&}CECm#sz|xGrk+Vh1K&m1~qv;2dJ0=9#=Iivs2k z)qJTU7K)&A>k?YDBBinV_HJmjtc&9sTa$oy20IzhOG^s?ZU#eZy#5bpNRhi3{kT9rKhH1w#6=IMzT{k@UR&xq1iE<7AR)hflF zu_=0}`f=#}eS>#9fj+UrRhE?DeFGU6eKq5Wx;C)x3 zd<>DKLtFxHo=p5JbW~6Azqt2Ud!1hN5MLqDN<6Pa*xIwwAn$?}n1FXc0ll zB@_Ct+64gyplYLg&xkTS-+gP%qTL7a!!@Ghu12p&apErPsorANDb>rVG1q4;>=y1( z?IS1xfRjwY7FUvbu0g7nII3&T1GY+XK21bMF5iCm_jB!(X8qgAgJ0y~l!FMH>X*@< z3N~m*t;`k-1HKD46ck^6jwT*8xu2TCOqaCnzkko|IKZ zQ6v*6mU;95oqRcXKZzBvn8n;#9pvVF?=qb`%d zDzoNL43rd6T7(hh^LlR;Fr$C{_kTpahgVb0_dT3WLMS((_k`XJMYL_rWxQ2|j=P{E3oU!Ko*z3W|T{(yb zR?IKDMVX}(R0)M|1|%rTjT%+LWn2@u`sZyH65PeLhr1Q#7TC7@)IYl&)9J5uMR+ zl7b}2zxDOOPYPR%ZZ6+kmvL?qlz$@P&z&Y()$L9*zgi`VT}61Vm|pyY<|dRHipzB? zUc`P>Cc93`@|08vAD8>@L?LaC7}x)~&i^0p;Q!b!?nv|G)OqKO1$iU=xe}I zK(fTKDq*h6u&m(cg5UGhVNa&&I6g#g;5>qsd(zL z4bh1nR^1a6?ND=;NNQ-9p^;fZm1OoR0>pB<)8KSxeBXok-Y{>oCPd*)gEoXU?1!-wi+2Us>}d=f#f_bl+%QBz zanW=Ah>KnyEP4hnSxuARF0KjoRl?kaC2cjsn+uz_v(=BU_y;zYTt$B-pH;n!#C-GM z4mtbQXz&x7Y)HRzk9-#4eKtY3AR6>iVbCMfxVRf93uo$IO3hFFlKyl0Z5K)J}YHdtr3V-L2}st&qeE$p5TS zyzCDAcM8s1Bk+Nb+yV=jnnzvs@TfP| z$m=W^k!1OD9}}i;R(Wg%4O>+-v)IbrQNCdM+XtEb=HKq81k^o|YjJOjYY*NK`WM7L zQ(>nx<{DCZ^T_wIL}7o0xZgn^uIqd;RHN;e1HpYFFFzJT*b1 zZ@?qL&)7qfdw$iC5Xv5$nN#a*FS1ZK?oM;p&r8v#FmpqIKx|s3mB8{HWC6E&W%Dop zM?e241xe>}PsHd3iJS=%&#V$ppot}{3ajI}l>&NTQYVT#!Nbe8Zjh&DMUfy6Xyb-! z?q+*>tX%%F1p$4yw>%hyExG4^HaK_X-krH=q~}kmyiU0UDo?Mi=82h@Ufb8B1WO-| zl@tdA@kdOa{i}Sz>ffy#^Dlx$dQXZw{wyga$?TLnJzOtocw@8xQa}XpyD)UtC?^3+ zUYGH*AMAFx&mK8suGviX5Qeju2SyY5p2#e+n+8*n~o zPn@d)7FdOaSO_5hd}Y$kq9a|NJtj_2v|NLTlji_Om9<5vP^i9TX zvdpnzn=|CiUh+eUifM_y-;e~pY30sexj!MGR-8nWh0onVjp0M@drxU#9#`lcGk-2z ze8=Yc>Zi6_6@@v^-M6f!Ah&-8dteOfI)1gKw@T`L{VsRaki+d9azm_|UK;_H02dE8 z0EOTCZvzI{{H_1L|8xJ<{m*?oEkr~Ax75Md2P=H#FV^e@70By#GC8n1`O5P|0Y$F% z)2e7R9_T8L7$aqM51*awf6_ z9pqjI|KGB}Dq3J+|8s{{HqWn(y#JaX%BiEjiU7`s7!C_@rG5;t6PucvLER_P**Qi+>p6B`V82D*?v$*bD*d8;8yyTg}sYUx^yH4*b(HV zEPpybcwn*7bMOA+^_PBADkjy&mv>w*-goW3Zz`EM6F%=p<%y#5oRCD|wsRq4LdU?u zL~il>U#X6TfPn{8^!XJ8J>)!>bgsWJSCCX9g1&-m=7I+ayrKNJCRugUN{?#TxIK&K zvlrUd1NQi#t3pv++*J|}aEm4F20q7o-xclGH{6RGyH--to~TEleyYg7?YL{TtNG&1 zy*n$`G77qZWVV$UcfP#l3FX}o>boOnJ%7GAX}@$c=UMLE15-uMyc6_b(BB+n$F>^z ztdV1Oto!#O9SWtM^Gt}y1q~MA*1X)rsR#yO=LfCA|3Ac(G8z?5T|wqjQ5_(B2bCv* z>VgQic0LtWfO7?c2YIIS!d7@8oc{wX_JT`vDSsI11AodOoj@2UF5YhfN_II50S%S6 zH{bh{&3d`Jvn2ko@94vI4eo<0W{wVVN!Sw2O0j}S+QorAgL|~6r0Bgul z5Yn3p_oieT$K7^c@lU9J7eoDCI)G%URzBV2g@Hw)!1(eYbcImz4L`^JjV*5uOA7CsDrQ?{Aw$oaGvB!5CVhIjog^!DrHM%6c*t~d67GP>FL{uU>@@rb$MZ}|CkLDjiyQVf`!k3z<+{6jW3AL(tGywjK2Byu{~2OpPnhc za=Oa@dg9kN`EPeuS%DZ45@Xm83<&tsVGgkBKmY4f9 zl9&B($let`aygoNQxe72YYLDIfm*uI;oPLEX!<;h*r8wvg+M^~pD;KKvi*-*)x3Bk(Ws5K)xmy&O#{X7@#t6JTpYiwK8p$(FH}9; zBrQ$}a40^vFkN7f`E~VESQ|Qs$dogd&TXwaFXa zs5+}2EPf1)V7FSe3E=6?;d4zMk!;Gdj>yAngy2x^Tt!|%#hLLRuMkCwQ@(J2_U0fI zZax}t{_|@h2#l)_U0}YoyK--#7`uypY*J%_@@(P?ez+x{eu`{{jpq;-H<{EEoZfC? z>t=VE?HAK5Z>sv2N|jt)~^JkF1IlSmp{~29wF4N z%hT~W#efg~;&?$Qgx34WV3QEyWBF;nuw3CL3|kxVx8=*Yi6f!L`mmq6JHi&;!DP~8 zw2vwJZbYX&Gl^_HY|RU~i!7~x#e){$L_}kKx^e62L6oXu+=5*aDs{%jyKj8aV?}2Y zXQido`_=>$Q^yJ zrMJY)<5M$yi2*lCyR~05GkGPnQZ10s%J`_u%jis3Ls*-4-TLvWEnhMrPA=LHlH`D29&bF} zx6ggD^u2BG3A^L0cSC=8T%igh{ItPCSJ6)C3{~+B#)PyV5EQqfy$+VVo?D#n60(1q zI05Q(o`BWfQOGkY)L-g@xwbi@3iZAx$K=$%<^=JO2$%e2u6{JBx};^!gh8q-vOJ6A z3#sc`s7B$}-k;09&D;ptWJp3$kW`;q>-{~x>5B$n>!($sBC%DFGp&F?8SfguxcD*~Pg-*7aO*L}&mM{0v47qK83PXZ0Q+V7@H-|&mf zcpZp-; z`lOI%FBAv@+UrPYJIDf7!}O%pBzggiGQJubq?UWcNO63yvNW6YwW`N4#s#@8m7S|?NAiUm_9fIjX?A_ zdk4$JZCiGgcT;O5+LHL&-D{$H>Yv%!lw;Q!f&*;=fJ>Su44-z?Am&>9eQ*Wsd`&6# z5nUY%eZ*IoWV?2H^oG%f8h>@*cclpUUKoUgSnP6(Fi4X5i2&koa;2Zhb< zv+Ws0hq@J6j7=g*{(UshTg^8lapIFqNh(dhKkAa|2j-@;82Ix38j-8wFd10H-SC`G zW{b^E1~Hk^Cl(60Ls5}fb84;MNKVw|#(m;sMuEecE!zK8InjMwiB3MmlVgTL53gIw zMyIBstN59YjZAQv3;u(NBPlKw+)?t{FicGz^Na`ULamm#3yhfz2l3HX28DaPZ3Xqa z52v{cU)tQZko?7*wILXkW$Waxl{XrRi|9GO*Oeznx96JkS-KcmIRuF%h;$mH3XUi+ zbhG81e{D~C-SOo?t7j-3+#`z=Q2obBqZ|OS4i*%l4%jqQLr?j}%BTyE3v3u4NG5<$ zKbAv%Lx=N&R_`MtcNMK#d$D=VC&JYlN%8_FKpMgTAJ^jPi=~u}DJxp#|CQs>UZm<; ze7WnBarD%3Idiryt$g>ycoX7t4UH6nBM0yRcglgJCKpFJ>G9HXdF7=zt>)<|b&KI) z{~IrG4yMF<;#EH>NirLRjzvL4(VD1v?yWBvDLtpI*i`OgtK_fIW@lN&*C;ctc==gSa#0Xx z%aM#GGMO*ws6B>?`H?Ol0#^H>3V+j2QBUeGfWd4Xi+i1K$ zF`OPVB-Psnw4_blL)+c3{8%KS%3Fh}Iy%0(Q1C*wKWbL#KqZnXE*AIPkkp~!Hg-Nj zs#5@GyzhzSa)rtrw}fLdCku!CxT4E(&2Mn-voWKAnvHr!VTpJHB=C zqw|zQwM``G=K2B>%P5A&!nKw&dw%8T5j&Vljb`$L=;N}&9r_vuXvIX{Cl*~hbM!yk zAXMMpNm;@0FV7582*bebwM5Zk_59uN`Jek(+usX?4wtkjs*yIJvP`U4)zr&#z2ZDzOMb7ef1zf6edj7%w(JUXQ4cditHb98m(CYazNT?obPu zJ;mAp2uD?&hTxM%^CA1=L^AUaZn94CtV*4vSzdSqCZeV? z4|55J;ZLm>ioP#2=gXIm7zUyXAd$BOJV-n_GsucUAY`Q~a=aL=RSI zPB_R0uw{W041q4!lL#_!^o_880^*Zm5NtK!@MDPAElZq@hM&ttui2nwC4j_AgmDs+ z*0|aT@z@w2@A*(DUNj1$BG!)G+&QcXJ_pYi&6`uT50kZKT0movK6~@rhwN^;hr!Cx z2lwGXs+HtiVY+YKkR(rHcK3u7uz8USeqZn4yBXE)p>&Au!dm`G} zBfZ}Ef2fC=v|ak55A=<|Y}=sTE|*^R0P614zhWs+S17~+5xapu2vULMLllSstDWKE zpCiiB((hr!WgEm@#he@xqR?weyN7cXVzJ^%Kq`ngfU3DuD{qvlts$?~+zlA9GI(iX zo1iGDj^2~llut^c*~!@Y@u-+VCNma`76T!BqD7;jz6yXuk$>+lLP#|2T@86GE%EH! zMc!4y$rXejkT%>4_z^UmYr{-HaP7Ek2$;&xNs!xX1g1$|(c(Fq6ljtzjdwLvJUK}% z7L>Fkj|@83eH}jnmR*|_J*5*4jN17KjBsIWjuc}pmU!H38|rz%j`<^MZfsmxI7 z{%*Rlnl>-TVN6#`4HRwCaq38q=A(4c_v3(rTCw}jz?$^Z&N-flwiIcdg8)M-U@^XE z1FTJe=&a;H*7MLi5OY=zEW>0Y#rP=4hTMyl-G;~#AllpUONJI>w9F@GBR%UNhD1M2 z7mGJMhVh-2TVcm+L1YQV;A5kis6DW=Mh5&i=8)EQCJvl#WC$p*jAb9udGS_N3wY)B zgBO={OI~O56o9Tz7@0wiXmG5c;0Wz;;FBJt>|Hq|NIudIP^07oqOkd$5NQ`u?Uz9E zqFxf7<=rFD(#S-uR%ix!ewac28G}5Pw9!$_1!Dl?iHNl=eRdfD#ftciByb*+_33&t z@6#n_PUGH#e-wg$q|_(H>OXxXW4@lQjDaMORidoka^`JJ11#w1zI;$J z0cefUP^A0ovSHID*wfLdQ=I}o%K^9i>}fc?Kdo_XLOnJe-i6iJY~wl7!6Wz8f-llz zD&F5I-ST-H_J%T`!m44Eh@ist)pb>EUx_JM+vAm*ea-Y31?~C@u3x4c(Rs zn^sVEp#xq6w z(PI18JcXz?U_nJ--HvAdop_az4qU$0&jfwg*LYhFjDvi+haM>F zM_yzjkCXwhU=eplNnMlACY5x561Y~Vw~^Mb;mSN}4=5JrO{aD}_YSy>AW5@ZHdo*S z<=j3`tNeF(a<^z96;;SaWq^2LJ1m&aK}utt`VMsIJ#1WsIcgiAO@YAtA$lurThOjp zco$#4Xw`NJb^;T9+}rh>_mNnS>4Zl9Rdm~m&@8%bFNC=brp15<`a&Zuf#6EZhRAuaU_*b`yIcjYP7x8<^Q8Jn*9 z71*&-0I}Tux=;Z*oD{Lj*kq#$qaF8~0;r~TuT>5dJZO3yXx!^ECtk6KH3M-6M$wWN*X_~a$}e`D9cTO!9Q{2o)|cPT){j}_kJcdDgpaGRV_ZnMpz`PfH}Y&0Tux{P+n7yE(zyw+;GHpQ)~229Rza$in)hf zX)X;hj?t;xWD8V93s!v{B+3<(A1u|6tBEjz4BxanA9%KPV7QiEl zFmJv@F{Q`z5vr7hg1SzHTMWdW>tRl3^;zFH_rgcSOh?F!AC)fom=&nJ23oEfle(ex zL>}Dj$98z$U$r0(qCViWfL~Z)T;$_afFk%X(6I?jlR_0VsHOEr3!lY!9v^lpqJGo@ z8ImN30;gPkGxJWpTIY_yrh z7)ZrdI0CM$(|7n6?d-u}>Q{hY)X_>Ha;3kPA3Ii`ad4&+g~5O(fPW{XliCDeT7ZtS z?6bQU+zu>0=@H2Gw)50kdNe9tG^++F1U9u^^69AWXx;5*^LF6?Wi8;BOiyN;oV{kx z@6YP>=do8Kb#0#jTt%9ny`dt}8R%Kp>BT`WjN7|{K1-FSn}k=8s`51M*NyyOXb`lY zKQDt)ERA0twTql&y2X5g2Sk-)hvT zbQE*H(kYP69^>bf!)PrfcLeSl0`qMGJyhh8?f#f@kss&ZqJm%vR{`$*F3-LrnF>CK zwW4`HcjeHYk6HWM4%})M*t|I)FiaJ37{Ioe8K^jI;o6abFMx0$OM_F3wty}x^)@~o zIh*uRV=sn>_l2wUQD|r6O3~88nFH6VUTZ=viu5kKJmrf)N~IxvDgoZi z95q+|r_ub-or|GbS4;)53~8o$)_E1qheO?U0>4IUFZLhXg5S5*|MyNr@4l=;d9~V( zYM*=}8AnH3Xx#mXme_kg7(EN6@j03UMI1h-)}`dUS@FN`v#;&IR(GY_<<4yn@3!v? zdQIL0Gyy;pw34KO@F|}P|B(Vwph7ecL0jx0McyA&To-tCY&MB7l_=69$$PNXH@8lz z<}DZrcL>})_;tMy&yJMVLl((u166*jW?BGU6YzR#zu87wCIE!M43QOxEamsqr*G1G zF=E~-6UHB`{+(;pw=Ri!2t*}jzDX5HrNVY`V-4 zgP?FrA*uK%_gY?jRi&{;vz`TqM6aMoe)B2aaH(XVV3NRYRgf`bwbjXj5%kupjfbEr zuHnL&iib*O8j%$pE6vjv9^1jwt;L=OHb=YP7U-Ist-Ti;xVSdiuVpPDi)nbp+N0kTTzpbc`%Gtu z22^UD*L2j;O3hN$ecBl=sBjQ->wIX(gEMwW6GJ(D;{GA@<<0OVKrWDipeZ{WeaFGJ z6lwZ1wwmRKS-^fs6|b3Msj4MZAVIT|Zj`V^tW>=I{)YNjKU?iOgGoNkp(cxs!gw%w0JCOT{?K5~Dgvwsf2YIVta z+-5f|bsI5i;=PwL(shA9nYc6{_*idFD&7Vcbn%^Ad&Yu~BK9@V(QrSf$!a4xUX!?@ z!}mt$RNZ!XbhE1QVio1O??R)Ji2VZX5Q_F4Hia}eg`i4+$lt2e#yAEQE|7mVLJo&C%_ z2)p2GTWr3Fij#?4Za-Fe>WsW_)o7BOHeU+5|q)am# zCt9V-%C4^RaTT-7Q{&WpaS!4@vr}geM022W*vN)lEBWQ{wD=c3=~o#u#v2uMtVp;e zBOxlBQ>n^a!P(s#tikWGCzl?kcYeC+;9Fk?#`&DcNez5m6WwJN*tO$}=%+EgXcYY(NQY?uwm^ zQn;Se7Ahk|WmLjCuG06zf;YLk=mf?dvp}XsbadB$dn?3b5(UFR>_`FcA^9#X*X1Bp zl^+HkrP_qLvdAAh~sYy7IJD^hNLy6hfRiwa3zKX zE_gdxR8SWcK&p|*4Vv=mep_bZh)*?D%h{bNZ9dlcMsEY{7Cu=o&M$m|LTQIrs*DT^-=YkXk@n9&hD;-5U0?AmN49O6d03@kD82!xmvXdp?{;9AChl9i5eUV?x6 zjj`0var>e<&KqquGzJR>xY}Bs=oMg79FriIZL8GviuKA>&ta-a>I?ZKTH7lPiPM3? zixxS73Bds7^P0sx4zYi4_oz%Sk*t@bV{^0_8frodNEQYhQ%N`#ndPEzm(zr{j6=3- zA)W{3dW1lv(7eqRsNBLTvU2;FST|+F3X;JjDc4*YDsqdHOh%Y}*DR9uA44fBlO9>; z7D*;AA>g-iJ;lH1Sj__OyfgY3TPkTh7@F%sJ8G;q*$U!AH;ORfk0C0kSCWu^zPuPK zwKoZ^ggWwKex`rjS^`9EwTXEqJEd(>a*ncQ(EuQ5*%30{BX!Q%+>6juJ>XSQLFfZ) zv!3W79MjLq%I1~lP2*$a`WVl!jWYmj`5W%9fBN4V(!SL9`;0b;2rG$9`2PLF2D%%b z-{-CD@dmIxHI*6QHSQdsyUioyaKJ@FZq#)|T$PceZUO(=(OBLZA}RW`HppY3Hs86ECqw0sFuT`Z%i6+UwT|#MG?d;x-O_j-q`9RDa4>^~ zXLk`qGa0T@$-!+@s5Io~=%YH`5C$QQFOrq~u~~JQA?<~GRb<(6th_KIiC34E$&h_d zfgZT20Jm@TNWjZ$nLPceamtSew2{c%Y`%W+t`z5>x%mc?G8rqr`XZW6r*{|{+JLj8rFJBcA`Z#9D|6%z?iONbZULY6 z+8}E2-Pg>x5O4L$hIpkj+2rElyZJ@Z$h(kt!wLeyt*326S)1NsB+))Hy(3xVx_4Ue z_cr#sKbs0@;hV=T&0_QdCFPBG*r?#o$y2h!$yeTU&~6~v0}q?66^PvMDlY zeq-DjQ#tfI;E<=xuQV9!OrgvM!1HF9mQylyla)fet@P~?<$QLYoO~Qat(#~x58tn8 zk1GMlIC)LD63hR}!M~^CloV*iC0hcIVOd@4@1CBQRaM%t$_Q@SyTEKZ6;U-L_QfLe z5{pPbu99Fheow#ATlr+F`de7BM_e^%b91l`17sjXxjEFP&}|0MRB!|5HmSGx3oOYHLB~Q=STx^u zp}s6>l7_G#vPl<Ao}Vb;P;{ za~XJ3eFo9EqO2B%LFQS=RxW8LC)S6ZZn3_9w*WwbsGtP`YHTCbAwiAi4fky5H~7tK z2@z;OSEQ(FGFH+CV-+ixV6LjHl#Nn{wSI;-?&%CI{I+h<4A{;)U80S53z{X!7VgXh zValj3zLwjRdMF0!os7IR)x7DGE=#tw2x;U6v>4trWhC^uPn91_Ey4(S@OR~vKI(@j zRH%zaoVqRwsoprDb&_pXr%Tu)!zyvY`yeFg1h901l^U4P<~{nszB^Q^0yJKq?4E7? zhxdyK!`VBXE{uHb$K$(lyHXYL^H=8Hk+Pfmg$1tSa3>c|N@BH+p}%McQYDEbgO(hL zbO}#;^+YqtpT~ums$PKEyYfzP$G9YQJ|m+Vc4iwf;g|0Bv`Ead?(pYiRn z&zX=GAAM)zDI;hdv<=dqrV%hj8n%4=VSW#fgF&c>!mG#0o*StiER&`wQX3(+&J+k- z!fNlp-IkH;r(ET+PCCI(pK8sF*4;fJq!I)X3C}Nc$G9}wIrdHPGcIQ+j52g?TT0P( zym_Q%nw(9Md(W~g*ERihn{td9ik9F5*M%~hZl@T@7SExc2_qBqIA4U32S5(Aga-^Z z@5zl8QMakT4Jpdcs#T*Q=Y&(tsaf$GDK^O7l-X3(9uakqm80Qy5fI(4D%~ks-@M(PlciKo74t zkC15@_`{faJ$dd+RX97xB|WyRx~@T9N!5daOChk^RcA5?2N)4eWpq>K`QJUn6yXt8 z&$iFu<3|rOC=XL+rf{4E4K!AB4vd>Y`D|a0X*^_?ITyq`!)Q2MXN6?zmXfhZC!7%R z00W-Py=hUcTsnZHfK}Sf&!=Qtr!i2KeQxEWe0`e0b76`R(gO*1Jz1S5!f+Yy&7oH8 zeU7Zw3*R4 z*89V-3|ArKmy-;~+Ef8yP8;&XANVw9r5o0X6k9ex4zA&$MBXM)!MOqWb47ovgcz2Te^uaf8gBhVGZ<5KFbPOKuMO{N~NENR|08+RcR-t zWW#{Y;1zf(k-qjU4g8!DBT?!EnxL}+w`#pE4DxdW@{S4Pe%Jl?k&G+SS|9n9I-%1H zBbcR&YbA*1tT@l9@s@a1o;UZ`Zq67fW{pk<@F)PSbI&ujx&5zh$4U+oy!P($llA5J z4aA2zp#u{=ys9n7hiSqq%u!Z~1-VF__kosMN{ty(V?P>GL$MhS_~z(K9=-vh6rPt1 zzR<+4%DQ%3h;jPdVg^Iec}s#5#0XZUo8CPff0ALU^}5zC{q&rED%p^>QQDP*#o91N zEm3IP%@k(l>A|8SX2?L8{9g4a{ue7}1H6wpb(0~#+#%xtri_q}3{R{7l$nlagB3QC zQ&?^{NQ~~HV#|q_yaUTQ-lQpGX4F#c%Tz`=)O+D{HgTYxqho7>K%W+6lv3S~zFJAS z6Yy;0Xh;^RXt!i^jbXr*4GSN)r=~^ovxXHbzP-=cOX*0v>-xeH(sRnsi$SD=L=bUl zY39LX1~ZTm4uxA!$dK*2GuGn?DQyl`H&@=?A`0FW=l#ZQw%Q6uL6bLUf{%C0;7>BX zkb zW@-SSBN;JGFXLCkq9+xc;S zz|H?=uW4MK8@#i68dFN2huMHsZF+B3Qj!&VMJMJ#ec)srq&Q_%ILQjlCyE@-dV90C z*~**|H4|J3yiaM9S++#FKVwwd*q{q@_HI%)CoS$&g5+=g^GfDKB)4xeHi%}~NK0jJ z>!?@4iEo?ollO%q-$2l60Oa>lSoi_b7$I!+1xj{$!PeX$rEB3>h>QG$%9WUcjTD9# z@GK?4ix6UAX^E6jZUzO^4BEeTr!$;aOl=A8oH7hPSLevI@gDj2@p6^j{rQa5DqJ;7 znt?KqLcR@DEkEV`GEV$`3i*jB+JV-_JoG$+Z~Rq?i%g&A0^fc1We$dUlELb4CiJGf zSXQnCS}R;O!(Q*_6=CSW(7LP?kKcqY`>_{6uNa`KWp{ce`93{8{OOC$l@PyEG8s|{ zSB|zdJX}!_Bb-{LFFi~KMqHPXd&xwvY(&<2o?^Hsht$M0^|MMLb_%VEX%&BbbVciP_^#24BZb8LkdTQa7G0 z3`fKAlf##b{$aJ`@^CW8f7~S^`^d28uF%)jF=|g@CzoYAC_}%M@-*!al%5L+`Y3$j z?YqQT53`9YOuU-zB7$KojW=J1PW} z^Prm;5_9D&K1xF50cX}+hNJwJ`2mwujz05tkGIv|+T1J4n;`+*tpn@y@dVMBJp`+{JtenZ=M62TSrZv(tjMT3Yfo^)Y>pa=-sAkdNcd9Bi1 z#n5JjfE_Y{OL;~ST=c*Xa>UKGseQ9)Y+kHU!FkMSCAR{2Nvjp}Yae(*nDqq3WSaqpqwa=*^VkmM`nz6wPJ>z+1biZU;aG^hKgbJ%vNH;qDwaE ztzX`Wt9vq_4+@La;~|fC1bYymw#VlGYQUOXFT-CWB_SsVc}cLq&?)WEb{>r0rcvjE zeS>CSajBbZYb+or@*Oym`1+ez5FNZTob2-<)dD7Hhf79@^cwkiZitK8h?7$Bqc+Y+ zQVOxHWgYOF2vA(N$&&cta>nj?J`yje1fj<%^%B8WZ}?wh9ak_aGbI3KQK?|H(tGc< z6*|sc-t8MIRIZ%NQ90tFax$$5;e4QWLLE>`n7s<@bU5n_2!EM69A}Nh=-%<~#Rfx8 z_F#m_TdW}gTKujTTFQVopU=UJR714UUhvK!)QT4o2?K;dyO)Hb+-x72&><6(q}A)< z2gpC5Rul$i%(`_|b%u1ZV{z7TvPI9X&Bjbo*vczVc=_^jC8?>@FG=i0h;oO=%ZeWo z=Vq@6x!5EpZr=ata#5w-<*mI5fkUG4N%RV6b}S{|)cS26x1hbbCBJCTZw~XS2CR2Q zhhDWFK2AxBM`DB_M^%|3_W8b4yIkwK>P&6VZh;$z0?x?ZguEM{LEF@B?+ppMG4;ny z*sV~y7)5`5+g?n6VdwB!!Z{4n6*Vu!1IbTUDh*1S513oHI`-kPd05)D@|EBg?T2qh zQM3JT!8VVSzsrVGd^d|Ki~R@wtU079;=edt+q&h7a5L#*4GrokbTZ$e!lB5|WxZ5MU zd!+sI&ky7%I~!Y5=1q)|q+uf45Ujr_Ra;u*F=pDmX8%><;Z+KR)DF(9Y%fv{t8NzY_Yu`%P|x5`6IdUX|p z1?in&qbcqkvaYL&DyRAQqqm{b+hiP(wrqXAOJF}+IqcSZh}|#+DokM}#z1emSG z47xs_&$yj`ELQ@$#$lqLe2Wb$R#akNBC#w58eHHjs8D5Ad0u}}Pu>3GEgANtIia^9 z*Z2?A!mq4ZDT{X)Y__Cm9v4Dtn8aYT{6l%jMiW0?*s8*R2D|PhGepXOG5E=*Q(q?s zZR*CZ9Kx#^-b_IzYU_54?>xZWlCLHv;Q=p;8tHN&viiri{`3kWlMnO6?!2NNgFzFp z)(DWhG747DhtUP!4XMfFpV>U9k8)#()q*yqs#*;%^-}ayl40v|#2U zNssp38de_ezgz)M$t3k+Ue4Bjs4_{jqaf^a`PL9ycad(P04vKRu#6P<;er;hDovd~k zmoOwQBx(I1!uP%v@PvcG(bM9Tj~>|Ei`KB?1Ln?|I78}UmvK33G??}b!a$WQ;{VDr zgis?X*l4}4;tR0iG>niHugNS}kfj$<6l}=jCd1JR^aScPv%`2l{mxt|ktu=-WUdSb z!464-Ok;~9qu9dZFaAc!)J``N&y?5Q$hl!2ZEbI}ufw1rbW59zQ#e<|oAtet)Ch@r zYg6%ycIWYq_6bg7spq4D!*)39`$8NOfRUWD)ma1$B5Qb7OPG|=@%wvQhSam5DjS-e zs1NTnr#FFp0G{^3T_X2;aa$={)7N4f@L2mvj2mANZRKV*y&d9`6Ib)JZ{l`6Hj_uy zOW4ycs$DK%Os2dm*Im_9pN}(ZDH-mUvQ+1UV9B^7;nHM{EXLUZGmf9nVdNP>@~+;O zd6{eZdBYtl%%I~LzEXY_Y|-xJ47Kukn1QiV??b1pL}3?t8149B=K5mttTd`}FdRI3Bh*#24mWR%)C-+kX}N9%93jC|zI zKhioObu8cnM86lm2SEv(8pMpBAOG4+^=DLkk!Q}N?lLWp)5GO2@2S7HF_39b7w7mu z>;@&AE%#}9S6y+q)ymgq9r1DIffE9D6P4^Z8xMdNe>-v@hL(>ib=GeRx>{Nk0dV!+ zXqj88!>B5GpHjDU2RoC8jn}^csme!{k5xOj&$<_WywjcjbTY$kQ0Pm&QTqnz$CsWV z{^^01SLdAMx^zc&510iy;{1T|pAW*yJ_oEfK#cYG%T=dnG>7!_^?`?%l6!QU9}jC8 z1hGPB~maO_bRyU7O^2(K^HwdC3lF| z$mm`^mg@CdY1QCd)Z*M;>vz1t;=;q;khcd0=X8XXk3A}Owl*(v(#!+0wos%URH_0I zvUEK8G>T-5zbZ<6ssu`&vw&}2koa4Sydgp2rySw$_3d_|A3O=eG>@8a ze94};C+4OKaVw(D87Kb;w}iD?QNt~$%`a*Wzyrs<1*cJ`yf9SHwJQeH0 z5o}=*x1D))Ve?CBbkWE^4cD6`mB}IKHmDDFczklKVevRkrIUbJ~ zxL3|Ob4NZK9hti@iIqqZ3&6=E_#EVl7$0e-7bXh4^xE~W+}v&3zcDdn)i-vOWNvMo zWFB3UpT9Ja{(BE7?aM{+L{+}aU#c~mtyx~u_O13HGAJg^73?=ixTEZY!=y?nlT+qZ0r-^%vwY+{ilJF?L49(Xn{hE z1sO|c&~*KJNEb`=w0gB_z(jj9?rv|?$lEJAJjd1-ZKJt41CVt7@hgN$oxf`)5@7Wl zhr8~#^tISWJl)ns-?A-)+LgLbVB;0)yYcLax#M){JbGv#L}Da{JkUjI##=C?P8ibx z>gMW}-Z&!UH#(kF3o$oltJHw;=y*$G`d}LS;;}@(w_To8wp7xxsdb!(CetvvhZNC6 zV&FB;9~NBGn9Myuow;(7Bc1J)P$P1KqD&qX8(dY>E(Fd zntvW0Xv;lW7iXhI--|zb!RPMYgbZC3%5-C|>X19!t<3Vo=sE;vWH#A8F3@;`Br*Ff zbHKqf=S;#I0L)JHSTDAd67DodGB`8uF2zJHleU4bLtXehDyojINED}c3eb)nOsS@y zH%ae3L3I`5x}_A~Po7DG&CsBL^=_+VN&TWOMZ#bp?Yc2mD^d@J6N8Q zJpA^oqsDADqE~B;+FW`|UTSzq$q%}pW~!4AvBZYjow_NHzt%v-AQ+_2vVWxUI6y9+LhA^!ZcWYk3$2V8C7f=?1@gA^U- zEBNlU8~tcy*O44@w1^-RX#w=Bu1K*`U92VJ78E!~VqKix@g%cyKAYr$2I|1e1)xEu z?-|h`<{IT;0W{sFLW0Xu@D{Sj!_xC`_`j+REPpQbAWk>AYE+I!#Py^fr^h&K-Y7rg z(7s7Rcas=2jpPN@vM$kI7dUZBH z++2|PjAfQ1@8al}#n!=&@!Clx-~ZmeAt7n;e%-%EswEm&FJ#Q$r9)KRbEiyLChFAB zm?|>yE6qS$+E3Mjf8=Ey`e)J)82j`WDJvpd-C{tBR$q^; zjnmAj3r7cX*gp#(oIXH+5BVQ4~e-PNau&Vlj5fy?NpD*2@wir z8`kt_!+Op)orsAkH8n&X7&x zq+kVVVZ0pjpD!G;h`^_(LGsBVSVz#NT(hqm1Q`w@!06^B-;X}gvbPqw6G#W}H{(BR z9kPm@`*ux7Hb~;D0!J0caS(_*9JDF3*irWDu4&!sBD2}k0`zt{8ewL^`lChX zs5o3o<8U?QOQj$y$!u+U6xbjp&S)d_o*P|WwOqYE+~EFKp1Ac>Db`H$UAcuhpNv zCLw?H%pQ?p+gUjNjMk!iB6@S`;`CFSjG|~8avHRD+_k{|@Dp^SM{(-A-LI%nS^H*S zTKcNXaC;Pp#P>01BgVB3JnGWBlcF`e!FE+T%G`*&dV<#?gr($yr$ z(%N|}#d(=q-+YE6?&Hi9I=eOa*i5hR^siJ+FFQ?_9ZPi2Vhzm!gJ9D74g;;g%Lewy z2c}|*vO)Aq8NHe~@R>(IN$X6Bc7x4&C0xFle26~opT7&-nQPu{!QWZ(y35kwGc975 zWPOlYtT0TIzD>5zUihg=!?oVwqf5aKd%T0p6``YOs^YI-H1f|)Dn#>A%8hN5)zLjm zKfPc@lQV;TMA#5poF?@@_$rpBNf>geH;Fs3b;9PA#KS&GdCREv+82&r6ZzP8ettF? zSkNRNhMV6T!i+xr!p&sS~PpZtP6XzV}zu-IDgMu zv4)1U0X&_cM=Nc^jQmP_ka%HLt<_6IegVe%|Xc8MFz@FW7EWF|`4;Ss7&k+b4{M+ZsMU#Jy9W#LdX_;DSe0043 zU#fQR!2i^-KVmo0Agp=!&f98;g&wN5WXXVn+Rm8s(1_%oQKz2m z;Vs(5^yiyKIzf=5yiv@EFq1gz;lAsh-u8dLq`E$W*h#3;7eP0gVCQ2JU7i30VU*wD z*@F*ITazD1d(J{jF*PUXLx=LLamvsX>AxnZ!f{A4fSt&{39GYWAU&w@e3E(*uR{P` zfK9AI9%p-{htRdCWYm{BK{~N1qa@S%@HNSk|DMIQJ(L2)Id@hqNmAR6st1kT@FR44 zWJR(Oa!ov=Qe9rKXGnYOhbok!4&omJTb@EA!Do8uIASzUr1Z3xbBbb&5!zRFQa|%z z>kCq_XCosJ6kjb;S*7^WMb*!BDnSDIyzk_;aS!D8 z5sB9~DY{^U1i6z%CTy_4dfWdi8o7ZUNQ`{y?E5fM;#Lnv*oUwY&&nfnQieUR7WGUa zyALfYeAS&g@R;I99TNA$Z)0Dhs%r}YJWnkSa@aDGpD>cfUr>E-{$;oz`PP5Xz2}23lE{O&+Vh@ajq z>SY&X(OQnomxdh9&!a}-roOS@2c}miMrX`rY|AuTWyB{#TY*~$G7xo40*JAiy@GFX zlU8m-yLd&bV|=Ucqss9OQ+0)}f)>KqT1RX*d^BM!%Ov8Qvzc|50?zz-dFp9cVzh8$ zP2_G35anapzPb@05TNb5u+9*8f1RbS_mY6JI95v!>jZZKznWsaWi|P z&DY%w5~MmSE=P9b&4JK;9vSOrX;Yg7wH@M}0+q1dIF(1ZGWr@;-8{8$dElsuJ|8}#KofEN| zz8P9uMf{rw9GfiUx6G!QLvh`{RlB z=1|OeTQcD8o@v6sM2g_2cO75%I&J4oOhnN=qn;}qYdw0}CK^Z6X@|2))fLnSm%@J% zsRn-$f_?*WpB=!EoX9ZU#k56|DN!t^<{L#&%^blbgNuG7-+~!VQ|Bmsx_ukk%S{5m zrMk20s>%WH<0uryGSX!ca_ej~3{J0S`8Zi>UGn0X!M|a- zHHf@pCBO7!QG0eJUG&Swj^7fb07XYb&fd>T*h@umhB>oVWLEN8FN;w^T5w84N|+Lq z{$?fK7`67EMU(^u1fK|s9`-vz>?|hr#voiq!D`v|^TaWZu#!A5--DEpv;C0Ra5|FV z$75LsesFDXhEzZ_8n-{CtL4mV_91uZD^a9l(>#{{T<6d`Ll5P*h%FLgJ(dPszs0ZQ zC3%toYPwerxxet>Nk~uOK7gT{V!|=(D9Ux(M?XsxwQkc|Kq~v}@*3O*b`cJU&WUS- z#=P&W^l5)gk26bk&C6C#W=jdTI$Eo(k-kt_Eh#qkzU(9OgQRZ&UTrjlkKkek^H`Z( zcNx5+NRTjl=^0mKtC^)y_>hg%D)M`Ag2sPGvY< z$@L#S?MEXxm7OLsv}I;(Xr2m)zj%6iHw&RGlLz{IuTWytEpxk|+3N;6geDJhu)PIar)j|naApTc? z`@mbay?rs?P7Km8`;naW`Xk&K^H#XTb0nkS_7jK4E-=sM?CH7n%R=;pZO{If?i05( zCXoN>kWy{*no2d!w$U#AJzF-b@T&6kmzB@|5wC1=)tby?R!ysO=}lB`Ta=_lfYx|I zw72ZdN4qG{gVZO^2W{0?Cb_3ZR#=@iAtffioG(7wPsqE6v9tn;o}F)vm*EF*La!w4 zIvl*>NUv3S{6^dmG~OrvjxObYJzIlLrpVL*8xh4)Nw?7*6q(do@!29#G1fe8bHTtJ zy34arH~JLK)`omwSd*_h9;t2obhF;#TKCwdo_p&7j(23m8uRXU%8mc2`;Dsy)nhJs z|NJ+y$&~MPEXQbdv0+%!Uw4?er=aJ`z6|z%jZ0}VYP~S!ea{t0iTMw=TFj*ybh-b3 zPgi%!mA{KoAuGY7Ox%Je8!R{s6)ZcDpx#EYcxOG<un1dLu8!wDa-osL-Q|yz06XH*D3_;1<>$@@(xLpHsRbl!v5?vW`F) zoTXq7Mv1ZDDNFk~onI?)`%7fL8)Zu{>=Ezt{8FH)&m{qz0PsjX`t@fWQXB`t^3qe- zn7kw8zvT2Y34Oy|2fzy!>zpNB2;q6eI1ux^r`N0Lschr6A~Rbg^L$4pH`crE@B;CW z%Im{)d@!-^99B1h05lK2QYFg#kWkO52qpD&zpZV$lwsgYt-=u0LktN0%k4t!v`L;! zG4H3fZk-VT77J9J!02I67Y_#+CVGa(dSEOe2@m!NI+DzTA)AV+FU#BPL~w}zQ?14H zTC(*h!rwaoh!jKLjib>)_eDSw6Nr9yHE`=@Msnyhf3O$A=RX|ec%xOvKVt0yzZ85t zBm@n%E41|;>CoP z+h_?*N&G5r@=K@E!5_sFcHQ-unhCerBA5hL)iUoF(2KfH7|rR@g8jS+@g*&dhrBI(i5f6Tdc+jUo!6 zBC4kliY@`+wFkY!Iw>}s&z9wxi9h~ne)qH2&??2~@nL*oRBD;_W6LUDYf!lolSS2I z?}P7EGmi~F90;2-;!Q&cHN=Qe`xmDc|5;nta|i7nE5s9oNg?y>()9jQ zP#$Ik?`mOqKtKNyK1Y3@>PQP1^V6*yJyN8t(!x}4tNJU~z5aYcAky|qp$M`l4NyEW zIKs-Nv%s%xRbM-8wKy;guG!r#Rj|jQ9fE&kACUU; z2(9n(0=!J(?~DkX$-c)YjyW9tL#FZ&P{ax%`#weg^?6uy6y=k?m2_iYBN~qsfO(#YlL_y+d~m zf05*5sNhN9bEcrFXtIV|mfdfv%XQ{sr-;WA#YK6u7*;I$wTB$bLk_`0a>$^}0nAFM z<*m~#UpG)kUvji;b*1<*)zxTsidgxY;n-KaJ7!|G>!t_BM*K@?6M`-Z5?stgW0&*) zanb+Ojgrq_^O?FWQfOz71F;<>R0?(Eu;3cO<@ast9Bnx za>j2)#%Xux;=~mp&wDjhckNGO+(UFX60aJEpmAo!o%M$dU1&l%_ncw0F!cy7`xQSL zv_h$s@XQOt=g5YJXph`_MK%7Pr{&gQSW=hRqP>{$R?Mg)^=Pq(tcQ@yNlc|Y9KOF7FOrp!duKo zExg{z3%FV+(6BoVy8gmPZ6AEm_;-dKjcG#EKWI|((7$SBQ0nepN&`txqd?gwuF5UO zq7}LV3|j3tKa*}Da{d!;HFe_kSfOkHE{_EAF2GG45UB z#ojEsIpdL}f@o1?_>RIz{NG$blZ_HR&35%W21f@C>ml9kqQySF;UjeYeN2p}O^vFe^h)8QFKMT|E4$C%Tr7T8 zb1{0l`@{Brys=~LOJY8NZ_y_ZGkpi`*>)B51ik2jF}^BWxNH@~s&&x-v-R%6@=i=d zxa?}@cz9+XErzjk(L)jxNl)=84|99dH2Tx?CNdaHnY7X_$sAx>-m*N>z8$AlQzLJL zz%uM6{QrGKM~J7M4aD$Ylu&W!49s8bCBqw?9v(GG`wfZ~%)4-vL2)R|fMZn$W2LL# z2qL>->1b_^PSh)2ef3Utk~`<%#Z)pXcdmE@^EKD=h3^bz^*`bx3}VaVl;oJO=jGie znC`m`cjHm#w@W`ziP~ZuJ0kX(dX-o-uUEH}7}4GvV|i6dGO0^E;jojJQXn!IK{ThX za$A7@tix$*1$ZpwI0McSZ7ESi*zr`0 z>Kp}C=TMZEaUz77=+$2+?38(meb}e0781uh)pz2Xe7+&1#@Ag<|KFRp0q9Ou)9$tx z9>tix-MiO}$CZ9o^^e8!FJiiv)m5LOaZ{&>zQS~mCBBs&c=7pH?;MOb3~jo^uU?h) ze3FjD-pTKsXk7Xl@?`p;NHZ?h7vkss@-J&GrCsjCnB2T1rm~aI56#2$|5z}MoYFqA z^dCmK$ZQVC%i(`RjTx-Icq$jBwvs$J%`q;|)3B*i`z?72wdVRaui?4N6@v@>ueLE^ zGkwO!huA?>y}^h7GCtpW^eULTg}Cdr{6T79HR6pqKnyFa7b~yND>fv7NiUJWMu@w4 zn6taY^?1LE7dwfrq&YR>`HK0M3M=_oaK{G2OG=6-OhU8@X&iS%ZwPW~=$}!_(?Su2 z%+3u!cW*~5gf|QwRan>!;Z?6OiXj)pMnWa38AYiw`e6`XoCOnNhLSzT}wBp|0 zY%qus=wH|wlMaV$sY+zKzplm43)Yy27QU%mo{e=rGxp{TE95V~h{^aY`Rt~a(r(Mx zT%E^Llu9P_!cyIt43Dmk2usY-_-o_!Y&)J5su}~~}%NCEvE@v=p^g7WSO&2h%L_|-8|i-bM{48DDu0r0wFVheb6 zTs-T*Q6!AlH39OWcRArgBw->P?qY5WLYxF8>q4=WnF^c9RHV1MpvWMBEo6%HgbMvc zs6bsOxpyFjjbm8LEKQ`0Q)UCNOgN5@V|(fCSnx^s@HqQzB>a4T2UZ5s_{lSpqu-s8W?Mfl!0QBCPh0v)?-e zr5OlC2f@vm*J1gW3oKy8g;F}u&tZv7alJMS8>-2{a08FG%>u%OBBlc{V@YUd2r^=n z6e)@;2ym)t;+2nwE6tN05}GekZhtBE@-`6cMKo?+WRA<-@OuJF>la&-Jjk#W%!FE* z4b-RbCsy~511Hsp$n0}z_2((yKj^0loF_G;+{4fB`haC3oKRdf^E0Vhnt?fx_}zB8FH`Pm?Tl@l*~$p3y3VMHA5P&$$*TD!(xh<#X@Um zJdCnMxYRU(QZLFQLa(JF*q;?>Z>nJUQVx=(xkWOPDFO$m-pk3Iu@ow{M+h(WJLjmu zdo^CT5t_-&Cyg8+kf`DqVt;9XB8P$)$}|Mw|5}h?(oMU02Q-zg#O?c*uHzZZ6K}^* zF?Y%p{~X_h&}NP~tKgtBY;o11Gc|SLyJw&=j!aSeHF7FE?P|MlJZVtW_t!<>)aK>j zD^N1vLzB)|a-X36FOo6BU!o~hsCn4!kxse2;``!r$R(r9U0@>Pw!#-r_=;0{?0>H} z_3#XiaB02Z91?lL8)!)(h9G18$2_aKvQ|8%Wr^mBSTS0s)lx>oY71Lxm-y0P%r<59 z7{mt_%6T~3C}>s2lu(6m?HI-p#Jfi@&DaoQrr; zlKP!Hssp~)^VVgWJ1}rE=uh~AMVz);cHT}P{&(Mj*o=Pb^G`8&)%vUeRf6KF+Eu}L z#%R#r?`4rAiJ`3Mt|R2u*zZx>m=TX#PqY$&(1{SVn)xW!YO?dK!0osz)@0sezq7)V zy<|TYE&^fYVvkdicxS^H?zo*{_EUa$=4Y>fm^s?I)CA`NfCtrJuVytGz!=h&D-wAo&ly!KHV0{J_K93z7%po zO+VUWW7O`kpYp6EsUAOne#YwLx|nCx-atKW&UQ$=Iy^3C?FSEdS%rQydsv1Q$$%=I z_Ym$@c&t;w_$nzQ=d8uFX`#dE43Mbmn`UxK44NQ{rR=hXBXRQeHF1o|b}f^lWn=}U z3Zy9nYC&~b1XN|3|9T!4TXMPye`ARz2~E^9^IoZ*v%LSOCQ@&$I9&FkDlBxaDBc4; zmj8*bDl|lVc8=d0^`FbjlXggjgV>sy6Tjz~&%6z-?3Yv0$QGOd2ePfP5?v7gxLcge zgd8;9(}FzwXr40nEVM&&x7NHFAK ziU;6y4E2t!Ts2LQIf6YjN*#UL*{>eU4vabrwI~%*jrlH&2Sq!&aL-m!?E*omRP+ zg(i*1@<)t=B4=zo5sb`ZtJiP?uO`V+^zuDnFvIYRIIpJ~@!3iN;JQSR@~E!+-*RWo*L zxM)(1ht1g_!bDgWD3Y&t2qM}fV3D&FSu6hNKCx)Qq05|8 zr&NFyK^13ge#9{AhmNn;iB&4Bu6!F&iRa;CWYk)n+CTZVObVjuFwet$#j>7n??2h7 znq-}0V^4L$Uy)9McaKF9DKE>GtG|V7fW_*U7#xX-*k7aP)l|GcY)ViNLo&hJ)yGFY z!kU6CSzV|p8?2P9`TOrSse^x>p<|$T=om}ek0Nerx34!)aVKS`h_GuEtvt3&g}2d# zMg{5A1OI>u5tYjxo8;qm+fJTYuJ&EZL*Hdo^ns6U58X!2_vv)|Wk9t)y`%g>a<92K z!RUH}U@93oS`mG&3zpIeqtCkd+S`QK!66v^+-=;Dc!Vkj9LG}MjDcm>pHC7M6`A&b z`|JAqk2=pAE`diK&`BG<%kUZ0CZU`YIJf)YDK);h!J zSBUBaFaZRH?C__XB9Digxr-Vd)1hdWN)71%f0weDVLGlrPhMT2VR>C~381c!m}=$q zdx=4kcrToufNjx9`=8PFAGvB>ur&8LtGS444e-H3uvk5>lY69^t;MG1bu$AbBJsf4 zI!ES_H&$R>>Avm-d4{wO`o_614S2JIBj?7R&^3_;RD&X{VjF%==r#g#Gpa)5@vj78 zgZe{nBSW_EF$VIgUpQ;Va3YkEo`v+zk~{pHia_mnN94UetUL$Z$U@gK!@)va1%i=> z33s!Qr?^FYXO*`y6k^l~F(R7bmw9ivy9f>%Qzzr9)1oUeacZH!)t`aEljda}XSS}(hLVfB*I9_%>EChb-4C0(eLRrOC-9%exD3CZ#0Cx%8 zuash+C-?z9A7aj=ve2j)ARC4*zjVE2hUV6Fofd&+7@RlqeOBK>~Jh~=Yc^W=>Rb55Dqn+%k55lE=y?zJ5_m;n2qSq>N&VonrRE{qh^MaINy z2CrC1^$DyJ94{`*W#;(7P*w^+4Pw*TLKfO#&F*{Do#Q~eb91!223n<;2?_lch(oj! zQGotiUbPDnD}Vk9kvF8Cmoi}7^9y0rp44^*MNxFkELHzZMK%-gwapj)@DQ$1ZiJY{ zaO3?>HK_yI1SdF%;WFgZ01B)K^D#dcl&W~BSA1WTOB6b|l{knhh)J~6bSGLkFXjYg z>f?{?X38*B(nNqlsX!fc*4*9e%qflqocuhETwn%5AnlKR5Icx+mGE~a-IbanUxR20 zG@lXRaX_uIQW5hdHd^Ng`cL*;Rzt*|4D8HTEAlF~Lq?VsKw}lY`(fFu=1vJmFZMay zQF}GkL6+DZNuHS6DD>eC8FuOzWcm=ZUZt9S4zV_=w zc4xk+uj*?NoZ1A>wX|!b)U<}zH#Wy%HysQHCk`ybT9PenRi2~)HI}aXDlnkSK=qKT zn>m(3x#61t7*iKnN#q+j#4|e~fuwUSdnc6ZfmypKeWcuGJrr!~`Y2n9{lT}k6*;tQ z8AdS@sYc$Jj2~`S%4)xlnnFESvg+Vee2>av(1l2$vC1M<)jQS156WWWH)c{x=w}6H z8K~6y6XF)?#}`b(Q}td$;u^s&s;QBQS~*Zn7&233;SBjwX0XsU8xotIt5u2F6Kz5Z zh`;3D3^{yNAOxi{p=lWq%DLIss2^;|83xZ@6`2_Zj4K8{YVw@)#%8iKJR_ZDd__LB zi8HUnsD8HWe_Wx80?Imi+BH3DI(^{j2Q0b%8Rbz{w?snfU#-`_T7{p0i#j8Rc`K-Q zao{f4jq$tvK*zf>XM&IFgqHu^m}dG_k#tB*r*GwUBUtnC zZ+KH#3}Sr0X1Y?!WV<$Y1}U4W>85xF9DxdY$^MXZiqC+S)l}pHuR5cHwPkz$auWXI zr`#|b;B@u^do!)SsP3x=@F+6%ctxx2j!U(z`dLQA@#a)D^mWPkYFk9dm-Jh(wBS8k z7I*@T4>jK;gWs!I<@9s=r^HgJR@I|NA=Zc*RlZZew1 z{92%0hJh7k=Ts`fc+*9t4k~ePP_#o&A+G&nb%i^H-h>q!(-v5!faII8rduG9@X z9dgdl*zM1;$fT+(ZKb1DqCLzAL8XG=+*D2e>vcmfzQ1YnFs!tHlJfkI=yt!xGGDKp zGtz_t(2&1$yZQJe&DM<$m&iuA@pJHtyj2iqAKRLy5cK{RyRy zpA}9t$O=z@j6-^e)O@iF9AXOxc<($(dbWdqcCiD&RC4`iXX6~-ZF z0TkKj;y+f3uf>#dlJnDx(xOHYBPg@w&cQ1$8=QlF`x!+=KRP}gAM4VyWs9+p$B66< zfF}epvSQx{~=cx|lS z6v?X47>SCT6&^j-!Hxua*NCW~eZ!aQJ_4&;4IP{fpNB2>f4cjqVLCoZp~5|q7P#}m z+Nf%-tS36@0Fan?mGxmpfJ)e~7M-mxnMJ-j)={NdiTvNw)Stbma7d||Z8O;w1?08_ zJ{3ILdA($=k|*AHpzwHv?Z`+w(Ug5<~R^kE>(aG^KXnNen%;Mi??~h&ZjnF<`=G>RDokTh-Hmq z-p@|271$e=Nb!rw)>It*(53VoxdGI{$Nn?6v@HEK4md za-sq$MSPdp3qsV2jM|+vYXS!U&1_74#7W-HJcv{)n` zv~k7)?tk8LY}Zo>miNhnLW!KV4;7JX@yuD5iAh;RWJ@8WUv0*$^#dWQLbq(k4nWy1 zC|esO^DEL;uB_Rd*Fn`DtZDCOt`8%Viilz0<@q4X{sMw{} zC>v2{wA>G0)Da(o;qyhXM-AQ5%ESf(1+Q!2o^8%~N@f5F(3NuGRjh;GWT@l2a z0gV{{7J**hjA>MOxy=53V?Tdg6~h}#K4*F`88C)QFT5KR1NqyR;9>_kgZz63EM$wZ zji?bhUc%n2=Q+IuJ%<#2h#M>0414zF)Bd3{3*j5czx5j-u)O^r?|N7Cjk*qjO9AiQ z&{p_wHb}K|NWB=aLk{peaO=M6rA^90IkWZeH77vB*ZxEEdu^mq`@z^kThLO6DBY2< z(xC-CUr&evu0px0I#J$5JMv~+EhqQ9oUnW;F3Zsdf+Uv>!8QXtbM7@Q@kx1Brk*uR zMBg)xgmoY>m?}vAX2|-}7MrtmK0}CNCq;8b<$(1tOBOwCDJAj{L70Db%`!bxmv2PI zAj69l$;)3^)8un9OV^{c7te`VdYi{%AV%E2v=Upc^uUq>c-%k_f%H7S?{fF+5*WVa zGrRcsJ6%YU`EH^qXfofzwC}a!N62mmpET&v6xlJ<=1^@l>@s)1(E47mZuCT%7N#o! zQv2yJ&uT*vBltTjzK$*AS!kbY*l-WaPtGJg*LTytrk8jya@_qCe^Z@cKFM-g*nT|X zvvn=xj~5=6&ze-KD6~|^R0^<0oI+Z6-P%tTzmiZP@cxdj#wIKKES$vii|na3+|#>N zj~>KDRV!V73iK@)F%?#8M%i5r##&N~*o77dP<4ZV`nY<@Qu}wC3c)yVN+D2TA6*ty z5IulVn)BayJVM^*nCGjbUtzz)K%kMxI);USA&k`YLUImAc*gqb_!0Sg7Tv=q{@TS1 zbqbMWscZ)Wh2)cA>7|8KJc`j7iE#OtUXR%SR>K9zZzN}y78VvhadPxf;FiPYV|#!+NOh%ECsSg7~l$Ynf1i<=X00V|?_c-c3Uay^au>X@`` zg~*JT8QuV{Rjt$&#HZfgRyV3g?249lf0GGXa=>2bG`#ybQf7bsaiSEBHko-Ww`zC? zD`1yM{32S7CQfftQ|@kiH@%ddv&Cn!_P6VMPvJVwXB#V$?2F0xZ#=TWvxa8(&LCAc zrW#=#%L!P8l4Ye7YN36x7`x_zI(N~D)~O0gF%;IJ_Z;i;JEcRJlr9%9}>ZV0^dv=+b@u^v)>=|N^=kzziL zP+UInhd}*~{jV{NGQEez8$LxlDjvA|f~o}#Mcb{lW#&~G`YA?8x)*GuYi9`uBR_Kn{f$j;^v!jI@%oa1|@7;HWqU! zAl6kr>QcE;c)(M~%Z;=9o0&0gdi{C1TcUg1WM$mTJeOXn+(;?K0dB6h`2EtQA%%^4 z$8c<06;A2?{lXzaMr9DI{N6xGPKey+npGU0D?-`TEy&}qLk9q8%ThE}BtQeKKs-76 zZd%0Mewe;xI77dY%96YrEV#1y2_pBSSIe*whr*VeN2WZfy0Z|NwX*TUT~Iofm+8DvzEx*6O0v- zsRc661(Uux?n0?y(!f>zNa5dk`iO`g-L4cg5eHjFgn>nwVcz$+ujo{A&R~5bYaqkj z#(D?d8daznyqIGnA#6IY`4D~5Qb?$p!Aq^2xElDk+=#l|m6zH}^wLfbVSW<}`w_12 zOP-@CIH`WH-Wz!HGj+qdm4QUotfnbzz7oP=C%7&}P;tj}I=~W1B&WE)TP>xt9FbVU z%K!%^m+uBqNNS0ktKS(bePh6iyY)!~B{_`_kjM%_vB^*&SDVxj@QlTpcZTiM;dV7l zn-5Sg&4r;h4PNwzEQP$46!It+t6_N)@hgl|w_sX#)YiShYpSb$OXf&r>sa)Kns~a) zZhsy*4i&+n)aE$8Z0tIs<8#5&U9VdEeXYDCqAGb&aN%}{{W_Wez5R?ywKY{o8D*rw z0kaJ}x~WR{h2bkOwEg6u<7zA;nGtI>JH?k z?~Ge)@=(QmQQk!;e-jGZlWn_S2&)Smfwoqonqzn3Hi--FOswmJdkxi!64~dO=>ob{ zIEmZZM~S|ylUX6BfMswDW#Ms3dtHftPSHDS$G*%aDcdBJt#oV6%qhrTxNKZL9D@61 zrgYuQ@;{Yv{jf%U7ND4v;PMh+_l=QcL+_Hh&Go@g+8&byXyE`KpwBE)g$f(c>~>r6 zxiX!p#!ID**a7~Oj;zCz51HkZh~b~$rHjzpq*ToM+0{Kwl}i!YkD-ck1iJHe2R!5C zVC^)mOKMv~<^wFzu(KM~R?e>bC@)os!|8Sq&>+dBLAr+_gvc=EWq@6!a&c@iNScz)9dkt@J|x0A-wnYn^4P z=qtLYU+aQ3A!K#0PM$}@u{M{F`R-mj1^YsVp4Nbxj`ZV~wQzvr?>t#O4DzeIoXiBu zT>4<5G4j(m2_7l(aEEHY@22De>GRXNu)Go_R|WIt*5gkG?TZ37-CZb)p+1;@XF4Mx zM7b*E*T%ukuRdToc#%n&OYyYs8(S@kM2l1f$a&eis05SQ9SF^-2u+i?!$Pp!^U>d$ zs=XUj6{$Sb(tg9AGZs8nfT54IB{PF>0N+TzL{o)u0+g=@ae;Gb93Q}sxpzcf<$v`l zhRsF%6f!lG=8!F$gIBM0emN`zOp0&#H2uzTBw(t+XJ}G zY+H)LhtJ7|hJlr3MrqHOZJJQykV3_j(snx+d|iEV@q1{>P2o~L6U*%&zYalF6#tZaXbF-H!mJcy_a74d+!yFQlu#Yn(nvh%?Sz~ zDO-gqsd3~$om_Z+y%AiiA(DeoBqAvwSTp@ zk%Aj3eqNblP*}^Y2h;W%B44wx26fznfoC(C`FSz<6eMI!nIm~ogNuG~Gaae=@K)xZ z)M8t0sC)NdCt!V^!Yzb+-$~GTbCfRMoyW=k9+vypFa6@?b09ahGL6$3cXY3+2W8RU z{3+XTD8A=v3h!|8g|q#U=4e9^ve0nN5!&-MX+U?oW@|2-nwr5POZ|8a$OD+r7Bi^a zURG)x%#tf^&Bc;C3bniX-Jf<|dHm->GI}DW2hDLtGyl&_8s2ab|d0YMQ_K}9k5<9E;f z^PcmZ=brm{?sJ}ay;t%LwF=}y)qAaS=9xnc)RD0K0Af0aW_k7@~;Js zH@vCMCFTfYWo)c#b7=onjE#RpGu0p0q$Sry85iY=uigRBn}WzVD#?6NeyA z@$1@SjFK_No|j@h=*$vxH0Q7+-Z_Wz#?C~Itf$?S?p$*lYu|`9>GRC;+T*S2QRMtP z34c%Nsw|7&HoZyC{FRCmpjKBIkpIa(PkfBuX}zVcUNB%bj<^HUG|o=&GZpckiZOgH z@ld*So01y+e89c8gnU=18Yy}B{E~XAmYed@w-PbZH8qS44)LHt;(9>9$=yJkKiJ;Q zegIG6@QFy`ok}D>mCTuKU0M#fC!U+OTUtdT{wXKW#tU<*Pl#0^iI-$oNM#SJig+}i z3f{~XQfQNL$jd9fmhfySzC1IGtdqKz84L%R5hvBzNat0zGg2;v4|PuKR3lGNK}&8e z@o*Pg?ylQz6e%)r#57d{o2rFP9SF~pSMEurr}taLa;Z zKxKKh>+XDJMGo&+;q}Lb%{odZb~eFp3Z85Tmm-~eY@ULv45E7FE<4$@ZKwrz3@EBL z#Dy}+n+5lmY`F==U%UwR!vYY2G5#XZSdL?n$5{Qz3VC=c&~E;*ZH|7I+m-%=P<0XaaUwGi5OYJB{7^|ux`-@Bl40QzY*sbjR(oIClp&r;)B z%TCQH$}Yr1>0i~_4ps^Pm^sEG^LXcr0ruuxx=qfiyv|LRsw6p=sGAF^R9C<(x%!~2 z#|e=nIbXy?c-<^|5p!EyA=~+;U@_luML^z}`!g$ES!w3its;>dZ|1{J5}^51B%m>s zK|?C%GuIjfDCWJAOFa`S_9>Y;NgCbh-xCUeZ3m3^&e+ql?0%eCcY zs(~Y@6fW0uCY5TqT;I?X0u-F{C`f$toRyRPU*Wa*zH3ruW6gvygE@h^jRTP zSA0`!sS+SQpaD1fU9%R$y5xA&|I|9Yp)GMB|MV5jqLfa)>HM^Ntoe7ZaCqdR{5MI$ zgR;w22Gbu$8gKG_=$y+e&1n=`t2m_04^v80sVChjenFE9|M6O@0_Q0dF(SoP#b{(U z=YFaDtB2L8ZoStXDEM?c#n%22;<3ZF(l>&uxd*N2fgZn8Q#qT9RXsV-#dY2mpG^ny z?j=rI((r{%ah_8>MsTpCGDQeAyV$QP%kL_vA+aGQ5vxm%S8(0dS?+S5Zq#^kT4O<- z>FYGy`u*nPk7G=IrlNhCzGlI#@ZNEo(7W|L*R}6**$tSfopiY~iL|u_9mk}u8iOmq zL_vP|i=PYQbZ#LAS(xr4!k)?r9$#dR=>i2zQPv>licLEtXf{u0PkapU10S)PTeDi^Inzd1r%+>++us3FsFrTu<+g zu_Bdjmq>HFDAoWcJ&{O*^}q6>qT2zyHF-83*Q;?LnrXkp8b!(UNTa;LGer?mN9KBj z?#=fU&@6IG_xZl3p1_?61Vepa##5=~%<$|`E{ z`~;Vy8$0k;WL%S!Msc;CuT`jp`oi#qd66Ldr5YW8<20iq|QH#>!IiM3{S+{F}J>V zbxVP3e*&+Rp*FoZRNyX@b51Hcc2ip&5t^_3`&2#$I^jpdQr?gcbvB-aP_Z z{}QYNrP^i__sJWvBVQvu%eV-UjmK zYO^C%-Vzb)Eqs&Rn7IRZ76 z^X)KgmlvO8d0Hj`4EyUrz`J=@7x>HAy}!-OFQ}JMn={{a`OrT z+GggB)X6W^;VE*WLfAl7k6c&R14Ch?yYL$0+;t^?b6QKz_o$tb=7?i;4L!u0b&kOJ zC-c9BAEA!`60d;AI3ZRjh*fj>L-Y#3S5+%}pv?whTmqk^yA_ncdv`rEHXZFp-U(kR z+dFw@SfOZy+qU!l(!uJBN0_JQ`+dK}Nz01W1x;P(-&QMKToq$~;?EiE&mH{oN_h>y z^Q{22!d?WN;^|tI(~~cMZ*%EAZKPx}^i!T0UKTBN6o)N8O!&6A2r zMb-7?HxE!N_WJ>8Lpi9#G8qNI6_I%-L6%zK4D$yBd> zIfZTc(&A54VN@PuB&k%CTnO909r6QKlxB`m3UI|3l)oFmq{lterQWlyK!97AVbK$e2lv1(VZ@| zsnl@E3zXRc7LoiRjR&@N-Sms41i41Wyc8DpEfHIH=FvWdV$F-0!l~xv zFu|I49^nz(aZo8ZMXy-ANhZ+h8rMuVDnhB|TV;WPVjM9XHh(CX!=ckDWX7kkS!5<} zJ0y>n#^}$Sg?p16N#{jnt!%Q}>bI~m7-v!c42ASG3q*_#nCDG=x4jU&7d+{7jH=1f zop)>af_2jfzDH;s6gH}3YZESH9Br(sb(c2N@BQefv+)2FN?)VYm&|FzF9=NqmVuyXqS^&$WughX2@ zD2fb(sba)17o21bKYGkttKBWtD>5X7!NndFD6wmh4I@HeDU6d}k^f!PqnGQ9X@mjo zu|0pJtg9|guC0SS3ju0Vb(3IcLumYF^S+SF0yl&kV}L1lvzDjN)%N0xjTXEMTVbLe zy73V&HZmwXDt2g5?+BCcdU0n;-ci{Pa8meW=RJhbHN z-%iVFTE(iQqiAZr6TESe?zezO8kCX(>HXv3Bi!m=q?R2IQ+FhuGcm zzgXqt7Sf?WOw^E(K#BA+e(-hWpV8e7kdE|tD9(daO-Y`3or?aB=~^A~E0rJtR1&Vk zDfeT%|5%Sgv{k3fk>*sH0Q?+_%Nt^W`rtNb)YE`73qf7fnRx^E%+_W$qW~x0IDATk z5z^t4)IU{zg%+uDsZ#kKcYfA%b}nL;sUSYu+KdgPL-;v&16X8b(qg*|#UI$1aw~Ad zYjf@%`hIatXK(&c$Tvn2z%GHebx!?qw(LN}RJQx9pVM~8o%pes5c^Hy&K%#Q7mSd(i(h+45!9eZsuF0Fg07OgQ+b>B7#oE}dH*q0m$IL$q0P zcq~s@X|LbJ@C!(~kEA?x`I>@&BRF;2pFa!}MEaF(lEuj(qjK0EqZt28`~|_eJ7U5P z6EB>*|0TiB$`hC2&Z4&Os{}ZW-Fe%Ha*`i9VisF*T<%9W?KxB;42yIxd>21vr=DRl zn5RPt)76`SU9wGo<=&}%`;EGWOv84i;%|C^`mkT)^aI4;?sq{)o+CnFk!;h({*!dk zb&k%M=11pH$I`Qb*TCv)A{=ydet~L!K!a!_`mCunVir>th9*7L>hJB5wV;GTad|+? zfX!6&f9Nq=0nluEGQE)9^XztEVi18ee>|fT>@oS)e@?34f}h!rU?iSq-+llTB1xE` z8%QcP?dXe~?ylsaq!|WAP~T2-V1u)KfosX4Np?%QMc!PMDE{F@{yvv7JE53SAphV4 zY1fF<>Yci|k&nzice1H(|D||&2c|<=IvJJ$(MY%uoq6kzv8N%Nrfd}6&Z_~ z66w^congtEK*iKcv-d-O>j1d9%EA~uyRytqw9C4 z5mkCA#}Dq<5F&gh1cvsf2U`FaXkNHMdw2onXQx3}Hmn3w?K$ zftV6-r`>fg=rOISgTgR88Fl=Rj7;YCCicl1Xf%{V-Nh&eagLtaT@!oUr7p^<<_nl_ zM!5$eM()L4x)Z=1eXeTo8fB!p7V`76TF#Vzb4(*j`ScqV$1-*NIq$76_=<@Srv_iSw@;`?h;8sZ1#3Bf6_yn3h?rmg7T5X${s0;&lWy}- zQksJw&>pFlAVqZ4|5_HH(bXOJ4v1=q$-CS=HlKN+68@7uY=x%Ac&|J>yo(3;jc_1RC^TjE1Lp`Wh9-( zc*bDD7uvtepEv|^H;}<9EYk7wHrax6Xv

t_udQK6@qhO>f%gUAu%>1B)4GUzT;b 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

F%sM(-;Ic}=5k)n0*zzhK% zu~h;h_~q_Cw!ubFiP`pVKLTBS8=#EVeUc}PRP5X3|FNPQg|F1Z3w9}$}(bfD=ctKG05aC)J)HuD=;8Dra zUX1A|xxfWJ$tMR5nK~woZRpZ|<_3@E>^?FyJg{`(a-|G#@1+@EKrS1NthGLE^nr+u zpbX1D%Q>x)@C~~@NGIP|AEkV=yp>735^fyn@`ss}zf&}Zv-5$RiW@-{ygj8jx}HlJ z2`a+e)L;)WN7bbi8hJJmII7Q>K~z%1aZi@~jcT#|Z?JjI(>Ptn;B0zu32^JIcQeM} zfGmYTZ6Rb2tG;Bxt(O-Wa{8JIG7Te|w~`T^HNT(A{Q_(8K~$5Ps?gj4!rh?+%1&{74e3EbM>>p z6&ePN@y5#zz6MTuI7-xHIZCiE*Sr69ZSQn)3@(SGFB&cpr%Kh5|**rDnJRtX9(&{ z%Nh1r!lVL}Z08%MBAxXbKUJ?d4FbK}qV@9X{1KR>p(mHVuah;h`0|M~y%u2yFjy5G zwNDI09lbhqdVH3E6trF5=S^WxvoV0d!WhY&@Nib1K_?@7jC$3()NG&rxtt0fOVnMG zfq;4mu=cItN3(Sg1l>B@2^;R16ZD?!P;Zn$EkblQo)rWvsqYQ@dM{z$Aads% z5QiF6jkrn6k*A~?vh~W98Y%%+_|Kru$;7(S?P}D*w!K?#^3{BIh+#kLCc>KH#5cUY zVJq_w@Bit8FlofmSY?M@&Wv$26uS8?3Yz%;bwCUaxjQiA$Z0V_$1sH~6(dpMOi7m< z9#nq$XH0#^uholrB^`Ts3vmOO?jffr77#ihGK&KAp7xt=mNmQ3fIrLIKCn22R|6}c z8b+MP7=h1o*R^eMc(!V`zL{i}Z}Mn0$Nnt=?W;v69fm zCNr}2)tm49v^HD=)yJz?e1r7x=zY~gvL^vskvcMkfupTri0hZLix_zItMB{X9f47g ztrxvZiVvY4xUQuU$dQVT`k(3sJ{k1pYw+>n&-K5bOvaPN9! zgwh7oq+}vF)_IsbG=Iv(^KXgQ2VfNH3)q9%uruUC#OLna7XYL2rt1Z%GSO_X9Dgpm zU7IGE9fE`}&Xh7ByBb`de|FyX`lLL_NxoC$tf6TF%her3pS~`oct}>vTN(Q9XoDVq zm6TMiJJ{lBsx15U8xy6_^1s)QpWCJCQ; zOi1gPl!3(nBe&K4d7Eli zlc4<$!duZaA<=k@>=)r(i~;~O?uyyC!|Mh^s}TLBCXuaqzuB`ZfqkWO&q^Xnwz-i? z@ip?ik~Z(*{%{4IAYtwopw7R=QyCrDE0L%7i?>~wRfuKw$0@WGU)NchQ3w}8cg>Tm zMXfGWOt zi-Cx9&#SEF+KQx1ScvE((DR_20tq2S1W{2!RZt7RzTuuy2gy)4DEIOvclFQ16o*n# zvMr!KVnmL?4HxCT#lx>{rQc$uNxqXnXo;cx+V(fcFePA=ywTd6%;cNn5) z4rP>Z`8RgtV!0OXIVL3_jS`S0i?6L=Q1C|c!J>+}VI=inH+$lB@%l=okCGI|J$ok~I^8L+GFiVsR|NbD1DcdNG8-Mv(3yttISF&RH9XpnE{~o?UcEZ!{QQ$$~1T!>IxgZ@tso z^yUw0q21O9geQi0VfFOQa|1GMcJ>*#HC_%7acu>lMS;-5L%B^%apB69rAZx&909YP zkEbDKnFdD@@T93+B_?|}LqoW2>=XA&Yoxn>WMUz82lIHD-g}%*!b=Q!=iH& zt~P~Qf%H>UUv!xmePNP4&H`sNSOko13m;Q+2z1NsgM6U3vV63^;MxGxo>vPc+^1CO zpScmtexKj1fOK0P&3#D2D1@2YKLJ*In&aMAnjTIsRIyx8hb<`S+RSju$W;EJyU0G9C z(x>1qkUg{=>b|O>?e{3|97Yo7u(|pjg#yXyZ*i^S!h)wNA98#??`_7dbTse46jY1B z&XP!B<9Eh2G@%%L`F6Al3pnr%pxh3+RbjSw0P0u5wE*O3{mnLU&(;(a_ESKi&R##( zRCo$rRNXscbu-&2*^@vFPts;4U7;#AlG8cz3Y;?sx-KcS$k{f{aIeft^#{&Wz41Ul zr1rC%IZEw7$`m9}A=jl^AtnBF0~X=!G{#ea1+8yWjoKYk0*l{b!cwNs6`1<}YcRi!}PXAMvW|&X1IfrpDuN zxA4*2xIpjpNP~A728YI=Jzf~4U3D`b@MC%?{Q9)occ46lLpqu7%)h*M#J~^1HLv#3 za0lhGI6M(hgTdFoy5nxxHmFhsV(5{DuSMUOY%+x%7O3(8i0IE_bokmEoQ@P*h z+jvy%Fjwo-*zC9Ut|baveq~mP0kT;+MXVw1XTkPw0UR9yxsd6gs4}-bSv;4oJs$qS zo{y@P6N5c&I{uw@bbV7@jBNAvb&r~d=JgEOv2$F;w8hy9TMCvvZ>s%O3nYlVz$~70 ze~rczC+NN@UGsK*=|f6U+3~dY27w1fBfzv|pw5qPr*2<1rCU7Yvk?B6r@*~YrkPL@ zpk@a1ZT2^jO zbQCJIqqk8wI3cGx4zj~}ho3MDk|Wta?u?^pq# z*8xKA1B%}Uehig@6?M~|p4s6jLp|6sx0Q^r8=n2fDE@I$&72C*-jMt}V7DoYtrBRI zbuQkcB(<9Q`NO#YmptHdNlR$(E+b1%fA@~)i#+TAPcp|3bib;VZ@&(95rHj4IjNoU ze}&W@C)=$4-T!$btZ8806o+uDJe72>5%Kh63sAj1n=0a;>wuQ?+w+gKv*MKAzfoj{ z@WlmstR`E^3RP@H3k z`#6p{z%dJi9@XM4pLe!ehB;evZnF1U{1U!)1YG79d3qzr?S(vq57pX$!8ddK!S&e$ zFIWNxyrOvPK(&_nyxd`jEg#~8#nIF$RgLySd25cDIcN7{??%=`?=HdzBW0(B@^>^0 z%R30d2>LqO)!_8>4N@k^p}y6#5XNk*)dJZ}ac|jbU$8Iz7|w-w_{mKg!Cj4WOZ>p~ zbJ11IzmCk@KRpo&1t4uB?}P3<-I}}}Tf23mYMa)`U-z@R<&}d%dLMzx<~h6L!@E#H zGE*;<1ljs&mpl+kdFoDWoL(mZf?RLK1T!91fHXa1OA3%<1770w8D0rjw|L(A+{WO=b;P%VkInGQGs)^AVWxk4ME4%L}h z2C4`OckJfA-1@usmqG4!(N13r7kv9fe{z(aS+)&9#Lw~CH?p+yF=|g0n@92(bhii4L7*{IQI7IBg0SYU5DcfyLZdv0tjCi?0xn7O-gbCODub4)jWI=iA{gQXKl)DIka6PQq>JA8wgy0AJPCGNIrl&|SiR>!?^XKNNAW*_JIXB9 z^DFq0eK;==q#9U&u(sw2o~N?kX_ti;RC6iGRtKybS~{Tq)sRSF?-1&Bylt21bFV)J zarM&?loBU9vqR*PYzqZ$&p1)P{&j3%UI5!>Aqmv4xMO#?=rYax!oDlT4?ao9fdlz@ zrE>5?TYY&OR!}NG64*X1zf+?JW^MVL&>;xCG(P(7{u2T=$3fKh6%5@&$~9^a8>!}8 zuPa(q-N$QRIvA1@(ersFi_>mZprl-Q=xTzsl6BF)fV1d|_a$!wT<<3WzdV{V3^q=Z z*^9m56cgUn+N`O z@6Lzp(RI$d^HRalXmO2}^QyDQ`MXRg-T$f7Hq|6+$XnqLeysae~{JUY0i-zysD3z5$@!9p0-&CB(V4a-0A@Qgb{*I94N zFzcYifBdJGoL$P2V-UD_EK54N#FZ> zD?nNbPk_EI&10^ztSDa6}lq%S!0b?rYI4*QAbo(AH|LZMh_u z)bLgA$};+YE(Zv)g~Y=eO6^Zo+JPo)i1*ql)-Nrd@IXqJ{3oBp<){z0trCx$B=U4W zZ0mt~Gjq@TI>yMtdXDk$)}QKaNz4u8VokxXIxYA~HK=SwWmEpEXC(8!npAekOclWN zZrDkk5yxgqgZSQub7*~+p{%g z?OFEtk$W-~noB@HUA zN2p~JoSX@ zUotchv-_{<#_=5+Ll5#E-%f4S$XknoCYiaPRN1ya&_5ROVYzcn`ZCkQHm%?q(=(E* zeB3C`ELQeV$UbEhk-<0RomhFY`5`x4Syy-S2-I`zU(v62%7IHHV?*lQ$BeC~jOvG8 z5^(A_-p?1_foJx9?DxvH0OX!LqxtB4Zq)(E-9INse?_s=bh5!br~-kM*~TI}ficpW zEQK$CQHXNDf~a)lZcz>rLqO;qX_jmu|vfx_=^~@(_4~+A50aF!Yf;D(MfU5nDvJJTRB$ePtGbQ8DrI!!}frhfgKG z@^;phUxaaya!P6EQ$IfkoY(?kCRsH0H7H2RT56N^8o=8o?`~(-?1a=~%(a_E7f4o7 z4xfDxg{4h1C7!n9%~Mrfp*J#-P61wI^Z1#|(UFC=%2tV!)izsBd6V+zy=oG1c;k@j z3!%LP_47AN6uP_$e|-2d9Cw3m7$e>cTGE+OcddPJ?p3k_zG*FEUFg`fK892MevHYq z4ZqF(CoA{qGzYFXPlFPVEhNFSkCiy)DR`zeK!_2HX|WO}{R_!SqnS1=W5M1W=4t#B zGV)Q^g(cW*cEq?*p9m3YP)9NwQwrm+I6~w6g$%F)R*c)Pck_E`Y4W|da{G@r^ptsO z+keBl$oj2k6T;Y~(N(s3OJIfxB78(Xc=_9?tGQhZ!%y2?(#kazz8#?_2%|@2Vp`f6 z5QX&)S_o0`p8P)4oc}ab_ajjuqQLCg%6_iR>gkBBQXB0KdcMc-eBb7T+td*wE#?JW zh5z{|G|2w`WV?71fH-^fb8}087v%eKK>6WHh?cYQUcaL*C{^K7`R)y=(ueS_-`RM@i(mYesFsW6 zGTM{e;eh=`$g4P&%Jn&vw(vVWh+a`yxod0pLQl!r)PDA38vK6rQ73Ejopx+0lbL9{hDzut}pH%EWwBa6+-8ut}Z&PCsyy zPQIGqc7QqS7Ke-_7qY=h;{dqWG)iV+2%{!u8ZG6!g`8j@l!XE;X@yO;otnMzivYZ? z;+*lNQ-lm-PH^>#V5+~c+;*Xfp6;SkubrZkRI6}X(cw(Tf$|em5!sjBfrbgXq`(0- zUZcXx%`Vv2udAK@Kt$B=!1=+WA&<_6qJ#LjjFJ)>h_61w1&{h*DP!t)E~Kx{?k9oUFKt$35W>|0 zmk3rDlOC)k5>@tN-SD@aa^xnDL2?B^=@^>RmwD_qtF)Q&JHr?i&*R3wD2tt4nP{hz zY0iKBXf)#az##(2;mel;nVt%PgUg;0P@r>Wx*n(Y)7|oIbIsazdLjQ_hWDy2mgH&$ zPAo8gm}&Yn8*h-@b4oZ`R$KR5T_ecx`>1Z zxu!CZxyYiwo)k{4LrV!l>dE zutIa)nfx{C$fK1^ODkkg)GebLqk})?ay>;PWPT%_X!cCoBdYPuK8puxmmLc|PxmVy ztcalK>)o~6ZuUy`DsU(RB*Wql)J#vRu8`o{CE~M#V|Ci|6L44VUAv83s8QnLfe?yL zTP9b(J8K&G$nOAo<+#5xaWe6V=rs`)6Q-y%z=fL+qFyvmdS8Y=)|t91HE27eP|t*7 zd7DO5_qQRa764(GYvh{9JVkiT@!k7@N%EoJ{B?6Lme_SE*CbcL&lLEZy;vUgzS4Wagc z9Qh&8yR=p^GVV3)thZm4rue#{FuLH7(}^8&&t|UuXQUWHIZ>j0f~%#L>El$?voH0@ z+vwA`Dw?d*L)VN84u@vWh0pu^NKH&=&eM2vlgI<9F9H1g-KWS(NeJh@28%QE&hb6? zdg?RpfXfNR^r~O|&bOLGT~j0KnjQJO3HA2J=JsVC_?z~P@=!*!^NH={vj>kJzgymH zcwSN6%fs9*9O1-R%d8f0Z&q&_yE`|ATxi3}&Sj9>9?*>AMThmK0yFy;y2Ii`TUaht zZu(!6z+C72<##vG(TTYB!-vN>rnj9AeQwW^-YWn(aB9ePFKD4-hyO{F#2|eH@Rx5H zKq0w72GN-?^U#2wYEe{mLZPv0C>tCy$`5HGv9{~BCgk|#2tOpiuly2n^_y;6XTzmKbRUEP zU)dJP+ypG_+vSCV$o*BQpkwFgj}}4sullhgu&{-YO%WLbdEQ4>&~cUM&|T%n^G^$* zV=u6y9&+eiOt>+(Eb3f~&65R&Ybgn0wD?@L-}%|`XRh(`ZVk>YG|#pcCc0k$D|H4< z$%bYXv|H?!v!Fxr^&Y0l@`=FrGF zBuR4&Ata~Ncbl^$$8v5C2}u%#)Ms-hl_DW&qLNNJt9(Ab`vdOB{mb>Z?(2Hruh;W= zbYSwf#h|+3aQfX*oh`&IJaYcqzXO(ZdU@@vc_VFUuudxhvM^^s>xkcTS9G9^Kt|6#gmYNLsZ9c6R`|7|A|)1K6w*+e zOyB@4?DIX5ZI?On1T>f`z${h8+klSEd1}}XD%4c0Z=aJTh(iu2x^z(sf}RK3t~*$K2WfVSSxI&WWCvvmIG~zbY04X+suJHxM37mWdjIv?)T5Vfr)=5psj!j3T#*(MT+MBO5 z_XDYTRdR{J_eNd&=UUz%>J~%MyV~d9R;I5{ebrf6&Prb-^@;p)$3bm^`q*#5S?gdmHMNduc3pQeE6xDoL$>)SvP>H zojhHc=lTP@2=75P`XKQW!zYze@8#noe~rl@k|G#=p@$NEue_<`s?e9M>DqRj`R5;? zq~NHZ#9=q}R}hnt!IAkvmzbwr(A?2(Z(10iwj%s(8u&G&^te^!__@ z4Dxzz|N5r;a?oqDY3#4CJD(g5Pe~RgU|Y2Wkd#M9z8u?dQxdd^KEyT$FG*VL)|FWN zWIT7Q_3^o?iGmHsymD|Ui(f`TAJURTU}q}=!d zGVuGX)B8b3P^Jn1{qhe|w79MzANo0<->5Yc5w8qd}LUQc@`0A4r$stoRYAXWCV^ zK4fY6ywos2Dm70cg# zfTJbhD3I>EP)^yP*SkX5W@p-}o%dn+P|VIm6fdH4P)}mEF6*Ff zhyPoRd-v?l;OYNcUZdBX`^S-F4s98{rh|)_spCs7v0ga*HNHaS1gjUFuWJIe|0M38 zWhJT}ZBr`Gu39|(%>I4HP{*+B`;i@@;&&ri0j3uisSDYEb9C=sCRM~xE-*=rgZtLr zSGM8pv-8F@^{dn;+Mg+iSGLM)$&pIW6P>D?PxR*i_j)b0gv6f$i!YF z*c?yvCt$nj_M{lnnUBqb5~`mJ&VCtBAN3m)tm#*t%wCe1>xg=E_*VSm5!iq!Eoc9= zPY$@wEcbv-qbqsy;fKX4!m-p{w%pFZHJ;2CM`0GIGY7J`Ib?AZ;JZCc54hEjXtv_n?-{yxK6X zEGz_wF<~6!=RWO3N8EKqtj|emW-6HsnXbiHBn}xjaqB1}){s~|8IW!v{b1Px&{0u9 zcaPnKB0M6>K(RLBpZEVYKu4(9_`BMnJo})IPsu)g(v8ro>Wfu53HS+RfdZynxv(-P zgg7LcYyCaYL2_{Ty~7OPI9|D!);@T3oToQ1sUE#AaWAMhl&8|kaJFN*d;@89cQ+il z9<#eX^`iNW%eT8*e{~1I)m-O^^!Xm8D+;Jbq)^_t>~ZS&MOD7Cq90z7|6H0adPM#B zVPUO#^3K&`rjxoP|MjdRhORk?IqP=Dt|FikEtgnS02+C6e(dCPHrZru869DdHxUxz zgoFTwJ5_QzUJ_$+rz&OhSIibvZy2>DkYs%$r%dVcc_hvM&|3iFcOeDPp}Yi?_XeUo zvJe4D0T+)fCSGF_A@f~n`3tAKo2GQ@L;Jt7t}+joeJhY~j{aY?)FonK^(vZscDJ)f z>(H@yxv_$s3V}+Z#PdJ zI<9z_shh~u_4t$8J*FJ`l*kqmJOAl(@yj?(QPi~8*i=&e@Irk`*zymUE?|VbW(j3K zWA7OkVS{)O6v?Qpmki2A;Pr!tH6Lf>q2#TcT`E@Kl8So-)-j5Hw8I!iU&aOiV!zrQ*Jmr~v1=_4zHBWRqCMP^Y7d7WFQNMj9nQk`(S zkVlsUE0-Tqm_Gi#t)8zm?dq*_@ITs;#e}J#m;VyB4*>0?)m!>$6kaCc9Nyl06Y(T- zCkK5|$3iT-xx%flla$#E;3P&ox#D@sx6}Wvdlu%v0sDDlZshFk__uTC(gg3a5E5ua z481oZudz78ZL2RS2B>#y^ULbEXR~W(=#4HliMgLH`9^ucS+!49QcjuO_1bCMf5r8q zfiVAnt)=RF3rGvkn({n%9Cp5lQKU9M1tG<@7#j~hw^N`ZVf-^Lv~;g>kUb75AGC_l z5v>Js}!pf}lnkhcc0{qGF^(RXI?kiP$Niqs{JG zfg(R_IBCq8b-p*A{-ly$e-r!aRe^b#|HfIJ5>^X>6t~IM&NP{c>Kn+lTCXMS#BK_6 z6scc>V3`Hji~`y)A_LWD!9tk52{=@!StILlWBP%&?h0)F9kAjOTZIkU>8Cvsz|fu$6kcLHG?qxG;qpY>1>4{*Nb8qlU!*F=K+y8QjALcK`;cDin(Tj&^03thY8WR7(|` zri~y5{JLY^p3>v#E-FQC0$qo}hd-Y_I~1Zv1_+TyV&CNW{Utj`!Gpw_Z$ydU<4!)=n*4db-&`hhs0#GJM$yjgG2d; zx0uBC++po9@#O6TMJjsS?u@|nI_UEKlz-^i#x+8;3w~8@cr)~C`V9%c4`aBqn_v?C zJH~`c#Vz=eekZdC{qL2aF# zm;?OG(#IkeAbr6!57hoTaYRRq84z~{&cO;x6%YG=7OfmBcc0e?iM$b*3 zyKD&vA)Np|@y1yk7zmESzbZ{`e*^YMhs3(eV2l4rnLkzlI&k2{|}J7Bq3_q{nQtmbfci{kHwFB(Qq39b$e zj*o`F9H4GQf`*g8=7^J01%g%W?wfm$PJoK4BD9%h{iw`M-cUv8sL%f%Phd|yDXlQM zVd9eRa};Zr`Ze;|>78v3*85Gl7y>F)Lb(h?(zfhdV7236BzB8)MJ@){k(*?*L z7_X4aIC5D#dl=Qk=`yoem@v88#e`z3C;#OuT906H*&@mLd6*@ZC)Ox}340X%AEPtM zSLc206;qBPzK}r2JEVJs4vSVw8(i4;B7+`WdyL~O;f`)4XkXJOhmK=Bxf%gj-$EEf zTCJM&umY$4Wrfd%ujRx83|fl?5*|ex-ZLWj=d90HueMyha-*!%ROU!rDAd9e=q9*5 z*!q$m$_|pa1JLVb%4b^Hyk9RKY|a?*GN-UY#Zlg_BB(*WXMu~+YRLtAgpr?auv@Ut zNEP~vfm{4e-aeW0R_Sb=yF{;S%PAdkYWx^u%fE;xBfiDcX?B@+JKyxff~7+=D~;@? z&W>CU-W3m&OamB|c3MG|$)>=n`7i^Gv;(N$=T<*V7sQAfYY;0i^Y9z~dd8?ra+zv;XR*?n47DsB;M zLgz|Glcnc8IIy^S(7p{3RJBY*QMMBz=Bqb$iRewYZ@dysUhxXtfZR24l~i=Pd1UdA z<6QNrMz<`|hfJmU%e&}I#iDcMSJyy;6DT$E#Yq%1{1nmsHO;{2T|wlbCvvrr%LX=D zudq9pc;CMsOxDV=GBAk%QVs%$q&KJ>qgf-02jZo5As;L|E^y*$=$<*b-q~|-IQBDp z{fZpsb@qPFZ=d7Gok9oA?n!puw_^aVXOfsks%ul~8e?W2!0e}(2Z*=B+=g`?!8)10 zA3=13fazLRBmK!rCHBB!2kPXL^LxY1sCHz^eQM<0L% zeTwoh>1JslB<{L_KQlv~#cr5YNF)TqHX-g8qg>AlBBImzlK5BU7oudUq7EkQ04Zic ztre4UMHB_y^K#ijxfGy$3J`7g?wj9RLK63T;n-Cy^TpuhL-+=?hZ7q=DD?(FdBaC{ zaVX#Okth}W?Kdx%gEl$W^O6uWGzLgfb1Zultj+nY`~_#re-)Ma+uMG1I#W}hy&kUS z!~`Hc>gDmw2g~&jn&_yyLBz&hm97R#^jVXsQTugwV{ZW1n?vyy!NlPTn!u3#>84G_ zzw9W0lFE9)ao~aG96Zg)h4Wn)O&_J=VknqCt^ynN}1C zmD*Pn(}E-&`Ouk%(9>+`5F;$k5q?wi zVw5HjB?8+}#Md`W&?6xzFVQWB&=J>Kr188fMvg@(8;vV!yO!uYCKp(rI@*}(;x0`V z;+9;0X11ZMl$Yf9AP*piqaJO+px;6tK$W`W^47MCq3Z*|HU zYsv^kDp1eUP<#G~-pW@4Ccx6#&BT5UWJSJV@_oGw2K&GvJ*+3Cd{-Fen8xzV=H2;m zAqWW!1G!398!`%HpNU?p2oHsr?35a3P>4(Q#xI0QOljysJ>;egX@KH#7pOG3B0tBW zL;xreY}jI9K5wWACTf~oKOR2v&u;zvbk_rCjNMP`o&EFBeL2^H!0GiBy@bF)>o^L4 z?Fp@S`3)#qp`z6pCSktu%sUv8I`%W0SM@xlLrw00TKU<*Mupo4O=_{)5pzxb+1 zkxLK~#`*53FUl{Fu2y!4ziyA10N5=7mKqcQ2I>jv5#yh?bsrP0V?RgfIQG4Yr}3dy z6VO5)fy7Niip1JJ;b`w-(M;yixq=O6_#j^G?q*6kR`58Bn{71adW;2PK0JKr$b zr!yCPEm3)i;bLp1G$|ym(~$vKs2AJy`FB@$?YUQFaS3(_y{7J`_Y1ybPNa<>a;}-l z0N?^PEX@fF5rbdYp7Km^B1OF1WQrdASdNlX32MzpS+_~b>L=g?8T*5{gz2J_?H{Q( z&360M+x}FQ_Vx+Lp7d)02jF?T!+t1*N>TVC-^l9}(1!yFd3MPvW;AE{yyNoa3DgTu zaY{0?XGGY5dIDB1{-lsF$eBfb^cEExe7~-~UTA{nzxm#t>CLEb-{ye1WGL6a({ z!{MJDym^O#({iMpd^X&JLH&LbdlF#)pi!DN-OsxCHR?DW$k@7&h~F>n_YMZ>fuYUa z`)rN(SzZV+O(I$U3>hkOIl;x4oQ3hsVN8+xTOBtrKP*VLIR#7xV!X%A%{AbEi-z3I z-XfF+p~E70+&=s4In#S&Qb)aFY|wI-;K%$e;RQ+AK(4iKkTjOL-<jByPbO#sy79Y4;D@v{d}KZeGT zZ>B)tQB-IY8-)U<+Rhjc$%N?5DM1z#p8$(TOq8Z6N`n-+0dh*I6U8AotX1<~z>wRw z$Ke?>=OB+)a~n&+hT$8Yr~wWnSVkF0SCJ)v{DGuTzr-n=1%=E#LC0}*X3}JfYqQS9 zMyAs3ovlq5tjpA_wJGNZeWe?&Nn3qhN}*g`=1R(gcE?0ZVITd#4*DkJDTx40qr6K(w}*^mjS!hg`|5cq*2O|M?nR@nU5pxn?!UX_QZOi zFB<|?3nd*O2@uzEI_iuFI^6+F;A1ULDBJkDxNj2Myi@DVi^s}HSA_TozN0X9=>ClAm*tyaj&lBrO7S&*IjQ~+K`tRB=jS_)EdyvAXU($h264Q$pjvy~y z8yZ|1vh{*rL=q_#=PEAecYI?>v&!YLgG+9}GQ3L3s}r4JQrG?m>a?fkK)#eZZJAP4 zCa8c{?YBYAI(WrdEvVe2iniAO_&5uoH2z}UrE;|94#)D7%40;Ff%2$fXLH_Jj&6S@ zWs2zrTddy5t3&tqoMvmcsnmVyGK1d&kQJ2eu2RhS;9kMmm-QqI1){Q?rpIcN+p7Lq zw8oiPq(>m<>mQuDXz@nbi5v0&uuUN*g+U6jiq}fH`FDkiI zng>ajS?+(=FWuF+-(oUZeGc3nM4F5>R-t&v-G_iV z$L9&dqRH9_mLwaz^hhVVIIq?M*=;}dTC~at6ze)M9fEyR%-iQH>INY2_F$<0cXO2O zv#dL}tkiCN?%H2?2h0Hwh8c=e^@~X{feNss|UPFkKCEs_FKWnR+X|fynFn#ScSrW3c3T9w$?OAhB zesIKk`{i2h^-ZpLbS~rp@2N3^|}x-1sa;W7D}3wY_}0XXCPM^0zms)lMgx z@3242XK4>VRCbz$?&+8sw4OYHk=t(D65%yXk1+L$$}|e zun5wOqg@rYgI=m>M}YEmTS6!2w4E@7N9p21_`>od8CC!#FLz+!v6 zL!w`%l=%{WP||oQPJ}kbQu%gXJ${`05w%1hHrvDQoP|Z5s+<0?IBfBWhYn?P)`%Sd zlIkEA*$vzaNqj9tQ0p_jPzEjDLo&an!24ZIxW-Z@JswOXr7RQg;vz}`Kdef&%@~&q zaq5v_06l)p?$=idd&-Rek5~*qRd~FXSksGJO0e@P^YIT-^O%MfMPZ-rF9reV3a1XA zkPDnhY%JJy#$pgIn<1Gv%sxnNo>x9a|2ZEDJ~^0wwDvA&pGGx1X;BAUnRG0w*5cKe z3P;j=9(T|qQITPVZW3a0yG!gFz?9p*CxW!dOr@FDl6>tk`s!WhfHE$C@h|E}f~F z;#E2>-#B851OifhWVr{`x=A3$5>wLL{FNp~Ljtf^Qw)Es<-;*~+g`j^SqnP|!iCZX zr>O+nx@qm#aZ=VtC#lk|pL$QYXr`?jA}Pr-3F;=Ecfb!!N4vj51N5_PioD!bv&}%ih&8nD(B|KENW?m(^FLE$EjU|23c3>1K}hzrDMk3xCsh>x*=*{Qj5++_ zD`4M-u)9KB*QCYgm=+2Py_f2hl3PH8HhP{h6s&M$#z6;G50cXxj{a=1RO_EfcvbNF ztduBU6R&SbHz+6|O5StKG~H`=ALU+hM))K#hGMZ`Ot>U7PzLI&SEW?shEPYMP5i z4Dz^30(>ru4j`FQ-yD`WB(^(Oq}@Ot+YVKy1NWMjFpz4YbkIj5so%?&>(VO8&<{fw zCF00XT8dD@5z8$`*cV}le6SosD48#USwb4{;O$I}*@=f-dVwkrVXvT&2;-3{_S)lD zb{onz$lfY0)CbiR@Q&t&6BEN`u=V<9_~rrvRm=0Bn`6-$Dc?V|0fMZ8n_1mH*R>b) zg|%qQdu&oMZXfl*Vw4)q&QRzqgB^G>WXm+HwMz+tVsRlg{@o)(FQRo$fkTMZ#ysuW zM(mH4y^`74j;4;HU; z(XCq#0$9xY(_=6U3p&iOPeop&Ip#7=@lQ-?B#9~bWXss$buIV1QyJihdz{ny z<1w+80^D&tA{DtcX>mUl3G6yi`#xI3OS@Z4bur>;M=<=I%iP~7Jj|DJ8aK0M=Y(_O z!c?XlP%h)QazhDvsCD^e_II1J>D0Rt>-k1chdO=^>wq=moMzIAJ!SfhQc{RbNAnGU zQkMx#%|bBNd2C1HvWHqjIAvkHkV(Duo!FViY*8)BJU1vK^ zUX1HfO$hU2(Ll-BziTht?9AYfi$F(~B_-u77yc}Rb=gY190B+VGCisZWvG*H$MD9D0MD!s<^dg z;yz$>;(TW2$G~sn?o~b#kOkg_|BXSschAj0D%+(1n`J#)=Twf>wE^wPwg<*jNhg11 zN4h_kWcLmtW%!&^{}t^1dqH56afUm6coQU7!2vs_-IvQam7%Bm0e^+1aaqH)$eoI1 zN;V#~eYs+oU$73_O=sdhO}sN{tX5GH0aY;0MFA-*$9EROxxM4X=OLf!XPxnnXo6oy z{?_h*&z$FU=ADxcU0oyQv1sY1nwRa)_506{lrC;%>Phdb(DkpUTYviU5q&cx^27L; z*W(J{KvqTDh2v!#FN1|L?i{YVh@=r2tNUvDx(nV=Y2J*1L_))gG$GW40SiquKZ}3x6(c7ARkCmjB3P&Q znN3+cLcI#P`3$TWbkalO)23v-ntw-&`ot#M{Njm^ua0)TcKKu|)=6<#zoPBBKw?T3 zAQ5%N1J$xA(ZWIPzg@tJ=N=lv?V1MtHgQvaLix3J@>eO3@EEAu3EnxvMi7D_Mil^c zV=@EeiTlB9erpq-9RBGw^VFCzLo-EQ4R7iJwv6+(_C#b(!}k}(lb zGPuGQ0-)p4OVZS@oWb+}PIKfwVf~vO{0Fv3pzi(_9hez&ISDKO*w{$s2o4K89AA|lp81OfwWL9P`1WQTFb+`UNu+wJ zd3$RTnu%2hdu7q7-tw?mA+}g&1(-6UIZ7!yE~6z;tZ7i;f)oo@d#uG$0X=9~T&scm<#tSsW`iMcqgzc$t)AB1!R)n^vXu! zVrq~L*13D!iRaVdCJJd)9@;6s3Fp1FV@@4)LYh-U>PNXxHV2GLj3E8jM;0B!?F&ULD{_)B`3Al-_9 zVBg&`9tL7!s@F8wWE#AOZU6=r=`?9t`v7hwT^zHJn4-7eWEVhWxR>ZC?ZtMmJvNe# ztD3|u{lc8BYz-4pj3AXe>>I!XKbqg<0?zst1_Ohj#e`2jBpfcNJ29AW14mLgayq%{ zn`VmDFy2QyR*Wh=*p{J_NutVjPHP31!()Dz5>(^7Llt7Px|%WfE9LvLXR>8KnE{;G zwJCltjSum<3UMpCs<4sSuyBY2PJ(!% zZjvRBSW5&~7fft%#6MLoVNX8zgCtSl;4cM<6cuv-&!H0<8+SX|`kG-rSfAhc@>yfX zx6_MRoR`0L?EuST{k3tppUsMi$q>r*W~b|(3P36!zm;}ghms9wZNB@v`h9Nkg| zpO@uR%O#7z0Twkw2c=Xu0n$Y^5dVE1>%B5}um>Gtyd#0T$cRTYY|0-C^;FEGIAqu+ zs}KM`Nb9=!rDUa2`(Rv%`33mjW`yQ__;~=5BZAEzy<~VQ5A@6LIPlQ2XyZ3 z^{Fo@0ei7rQO^`va?(S{K2{KR2&GVSE5j0dX_^;t1L{D>QA$)kb0Aguw_`e?GC`1Q zS>ZcTlwgpGMMAvKo&N%m~Ds+(kDl{rrx2Vv|)ZfTxRKPL|lJQcK&>bCnf&x|?Nf!=M}_3?aDZXHRH| ztafiP{`U9S9TwJv4YmbLsxfx&q4%)KJy%FQZX%H4WId!42oVhl`aw>eC!_D<*b;;P zh=dRda{aq7^wj;&owQh5;~~MI1~X~=1MDd0_QD2ObsN*2SNJXhKpesCvFhDHT=xg+^IWJi$ zun`5x@aKxWErVmQHc+vT>}=4fLgzoap^c70Hz?g_x`<%u;*&1R)hnVwxF~{+#3W6E^hGF@f`WJ=d2#p2 z+nCEV>YPPVkU2K#?Cn?q&PlL4vW+P@&?x*t5Nh{Y49LPot~(D^JE|*Q z1lreBFYoRUz!`v{?DMZ2i>2wH>whaA8S_oINRNQB z?_qLiTeoMFy%BLAvo*I zgFPY{Ex*f$zt;?T7mUDHa4CDKe2Grku;lfcs-nZgJMTy-EqN1K6nW+)1KLC*8rnUnoWCFU+GIR`VZIAcj3dAiT6s%&NQqTDe8so z31quIlj&iSfsW^>lug+fYi!_E^zF^3LDxk0bm`?Ztoeickf4Ua0@-KI*y(iW$$v3? z<&EGRvN7M)12Mg&WNM5b8gCJ`u3X>2Y*3j1HfZZF8!W%Vc~q?`SyaCt z_KnU4=NkB2CeS?5B@!zq-EMfA}eheEnL@`e#A(#^RegI`+KsyUB67;n=X2AN%*T>1i;i=qVJ3ZW zJtXAccXtba#OJr?t^D;{vY0tvo@b~xQ>7UWF}#<{ku_&;+PaqiyZ5>)>g}|!-e@fu zcOK+&?d{5AumSz*sohxl&k(V8nK7SyO{@)_t^@-MRH8(m0dvafD9Kqey6|hs^qfr4 zzj{ZI^Wxo+mb5LSVzGmng_D3R*O*96)*AZ3ugWeD6597=IeM>suM1D3)tEiM%t zHmE{3#Y`aXDV82&F-pC)VoX#D|!YH7+ zIu}*m(`6N?`@$b{`RJ>a69_N6F*snl5(weY`1EN+rF<}%hzprPDSOTHuMKD8pF2kk z&=_`k7hei%w_60lt@t&(ou*&K+SK5|=CT)F;Zbw#?j@iF&)U>#qsW`uJ}49H6S{d= z?1$cX)f2@k;1yNMmIDeSZH|{PFtLi^R|<0CR|>{dWy!p_Jn)`gHhGIF@Xu8Ow&(J*Y9@M zt+zY(5E2>t!0;twhLi7o3^&3JOl;%Ld-1uqp2yxi2h%;WE<`Ss#RXf)b(_TQ3oJgw zZfgzi5@f=%}ve*yj&37Z}($rsYw6%n4ER$M|mpwz9KA5Z;fpvL5>WyXGLjX+f?R|er9I+L&s0<=s=JL@tM23%V>Ox1C=kzME^oV1$!P0wbic;8|B0U*5Tw@Megs$Z;=p%UNq zvV7$q0C-QdJbeTZusm?e*8!{WA)Gu{T~Zd<>G;S~pjG$2CVoe@fhV81VO6&^%oHCS zoDfWW1}QXonp+slYQ+042-ymjSVH$0e7AUJ)ZWm_Wz~Zu7=pZ5+Jp_J398+Dfa~YQ z2NQu}-_q(2t1@YX8XIJ?RVUo=fLn?1=-u>}L&3kvIcwKdbB+;_dt~|Wgcx?GU2SDC55lxJxt8gqBNkTr z-5Pf?2^&@LId-2Oyd~LsLrs6CcLZ~zC~Maly=eOYMaKLnDA&l4CS5KQzHFGwZ3&_z z05V7$>Tua4H~>2@73G(CV=8(-$PeH6s-bB|TVb2-tV}1gb(C3n3yV*vt;;Fhrk0<> zHzhV#LwD_opJkw4oy;)Fq|yxw?HYy@*NNlaF~834t2s(3^cHG9Kat^aZxwaa!j25_ z)Y@kfEU6^|F!iTF#L(tIh@qNKP%;FpAe`2-)?{SK=l)cJO`s8Xj2@+_Kg*2p_dlH&FWHNQkc?;F&ctq^!&tmy z*3*no1s{6{y|ow~aF!nG;VHiZpzQukhY;^|Vh!e9v4Ii7mmf~KgRR0sg6wO4*pRD7 zT%DQ+g!m!9{L6KpW+D0&qzu9u&L$j2u>X;{foQFj*vBJp_~n{E;T9(FS4s2ZQEB#C z`Z9aJUafq*PLF+@Z#ON}RxAol-nI(>>t~YYEwU7UE?$TI_Ud%zGq-eS;a0l0uH8fH z7O5N~5aI==M|BB%y=8#X+w}We2R$LX9ZTvElB_Eup2z6>RCINwtG#={6ci41^6Q1$ z-}onLKMoYVyeG2v1(w=KaF+1-SygpjRX$THFSv&ri69sK!#$}>NXJ!2MBE~=&mrRVm_V7}j3c!-Z=NlRQi6X13O zHNft?7W2*G=>*1d#`o=VMUMH>iX^Wy1M5r!!aN55nVK@L3q;l@e5^EatBQd&vn3e) z3=PYZs@cbP6j)7HZeT;w2PNqN!Sm!l)49yqhT49RimoBTl1M?GxO7KsbcATle}w&f z+910}&GuJiJ{j@wWXJ#bkc`6-_%`-{b^sS?wM|Dr)N>I5os-0E&Vt4Cl3m)fTBO{` zgWTb2A5>*!BH%Q6od`F7_-~;RImq@^l+>wv{!Uk$gsr#zSi4|e+*79$KJ6yv_U#5V z|F?b&Ojho-v0BN%$B`j0r(I4mS0K5ijK86NLvp?VKlMFH8oR#bjyark`Qx+33hlK2 z`@#UBS|oDT*=RSB@_X~RDyf?+{5n-S`^G%OxMua*^Cx|&ohYlTSyn|nydMXsBJF0S zf92aw{^fW1dMFcVtL_zr`hXOPK9BBXM2=B9+%tqCIiXv<2)U zc2lrmhv%8PHJRecks7Vfa?wU zEwff_xRhdU0ukZMhL~&aUMRhLeUbY~1hOPT+-X@{K^E6fOdbW|5L`u%i^=4BS!4x} z72u6@P7E)4+CG^l+MPrB2zm1S9MX#DpCqK(gyBj@kjlm}7;>=xr>a&G)4Ebe=shhGM9 zzT`-19f&L7&7;x==}ij_ms{y?wCkyZP06|Saex+LiL_PmS=OPm*KeY1-syJ&x!n?I z#U|kt03=W68Ef+XSPlNu2hhSoXqr5b$ofD=j|{3NiF;00XsZ3&VE9l*#z7lhmu&y( zEL{lfu*X#^ELg5Wm1JS}V8-U*>N)82h&&5qo-4~k*gnNU=tUXEMHwljnG9m4`?}dl zj&|#Y-EqyFcp^M{9nl z;Vr4r@(z3WfOp{T4iDr)+=%}dkm}a%buN)2tydtCKk=&f2zua|1yF%F>R2I0fo6Hk z4+eBX8bSuchxa@sBWnOiG^<>p*RguYa>?q!0tjv;u{VMbsq98H{w+@Nw}Q-{cgx#* zz4Jkqz;!901AsXDf0o`etf}Yg8V>2CKWGiRTf*=y;n#~b-^ux-BLn}%x? z6>HZfh7=|S#K8TOpvE^5aW``h%k)oaf`J1xzlY8oZ+bUF+PIL(!is{<8lKw8s8j}F zH1n8AeXFnAvTu?(seRhic)5!s{tIvXL5a>(NdGrVQJ3!hF~PA|vd5yiRjyK*TfPGl zszp43tYyck*+L9ECiP1d`2ok&BRr7CC3kiYF3W6tOKSCO|UJ!ZUNXCkaO+ zMORL4ZTuBp%{%nCop&HKC%QMXR?VWEy@~l%N@YHXkDpJ1N9(M_#WDVxIFsZtj~Xk5 zu>?aR*u5n=i;Bv7oFdqNm)E+1qc9!bNxfzZi_U2PmoyMDuc8Z+yaA}F)T^A`7Ci^- zRvoSSqgm{7Cc1w7KN3ln2-_Le);fl>%~pqklK7hwiCK->MT!0gP>Ci`8-%f8F!5<% zmh1wy3LuN|<|iE7PnUDD;Ujg)Qrw_o+c~CrW(~^M5g)%kIpI&1-er=Z>uGDA#5;PM z=Rp(yt4|03!Ow#x6?4Jv4I}qG+NGs4AV@Nw6lH1zQ$Ec?z&(^Ti&ImI*W``YQ-a!3 z6BFpR6mR(1gE%b!$qUO`3CV0+9!+S9_uGs=Er?WFkQGKgzU6>T9^uK=#FNDk43j_> zGOxZn7B$?40-+SraS5b{llE1)eTA7})4tkde(#s&ypo>YNf~pn^VE2TQK?*Bih>g; z3*?{*dA_ z&@s^2$Gjq)7HFO_4pMXH9WcUn0en6-ttujHr3$~8!*!@GMpft(Zf1j{X-$=zWN#f$%>*5SuMsjuGc^-*! z(J;)hfg&9{v7tNuy5wUi2g1_m8E_r(q#OsQhy9G*Fr1{<2^v|V6)Z3fF$z{h{^$}D%eC}YnuPAL_sVQCsj)| zp=J5^a}Dcmq5v{@5+YtWGX2|C2X?PQ4EG{fsN=;!oh4itV}X^O>$x4aEZd%ZEfH1j-mt>b8!k4t*t(V&UcZP z7F-_8&JiYpiN*1Th0qIU65E;*|MOs!#V1(0#;Hqra}?%`-)Bc`kS1f3%5~3#^|K(j z;#C(Y>wL+T6%a$3A+a(sf;VZGA8B6*(Fl%m9= zHn0RKNCH6W<7~M2YhOP9;L`GL{k6~G?C^^JtM1%~1F^N7N94jN@Zgzv{5(vek%LIR z7c$)EQMfDyBDwz(_8zDZ4L zfwCY=F|4RC&pGq{R6&AL0Uq?eQqF7b7NTpANtkG9{7^QraNM*9^x+I5N-9y+j3S_f z{1Gek?PGJsfqmxB&`hbE)ZG)67q;WqISdNg%Qi8oh&JTQWm~$m9bNDbeJnDY9scV!3hOt?;>MiDXtYF!ty}&kITD zq{F8DU0Igte#j#o!n%14Ect3u^1p32I@GVhx2j`3ZCh4u%@@R$A0v>QeLHC~4@w}$ z$=iA^P1NWoL*71x{1l2PVF63KAvafc$={;y{J=FB zd;}5fAm6!X$=-X?ad!uK6q&rAC)e1+d!$^&Y%4w2ynr#=y6&Cy@bbrJjW7$Kv#E;B z&SZLWbE|Bjs3+g`F>$8X=FDmtML5~%jY^gqW(mq7UE#B|ZLtJT+^3s}Aj6A;g+zk> zsVePsK5i*yu}SjM^amkD8eIf9?6E>WeYxpAf0o7%>o3^{DA+tt;Ua)m8{a9Nb1OIg zL~yvv9K#R<@9}XDwgM%-^L6~df*=wRemimcRERQ3?2b>XbIiJ20%yaAC4oxjHjW`R!Kc3y7~2C3(hJV~|NuwUS39>_weEa*;TtP1}>qT9|0h7%QjecEC5 z=EaL9jku^i0l?q1TRTE7$yo|)b3m?SQoHf$iHc(K#Wv7f2ccVBjUmMKcP}^b8qd>7 zP%`u9O12VVq{b%)4+~AW#8req-92JWf(dAnoJ@v(EC~4Et0Fg)taYDyPS-U;ejXjcK^A(Sz z6R79;yT``3WDts5B-u0Vktg$oW)`l&u>(o}tATg2QB<N!1~gr)Ab6m(aN#xIBMCF_={zgN2U z6@y`IW)mG!2ur0Sfg@|xSUUaTyB^m#)!Rub5%l-Y9B!yQG z2G59CIXRlGAsHO=b^DV5l|UjR|GD9GHJ`v}pZq(D`I|HJ*U<- z4j#`9&XPF83ntChF>&%iK|UZ56OfhIy-v9}`}o@H{O&^KgZEF9BDMthOMPbq0(sfW zWn5Ierz(XZSLIyA6unB2y=%US%m=|*pjS;`AAbED9BS$M)_*rnBcENAKJh)d#U`xk zyu9<}HWJ_|`=uB~vp=ndI2o7+)xyzZhhFn*2 zPxso|XA1deWf4s6q)E0=pijMa(SGkV3RRl(qy_A*3sTnJR1-8M4jq(DTPP7IJZ<B^Ez zYy)ul(L=j5<){!b3tqD>b_1;d5{JPV)2^IBUiS!xtS^pAlyk?+99H*i=1Wi_*IO@t zGlAS{VuSNlcpExjC%L{Z+UaSuHO%njtQA|e|@ZSnD>rYtx z6@g^db(r8%Od#ylV*1Lygp6I~r&HpbR;>5LPNZH5dc(a6;}tTPuphmBvEID-oVQ7F z%AIr_ce~ea>{KxO5giqj1rgjpK9a?+q29_s$m~!B;h5LaD;6tz?d&fmKY{e?+;Ik> zlBJ?I^{*v*r=j2)INVB@NP|*>JayP?GFZ(L+5kF?9YjsxGGc5sGT5%c~I?w|6DGF2LwMu5LrK>DePSi}JWkxWxgZ*UYtCgaLH4@3(IUt!MjwsAoO@%y%9 zTttru7IBYPaBat04NgqcSdFZaKKT~_(WF8oqDxZ^gH2Hv{^~!)`BH|j?4-#a=$~3O zlpnIKK?d*+Q@q|j;=>GNo_5jyxb1}FJxaQ&VZBRn{Lsml)oAdn+?G8m2pLnkhBiOw zMdcJX(l3!<#8N}S6kI`C$@%74=>)J&GSl~C%w=LSu zHY;JBr4KziIFXyEWE#9K2P~SUFALdyr1F4H;fo|d3HC)LEFeMnwD|q)i^!>{g+fUi zoTHFGXJEf{ag8TPaihMv+EFRlS=SH92b*f<0Ll7L`dxvsRR3RP1>ggCL|g|Gh+VbU zj;y4zQh^OL7PlQr!<~ry%BlBOSvXDeAi&H)ar|9P@K2h(NE6%!Z}-OBceyvlu|K$3 zB%s27vYvIpRVsx3^V6=BaH{Tu*ia_&W}sJ6E37+KTHmW@sm7>5<##e8c|@VYUB<2t zDppOsb1U-#obc3d?3pp5c>I+wW|JN81aCA{}M;|-CS z^n9WQH>M0s3@QpW0W>$H)5dPrbHf}sdc^gCuztVox692+&pf2iYXc=^+JdOmYf=+Ei*EncT0 zPrfm22fsr5oG_luz!611Rnir1f;<;#EAn0CIsxRC^|5R4eMOIB6^!kzGkflgnXJ7* zbk`TYeOlpvpfrcOT}&A6zB2RMHLgxhuPOJh}9DME!eN{UApJuY6t8K z5Gb`_jUf2q4$S%N@@Vg|^dy_!qEjWG z^?fqLHbO-W1h-{kNgV7@dtH$hwAP3(%2OE1I`4kG#<>@*9r9V!->WWc<<4PpNUq8d z0us`9!j(q4tdQoIYz?Tx4TumtROBj>jR&kv+Q7B~JCbX|bwtjb){1y>UR9=e$%_jI z)=%cyJDQxUc`^~YG>HG%7foTnMb-+V9K>S~<4`+MufBIFKh?q4vtl9G!1f&LVS6S_ z`-|I%RtMW$wtSWoPqzAq4noG`;rg@X&A(5@VfrR{TFL)-EA-9t?&2RDvwx>Pn)l6nZ&`O@ zT2aL7{L%3GOS6FqQj8MyBzWay(VPY*n&*3im=}cXuf#h-R~*e8CXY_7j*qOiEoz?1 z4Jw_C5*d0QKkAE5S(Hm(3(3k3xTkJ6^JthG#tnKE!WT%?7gOuSjyvaA3lbway1V1p zFeV|mg3xH{PMZ+!r^BTN_-;|kj{NzcSQDfS4}u#6@1U__&{sov3Ze_Ph)dYbq=S&x z!k?1v02jXbls=Pt^l^BA7i`zgsXyV#^kz2$@BavZg5MFnz8xZtu%}q1h7oGhTmbpw zfK9vE5-N*^N=6ink&O9zUrxF$TzSy1yWW5uc=E~Z?OmgHTdRj=V~4FPCMPbwraQwv z)`Qa{cTJU;z1%LcI=oCzu2j`l_3YjqgfnIejURX;k< z@VXINc65Lp>==PB`5+?3F0#QoKeS8|GEm}MRvJav;Y#u4Yvxn%dIFWX_!_6J4|%$T z1Z5@&?++W@K5#r_7Tp`Oe65be6p9FcW%Elby^ZIpT@*ARGTp((i}(xI&Y}$tK%e4Y z!z=UwBt_80(!3#cH~!VNqin{Gt+-3Sx~`!DKoMM+Lh*Y4zU1lF4Y7%#Ne84gGL3u> zUNe1-S}5Q{ zOUS%+f0h$#&}|G_CWz6&2Dx$KHy3>t7722G7j4BZE)yOUE~>G=f{zaovFABzv7E}Y z7=9t*srMJ8aGPmUjH^mInls;8J+uvkfk5=RA5*-Yj=Dmt-_kScI&8kgTDGSxeGwVp zQ^Je-uU@B(-T{(P9t1-cJOJJN)GEfz5U(vFvCmRY#~W(325MgPSGZ}wMq3@A&TS4q z`e9Xuf9`o<0&gvfk=lI^62hd@icL!@IY!J=b=jWjPd?yGhpTZjH;5Vt&UTq+y|lx@ znOuu{?=Rs>Bk+873h~JYh47BSjavfh>H|DP1I6GXg%c0*0*KH*Wx|17tLb{{oVJBy zLBzmC?yOgb0vk}}l%lEis7OB|76dyrBsos=;?DYA%2tr(ATCCJY=@iEH!z4&a*I9k$kZOIz*;ds+)z;#$xi*#em^fC$VFNT9Nsv#pJQao*nz}p)S zS|xOlSm`uo9Fq=cFT1SYIk{hQjBv^ATtDx~pM-&M8B8CtTI;hH6D37T)Ce&-_)wSn zU_yYpY@W-uC0iF#BN)Is6&Ca#K3ZZ6s%7hcOQ4va5X*j^&4nV1?^lb718$O~0qdxN zMPiY4of(-Q$IJ26ga}%@*j2fb1_!HcxcNFW(s@cCH^(S6KSri`fA|eh=y;RnTwiya z#3)w+W@E2JzwY}H6w%vNZj=k;NO71 zNfEqBemgy7cWl>Ar=hc$lm;esVhpuo47KpmniwMmd~dcH?UFVIrU`<@a19afS`6b0 z^5d;;uj`QP`+x;Ez;>(E7@}Xy<@d*K$LbC1 zPX_+?_zMjbG4TtV3_3`5@0yUl4S@!NMZml)8WTDg3S0EHCoR3G4dpJ8?e@94qHO%^ zE}dAvAG}!*NGLj)H)a<72uOv!wdmzC>y0-O#--bFmB_#4HGY@hANtTxlW54lyiM4L zVi!Qz3fds)fyKc#og2f?Ma@^Euc5|$)om3<1d-N1sB(k&9t9ykIi~ix_KgK<5 zXV(AmKFsH1S2K_uwq2-U`lw(Rapb^SWx~Yi>(2t^9cJR?19qbQ_E6Y zU-e1`6DtRfIjR&E2b8U6HU}lSxJzQB@wY754wJZ99_cjh@wgT53tg~Rwi>0oOpXj3 ziVQr_ke7izX7>XmD!QYk5d1S-B>}8oP&lYdMu;foL~f%3&GM;%$n# zxyL-qq;mo?l&=AwiUGk2orZ{983V|}*$O9lI%D^xqZD;@ZzMVpnm6da&zvI5zqKjB zqZum@>)VJ~4-xm_sH>?~K-4>ajtXlFLc1DrnC<(-r*OS>25G+K!F=N(yaj3){8VOR z2txrBKA;_5x(Eg?2;5w+<6;y5r8=*%?9>@#w4v@pr4dt>q|r|=X@ zS>(g7yVVUlD^l}ogtXad@W<1C2&n*xNszP8jl;8s4DcH8cO`N1GM!o@{Nzq$EdgP7 z^p%k1pmIYkDkSulAyXWgaTaA!Oh8$I)#4%6F9T2MHvOavN&l&elqoc+8FPfX6rDJy zD|`>L7 z4T(l3zh(L8-1I}IhAa+}6|Er~4?8ySzjbMU&(iXp{P{yU_ufv!C~>xuBBMxnZk;{& z&;4qtC>40rp82C_vj|c!_!Dy%A^d!=)l1vclZUD?Op99snO2^w`2#lS@O;n@hHG{- zzj*hlE1S(k__xWul_=)88HF1Hm_N;q7e31wR;m{{XtnS;iS5H~GW9#hNuNMzGe4W| z{F{M8?RuEO#v3!voO3+9y*z3ZaX|SLlEMi%yw)hC6B*CwP^1DTiOAamqQ%SJFJev18aU2@GY+h!yU3C;}H!xOA?A7vCTElPV83|Y_jeEnK|@vyF#o_u4)$cG3Rc^XNS2h zAc<~GkELI8i2R5mTTnZE1H(3ur%mA6*l5FF7p$yfO_sO9f1zF|J?ohdSGU+H2^ah;37>C@mcF{o%X++b6%2OBS_YhzzjhYumWI`P_<)6-l!3c6|d z{cOWNJ7qG2U{~fp5M??D&)Vx6i2G%eR%=3-$*wDDHI^J7NqHfcVVrZf2O;qBn?`Dn9v~rWnr1=eqYNnQtGyZ^VvNEyA*g}^ig&KWV&rEE*!4*P3T0d5^1I%)B zCE+ggIc42h{8|eUs@6SUbR#A9&NGe%t?sb-%?uz)NifRwis4wu!&EcJ^RB}0jv;pY z&sMUo2U)X$Nc{Bthy~+sN<+ZK1aTl<+@ni;k}P;|jXk$fn)Fj=xYsVSz)B>>;f<(I zzqRY-&S4g|nm1b)a0MZ9?eu?EUJYy$e(o8Szo&h!ruUuo+>Tj<= zy9TrLx3WfJJS~2TE$9AgG39Vn0-9un4xA-dXJ4$G=Wg(j>w=g*bP#`V?=+oZ0+T5a8x&={@JapXz#Xk~cj*2%MU1`=_DKrE?jX|L^u_inr<4*OndJXG=l~ zJ3lkEZMjU~Lx^g|4k?lZlOx?P-~SnYiToA$P~atmXF*?_N|98%)RffTa84fn?e6Tk zFx;=;44!WrV*Kvbe|do&AMLQ6n^$s?%6j&gLk;Q8ND1@**-=>>e0aYZoWQBWal*k8=DDGi4Vx ztaaw%1rg>!&WO^z-Q_)U89(uC%Ov@-Z{4~WJcJ1p>ehp6NCn&WxO1NJ0 z#!<%l2+u-FQ`ga_cTagRO7^0w*O2Si?jWP^w~lyudS1|5^E`0U1~9Uc?HXJ-hoMiU zo`xHcd{o%%PpyK6CUB79d;@tNQgX>G>NKVGMAkkqLGPCh=5=>_V&9(bJ@5Fh1JCAD z(2atN_F+1Znir{!5PSU2lYWX7L1R(xer6Ln(5)0OGt-Bu+Dgsrr?6{eHS`>7o6(Z^ ztPJJHriq#y)`B)JWGLpF!4osQ-+dMcGcQ4(^?f~gs5s0@c|D#-MTtpkGvEEQmJv@4 zN1RF64aAdyF0o*y&T)mb zW;gJ^w@OXKh&7*a}8r|?*F#XbqYr_m z#l2^>K78(s?SzcFqa9kWdqs4|_ieN~l%7%lQU{jP?6m*+TQ$T!F7bLEKEq(oo?6WZ zHlMFQxgp7{9;0rNu1;AwnXFdBxz2M2!g4g0oasWtZk|exs4u8FsV3m^^KVy|`K-VF zc@S}a%!1kyxM}ybjWdbnMVZgxG3!JcrmZfjoP<%Iq?U}YnxEnbPMDL?hvgYz%nO?d zJ;c(>cTZLbV@sBg7t~be27IV5*oRpTdwx<{ZQ#7Ty>OWthS8N^8t5>g;BIQs@1n4) z(eGE&Cs=|lFZuKTEw_B&_Tt+!fp1Q~jVN;>nQoWPo;~t8WhN&Kug$+_(rE0DGdg^E z2WY@irQOJ>UWcMQ$o)Y=RAg!URv&Lw@O^uDAE)}oRO5t?`7XoungZAilda$L?nv0c3J*oFC-<_L@X7iFs(2F@d{98~HC}JV+CpLu zq#3=td-obxi(F_%FIm9VCXTfM6zWsd|!&pk%FvQF>OY= zb*0?kP)TEF_N1Ge=J4o=J&-ic^~ zqTLOg96hJc)!2*&$ouThmJ)t=q+>{#`=XOQprJad#`&rwioIbO>vab7@`9d==1i&IWY1I*AY|yzG*Pp9ejc6XVq+Rqv?Iff8P)hG zJv0;bR7!Xa-%5?tI3rjk0&HD-G>C5=z$ZRRL{N~c^L@N;yhAQk+iip({hz%!Q+p}m z-8A2K&1XZj1X+pT6jnBs$oiXh$dMlkuWEPlUkrp_%@%NsNmq(H`#|ud97QSob{#Xe zY-Bc&vh(0{Er6VEjXNcwTBL`;v)HZ?dPJwSh$&QPi~GAt# zJ%*Hd5mzxYbodK*fHmRSm!_{ORoQ7CtJ=?I3Twm8S!9W}CfE3i@YwDaY}wxZ_?2B4c@m|@vQNkW9aTF{aR7BlE>AvA2uw7o<}`&bcfOt{~{|5 z-bXD&s0RR2wgykIlARx6X^#l;gj12}&+kl=bu^?^(%)loE`~Otw zSduGQ!o5L8<2NV4xAsw?pOa?_xBGD@4ldNTuW_bI%30sfbH3Jk7P8EUGGx>^zOxiw zz4qa#Z|J)GtI)km#T0oZC3z#W&Wg!AYJ*HiL+$nK$f(`U64s?AtSs&GJ2}*xMit|` zn7Npa?g9Smp`z=)qEi?vbdZutpTcaDoe|ZJQUkVm zjZ1@?0W(y%n02-zit>wy+38$65opyvN{o=YDYiqIzz2u%U9JgmNr9 zkpEkiK~1f_-prWBa%GCL+kFcAFsSllWqv=2a4NDZ3th*Cc|#C*t_)2cP6jBiYsx@v zi6?uuKr{h!lyNapDtz(y_&jTFU=*Wm6Dginp5q4v08Z)pjJTuegnwi!e# zZI3sU15FV56&Cc{%+X*H`XFP=dr)k1lJkS1Xt2V+qxDAbEMR-+gGaWk$CS8rS>;VE zPksW&<~X3)B9oJynKPBA#L*dCam@cpog8VVnapQr9jr82=1qrJL;_XK{0Lw8v$9HL`TMn3e6=Bbd(ZT3Sc+}Rh)tLkGwiJ>V0TBZ z6bZU_qa##li*iQOcvgz-jM`HXRogAW&=#6x)^gBUg)%*}$6{R)4Hi>Q#hJiZ7S{`X zgaeHG#_MN+DZoR0o@jj>LqZ~0+=M?RG8y-JU-fxOgW-e6JTDZZx++1x-znHyn{iXO~Z+ZV8E#AG946N2aMm z;n*XWs1viBm+l3o0VM1hD^Z2vt=){h(L@WQhQ0_&PHp&i_3DN=LV)p$edGQJb@M^U zZmSGcg}H;~aH*BQ5)5HyK4f1v+W{+jOJ%EkJoWb+0@n{#5B09sSo^?Iuwn#7w+@TWUaW3TB$kc{+Xj z;+s%2UtLWrh~^r9l=YFInz)}G(9_E$>dt&Q9J4GluRk4QqEr8*}hg@Dm~pV2j94quaYYp1s5G!!AdL7IOt-Wb_mh zd_P&7$+_w#pyKd~Q$#MRl>ghUK6MXudMgGzuP1uT%4(Jxfr@BMJ+Rh`x8DohG^`BwxsfuGFaOSY;A4}og2~S_Tm8*yTq@`?5q6q% z++}nz9R=@0Dzvp)pf9&qNbmNkY6bxQ1mG%(nQ%Tjg7FK0kL|)iW6rR3tLV9@y>Edp zXV$pcFcbG&$n!vfmEnV@`+N67#%HbcidtBn5SV6vT1@SB zh?z95@q61HIjbO6e+b+x2V%m3(5L+V&BS#I08&U`=Q2t?Fu}j70iRzAjQ?2jM5=ot zf_Y9|(nS7zo>S~Ey&`kGHWlVg07T#7JHP6E8s%&_D4YBWb|WBc@|m+h%o9&2VIQD2 zbhSV#XfF97iVY{w@DQcE5j}UMHkW0O%A)36t7ij=Q&CU|3psP(fV<4Ty9246p9NHO zI?BRYAoPdu!Oo#1Vakoh`miYYTrvG&>xXX{0i1+MEPyq`$<7$Pa3Qb$`Bn%(~G$_Jfk4~Bo-WY{w*zMgaA|fVc&HatXlclDEw?>ht=_n z-k%MkWK;%*CvufZ%w`9(`~B9#z)8ouH{1KcY1TZABA$zRGErH;LR-5B%2psmdBIpD zd@+x(#k_cAjB)y-n_M9HgXkZU-@0C%p<>pDMHkfH^N*Y${SJ#_A@}cv0+OPsEzq5j2Nj&6)j31ZyF3&ZV1Uy-s>L4?`9%_)70 zq72#C+B#spPdVM*J&g);h*&wlnDKN;^v9(U%haP^)R(4V&FyAM6m*U^eBM0d{jBNz zX6dz!1BTqjvZcC(VG6q|6iWH0kXfQqsQXcxO+2%y%K@B6U=AdpgIa1Xf4%qWP5zy? zv-ZcEdi8E1p`iur;fQp1>#m#lOS;%;rZLf zQyZzcC&72!H2*;3Ma*pok1@hD4O=Z+$9E@B{`Crn3x&VTN%AC7mri-AJ`=3o$x zaSN|68J-KmlmOt|d>x6`_aE4?t5#CA!Z?x+y2YJCMfk0(<(>7e>ju6d_}L7aOo{cj zBXdN!-)M-R>%4KF_ri_wp}OA60ugS3P{T-e6Wifx>lZcNBSkA^k5?fQH zF0eqbgP3C3D?b)?#i9XpVi|gxjxOxXG;AoT|+Ce3^Kn?lz$oLKZMvyu`D)Pokocnm`(++SXj z8r05#JdXI)eA=sx40uO2Tl2q)!JgR0y0WY!{I0VaMYgwIyUt^L@ix;dWWgunF_>|{ zhp3uRD&~8GeAHv)I<^ypc{(*MKX;aY-C7UmxNi^Q<9Yt*o7$lka}GT=jd~us{v6#m z!Ytl5tK{eQ_B=BhVM2$M++0_%h8}!xFx^7wR2`3*F6cDHESA59&6L@_IrEVJXYNq> z>#jr``^(6PgLxeZRMSKo{_E=x-K@70`L;sQ$5Sms{E%G03S}rF)e@_FISFh2K@g{Th zBj;hOe#std^;x|kt=DWpI}3crW@1quKs(*!OkNwjkED7Fue)MhJWW?yk!BuRQ=N}( zB&y zF8i_MCR^{I26$~snmlq_dR_maddP|0J*2GN-hR+iOebZP+g zL-qsGo~~cWRQ^N7`TV(hQmhqBY#!@aO@^TQRJ*Ec&a5&d+?b>Om|SW_SJ^Z2(<^KJ zbkLAib#Vi6$Csl5>0CZ*_a6#$g4rZ}`LVeEo%#GF!-q}o^)S2XTrn!@>Zp0&I^M{=e3UQ`2_`YWtx8RMr$4K zl!_S6 zQ}(Asm)rYUKKOFt#j;7mZW36at7!&$y~Avf`Wq=_f9AsAcB6Jdbben4n<5SeT`!hg z*ZOY=aKBQvk|g&@xBeq&SWgmH!Q5!q*mK`<>|s)XUYUCE=ZEAgj#&12~>F0^FcmjEt ze~te>z)TY^=H|J(H)Xxuqs;C#vyvTs|2{CmzzV`K8dRT!0lI>A{tk7-^Nbd!!uOw8 zt>8qv(XV!>d|d@q-D0kvuj7K7a5`6ctafkg1L`eO++*nsm*F4Ave&*kTQ7BU-&Wx2 zJ|Bx~y>;Yfzq73FRUmZZ)v0Y9!4Q^ND&A>Zit&E8qOQK&X(TXu@V3~!<+F#B;D2X% zJ>ySg?bi&Pe5B|fPm#zwL&X0!l<_qwfA79f-unmcsja(4^DfId-^c(;XNRtF;@8;m z`u`td)Xlb$U+IEjL&JIH*o578QSj#cMHS)iGB;Ob3|PbZ9S4-MZPwhHYlLGgm3m~| zT3yC<2(G$EH&pIFpyGqzfeQ#YQT_OdHh?4bgillEC!WxJ+^h&i5G>!P<0idw?r z$2w$b^S8h9)HG%uTVA!3qMZauIO&A~j=f$rF;eSv6vZ168vgnIG*&=t?Ou%tz#A>y zfk~la+P%>eAa?K?r_CCt#Tti2DW{%3J0s90c(x1FgFkz{oRxNozK-3`Pawx`I^p(- z<6VBv*yIAwr(Zf}_LH}FgPth5HP@eLJ2&XU1$4|l3JOzH&gPdjI2rel#9w&=R_vD$ zzTDNN0?|H*pIu{@zb1P1R5b`)bUzo);cUlNE$4VY{7(rnr9x|o7$^ub+uxDLiL@BY zwLCW90nM2rGW8w~n6p6FPL;u22$VJub1U%a7=!~Dh?%&ceSCpyJb`N*dW={zVfY&x zayEK-Q=hyi+F*cA=fz#6t+Id)zox5O0-ZA?c+yw?pZB(vlCCLpoc=L>Kg6V1B~x~e z2DG5MdGresHsE-s~4(UVah=wD+@YluQzH69L^s z#f(z1M<90SI!_>(ufm5LO5wBh;nrQ_NLi#QL z=Cf;fow+b*_gpKj_sB!@y8qutS^@7;65w>Ny^3BdopXJ|Jd2;5`k zj3@-5n?TtAfuyl1tZ^cJxpVdTbM^UheYgXA+4V|Kq)=tpi1Jl#SVoN>1O=*HD03}+ zeZ#&{S!YY-(XGt_v;mjB zQ9w>9I$42FjvVbozfTbLv+Q1vq$2J65nfk2o;tuYyqPn+F--*E@Bcx+%?PeOUy~1z zO9tea*k%C*nCSJtCmJT(fy6{@-*V6nck$)y3{qlZx8PP&@YdPSFWE@nRAEWSGrxN| z$7aMfbMv3*Y+ZZ!pNhD$?hay>{*Jx%zmp@EPMK&ez6^O@9i7`x{(JNI;qzuMW0qSh z_vDB*UV0r9?pBm1KlfgU-jY)JbBe(WnO%b``do+=QrNWerCtoyEG1_HMSov&2w zU*hxq6YSuqH5WDYBPY?OH2-$}+z*;=QfA>xxlrpbs4zC~IjiSSPMzVBHTQ~LlyR}+ zaRWeRXL*GCJSX}NyEKndQ^ITImn!&PKg8ZyS#jsQ;v-PIzhgn|X_krB|6jxzn4{Om z-|KUsL|az>uYXj^HgWF63FjwO;k|CTg7C@*7=^)%HpFNkEVn*~_ZrV_eg6MNoza*C zD)jjob5d@NV+T-JT|>}!H87hR+^`!%*@81V#@B}&>PvK+e~Ludi*_e5jx%0wyo+&S zomI=eZIUj=Jgeg@ubXweaE1>=BNSw^Ug|&pEM|<|?4^tvE%?Hnsy~4q|AuZyE-`Oi zJ^u2x_`l#Zw(8{`iOJ%SsgXv&!h&mbGDqevpl9*F!Mp`wP@>2=(kGXLkZA%7jR0&C z7;nCR((e%ynam7hm3$!JlMjYY;85u0`5$qZ1nT>wXjA}~Aecmfjy9?Jw;aFkd);q% zVxJt?M=1Io(VX<5y!0|#aA%NcO9_YZqCUhT4=HaB1kw$hO1q&3TqIjAl@}NR zeV&wXheJb_O#pj)PzqWqwMiwtT}4Q_Fy<$Eh`ujQ4vwOrrlg*;CRT@eNsIEY~fH z?|#bK95ziH8F0bZ83p-(g%EJChoGXZvz5$6RRM*A7WsM@L`Ki_(XI z=pxhSH4JUSvtxZ$Pyg;*pESMkdt#xVts1$jkw4)ZOnZF11ZGoc1sJrqtz~RF{f{rI ze@-#R!WcrpsKMBC$lm^`6bfKskNxL$0+cl)+v%t!>i?$e5KSoYf8=N7_TlvQ;VJWx z(kqn`Qe^vX4Xby5h)ZC6Y_dT0aR45RdICs2YGzN_P~bqfZQL-6Rrc`TzaHW!#Lza? zC>@d<9NAFO3G72%^Hpq?D{eE`S>6e?12orE6h-Y!i}OT&?iDZ`Z)cDHG2G*=CmUk_ zH18XWB`PvjM@Hx!d+#xbqu|KH0PRHHXG~g!*&O6L9Og$HS8ayLR`~q?shLa0zAAo zrBWiE)%oDEVjs94<6}l|)OguFex2H4`L6EqWM#(3*W#xmc}AC(G^qUJW+!OkpSMySN<6Wtyo3fopoZh^HGuFSLS;y#{ zBeBAszm{$Oif8&nTR8oaSWt+?V6XKh^+na)Ng;B3#Mffm zDY+!rdVo(~d62y!l0lXel*xbS3Htwn4mCh$cmrb~mY<}P{~>nK=awmDW%~A2;ye&Y zimo+V+~JI1FYQXbl)ny#8h%)0%bD%ecgu?elQ z35l@(qqF*U&4xLn(g5Z%6`3&8e`ZwVG=ZJ4#vQ)Kjc53l=8dnC{~tx?9hP+4#c}pl zK~Zsr8)s;)T!9l!i(I+InUZ-{-o2=XW^w8Q;%_ePI0lmX?eKm-Oz?>kl7HnA`EWmp{*WpN*X!xU!-aTF3vj z)!EAkU9h_?$wOcfPKn+Q(`;K=h4N3&4@W)jJ8$Y;?Ai6Xyb7G1)WZI4kE_x*wCkL) zO=YIAVH|&6TO0S$G)sxsQdDH&y8Vod>;)#F#->(OlPBB8V^jaoHTnC`V4Cy}% z=@o{wBr~7c@;vB|`srZsPo>IXCS)!Tl1G$si1@$hRlV2%VVw7P!Cd42Rl!+jzA;xu zHotG0LE{iUHx`1A{nKXt9kFBrrE@pKl^pm$3euqf3kgnKCJ z(HEp{0gwe07?VOQU?SToXfcH-0H7EQU4tQ$ZReL1OY&3`V3H7M7oh;_!+N~OJOTR{ zxlE-V>$AzeFLgiWQ zk>_W+@8n2WB6lq=NFA{p>$`Kumeyi4_Q++o&5b}mEm%cL@3#DsAvsEfg5-SZlG_Ul zuMNZkE}`=Pupx-v&j%Pj1*;_(h#j#pMF+N29p*u@1kjjLoK%%B-{BX%1+M@l4~P|NCvD z(NO7w;O@@pGfkgdsAxkJDINc!{k5;QDQ``3TwIjDY=e9}ICr(}oF!5Nv^$ zbq!WB^2LzuiHpbI{5!Ia){ancj7J+Wo@tL}!gstOS{`})$wk{Rj?y*qc z^am-^>Umkeerw(VtscMghzrE{7jN!Y;{H%g(0Zg;{DRw2bMlvES>!ueeVf+*B8fI) znEH>4hqkBxexqeWfu|A?d?I3Y-2GMqzyXL)qN=R2)YqxXS(1R-EB%UzZY3J*IPsrh zH~XZ7<;H|QXa=Kh_#qv;<-I&V4s15HD%P(Qhwl1s|GprXw7B`Ib|V0;wOk=)M1K7I4;_Oni~L`$hkkuN`Qp^6 z-&ORUs*h*>E1#3KEYp7UJD=2&bp<+GKrCXwG2pHd_8Rs?@PXy_s@Mjt&h}Q^EKpE1hltv!nZ4O+QlBtEoyXn+E*OIVyuw%ysH~xbGw*lw zBXpZ$)jhG?qEkNJnkL5XlL!_l2hDdc*3%T7%Zyk{C8T|&%JMcSh(~A?^Mc^op`o40 z#NN-HGFP|Cx|vp=3;#KnwVCr*`(W`lTf35n5shml8XuiNgXRJ7R#tP%v8 zfW^f&LcbN$At)U@#4fE|NPF$oAdGLREf*$q#N&$+5Eju`sOEa53LF(T5Q8?H$2!X% zNnJwfwTO#G>Q7B$si26FdT}FK`E|G(nE$IXHvZHj`Z>sAr!EXuTV-&n?(Cz97#Y?U zM@meY;=jy<58Z_1xu~>VWX;?O_}rSEovM;^i^RLxL-hV-Gf0%0rouBCoy) zU!4w821=ijH;A!(!uTp55c#AJt#35B3g33&HErZxLv?%IwqqZ@Tv8vj>I zn=*%ftQxbv=&BS%)X0$b-t*2o8UY~}yObzkm8+Dfw#sqawpJLfT{V{bAUKA2#a*G- z@(S%e(pC>-@>RF*i9Bun%2nkHxfC>+@Edwmuo*dKHmY5pqEWQx2eCuzdFSQw!@45< z;fb2Gi_rOnX!^-*rktBV*=BBUlIqyn+DXM9YnNO)+m+rr-BnLkI@|Q-(PXL)Z)@6z zW{rGp;pH5E;OC;f{xze0v~*BTaZJc6Jjc&v1EHVd?vrHR&d`~;ZRB7Ef51(cMEbw~ zTlakXNxzMpZD&(9Mhy9kR>f}cRo9&2XXL5`oZ)Z2}eyf3jIv z#a1LUU9csU7Q;d3{v2ssYQEeKQA$l_Bb9RKujW-Jnk~;kdRGd|HCJODFP)9#A7RRe zGveg30GayS6P@vdWMyF!9Hl90&SQ*3Ics=G9GQY`rshZ&gi{l znu2;^xwli0yA^1GC} zlZkQQzBxe7E&$uzQ^Z!mup!zB5olXJ5DjYvt~|@q(!VJlQtiBc9?FceYc55Y(t$G5 z0@%(bmXs_10isRDK{r0!Q(ALZjxPr!Piusj)XPm0#jtQ%zh3MSbQIl5^=ZYB+0kDZ zKhH%7>?dK#K(ify$+ytK_`rHk;#dhxTMOKm@r9o9@>AB4%`HDtG zgZrbu-r7Ik~ewAg$qE{G4g#DNhZ!`7mX~;oYSQ z9;5{FrHJamV7Gop(*Hf(;AMj4=r&MgJK|h-H0_fDdq*ixr@ESGmIBN)l6L&rk^6Xh zr#)}yWT}ZM6O}BwD6J{fdRO?!`6_apQJ9cq?d<+)Bi7Q7^|d`l-N1_7h-m13+V6~D(l+v9(btzfe z+pg>WN&=Sm70N%#T*?k5U;nNg>mY9E5K*7lrv~%P0X_#`RcaEOt4%%_9^!%xSAF(R z{P^d_9W%%d5=fEA$_t+NR(bmqX5BNvixEf4`Z1V~h(C?oR-A8ODR^{y~;hSN%{wECkFnX$g)^%WLA1_PhomX zlrple!oJ=bq+{~%`h7=Yg{BON4BSG^8$h?Ui;x-SQ7U7!e52?u!D;squ7wN;cicPo z_>)7SyL$4e=4&w0Y9Z21+=~lfgzC9Je?q5#8ZzA~jIA+|+mAP2(aPdHA`F0@?m!|F zM85XjJ=n~OKG2z{%m4i8vP@WFO0AK_ww{hMoQeUK8-R55LECuFX&N~((5!fK|@@H!J{{@(M|wb|zZtCy#ypAG$chl1el2vTDo zu*hF98ait1IHMYvG^WdZv8Kn?4KGXAYNJXuQJ^~3i|}3REX0Gya@J}WsG`U(729YR z&5HFYN_Tpd6f9{O!e7BLTTC~dfp%Wv`V#J%_^Yn4ua)+JC6zYYug=@gE^bT5&I&A@XR5XC0uP0;?0%`h`;e!5+disILA zqn;NhLiVb=AUInt73&-`exyQa8(ZE$L(2BYiKp#?ok4#Di1funZ_lMdv}1p`vMqdF zayHpvhhA-pjeb)ErTUq|h8Hn|T~Ff7-+u?&}JiXG67yAMXT z4a0l-;gt3eK2f^?i#V?Zwxb_B|HW>!9w<|v62oB1Xn_MkJ|DUW+%Lz2=nxn2aa$qC z>o&oP2v#QJ!D2`WnXN@Y9lS!(VuC7C-1V`*NnL!y8xK~$y4modYzm{8e7b*QTt z4BH<#p{Q477G$r5zv8Ec!z)kA#uBF4zn+0aG@Ys;$hmc`V+?4*I_jYi^F)9-fRkEv zlu#MqnB~|?l3fzrb~FZiH2~SM3Qq*&v%kO_nP+=aAw(v`g-FYo29E8Z$$X8qq4Svf zroNgdB;b#jb+>cA2Qvpi#(csHFaSn@)voijXvmWk=+0#LHv#;c*te+8RDqmmQgMoP z9H1%rYq4g0jms#eK(#2qYwdgVH#77HGCs(8DFVPsWsq|MnN0z|GCS>^Sn69Fz$h+r zM$a>T$qeuVcU5tR`VpW(GBlp)MWm*t)Cc~U1=z)znQg^-h0HpBe4UjKP0YVt6Iz-a zNr&@9s%6Q=xgt1Y9U9IA?@Cj@1-C-7j!Yaa$^DwsJXk%oRPw74$c+HPZbJ9L5o}Yq z6B!;cfVOMbjO?|6N7;@0RK4&yvG+EVnT!-!!0W%7++B`K7sB~M_&!s#`vxon&*KNu zltsX&;7X7EIAh5J(UN(*DjWXXEjT$>?W&yu8Ba)t*8&Q30uZOL?1b_Y0;HNKI>I%; z7ZQQp)dq`BhJPU>JU9V&CSTAL1JdOK3uCa5Hs!+`Rx>;K)OFY%L}tZ->JRIH2-#Dk z8#Jn4RbWt|NXalJY-HvHxFJ_9IjHu&#^Qqbi<>`;yJ z1pGMp(pUsi{tMKL4rxBBZl7xUPhn2kWVLMNnSD`bW~_(-vuv1wOyM1Ha58L=P<{de z-wS}Ndn+0i$&1b4Fa(I02T&GY7p~eFF(K&;th_f&cTU@k(sIuSc8-iL0zi!|Xm+A7 z%inhA1H&ld@++2HUA+_XN5CFd4JM6X1pvsX4d{*nm{QeP{e47 zurUg`nZGSmwA&jUJJPl$3s3dojFQ3b$zEhF_a|i@tHnDG?C{g}4JR!7QM6fiHqVN_D-=xY*bWR$ZBO?1LxENv6NE9NT?^1d`uK)CiFg90zJn>^*V)R zbb{^L?5t1K@3i4km^ai&GJXdtlvofuJ}dM}c~B&9thfP8gaY0ld^p3~>(Q1;hpM*$ zEv~g)y`oE42S-rg_x$16ba=Etf};WX_yf1SEV}eexqrivs$Zg=f!$Dm{HEi|Z}a6% zWh~dv$ZUZOj=G(Ews>_rP!6MD*`}cya3bO7jNW!KNS}H0tap+A&eH}6Qj(*3Vh<2> zMY2@0E7UJ$I~EM1g5`0S%7m)9ZC&xgVuwI4y+E9C=j%3lf zjVJCrB(*$UE|&rK!Km>S{~k}rn{qXD{MbEjdYGBM0013OrhoUKRU0Ijt!)i87XcV% z9V)qi7Xv^?G1Qj=k8XqcNJ-MRLm_39_;loz5?TQyZ|=|I%XMOlXAAV53$U_T1PR0K%(-jx;L)uRFY zWm}^}EgCbFQD@++u@c4;B!z*^CSNTRAu`&E-N|5O>iy7Vw$ea2*-%i8Q$9D?3-XQ< z2jfsx6-h#GY=DNlwhXLZegms;2?3c-g#-)8SlT#+&w7TS5$UiCWVoVZDW~?j5%G2q z9~y%#=gly`pVAq1qOnIoYQl0a#o!GQIrAo~YQ_7p5072KU5vnLlNm#XjeCRG%4gt* z-@2RcJ7YJbP9TGKiNG>?(37eU(-O}A-fd;{CD4R*I+Wm*yd~FuOe7hY;lI4r{*I38 zWr8y5l_sh)4_-fI7vZPcTbNddHSYlG(?Q3;(PxT47Hz&CDF_Z7ZZDkV-gaoar=s7X zV&>}Dd{ZyjC1ykgtk1xCw80Kh;Ai-V-UMWZ02a;+%X5)SjdXrTBJy8T;#DLQTNKB{ z61AyY7yH=LMnv0W=t9iVznc&W*#@!Ci*&Kj$C-M6$=`zz7%0LDKex(SLmrSN=!MY`xXp>!AHU_Nf+&XFE+aoi=aa60nd_@C6&8p zJ4Mp13aB4+cF_IQ9|2xgax-rhWh>=7eS&e@`Jg)?I7cEhl8!sWMC6bW@sf~v4;0;^ z+zQHiUvcW!@t|VQy~RJ5f$KmAzze#dn*xCNi(4iK;obE+`GS55pIjh@$092q{8wSO z9?N$PGXt2Mqm>F@&Lm!zF_n z=A{+JrF(_aU3BzSI@}eIxJr@*v9qHW#IJJ!PbByyNHm5zhGA}Bn%6W z=feg*6z^)jxpQE_CG@evn9|1d5wG0XmCLh0{_L*@pZ^_ayH&XTJ4Ox^LflQBPIbYL z=Axd^k$e~=aor}cZM-EPKwP(bXe{#|g!Kjr>Ovr3N03Q$WRegh*-}VfpL-PqOSzVE z`C9$nvDRa+K<~Fgj-UR-^#u5w9zVYQ_*dm_uoeH#xnFiLF+he6yt{H}fizUYj3hDN zUEI{QhrMIhc*KRi)2D#T_QVLJg$DXog!PAM%W@UHpbLz(A1%`J{?co7=~aeQ>pJL} zXW{2pY9p;CIF5MvJgpUCd>5le|{oMbqUZFe1sQ~Gok*m z)F6tg8xhxXFZIL69?TJIz$aL5y1N*>mXypaIxlq-yNmjRvuyPH+ZeFunh`>|V;iyS z;pc534I6FbztJs;OpWWtGCe-@Mmkse9P+H7f7Ti=I#_Q+Ki#udr)qI(W!%{KIj@)x+E)(~D5Z%98vqY*=9*GDdf?!>l= zd;8JD`WBNv_uVm**047JS8P}BoI9wAec2E{Lz!(0H&*zWYgxa)8Elk*0SInwedGaB zKF`oBC`td^IwP~qL2%7(Sp`n_YCVz$kl+6raCGW2SApc#2?q9Q@4m1z@vorj&7+Y* z%ThpmVJ#2{xn>kJeCbApJ5DX8M;8jQ{c7e0QD|fDhU9v!6M&n}X(@5FnQA8}k=egYlH+eGmNYF( z6It3$NM+aAVGf2kH>}k;Sr-rHX~%uYEQ)KJ9KqR%k$M-&v&_2XqjP{O1*un8nUJvo zK;D_E+95*X0M1S2R8PDsUj>CAUbF8AdZO1MQq8w$O^s{;w-1|bePk}b&P5qIH1^cD zI0!4Kk}5By_M+qL&J~|Soi{I61(EN>V7FoNo7l#Ic}%@NkGO>TZRWoqa9yM-j=i(^A>6<;JN~AFUV97C*YRAZU5=;=mQ1g6_AV;amF-#@F)jPj7*9MU>{m+?Q?u1lt-m;1r7!`xW^)M0-5sxfM(qMD z%+^t@3YbehNH-1}sUF0ybx>ylQnR(3wJVXFN?~MZjX!r{`B&rviH4isPo^eRp+X2& zZXzzfRZgI=8gT8KfXB!&=N(L9`Z`kxs7l=IR{QQU$Kg5M*28@iEs%o1UF+sB z3iScI5?8F8#MRGJ2@#3_%&zM_c@{UVn}{%Fx?mA1m*6oo;VdWLSvQmS(PQsWeUDSU z4GiZ9xoBk!*?#}0@-u=bnc9dzk+8snex^B0ovDX2H0|NYCd~d(qa91|C+5d`cgRVu z_mGLsq<8OH<2=lbLLbMrq%I`op9l)gJoJ5TDJ5}_dZLt+7$kpUb}7%8-@VUCDTUN8 zg?u^NRJ5~z1eX0)An9sInRgS@6;iq*96!4ll_Rb4095#gZVj~CEc^H^aTc!xh_JN= z6WcQ&A94^*vn;msdSl@^7Q$Jpy~4GVu~lc8PS-Ly$l}_Vcl;gL4p_fSK{MOyG28~4 zb5zcRT{2s{keI3vKUaB68~7-$0d7f*#I;vk^MmWrJe+Jz3Zw$XiG zR2HS_S)5PtwFuHz@c?t@4b)ca?l3r)kB|v~<(Ec8;ms9gQXTsgO?xX1f?pgLi(n1` zdM@%sd+jYmK!t(rXL}|n=(7jpkd%**f}Onx*c@Lw2H+knt6ncbKTo~;SVE$E%HCcP z{c|%KxaI7#==q`%yG}$GHgU8+Bxezcg1x8Le0&RbWRRwTa?NxX66r{`!D}H*2|MqC zeLm6G2s2c)R^MAzf5kpA`h2>ov!ZG)TR%j4`&{xP)61s3Fa`+UfN)$b>D1vRbnY`{ zs>PV4ReJRZp}N9_Pxu{1yrI`82jvb11@vE8q#X)+diqsY2y%44gI;jwm_IO`m~Bo3 zGImT-|F(f4JVwrz3}57^@Rz>bsuOS)D?*T;`@y(xKD*Komm-6cIcSOVzDVi+NoZ&V zn=K*=Ey|Az#F|pEva!GKp=8ycM6l>7Ne88g~mFa9Fuk;B=upr6?+? zq91d8+|y%6F#SZs?fHvlP!9ECc```1;B~`28~vDg5}O5!o93yBslzq^P-#$%^`YJo zAWFbCF=xxQ&@v674ymM{V}2WqTYLY`~h=%_z;AXd7COqZB%9CrYeL=|)}#8QJ@VYw~SQy6uO{jzurw zDcGDXe!oJV$X@UCVJ#ye-}NVb>>D+bs>~Fks3MTDuvmu4*UR$vt^fT+%-)!t#kC7E zKb34}e?97SVkQPEI@mCt2c1Arqi>eR1En)eGLnCY;W4iMwH;f z_mtO}+nX#l*u09aRO?h$keBfBvrK1*^~%D%V;}s}JaNbO*@eWvZo1Oj=RNGw8nb1T z&wUM&)ZC9Uek$A|JC>YjVhg8f3M-PPMkfo21u&tOcuxmwkZgG}WE&-4P4=DTZPHX< z!V6EK86~;;(#3LeSG+@7&alI~D#77V@~YG4MUe`y)!O!2p;WxUu;3FD*7Nf4yN!Y# z_x8=pcTV5htT9;_Q~^R$RG-tr%W+ScWM)*M&c5=#knH^9?A16FT^4_qlnzCVnEjE?Nv14 zd1(KEUS35A`k1(1bwmi_eLyn{ng(=CCUPaC5@WG571AL|EBHW+i-XMKanFXrldW*H z*2c#J6a2W^&k;DsAN`t~;8?%HL;wX;jocrI z>B}!tExu7Xi)(q0(w)rtaTLj4tCF5Y+b*daQB4KJlg3f)ggCEj$uzOZO&NCWwsab#_#i0o7sAZ|gPgy2Yzi^^3#d1&ec~k| z^?lyc;Xb44+e@amb#ketZAfpB-CL$QIzXZ`aeqNYI%&~ zhyoV66G%U$-w%Uo0K{F%oZai0`@13j%*<2NPAiFE7xoHwpCWFfB`vTV|0N^!)D@>g z87J8p657UhaLc6&;99LgK``XsD9FDZyPS3?9tRbkk6^8gTtUZ~oQah3*ilBgnY;S} zvzIOpO)pKKlAmH#DGFHXB7`P=h(|73rdxD7V#*MP0(voTgk=5#U{l9yqAn(T3BKM%<2YA9RI53f2?jDbKq4l?IvMS>3ew79 z9kvzf`pWyiKr|P^JKDJhCD|uWTTOlCb`{;;nwfG;yD-cLSmgxBBLPkVe$Jee&aGqp z57;`A@Ug-uaD8{bG`c{ZVZAds!;r#O`N_Am29s9#zmF)T2??ZOJuDw+D9+g31PNef zhB7mEGc)&F53C%!!nrBE#0I}Tbfx&v!`Cmt4p@_2j0a*ic%Pm5VkGDHwOzg;yM3KU zouXXmB`y28gOw9{zj81AIVd%0E!V;CtahjM=Kx+63dy)@=_(gpn?VM{z<_x9I6RNG zVOIbkm5Gob5v9G!rSGN7Hv`soGQ^q22_{J#=dKgu5l+a2XOwisIjzQ9@~k1MuOXgd zh@>%Kox_4j5DKe6{Wy>o7POU-f+<8?)PcButdk!RaMhW^C&2gf?{(%6TugqML+~;D zfXOYu$nlOMZ^l#1Qc8pdfGRBDA9S}x!sCE;`;4g^1wNQ3>0T{jb(5`i#eC^PmR#<2 zo|52a1n}ECNH{?RT*%zd^a!_>jM_jttHGWeh#LUnhHYKZ+Kra#Far$mgwAbv6KgVV zmk8mS%<&X)JQ)zz9F821L!<2L3~}jvo%;<;z!tjH2uF7`SZt&;311F^s8#HAs=g8-K=c>NHhgMa9&y(hCRc9bt?L-}I1GY8dNzYe{V+|Z90sG=w z^Roan`;h9Er7=L`o?8v&o-X3z+0IrY)2e2)nl^R(sT1u8sGc>hIJKvyd(Vf2 zlKRI!x*f|y!9GRPQl%}B-^<|F9RL+7R z?~_fLYj0(a>?BcVJO1tvZ^Kc?UV5kmek?fGghR=i!-YAcr-xC8F*QF7Zj@HA(a236Oa%5Y=Y#K99vC-CQpUl$%1la?ag- z74tl8T=p(arki%Me_WAdFZtGYU7WNnvX@sYMW`p>@mxT+y%G~BWGZ)Orws?S+|R(q zHP64dU#Qo)sdl}-r$(Fq^v_PPl^Ce7dj7v+U|Vz+<(-5KQ91M zgEg5b&Bn%b@RDn{I!1TA?p|Q zcL~@wO>M<*AbV&KX97e&8JL~SB_K4@h)*0c)?wJ1Y@5}fX5#f$KyZSFb(-DwsW;L<0 zM3u(Eh}H1@faX!V2~(ik)$#Oe(U0dPiU?YDD22~|I_DP<$^qg7NgrS) zK?ik%K9(GGzAWUfDGP&n^|DME3M>7m_^3hz&g5-a0IOcpPs>NAthxrT{<0|mxYX~i z&Mf@zC10zJNNoD}ADE@X%-GtK3VkS*6i&+0)=i4WN`6;KuMja6k#DmiN#CK5@2~D@ zN_u~5HSbkOKwD;j2;oo2^dn@RTn{w5#E#N{4~O0xu`ut0 zXgAj4AuGtZf|ar?0g@lDxjq8#ii#NpYTLqFNg z#@3t8iT~sX%QkjxUHZUZUc&}VCobFqg-U(m5wb!_uqDe#9tFl@M)HKP1QFtGSX>%E za)37?y#Hw}Hj@|T5!?p#7eL*vWIp+r*X0Xwp^qj!LsS=MQ+5~r8q;h1ch^5+qfmDy z3R_jZXOb0~<52|99BHjk!%+N@xz-mY?3NhFD;pw&*qmWNl$9agK6Sbw^+Li#MReNF zJ?d*HDfrlt-NWUp%}Ty+a5ugKr%9zE*BS~?N51cyJ;Y<5q<(n12HsCuw}S;BjH3j(}9F3Ldopvhf~5ik#xkw3X*(2 zuflil)=bSt1=sz}YO%~}xk^(ZYUcy=1Xg;nktfyxEM)LVqE_Ko9zE$mTw46amd#PDZ8!Grn+`1H9GTzdch$Yhu`t8 z)0uc-eDyd>c^IhE2*RhbjCKNz(vJshxtx9S9G?Ta11oY`J#Hpola>Bu9M~Y~cj+!_ zbRduDsoq|ObYZR3yP8hy`ci!8pM{#dJPeK1-3lIhp5xjCwpkB*2>TZ&jMtF|n*uV9 zg^#P9!<0YyLa34*CY+h;t4@%NWZhsgWi zpgdCC0cPX@!BSQktm;yl{)wzGHGk)jk(%st4;PYZ6;B0;kw^R>JZujQfJoaQAUDDA z{IZOo3i3`(I@pdZ6qWU}@4rCua%;@V!mgxocTo>#M zgCGgkA2!7tTB*%Rj=GI+wg*Ae+z#=Y-{F{x^0ue1i)%S(l$Xkf`DQWG6#~PgShx8I z{5$FTZSu9a{^#JMa`V@NpHqPMPJP`Nta#3xZ%tk_m}Lk}N-vyI*qRDlcFB2$)2F|V zbIX;z?4B~6x^Jn$El;H7no9JVJNO!Zym6Ml#DN`B@m&*r(t=@<$leWviPgSAZjYw+ z>hvA)O30n#=-E<5A}~+?qa*ce*0|00_n_t@cLIn)K%V%K4`zE!`me96Pi3$bVs@Tk z{5+A`9+f?$W@FwC=ye1m6n0z#O&FUarOTbg`*KcMKJg~STsoF+*5UMD127Gf* z>Pn_u7_*k67>~+C>a@;tUM9JUlRq9le)e6-{`0QC-(JeLxPnVXIiG~<^rm*STD|MM zYhv?;bj%4*clJQdsdu&6+f$!Nt*g1zon;Ql2jf`~8QWoEhO|xF`ue#oDx1;DYjaM4A?|5qasZi_u z*`KvI#{k51o3wFTG7Bn?)K)*HV*jhpP2&xH^4ZRY&Ph+DfNyL#BO}pqw>HH^b#Bic zQGY_GlpkEp_x06*8_F8WdVVIU*bKDkfEc30;dtk$`v@q#up+jOOzocgkNv9;-G2-` zT2vt46n6Sc>93UwVGatl33t-uV8y@vplg0{C5ZV>3)kBeAG|l(wtc2(%&bLw5}_8& zEwRDbi^zd8r{@?(9Z&KWGZhaZ%wK9(bejFQDQGHunPmNk*+S9n_EQW|p3r&vw*1E% zMc2g$x|8i{d;h1Ncio3BT3>8q{yq6)ZFKAKgFiPE!%jokO!NnV!}mh!U=Y1Q(;h>? zPxVSy&|$25bta^Pg|3{NXsN5K(c9#PvrS%O?lM;uag#ZDoZkEb`Fg@Y0M;l0*MEV> zmcK3<)--2pxqPV2ww*-CLF)Kf+ATC?#Ax@QNG3)^@zA^znvju)I&+1O$tXWtq&%QvkTb|VsQ zTTtuaw`WR`zpeQal*x9D%x?6le7cHbYNEyYN7JpB4d3qdS| zCYndzez4IZK{AK%2L6%I5;FAXS=eSomaX`?NeX`%Z$n_-M~QcR|FAuLt#^NF(j+@g za~~NmKO}0Y4uy*|Dbbsl0GRdyv;|V#No)dY& zoqhP*Z5&E!hrQ}OG4$b=upqV8;~GGIZ)TKqXd2MK_~qc14X{45R;Fb&(`3NFzg zJ?B#qDtYhGmA>aqiP1)-cPU5ll!{)G02mfM>S2Iof&Ul+tn~8^=pB)x&qPR3C!9#$ z%~B^tFO3t3xwZx0%!+Bw-g|aKSR5elU~)~QGz;ld5joM72qhi;H)CN)aQl=~ zen_F#lfg`M(P7?Lt*T$2p@L9pm#j-;GPeQMyLkepJyMVy%|Q&Hq6RB2w~7y zRW0tek{x;CA%las*Eb7}qtZI4QZ`&G$G%cf!Ec4oH<3>kBX^Dj4hgsI`}F8yckUqH zP|fw857YZxd&lwK0kz*0ga=~a&L`23)%+LU;W%)|sNmwqXdQn~bI`<5ALB#MMHLpC zi(Lg}#w5>L+@b%NmG`Ay^7O0--P)~WO}B!}VP_n`TmkCi`xQ0m2;|OH%Eh<+v9|Fo zKmNWL1SwAd(n@{9(u1yJ64$}oh_$)0#+$mGaTCjT?o;I)?mB{Mn_P7{n5}|6FEjfP zWK;i!MCcjwD67WlthSWKUIm0F^b`b|_57Y3P8?v8tSF=r!CZr2jk^f>yCp;Y z^`>WMH`FYZHz~;Ypp5zGg!M)JU9errAi@$qXPaBdQUuT6mM(^v)k-&&P6tUT1*2RaJfJ4uYj&#}0eqL-aCU2F8PxopdI0vYsF%2M{)G|s#5rqr3j)PcZ z)M8sE4RoB0H`#^^HVGH9-9=4J(kULEsf&=@6G5bOwlZR%tATR(mx6pLb2fr<3_B8@ z`?Mi$&oo8|Oa;(=skJS=^5iEAi|1c0RN;#9U01_011p?qTad+%OodM1wsn>krO%6a z0b^f-;gt-T2Y2op-kz%A5_-Y41>x2;rqoKyC1To>ee(arb$V#mz-DPMshr#mAwh|xiOw9u6vp@&gXm}B46QBimWG0hosF2(Gq=DMWeN1YMx z?sMBG_N%mW+58fz$2lY;kd_f!Q@rT$WmugAaV)vu`r(lm(f#fnw8FO&h)tz#Yuqj=KW66z0&LXPitf{KRKK<{Glh1GMQGT zD*y39HD`6vPQ%u90)wJ1qI?FNU*|rFXjd|=nLBF*%@!}b< z^`ChQf3T&A({`c4`z93k%(8OR7S&oEq{m&hW`p!-b2b|@&uh2YZ9qol>lh3QL=<~( zf=QVb%2Y5T0IuF3@xzAVZ~*a@e#4Q;xiC|yDVnnjgz3b7?iueaZxE&@>|0hMxLZ7e zJ#)#lE3vEKBLC~l6E?t_xnm8q(GXu1g9~HRB7@-^%IoO&EhP%~@Y_Z*TrAm64Wl=fG5JqOY~YL1h5GKM(3ScHr~shusHx4aLOLIV zX1H4G+BEcgl{iJiwnAe(>Maq@7M@OKo1g=~Nb};6jW`G)4x)z7)G1*c9O)-YxOp(*9 zm0K#tP-+)7)U_#WEzC1t z#Cv?JG5iTBWWbQo2aT-V8|;556w+@Mko^a5WTV{-b`^+rzB6U4m?Jobe*)DufojCv z0XDr!-9t$!EQ+~Amb%X?ofXP)Jv>PHO)bXE4TcY0XvK#d5K*c-QF)aBI9a00<&%an z5aO>Mf$?2Cg{k&Zko77UQHXmssH$DlaDuHB&6Y~kcGC<#2B>iNFLCi2Rt!r--{g)a z@R^kuvpC48Fempq$nc)tnm&7OT%u4L@S&EfG_9vVW=Rt!yeeKKFI1T;<=M@yUX;!L z9Pu8n_D^&-N{Y^k)6t5e9(wOexVjOU^<)mN42@oAl@9dP(0#f5!c^8 z0yc?;z2Bq~5FDK6+%6OgE2eCsAcRzw=@}MIo4R@M{CCeF8N%ox!VI}@b&t^!dKLgT zJ8x_}7@tZ(RWL!AtFB_B=@7`%SKD1WnXMKFfaW|er9_vj&+&WoregbaXGM*!A6@5M z-c@?eoUQG;k3qL!oh$in#yObgHPUsq?y$zS2UqPn)m1mORq$R4&J}j%n7UWa6QD>y z0#hc=8S?Y$jZZC77eY0@*W~E@gMa)XE`4BqmI*LZz!@ejD`!%wxAG_rLLC$*z&}Zo z3DPAJb+y?WlT@W#Z+Xg$ksr0^vJ~dlp}Vb24OXRH$>;pb32zwVZyOf4v6be%Rnw$e zxCoFr0)G0q-`YI3_xlk^yxB>Kg@Crl;y#-j^_wA_<@Y8;rBY?8fwM}Y*&8kF98{~}6J3F0;=zvzZUgvjd^lxu#$Q6lB*L?IW zVC#-)$mCwgcyjPe9aTZd;u{U%%(;`ZB`|Y6IkWNdimgzo-Np7_jjP2M9#EGMBFe6M zW&#!(rLUZj=G~Py0~ptrYOBXu1D_cWMM`wo1HSlJ$P7BP+CiZ5SfH_E=8i6$QolQ9 z)non7NclUC^26|7IfH=Q-M^CaT<=vC1L|O_%yK^{3gDuNcl2t1Wc-`2qLpL-0e3J?}P7njS#g>WLRy>{f43Xc0^92Xx~=peYcS80`K6L%W4F zb9OpgsO=K^ky*Jm+Mwt9c01DAW`MFl%K81PP2C{zRg(;SGJHm}CrN5mX|ck$hd+=1_5w2N@ZHh_{wz`;2Hc7aA#2KTFmSyppRf10Yr zL>M)J&U(<*J0GS5waUiYcQ{|5TEI;H+y1m1Nz;kP2KzcpH-jd%ZWeTLzj?(l*z%jn zk;^Y&WzP+s-Ef@j+VP5K@WP~*f8Tn){nkK7=;gNS3a@?LGoGZk;9cQSK4+fy>=Hj+K7(_Jyq6f;jhD@};77)*up1J)eFLn&rO~=4&L%t=)>!SeiS6lszD1S&>dHue0IRmX z^_R5z=tt1Kw0!GaXwOf(C9^baA(gSH8Ao?a9U#YX$Z-^xgNx2#&D6948*=*b)EM46 z2zoSK;(@>bGYboO5qWer4`B~S4=FD#Uk#(-%Tnn~w%qc2J6=|Ly9hfuTQSx~UH%Dg z>I_-{6*)H5J_18D*<}c30(I~teR6%KIKDH5Qi!=7>bTd}VhF8i+;m8<3jK>A*^v|6EBF>#m zHC-P;B?wwf@1HVrI45<;r^)@%g`F`HK9_c<47Flq9k<;4jS+*CV1h&LIkRJ(YT+;7 zo|m!?^-pLg28oxI& z9!Kw+t^)(ene%J(#{j?U9)*B@D7rP7j$pDEi_`=0R=0Qpxfb_2`*y{yaXfvwJ8n8W zD}g`{8_1A5UnHT>9)34tY`!bsdh^TcsOP$0?hs63UR*uxvo+#ZNDf8SaRV5J z+jguT(cJz{DSjdGG6okb>Ti&>C6K@pFoL-8yz^t72Y}h3RV~cMdXBLy-Zf7U(bvwn zm_oSWS{)?umE)p#B0&eLQS3uUYFDSsBC}UwC-lu$y!7t+0b>-P{ZsBEyS zFO!>vcq8QCPE|}Ibxx(}nh}`f8epec=J3I;nN7C`rr`=ROwx-uFp(}v70}=+ zon$b{X>$rf@@ED(^m_W&MB(05lxE2Vjl6KENbU`KCci%OcepaGE@0oS)y91J$`1o| z*FyX&A{@&8IQE~xX8%Dmwy0ouy`L%=8_0m;F(ni_M5Ek^0^Ln^Q0eE?~^n$98DMbi7T zQ|A;e>+F%I$J8XvS~@8ovdOjMDwxDyVeyo=x%KO%Fm~6mH4>>(g@akb6;0Nd4YN3Tv;t&nRTC4;$L9 z%{yhE`}Oc8G&873-7uq;2~o#wchU6+_9S31%9FJe0}7jt-HAq+ia=fs?|cX|%u$O@ z0qKMs9HA>sh2jRD=qK!>3s!NtSPU zao^$9U{jf&lYIbBq!ZdWPb$ZKu3F2HT`E};vw6q+tR26wYEWivN7C+@NVb*d$l92k zAze;6O__A1hK1B7$%Rw z^B3{(t%i0=kEiISJyTh3L@=pr4C(xxQ)=+pUZ;~SJH&v?-yPMz@9Zdf6)SPvKVt7| z0NkR_xTw4wOcKw{xOIg|#uKmR@M3cu_+)9N(GT0R7~m&?)984MuS)3Ysx9l!o?O+| zFqw*qA(dtZ*d$R5VB#Wxqy8+(Nh)Fwh6ATCw|g8eU@P%}`cE40b|Dfspb2shkZ+3?$N|3sKG|A&?{njQ`PNa0-uNKOKP|?l z+u!ii#^8?a`4aY40Fk~P0JHe+4R>Q=&}DMlI8%EllDR$izvb5qIxOLfSQUpmW2W;% zaRLN3D9<7=$2!9lNBI*l&CB*Gzct(NcHPmkD(QZ?YvL7cTSaRVH-RqYP+c}>UivNu zzK_LGTpA60I$~Uuv>vZoV`1-kvL^qcZ!t)Xthc{%GSVaz03@vg3EL5{u{|56L1}R} z74de>)m$Z(+(%$$z-pc9a`)HUy{o*6npd6>ZUTmh1wy9Og2JQY`2LG8W6R|ec;kl@ zhJvh~i^|thNxY^3#~h0{!p3d}^2TkAu65B%v0aR>sLW}fjlsYtkY-d+Z9 z-F(+4llVH9V@Cq&6hmNQkS=Q@KKmE(!>Z`z<0>$nIE{=SgJ=ABKBUXKlgB*zH{*@5 z_TTDu%wLlFsf{%0dx*0M!z_u>YVI>u`DM;o+}()O zXaF3;`CNjL(0XG`v_op;c-FGwLWSg5&X;k-`VGue0;oWS2}ydtZdK@L0fcvtOFU{a z-_%I=db3gR9+W|a20!SIbyp1}2380!Z2~FvgnACA*prfa>`%%(UJ=rp_g>a%Om1L!gwSK5GpDi64_h_?T z{ns)nB(i^gzQN{h#BM8^g)&Ljz8&{~{)acAkB=k?qDY`Mxg2P}2{}?t_n)EY z9!4$7oQ`Y~>AR|Fy<{(W#q0I~RYcpx%0$u;-GkXYjbOL`Ts5HKEVOQoLQ|OHBrSn* zWUDnyv6Bt^0vrpS7&H6?q6-msiI7668!H1aE#meMOt>IM|MaxSz1PIhk#n`hUW4dz z2EtE7vKy0YpXxA-C7Cljmf2R8)HM7OG+gKs%Op`tTyQazmYpj%7%c>l_JMrhAtA=1 z@bM7`wP3cCRPth<816@H>0T%NN`8_uVU{q_Vko*<@t(#*2G&RQ{1f+-tXf)NtN4TZ ztp`by4li1{r~2}(^GK)rayOf~xAAIGA!XRqmnVv%= zD^>xWiS`kE)`#BcBknrx4K@TIx`pTuBjkTr=<*8X-T-<@IF7%8d<$&RDBLF{2F-e^ znx8FWyan*utPJF=+1{zHUaDU8n)daeGW`}-5g2NuEh_>yQl&qWa7j-{UToRVRB4k| zyboLUDHG;upq-qw{@q)38AFO53rNf*@2$J(R>#;vKhe+o*fY5|Xgq57!2KVb!oDFW zUJG|VPWo3p`}xzlQ~EdsJSb%Tvfl6wEBln{`52j~ML9(uRmW-RH9hnVF;xO08CS^k z_Eb&yj*#hwlKD`XaygPrxcblS+b1${Hnz}k+35$OlEItP`qe4Lm|E9gkM)_Zszs!O zZXm^Eo{V#Nb2E$292xJcMd4;-F#}3_OWk)cl$w2%U-@XR;rzg73g+99cZsT7W#eT> zc164a%^QyqmNbJwP(Inqe844`I3}YW!E8Tv0~Oca2Hun^!*HCjbjqZZye&)9jb|TO zi#px;b!vp(omZd?*hePeARLTVn9LR(NMJ20UIP*?lH?(aFpG8nC$RO0BLyg;f7Orf zB(yf`idn4_9aRS1K%>h`q*;RphMxSW(z!tYl`%D;>*PbY7*A>o+q`HHil3%GxN>XF z$?j@I_2iPAO}ngezcdWOlv_q%Kxn{E_PPKmkPnl6`ck)k#yK@Sr_)(GslTYq7$7AW zSr){J&=_ykW>bY?Pu-DUI(Uu(R?Ugi9%alX;+LeFL@@leI5W#Y_v1(vTXken`7ZX| z=5gh?L$LR=kTE_Q_yv5O2#*$o(n1q=3o11M#{MFslF6- zpQW6Y`i(gGa0-TNy!GMT8T@6G!V)O*?2)%&iEuFhAp%e8OC{9D4NXQR3n?nk`3J9c9*;mX}m(!QS;DiBb(;C@6O^ZKM&j|E8BMu=Z zScO{l^9q_`_%Cd)PH6pAf(ZPpnl>*8yS)HEus$rm(RKW9mqZ*6fuX}wiRtLyFOT3z zD9hrU{i^>%lP(IOZBsTX&*;t$h#&DjSaoCNJkqNs@yIg#gf7-Om85T|64^{5vq|+R zSp=>%pCxl>QE{MOk&`COn!}Zd{Lh%7LyV8D{3Zl_GN%jW-m>$K zf`Lt!p+x}c#}A}UfR%U-zWn10zp!9!T&5RzH(u@6z|8ac_l4gYtmoxOpL+=16VL12 z?K4TwRBH}&Flj6iRs9`xOD9mOOn?la;UY=O%i%>cHs_wpkv3jYeSseS{}>hf5Mv&p zjpcWq>5s^_x<6NH4Lgdgk!mL9{1r;cEMgo3RKqI~)hzxjr+Ark?%3~KFpTkv#R<>&BA_wteEf;Kve@1c|iU?l1-UtEXaV#N z89Zq|o!~#>=k4;b^TBU#1lhvL_6;3!M+E<)+m9g)LkX#1PTxms8=de zs+Vv?01GuF zWYmifSvu(b5n>gAxX-)pcV4@n^sfnKE%#XnQx$eUmL+eKgfc|!Spayj2dH&hH!Iivk*SzCEqSO@%Q)v9!h zBpfCwK}b^azxZ{5xlt3n21BL-s?_$}tKlE>BZDBrc_}kRPP2mnHzJ6Be7EXdcS$q`+Hj_Nro(F zT;|g{hiS>)dr?fJOgXe*ZcNb%y=Sj#fi2$KF5aQBG{08h#YJtIE}X*-lzkPWlhWH z+U8Ozl7=T2f6_GoulM=)BLHAG2ZZGhg33Sdy%xuI=f+JW|DT)f5a7*WG2AO_&tg45 zSNH%b-*dG_Df_SDMVd^YcsA0aKt%R-nyBt~)=oLB4G^QQh2gt}P*@0-!z7#sm&T1&H88sAcJjuj2*5hW2Z~l)80iBS zQLMf1X2OpTQE`>bh%13z1H4r!6cWY6r%C)ap3L5LRJF&=`&|}z*Te~o(i^eAd`yUs zg#pdpP6*+Ej{Ucj{OEZ{=DX!|%U@9!;Mc}q^mZh$AHQ$Gb5(lj#9@9}5-I+9+LY3G!?JbNYN+<4m*Yc~rfiBnPy1Lf=} zh`fQ+Yi$iD>fdOs6&k>wt4$cn41myEdTnbmHTu{4mhv+$_o*GABQ3w7jrt^b5=M8| zW*EkrGNw~T-z}Hm%7L-{5JwZ`A&!(aB{4#QUS0#0QGM$lnr>}ARD4w59_AfgxtOBl zO1qkhfyu-w^ru@s7xD=E&vJ|WqN)O-Eyc?9uGW$@4nTO~KyEowu7_0;WI647E`)Ci zLTO+9&Y1|SNH7`G$YB8eAQcXU=)RkoO;E(lh;WOUEDpf(SumMk#3{*Nv&f*a3x6%h(siv{tW z?e~?V)@T|f_7I;#CJX`E+_r7}n z!(C4_>QI`#ratsT%5irzpIxbW%Rw6U2!?_}lyNzVnb-b{QO`AFK6NQF+4t4jst0l;@WE|{pw0dlSo}$gS{JQK;gFcN*}RXW--1|h(H5*PIt_l8 z9^>^nF@a7BQU^e42QbUT+l(or>O_qHzgp5cW{I5D#&(^8hL*4k`0uC4q%37woidTT zcbR0QC+v45Py4w&9K71X6xr05+<)d#%9hY5^4{O8I4dR7b;Yb+%FMa{vIYkDV0a|i z(Q;J6mBrOCg-9^h>A_1SFeB$_ba+#^T&@t(DE>q&>OE^?m>`h!IRrDb2!Cop(R;}g z!LteItr>~^Jv;Ia6$NqKm;EXlo;8ifRO_8R-2JrbK^P#})*3)a_ELBlJCY9<0IvH# z)5FaHQaiX8)Abbq;0mfl=~R~XvEuyT3c8GQj|d>#1{b>DFL{?Z`Rx$=f^Q(}#FL%! zc(o0~^o*k}{|;AZDGuaSQ=2kzbjH7><9qZ*^-eo&PD?4OanG(F%}_2O7-!H(Y=Lux z?grt`PXJsgjD!v#yoXF+JS7eD*mWSGbQZ*d!OZ_jVU)$7!gz|_Wmu2MU2UBc+T~$M=U-UMHoL$D06^If91+8w> zqB)+HO%N$Fx13qD9l0yh_9)SS2<$<&gzovh>1|Y4WmK+B)9)HN-`EIAtT-=pIyZZ* zpY2DvjGs?mPyO^6x#1AwF#5(iyhrfJJ%vqCt2~;s~I6v-N)NJSDt4e~G85Fu6ruH@;N!h9M(6q-y z(vt;O`>mJWBLo6`21oXt9$uQ<015)F<{LlrJ#gAAS*MYOq^nCSnGWfw zkFx4|9(N9)io}h2lkE&2=k~KxeSn8z3s%H*$bzF## zegj=iu3dYWe#+smhfl%&wI#V5D?Ba2Vh&fdcwtNDV6y#u*N!JHf+(H+q@MJ9^el?$GA83b*>$_vugKHXzqmxc{x!(? zMR0?k`Reia%ilqln*!?)BUj|#VrAh+sZhP1RF_0dw|=4{WH+CUU8dO8DMTIi%zEJa ztkCi)7$z0?*6OTzyy-=VEf(n+LwTilRkS@slLnZ}FRm58ahe^j;z@ZP$MnU$t< z934fOIW3%u-Y1A-op=OL;2Ci-fK(iG9f-U zz}5*nhyYN>S?o8E#<=gk|JAtt-cLVw)0<`oLO6h2Xk61+kUP!0PiA}lb;!9C6jm&2 zPlft0pkY+lF&2-!2z8sr^^SzO05k4(tJZWJVP@&sa-Af<>hvtyK&OCf_zc2S`c8(| zd?QYD9H7TI;W!07P6v`{PULqdC?oNJ2B)AdUx)fEBP!S{0mCFh=@f8~opZ|O(YiW? zq2r2K_kl1`q>B9hX?X6;qNc*H$eEj&DlxzevC%mIqD&LJ?g`5PM1T4fV6uy1x?lav ztck@;v~vO`Y6_My1-s$Dm7gGhuJSy74CaGC$gjyrq#6n8LyGZZd+!f+T8G5@VddL^ zm%jroFu)z#ltdOJxZJQ~IF>qv-Ic?+wz)&A2K>}aQ|&FCY7a^s@PvnHqn_|A5XT$d zX}S`5bPJwO8*G!TwIOi0;AP>l$)nMncl_{7!zr=qoO?N0H3Nhxn5^Qqpo8e(It7+X zu&joMMXrD`ejq)Hjxy6rzWk{Fx3JSb&bB*!lL+>WYM}5Y#goopPm0_zDm=Lkw#_b$ ztx!7O?>t~EyH$4JVf(?SPPs{%`xWG)Tvj!o-^`2>qwCrbl^FEKBK!@)y$TwQET!Dn zI9(uuEkU;S836YMPQg6oPjAo6MjvD)vuN_2r#!Szw~2`xO!VhcWPTewE`dEc8%-t3 zgm(gGngAL?(0(F3N}!(a7qsOW{1)dCH6^3UbEbIe1#E=uC)sHwfRvAcs;*R8jOv*> zB=DTfxsvbYI72Gfl>wJb zBv*@(d<^`67<6xcmQl8X*TBBuGJ{9*DvHN#avRD#MlLC8=gyzYebf$a$Dlm}whX&X zgWi&)t%Xpj4&A14F^Vx_vRjQ&# zm+y|ZX)83@b3o;V8G|!5hA~V8pNLFnBaTxcstLsk2OZz!D(t{8ji-D@%(a!L0F7S! z@4wHV?gZ4+wGBll_prd*fX4SO&>RZ#iV)4BksARhz7S^pr<#9x>q=qFr7};zpYMM8 zPcAvFCOqGt>EfaS2^6+<=C&nZ>IBGVgYaN;tlt%A1^}u53$Z+SR)Qq$-{ywZ$e%$W zr5+81w|Gll_8&9C4Y(w$0ElLB_r{JGy`bA-puP-v(+LbeVGGlghiqv^PcS7U6VZ);7K`+> z>q$-nj+bdZi5;6 zu1opJ;X8N39DZ5wuBT%T-pZ)xy>V$t@##Uu`u4-rvh%!Io62GX{Wd6@i8xgvU&w&l zGk{$j-*BEnUKv218E;6vsGEJH+vSpo)>W>vrKrPz@`NZ+0_HKbyN5x}UX+hK+|QnF z=C{F^>)<`>Ali=-k7JfPWwKgj22+Wy98IC*uBZ)+kl>_$qNVKe5Qv3AzfF!xTlc^w zV%~bf3NU++k58FuAEPCycZ|YkP9S5E(Qm7uKThmWWMJX_y~7RXkcVOE0{BT00xv_7 z*+A8a&wkt3v2PNjM=Q?&AgTZeDQ?W(>OlFl;15IPxB&FwtLM>^9MQs%j&l zuZ)5`K}D7c;icQKSJ7xe2BuIS7JaC3zU59Ram=$=_PUmIN&+UF<*;xP)Bal_4{Rrw zfX{iaIMS`NhdAcC4l-C)46EN#_^qH*vZzdLgQjBO8%mwIhh)!tw%Du|Y$G-1SIuM+ zuH12Kc{z3@FnoNUC$x-#zCR`TdR_AUl;qO7#4MGJe}cj26EJZSJxo+NW>-oZY&-O- z-8S~3FQ6LBo^f*j_1-KWy);x}liBh}ItO|#;anvvDh&X4W9`-Hr>sZxUi4*)dFu89 zlvC8ay#>((9&Dr57LWkkB{IY&UjOSIydxfV=>_J7m~~eeR0M!adU`}Lp$mx0?;BSU z9YamW3LH)ZBj)navibk(*RWpSsm27EQz5<#=G8&_wR)>wRke5baKKiCvO+yfG2#$M)Gw6 z=Dq0oJEGJQQ{n+rg4HhZm^t5QAoX}%;>`l8F@c-|*p(uLIIj1<|LA!t(9gX)^VzP} zEu^i{ zOo6uk#Lg^F?lCQ#8VX>1BKgEHGWip5NBNO+DFZoX)(8e5Gah~jJeNs_=UU0CP$RB;`3+7xtNJ?a zyM3YNv95h*Mynf~CqRt}CE%7V!x7X-1poHhQFz4i0v zEfWe>NdUNT8DzkKuoGY!yCBr{X+KO|+!W=)I!b#4 zIA~`0cSaakcvuqw(4ztvhbg~jFWfxg-c7Y-dg$`WLkfo5?ylr`6%6r=sCOSPx@(qFgtq6dkY z)@5YlGU*s$dg|aJTns9#*lIW7;7@-&9{qjLwlKllP=vQ>Hod9Lw{24;jqwmeQv`^s40L6ojQrTWNC2O$Sgj6|utDpBEfpB-cn?Im6&9Zs}DewLgzQZ%Hdt zh%cBd&=WMVGgJjqx+`g>30oiiKpF{?z*$^+mGNf_{n1Fnf_mE=2Jb!kZ8z~GmnJ2r z+vB_lHyZMPL$s1PI9ze)uCcQU?-tfcIihNHxFV{t($VZtdHWP0WcONw{Qf}W2CUTz zaS&}(EnLizm+}(#Lh9{eSs>i4#9DTWMr>^s3`FfFUVbs{lnWxT9Me@#tlZ-2li%RN z!>65P-5uF)W!yJo2c?~qS2Z-x`IkV;_xnGG)ZhBI4ldGWvA!V;=EZMhT-IzHO1yvi ze9&|!uGY&O@JN4qwh3kH+`>&=jg&UM!Fr=(u8@AXxL2GPiS78wKpQ%l7{`{nndDA1 zwoNgY`06Q)AAH$UZKSq-t?9uw1|AKo*a}vtYkd~TI_PHNOYV2OWoKf&?9UDCAL@LZ z;^OF%PWd{S&2P=9#_y8Y+&h5T7q}XwAa$-^v)GCuD!fOCn%o!2#WY9JL)yo}|+dMWPEIvuGK%){P-JS;7@`ViOp>^`Xh>{U}+sH(_P$tnLu zN|$!sAOcfaSp@&40!_S5X75ljw{;=1w46yp-~%LPG-R%~rVXINz6kGQ}8fUmJ+hf4|6z2lj7;;?Z3ZDQ8jK#4#{tB}xA!^MT{FZd+`jox8; z^11y{FaKo!G9N*oxNGdBoO$gURL)1deLB+~be;7RWp1%MD^XSz48qM(M;0VbEW)+> zrYefKe^%SFUeg1$-7!9mukeW@2>_?aj zfs!X#6N`7tWUdVHGy}pN+(Ktc&I#jjRiiw0d?Lm`x!%`$rCO$p3N=|E?aa31ueu&D z2>yifzlXvfrqhtTg+>2LemdHTur-*$JA&DI!$6i58K$ zDXG?}P@Uvkrvw9vEr~;tM;4awLW+Y`5IaAZ$B$}azt8a>8S_iv$kya4D69}+nqoIq zsTU14CVasbBn|+6;oT226tb0VAJo8fYKj$?I#)+0PPi+I;Nwh8SSQaFmY(%YYNn@* zz)RQ=3`<9m(0;9IZbrz`vxe9`m}uj%~Y6}sFGU8&p;mdL%lMyb~gT={w` zSJp>Nw6=~vD9vIkY>MC(>-~~GVp{IgXR$wrucL~G=s6a-o!}{sI&-lgBvMjql$GT- zor>`zM9N3Gt{P?-OB`tO8PJP&aW(wv*uXe~_3{}~#ZCJh_{YhgBxf7(+QTE6(1L+= zs2(m6(@x>|6i`<6B1vb>U609oDJ)1R=}X&u_DQ}`OhfC6dmqVdNX16or?mnlkM|5J zUY_v%u=2s`%c+}Eg>8{H^evHYW!a_8izTzibmC|wMQSo2484=~ub%2|*2I=l`s;3v zZ8zpdI;%bsj_{&^sKSG?*g|KBw%b>#%!B#K#;|f7E#S^MGy0`S%;1Aisxdds&%EB9 z3W;Wcl{NaGy9mCd@P0B5O`u)SHPes&D4C@_t&e$x`l90K7wmS$P zSO&*u>CWnx>uCDjkO`hr3*TeU!G?E?8{H*H;;#1$3?yXlw77-lih);P?d>#=B_AUG zP{ZA(HlDlgc^j{BV&M7*nG^sIuR(?AtXC6}zn8~|ysJLhTO()XdkG=4oMYGiUfYdb zdRt+(go!ej)Z!gcuun3SKd1=9et4}M`6Zjm(?;>p$*;ok z)r23fUfLX*o_l<;cGXZj_0y)^g6yO**hoR__DX{47Fujb>&Rb^i+L>uKW_PHr~aWX z&z|>UZZXxUr4G2u|4O!B&~fd_|M1YG$|RkJw!FHp`Qhsze(VQc(}$Vjn{k|+leg9U z1k>R)19SM>7RH3*{do=|wqzV-TUQ(D6;!sG^ZvfY$kwBMJs!%DEr@Aa$?H0ngqYRJ z)fgm6b=>X>?H!M^g*k%o6A92r68M2ExXP0QoYpqV7jlJ{v6lSMrrzRWDSJ_)EEfE> z>CCmD2AI&Q<+hdW$E=`OD7|evn$&N4+pwW9%xmQi6B1g;TR*$=UF&eD#ilSC*4^m(5XHMr*&nfwB*`b1~Um0W@qB zMd4Unw@~*8gLuyIe2IJf=b%AC2d?uTE)hmhuWq&CS0d2Y0}VF$tUq<^h!jvig+Cq8 zqMN^MdJqLRwcMtQs@fHl=1h(Jxv;eYk3%Xo;QR2Ttkha6uZ?HCFtFPntWD_d?daqI z`-yGbw4 z0S0$j4_aA>b}n45+Da^z7zLp7wjoqkB{A$@Rdz9YpvT}ETb}EG8w$_rq*j~wAAnUK zdRXSpZ4Ugp7IJn)0?KGw*F7QE;R+>S8<$4N#s%ph^>!Z+we4L#&xlmh*ENpqrB$)W2CWV7GsnRqR#>p9Ck_h%t0SQ2U2bRws} ztze9Nq5FnO&kb1bA<0Q+EbWHEc?Bb#9)fYK$c0$`;;VDbW3&5%5bsUB=Lu#KDIJ+f zAo;H>ln75C0aPpQ+pj|yO=f$=JgapU;d$#zA`8QmIz6iZVX+O`xce%g-hix?6p#eb zpwru$yG6L&^^y3$g!^iyY=wkvWgbwL%tle!x=l82ZI@H3pe~~ZUSO_~fTKa-?4W?S z0Pr1ImtuWq8s7yW2jR|jx`V-Tp4ci9CX-$qj|1yARen`uOAy(JgsVHs?(DK*Ys7Y2 z#*IJDA18cj*b`@)-Gk*KhWMjJKn8nnTGq8u-u~G3f*y!D?dH)JlnzUN*8;Sr1iDR_ z3**CFGupJHa(4_`$g1x?K+Tr#y0`Recv zFJr?(H+y^gTx-ODy_~O3FPG1vUSK_NW7A9!qvCrr>3Wr=dIzg{+iTaV_L0L|)t4ak z+z4Z6IMB(&uH5KbFBkaz0gu-c?$dcS1tV*V>@*Q%M&TW&n+9D>@ATvuXs#FJ5TKR`mq&EEV@ZNiU77Tls zmW;C8V=tqsyI#vpa@=+;haQW!h=F>f&N!r{cKDm!JvsH=_e>Gwtu6=6ehxR5{rj+# z<+n4~w(n8MIYI2 z!TxULC!yB)mE8#zIKLp$W1!DsF0fG*Psh0rQwAW6o-8i`x3r8?YJ*UwAfEV6as9!x zw3ikZ&pebEr(Iqq46`F9Llm9aFSFznd-j{zjL0*5`81<26bm9^$=R~?EZEZ#(`pPL z$6)T?hlVS&-3J2sN+Bi62W9O30-V}(Ix?VZcG>&4n58c4Z6RGL@^8(VkcpbwA(zQK zqn8tg+W=N#v(NGbCB&G=cT0Qh5Y(evg+W)X^S5kUD1w>9hM>i%@rIr1yEWm;AMBRh_~F!%r# zRRK|C0359SX6aYIT2|Dag}<@k6PV^ZoS)zT7Y=o4r+}a?Y2XA~{_hmONe4#S@Kuif z=r;F){_`AI@|iqiSvC#mxO@AbZsfS7%6@1$65+;{C42aoOsA1^o@gqk@`Spg)d43lH+k>PX2u>=%Wju~>^o)I;pXoQ z2T<(4wXK3|Uh=yz$Lx^cvT}zWUW>h{FPdBNTsql7KMZ+*2n%HyyHxL971i06zz4po ztB9ECh*<;%C_~}P64L zEDW>d6M)aDn)B<@HA9h0ny;2{u5W&*t|kmhSFqn_zETshm15bCPmcSVmvH5-GRHl6 z!$lu~SAjy?Kp(HtKQg<8WufLuNN?lk2=!LVyWw(}(MIh^>bud4_F2{lxxXZrl=i?# zD9RDx{+xSEjO)lyhfg>-&+=lb4^g6JEEV{FuxEZ$hAFEE8DmG6nj#Rb2*iRmXkIcy?y(mynQ3K#$NN+toYhPR%X{D zjr#B}F1LaFPOjAlB@4C^AMT^d%459!1FHFQRsM+V)dNX$t(`@*Sx5`jJ`8ciC>_0< zs&p=GD4eqGvm=imi90BQjTCK!r@o7Je8>B%w$()m$5_M(*IJg=I$7ueQ?Sh(*Ue&Y zx+q}q=f{>?)fj8O4-k}^`UuJT^k9KG-wjl20`-q-Oov@yRE#)j9>FcTWU66wD?X>m zN&G*C&cvVTKaS(OF~jD*&6xYXN!n&^$$h7}Zzi`?+sqkqN21N0D}+?4%@vYdmF~GJ zB}ppvtNi>2-|yq`d3+v^&-?v)J)gPkm9iC^7b9S zQaM(Ypsjdberax|?a8xjm3Imj`_NGD&9I2gFy~j*u*=^Z@9dQng%tI_@8Me`I@8I6 z;W9w%hb%^wVOAStQV#`;hO zdFAx2FY@6w1k$42e=wHHf707N$$Squ-1ID%9a)zF7!UdEmGdZg3E2!0FNONhKVX8Z z_@|Ay!zOZa&+muba}&AX$Ya4B#%*j+mwyVvlavEC2&Y4H+CQn6OQ`iZUYkjl{fU2+ z`1}V2#Yub_u);P`f3Z|JvxcZUIKoYfE0y~I)MkJVV<+|QxG0)eI`^{zU7EHI-Fhd` z&rey9=lh*IqGT^|-`CC7ixPD2cncF~m@_Qv!>V>Y1nUjR{=*0?-@^Kbo&jNJRbF*fi|ug zbt^HJKMx@JTw>{n03*L25|PU1t)f(udaM(52xecnZL}@Y_T_uR<>G!Q?umL2#&$2e zgf{d5SUxhiB~m_i!K*^mm|HbGChtK`O!et|{ZQYuMI&Xm5cEGCv(HBP6vE8|@h(UM99SznaYZ11N~TVSLVhH1GaROna}ZcHt{ z$y{2?m3Ylfw-oElP^?qc3mz{Jj5}UUmiOAeAa1f9P`L^z6uWn}*;aQK%w;#Eq{tYf ztTYev!G%d_ooTykeCk4z8Z7ZhDiCOq#jlxRun8#K$ky7Ch#Z?ma^VmRiGg{bEtq71 zTjRe&>b77Xyaqvac_d2R|f(n}hM~h>R{QUfUNIy}j@QI4& zLMUJSW}#0?_*hEO^pc>df;Dn}>$#B2BG&s~V6PxU38mX$doF?zIF91gS_To7j^k($ zl&20gTcVJ|=2n=)W$_W6@zye_g|@3Wkc46bF1dd_o6lr!XN1?lgh>|+kPd0|+%?z( z^U;rf0P&v^U&zB=A%oybEu;}U1-Wa$34!byB9M!ZgkuG@>i$>?<;rA074OY7IBHEZ zuFYsfU7<*X+h}fJi8lCtJhyriolV#F-=GVVC`=E*)Vn1F@uWR!UPD&XVV~V%1~&pf zP#oGQ^GaPw7GazLO17b@?~%lVRIKRK&}5|&R&ZG_{CWGe*`=izO&P3TT>3# zN2$+s*FL8qe_;@MBS?j;ac<0jFHv3ljS_>2tpToPz!~iUVVyr%bVAzlyaBCeckdDfluB5$<8UvO|p3>o0 z;p8G8mz&QocWeQ-rklg- zsZS+(Zd{v)4!{3$!pALuuJ_n{4!2fxnI&P`%Sa-;k|wr* zh6=2dKF(Y+6@&0$h;Ej08Q!JJhJ5m_NP>gP4#Rw7(_Lew%}sSK9gygj)2(Q~NwWJFZ1xOGl ztfRt3*FjBHC<7o*qnbz4gJs|JSgUs0T=8OoOrI459IU&@0{C+MCYRr246WVWF1dJS zYxEfgQ_ADLPdocLOYTm=ieL~6BLsYvB`3O)`zPXnjoAO1McuuTw<)tjndD)}VQ4v* zr16Kc*2M|57aQ)>LM!Q@aD@@U*kzVAP^3*bh6t-_E`%eQR7-RNQ=%AWtslj0DTPrG zs3t~Pg0m!__Q1^2`Xev@x5V4NXNtNqmgjNfMPvoYxF+c{KxzmmI7rS`7iM!|NOhlj zj5=;kt%KxM2x5XiUCf->g^^7x#KwGo3lxsA*rD<|?trAZXSokY7vj>{V1qs@NYM92 z^97SjvmV6_wMP^&4yW;6cRwcSu@R2%+S~Ko`>;JhwJsq-8Vlr2gZh}M&!A5orcl6S~u(7F`ytu}P>u`DPIc5b8f%Dc`JN+pYr{@@_|J{0b( zVirAZ!HuAq5AauLtcK^rWXniur;A_+RYlHloFwoP=3^th^E;Pb5_Jwk5L5WWmq=l* zW$k-b!VAA^s^IfMm_FgAVNE61=ae9K22ExQ2Tf^T7Yx=@=L3AdU}X!og{%ac%~83v zP1p#v642eD`J$)@cfl4(Ra6?l7P;9jex0*AIn{VEr0Ai40PdFTU&kCQR0oOyl-q7U zQMHe=2Wj0X!^UYEXLcQkL>NukEvOjv>{fehJKELyK))OZo3MImKtu#G=EF}@xoP~SEt2v*Tw3WXzBy6*4{)1&gVOB0R;*s>EHXpWzr#wCqMBV z5`dWbf7n3&(7Aq*P73-DQcNISC!9U_+$l8(h{1Uyg_6j0QU9HK)N+|QX7nUyh&-e8=Q{?q4f~49-HIbYL)gx5o$9+}wt!xnS+=W23%C*WN zy6W*l)hx?7TZD->RCAfdB@JGLh(Y7X7xLjlB{>EV0$N+w?# z7_x#KFUo5?@ZF->-lD%0c;8FJnpMk<;Tnd!ov-w?7iTi4HEbpG?v)1mfZS8-ALP-*n=spFtMzKM~aNf;1II1Ql!0d9>-pG2xj3#hDwn56(j#Kz@TL>nCXb&jd?2FRi>}Lwv`%5u%xrqRt2@ zXUFy_Fw)tJ*v~pzRQz^aq5ZIwf4pe0j_4l}ID$XL<1g=H^(t@(%4IU)K+LXV_}SB0A&0%~9NaCJYR4yI(0<~< zD>QKJRjoW?WSb8pvrIw0L5PR&p8^y}o7;Os#lLUPaX2jZUlg7l6c?v@?{6vBoEPuc z7go3E5clK1#_4XXN1fv0Wdlwh#|kQH{I@>9fBV$TSkc4t8n%aDbvL=H-7V(*fd6;= z>Eo|KW)w@keuB<9!u;7P1x1pvE-eva3%*U)>36t_%1RKoiNP0|ZykbIAwVcM7bq{? zr0#qKO%5`X+$Bl$E*#GjA~F~f(rh6Od~5OxaSgT*t5HM;$Tyuui&<^olle83rMht0 zJQG1Dxg+7s>qXDr6+YvAG`IGBk$VaGcv}0zYl0}7LmLb66E~I&%H8`$ag8C0x~1Hxg-)cT=6vKxr4#;OD3)g%>_Sot~d&ZC`;4O?n zJ%`$@imI(z^NVv4=@hmV&y`Al+?)eLp4dO`+mn55X-e`<{x!x5-A`vXZDoVHqp_4-S)x6yp zZ>w~(Rf?~I3Pn8Qa3}aKOpn86x|)@17NTMVRmZJ~lczKX55*BInIYGZU$6fC4Gp;^ zsACHX6IF=(&HGOyjL4F>LajT$e!-}65%9|)%spzrD#5)me|z(Zo%Pf9JrAhAJ8o*X9Pb%u zA8UtAmwPGRvGYNs`|f8B`?FK!#;>W-PfZblU8kakuU^pd++wY+>OEb|FPmGMpCZ1r zZ^@89zQFzXjC>c#97FQAZS|T49Gl8}tRpO?szQ16BEs3fE--|1)ZbPCMV!M@n5 zMEPf6M9w{+A(3c$WfXYHQelR*R8WeZpj6VGu9{FuY1xu1G4(NB_5IA^uk*4;H$oIK zFD1qO$LIR~^W^Q}~nWfd7AgXZaSLqR~|cL1n4r(y?ok#(D46*uiN<#=&ZKc;3Yb=4K zd=nX=}?ZzBHL?);Fnk~`7~6$31hp6C&AXGL*DBG&P)mg5LV;IxYKtIuqGi3hNE+p7LF-8jjr z!LPJsg{mL}>tO1EC<7=RPOYfI+l~SwSE+I_Aca3)Wf|-pjCSV8w1ZIJ{HibKq|S#- z+2%dX>qXj@ZxBl+fl89{Gfw&DL)S67WvTOD{<@ZV-iDBO+iwmK?bVvm*oa`AiQy;o zEGuGbL6)gO7jUspYlsEwfg

?Z*%u-eTmO7)0GVXF;Pu>)Wi;YO-F(+>YB@r*Kbe z7@w5r??*&P9&WOt(>vR*|6R|e@BC477_-q+rv`EcU#zP9Ep|nGy;E0ge#%IYIJSpA zNs+$HhU~G?i0`i?&aR(GsG&-%v-PKF2ES<!%6yde?fwzAZx7 z1$Phf*COX5Hr7opN{%@{%5=&6ud`(Cr#LLcyCAV{2qKtC)3`dSv8boT0l@kJ2u0v2 zB3>W_@QHhZG78i4$^say3;T{ZO zUJX=;8BrIuNf5S-xzro$HGPxPTfuYL^KWvT+IOp!+a`%fK3rkt0>?$V2S8bj2<?uO5j3SC;E~ zwMQZf166PkN-o%#Ld`l!l}rO!&$Oz!n?w&!k9{gFgI6xPN~{b$>*g zaZkHKSHqu{h@3Re4< zss9FvDawAoLG2e2Qbo?^1r&di8h`#+$(VUxxw-UL@$<(y*Gd6lJj&MN*IO&p&aQj@ zu5HWM!{GR9uci=l!eXyzCP|~FNtPygU>w4gIg*RQXW?q1o*=y1rA^4yB@{e9RLuFAc&35zD>V0tz;2 zfxWcKR1YPq^dBk(!jUdYHibV}>ANAb&0hD;{o4IraQa|ly6go0-^P}h-pm>8NV8#; zLj|pOr-l#45_Un}rn84C#N#@BN7cC3?v~9~PCXBW%d5l{54zwerW5M3Aedj73hjINP3k@k(UAghi&o{CTWhnbO}2 zEOxG9CQ_$a#2#0Yg)GSWLhIPJY~Z$ZytPr~1HlJnOU2m|it*+vVSEgq?E5r&K-D}p8zr^vZG*H9 zL9J%i^lpd7EdxqtQ@^iX7cei%!ES&fSukyI;P#u5cYA9(q`bnDIxgz{+co5(t$4m- z`7xA!aQ;!V^lV{E^{fpME0MDrdXstV!oIttO`?#st^Q|&CnhpM+-TB;M;DKqZLXKv z%K9`5SyxPt6f6~&tbiF|@a>!RItBK!{9&iCp`e%O%D4QdO(r9x?EeZre1U6C-lg4FBs<&TfG4Y&^k)Ah(R&pH+sK@nf}!bL zZCE5km^Wd*85wm$Gi@Ap-IM44&SQmab+m&>kM7vnUZ}joZNi{Ss%dnL zxn2Ws+zoEblsC68v_kBQeZqQYT>IWN984k{>Kmpzquwc$9wu---Gas=e6|fE-dy?ig=c0C~GL!BN8#? zci#5|DVg-MX!+iL`+V=30?rMs=bt-nKl!0e;m2}Qg!5CL@Nx3f9NB<2yQ9AZwT3)L z{Qjh{lm|v!rXN{1 zN01*`C8kxelBMpqVd9%ct%w_&U%fPB%=D@x!|xBDG9;v_=oG!Ed8qStx@=v6`jTZr zugo}jfAyyQ1@-^Fh(+(b=VgG5_Yc@cs&z!N}|9KtCF0U2-c{qlda@}B22&+mu0`q;j)QYMP1yM* z>=~6CxJ-p|-^nX??-Rlbs$yBIF0c_}nINn8-m_3@XeR~Z0_^& zkHs_4{wFdpN58+~SHv(+{2~Mi7P0AP9GG_dImCNgcdhJy`@K~i&?_(J`wG~NbS`t2 zc-YN7uO2!t=S;R98UQqF9_anY5~W)k9A^@RAq~_%N;c*xn>)O(L9ljb z)G+rQx6OWF_L-d);}dx!sNzI=;NsY`5hFr;726W z)e@Q=H9uY2RzhbSx#iuHmL#M~&;_e~rP#affOjJ1eU6F?q!)zrWSzv8pg)Ck-}8VR zF$h*_1B{9MTfEvdL}}h8AV;*2ZksZkl*85XO?Pru{J4{>vB@0buvLA|hb9D!&IOIx zN*m-j9(F_Rt*gqeKttBOwCz6Z^Iz7z0=cGSHuc8FHq6=pxZv2QfddSJj;+kZlmFhi z>N6L9qeHm){QENpigPbY1o_LRt5f>MwNmgG9El^$T?$smt2I$1}nNEc-Y zKe!{+rDS(>W_w(w#R^_$2dRqi_G;1uE^wrx=6Z51_+k&aDa_z>ZqbD;$VY8(CqsiKuc6ADphRskmW)Q<&Nm zbvvYscU6%xm%(p6nd0_Eq))+7`KPkXMnuY!p#p*BZA9f=*G=2(|KUz2~?7yl9 zG=I5q{@|H#Fk{9l!ZJ8)K89+*Dp)MCIR42@;}Afu(*hj$7}q&{Yvk*a>{$ zBa^J@S@cAu0=DL);$afFL^CQ~LEzc#rvizjQB*M?SA+A-!v+94_O?;!e7A^#U2ju& zx8S`B$j_Uq*BV65kg~QBW>8geU{dun^CD}3PA+oq$qnGb;X+^fC7R20sB|;deT4gE zvJ4TfDo}sVR`$<@J?N}MRD5&O-R;+rf~>>gy1^>aL!7z-`zh4BU|5D`s+CGsNv~?m z1PKO{d#6%8y6w~2RXchvlPl~Bba;R=RW^XRf~SAxO`nO}^Qn#sd)Sqk{VD*M`Y)~P zK)?KM^(8`uE^2X)s@@-1ueU@8mMZbG;8is}%T~H6y52#O$6Z>NXS9*q7f$Z43g4NW zsl2Aam+#Ox?dim$OGIL_O3L(FL->o2jtF%E#=IU8VL_qI$D~5u7i``1 zdY3S3uedX&JPR>n_cf$Y;yzf0#{so{llK1PS#R3kYvsutR6D+ z!;=UbtjS|3d#kFUp1zR(I&IiLe59^FH9g-szB)VYVy#gnw6;~%j`%wJhG6e{5T{xe|q zVO(BHtV_u(PO>rr$p39GZ0fn`VRkWxM=kP}pDQ7~Ol0<%?e}%pL+=ZZBgOaA&#u|n zGMjgz8RiNmdr2zf#>Q~<;bRhC{`1!;^5q~Z0;Len*g>k4^NPO(-^mxDN@>l53%N^W z4FTStft4drxFV)v^eBDpeoX$QIh8SK0DC(w&=DE@W82*Okf+kAM58~43E1>y!GaiE zhxW`M97vSoap2L0EX(Cx+DU|zB8ylqUTMg40IyrxP?1RVz4P*gm>+wH2 z|A7)={@sS!*ryOAuCj?&WmX*<#s;)%VTa_gg^a}!?7c!3v_1-aPfNv9x5fUQ6)hZ^ z=K^_pLHy*HRTQ){ZOXA}r0^WZVx792N34*9fhBQYG+Llo(&Kt=Tc=fP49i510z1us zx8nqs17)7e3x8xm&yA}#gsAs*gZ5i4yqDtitprFR;~tD44iPQ0pchKJJ} zKeoc3ABR}!?1dykT7v*#9HHSD<3F4eMuEb=r+bW6Fe2)b24!M7RIziN`bMteqO*zv zjw|NT*c0+t!kS=@>WnKbmcO*_9f_aAkRKpjtp;qQlqsJr)28a1D1RBv%K~x5-z4FglP$a zr>^Tg*>d&zp~tPbLO`zYstH}|&ptm0+RnUD*7h+-TIog0G~}1okdlzCKQ5C<`Kvdr zYK_xRWFTEJ;;+~;VI#r;6rj^VqMfhMZo$r1x~)+o68%%xc;IyS*m1R2AJuHHg@(0v zA<@UfF#rGw*$qTOdVkOA2oc%eT?s3{L1qWX6-45CPYd)2JBdO>dJKwP37-VrM^I+` ze6Ek>Wfrm_rN228$~v{KkAzCbp+vsMdpB;Vo%nOvMQ}>n3h}_JZ#sX>#ulC=<>PGT z-SZqiagM>I6=!pNAv`RMNpQnRDX#EFxL}R;xD;vF3YYN(gX1g3Ek=MRDptzZ#`bTk9j!jYu~ z%9<}qvDi|>@-ov0K>IT#7+(!;FvYM}6Wgz;5w|FJkvMkS{q?@`_>0}bk&EF5+9rXH z8S4)Qd-wol1n_BjX$w5>J&l2PNlxo4*DXF_{)UL0ixE%3JEsGkfze{ybk~5D8>E$J zqd0Tsm&?mjxziK5TailB0OY_4Y$qC(Ofd{m8+*E*{!ZiO8wD?zHt3+-*Ei@3osJ77 zs3t6J>*V{P1RbRxEsa$K5GY(jXsq*!5M^MIjJ`MP>U|t!+M{^c`TcBFVI(ZO>MYY^B~df)1^1ZiOr@Oc4r`Qx1sbFWfI2f^ zaCX4^1Ns;}ty^QR{&ekcdIXr#t(dWw05wKZMUF#=Y7?*vee z0~u*W#ys5v68pHpool~Esi?HA2vWR=5%UBjtLBQG^LfX&A#6&Xsb%YNLo-|oAk zrQ5=@+86pxG7HEJX1r(u*J)ST+b6IV4A0h2=aCD_-iiwKW5=}L39da>{npk|@>vqN zoSC_L5HXDp@;IN-AQB#grg2~-20E(u*da`Lc7Z2=Wyw}=xlOn|X&~;$5DZ(Do|eZ_ z*w&@9A^cA@-*727lXXLzp6@uyngj3`I&yi1cj^})I;(m%H)YMfCH+i3wMfnXHGm=> zu#&~%4X^hXe496l-BjsOJUjDreD3}DIb*@BEZPPh>V|nM+2*Rnb{bU@(rT{l)UM^vay^w7@zRTzfp$yf#LpEP zdZWuGRsQIi9=qwGm>FVQ*+&r=5-Qb{ZEnvr&uKB=QcG+-y8iy6YXfvH8f`SD#a73H z){75iDFGZ}VXp$Q|HV#=6wN z?YikC+RRsOtz8In*;t7)SjmvX3z;zmC845YwBLfGE(17h66M^A23D&^@WBblf6pqL zj#Elwp~k38{_3Eo*OwWXm|KRD8?$ys48Px6cb|SrecE={gsz#op%qTUkr|@r0bITx z72W5#zj_ikU9tZ@q(prLF(^&zhxl8j^sM~#yYiRi6T*ipt$nWfaLxFK^0SF(Z~$Yj z+xEzCL}H@?^fXQYP8C$DMLwlK1SvpgwA>4y`V~{`WpSD5KvBX00Nq;hkJ?B`4afUHos5?x= z_jmDsL?d+WbiE&G2w8kq>a6Vh)=e;a+ z4HRDdQnd@c^!ui*>6sMa${V3AQ6gT5S_tg{S6VxF+*eV);SMiOD?<915fX!L_+nJZ zeUlI`BH6v!cXzXlD~wumpWXdc@^bi-&(%95RZpyns%j^fP5XoL4fa0@|Azp;l`fS& zY;B(hQ#6XnPi6s)?gY4r)qAAoF9KzTR$$~Dbzirurw-iCKD9A^_Svz`e~{;PMN9Oh zH=iA|eAEp9K|9NG3@c-M8kh^ddw4|%m}lUh~2K@vxw&F z)#VTeM`*xh_^{f|Z>B~i=6%UScQ zUxMtnT6I>&i|+X-k7p&50c9ATnGN1q4q|599{@Qf?%#1fw`AH?R+^lm_v7KB*(f;D z6MPNq%|cG%rDo*EzWtVFFvsk)yOwgR(|HypgwA|evx^D(Hxc|YUBcEH0R0%)$15+q zEHBPr>nBs;QE0gtndCZ?ddpg=0@k_ySkmE~8uT#&dBBp}y#QkCqrbvex7=hN92`;ES$0OUk2?Ir1DFL4kkd z@PDKrhFRdGexKmV78)(2aM#bh;p08Vr&E8`LS)#He@il3Q@J;b$s`zZJul3fDd+9y zT(ta|B0YnbA`DB-%1bK&nKw5+9v7eHy)Ddj0-H2+|AsC$iu`gwA(1f&KFyF-seSeN zyZ&o=>9Q4mlW+P(S0*pKl3Jol7LcYk4^Trg@hQQZ_36*xa$SR5rw5^LGzb5@Ubhi3 zM7N+>Ol_99;%~{kLryDG@CPHk3ji0@bq{G=|LBih9Xo+x-oAOp1!9Q((IBL@Arhs% zaWibqd&O0pdGsO2gHs*9gn%dgo)2X}StRJ>p`Sv#JXbK(u@Way2+N~faAx$L<+aU- zD~ORsoA0$*wsGVM6>aX$loiTo?k+|tFM>k>g2jy5^1K!8%JNVfdBPGAO;_|!cW2(( zb*aCI(T<<2xaA^STx${5=}iTO5Ft<`g-B-O<{)CSl7L$)gbT)xCeI!T@2(vpw+HwS zN6fE2Wss<_4PRX#F`ZxJpe=Ti{F#;`tynFNH-;YiDcy#3T$m$y(y4pGL1G%q=BabY zQyt^QJLd6k7Ob3XOl8a_KU|KLASVEpK|lf*KvQz>{UYh8n2x<}+s7wW*km+K#4jViz^tzK0T`XtgTdYGJA>I}-B6DV3`tw|xY~SdgP3^z7 zsN`7}!Vdawe|F62`s&ry7&Iy9z0vq0KN)U-7)d+R@p&xI>20D;F-*(ZV?|DB6Q{>4N%?4Lnr81ve+3`-&P| z4DbE!?0Wko(#3V+AY0K@(h455ZhNX}Nzm3}E@>2QJi{5Sv>^5`!cavmSW||J?rSlIj{@ALWQ%u7vy&Ema-k_NJ~Q*=-lo5| zRk|1>=#u&2+RZoT`VLX9clPdr9;*NM`6iFTg?%7N)SEa)6y;Xpwj%QBEz@Ae-a+~B zP>DDd|F~&!h#2rU$$$D*?Uao4qC8Nmk?{N@OVSsKp2+*TtTGQs-m_bo+0`ma|VIW z5aps!Y;vna2ViA2?e@``l!9!nKLdNHd{tZn*ISr0Z}lNSDDwlJujGx}vU$brU_OIt zkiw>UVXE5m);Ai#Ty@c6JeS)WoBs-R1}C>r1gV=}dqKB@Olsd*Z5yq;ko;%XNyh&o zx)Uvi%4Q57(~^$sXF7kf8GIgf0hV%Rz4w9aTdLT+(nc@H0o&7m;mx_qv7h#5(aE%W zrNV*DHHNsC@FCzl){rmkXd(dJl8X^<$%2NK@vilmy zo7di5K13xEH6^&LBK3sHZ-yBwK23!1f5_MH-=riAQUp!8N5aeYiQK5KJSh0*ESgHb zU77U}MMoY*!~97E16Ib*+IH{V<*C`FQ#4;SNK7DWO@`Qf!G9R1ukn^grhPx8t~PmQ zxUyg`2;+RV07Y4Gyyz(o)yhx}B!OcKV+>VOoz=vjnpkVX(*!0G;CkdeYtv3@9&+xn z$`#Yv6ZUJ(&#ovr!o(>b1ISz{$XT5&6B5Fl#C~Fq@alJ|JF(?;|2I!$Vq4k4>z;d@ zg3$dYsoC4s#$mm=?{}y?X4S>~Nfga<37^t>Adi1e-jLgKr-{sUY+%h2cs|`7N$)v? za!NDvY)nQ3V%iQ1TgGUR3=?|jWajloXQ@{c_^w>L8mBY#=uop8#G3{L@U8JXxx6C} zAhUQQmc+^p+pSP`&js3@xulQNkUy^wG5pMuA--nyuosj?9EPW)Vux`RMkEnp($2!acII&apkD(pKb0V z96Zt6R7O37$~W;a3scP1{iU+i{P%N+2By#9gHKAp_2uSt>6JXEq!XFTG@2-9Zf4KU z4W_wIG4OGQILrYJzJHtgs5I7L?_0<%r5-LVpLodNqJ#8zDGX1=wu*TUHFxs8qKT)Lea}g=vZ@k+rp>LrNn-2J-mz{qow>Bb2jkunNfi( z6(fwrC{O=!OtiG9)#WMS7PB)L7zV8(#67KSE<)uRTRwO)$}Qsdz&2aRnzB@cg-J#( zjmyW)bvzwz_t@P*@E`H2eeI6#l+vFGer0meS-SLGnPXjy^1@SlPgifN(&#Nm!)FHT z7|i30rv|s#hq}a1)lYz({0o<+&jVuw5-Gbk_r|&3z3vORPLWldUd;EiZW4U4crpD) zu(Yx=H@^>w@VmwIxG1G*Aa5T4$gm3TZ+he@sLOj*(b-nyi>Dq3=dY46H%pK*Ykkla zo~VoGey4Qv>b>W$tTG#DQo{0>5~L)-xXu~%TM=ocep$LOF-vCnrmdX#^flA=*2933 zA{vV^KAk}HV|TS*e#s;Xv)<;j4K&f4k%hl8ptS>fuMA55O7p7(L<*o$M3>BZ3r`T} zeM%6kjvxxg{LnepFySyEuj|!6^(5*{GMOBb;9ZBK1jM=}@3iRG#Y&UXy(t8gIUBsu~1YD4Jcvq;Q(B-+Iwu$6EMiL#}n z$T^>k^b#V!Cul1gM`oKD+yEZP0H9aNyhDeCvK_=>*JMCM8FyO0^^%#6p&@^-r`u@s z?p#`Qpl*VEy7N9D$UT;h7tfxDn~(u0k})qjHlrNKhxaJAPCZs?gnQbm z-r$npl*BP{5I%rzqL<>gl;GNf;&D{)v}&E;JPG zWuLfn^b6JDdJoSP=(*p0`B%8n^S$S68Bk_h7y<)!!XHPiSTrgL=o*NgUO0VQ9);=+ z&rU*AoK7rZ$FQ7v|15#I`zhl}0@xmk2nVD!2lgmYm{y_Q^QH>BdNk`f?*h16OOo$X z;LQwE|6Fd%Z~6x)VAPQ{m_P$4`X*40m9k5LSoML`dazPDIjKr+Mq}W35;vg{CJIe_ zl_IJ;l%dyRq?syuqfOt)ko3n*_is5#*%@r=EU={H8T^Esz!K$S)14J_!fkWfjSb`V zb$M{$9vku78zu=A{Btb+3V(541i|^Cy<_6FJi7oMBC&P}V4fX^V~yE6^YVTMfOl7}!2=@Q?D` z3WysKty&>Sxl?IvrVOKpMHG!BAykluEZP)1h&?WX6^ai43O6r+eyIo?E=ijy@cSg^ zgW7jO{_m6Dwh_!1Q*@j3g%44c&ale#8hu^Mz~zgPi^8Lrg9x|Cx*_0;hED)58 zh=-_ExbT({qzj=~apGO}bvEc7iXLdu4O;EH&`B)My?7c!yR&c}8G~ z06~v1$67#G9TIhAlIxtaMeH2xk%7#S9x!tV95n$!1r~@gD%+aD8Wc#?95;;t0ssK* z?`?M{$_lvL{5N8%1Z}DstncjWKC&%TKkbGl6k>Nkx`$ZDIk0Mp+gJqk;7e#VN|*Op z9$aR*$V`og@vhp7MEhKw68ST%G94O9hWg=Z;*~8$_X6Suq9pyJPHm!)n|8Xggip?cNV@g|7gI`5v71Ca zMncn?CxanUId* zndEYDo()&oi%3*DL+0Gv)z}hrLms3s57ILYCioQir+2hL1y7TBvKTO3#Un4=?XL5j z+ND&<{1(sawPrE6+z;`pER|z6G3Fwd5^CI@X6ViCi|Bg84{op!ucI34kth>i_<9EX zh?&7{N!0sfup_ET4_{;90<(h)d98wA@0#MXf=3C>*A?jA?edm1NukvfeH*9W^o!mQ zul=J>g8AqwQ$RyCEgI#u0_!cVP4v!OGh2vl2eUUD-YU!BDoRK^`=a%H2A8UHmAX&c zcOf@9oQ7V08;Ru!=L# zxE`og$t^nySZNML*$kJj|wSQfQl_8fI-5drt2 z&T!qTsSV*kENH#zQ#HdNsYENoxd^7{S7I1mpSJ{riFU$DNt6Kjm_4|KEN6b z;S3tEtaNul$2brpG*oL^Oxd^aK&#K`Ec?<~9zp6a9>aFTG@8$-0B&^}j!qcz&mFb+ z3JsqV)Uw6uv%66%uyEY1P-jJLG|>H9z^@E|D_ok*#5?4nM0am5V0*kW@N*G8+RyGL zD%2vR#G<8vh!P;8rsa-QhC2lue3{9YW!7BoDRU%P^TNbH8HhSY2I9ut$w)UI%FB~& z&X1p)q=fHO`%!LL^aMC)bVw6#P0XWEcVnd*sP`3r{s@NjKz3~ht45)cfp+laa}9RdeK}WEOmRNPsmMO7{^__!uMG9?)eOX zkR5=VW?6F5IrL@Eq}t`0{^Ho{(*|BK1kIODln!O z`w5D@qIaOm7;!rMAQIT=5HY?3D%ur2F*)HsXG;)gN>C^P`9~#l$6vBctxov*{YsVZ%2&TQcE;i}@H2})f1ZimM- zSbaLT()7Pc2_3zs8!er&E+LAR6fM!26boTMJpQ{o^_t9E;tX>;(uPA%Wv;klu+zHPp4`HxDkHNv_-zCmfkZ3*>i z3e@;PI%6aKNVlp!3F)k$OiCz$swd+;P8vig4cDRWs|nynTw9-+;%#4@5R*z;$S8g# zDkFp9z6Ic#0tj*36eu7ShLw_z@%NUrZ?FrRu~M-E(PvVEvJ=JcjK@@aEMMzqbhomc-^q2iz zK z=l3tXAD_qP^LfADujljG8ZeHF8n^F%8>aqj@-B=lXo$K?tv%-azjAg`E+$MQn{+;>z%O5Tql1 z96mE>$66<74-pbL^G*8sA77DRA&cd(th+cZ5WIc` ztcC;0(7!PQ59>6ht4j~#?#tZ`0Ggm`CPC&Frx2^Fv&&7oQ~=M#HV)sujYO_fy5Vi) z5t2!Q;K`<&?%W)g8jlcd>0}zl45uq>jAp6Wm2hRrnzGvgnbH)140xP_jHf2DA#fW5 z6oX^xWHx(*c{RDOf0~~#GV8V2#wDyu2$LwtCanKD!?&m}L(G{SMF zX$)KkkRioudO~Gp>Fg1~g0jgY81CURBTn`C09nd?GA*zopLfJezZi|It13Zbeh=K(_pPN0YWQ}QB?}@7Q@XfbU_r-k;6^7@fkwvp zekO8*6&4PLpd`_V>MNMRWYjf`cEwTYv+)gE$w~nSl4LAr_7lM4sd3%|h4~|+5RDy~ z5JmeO4y4&^M!J1qRcSnErUI2R+t4{Zp!VhEWJOAPw`(b%6_s1inE^txd-*T88kTNw zsSY^raQWpol=svG5GCV;(pA?We1s`Q>dU>cuWDBCDbx}WCr^=qdmr0{*RzO*PZ`{> z>VBASv&6GyC__Tamh+g}*@EwyeL_|882Ij&C;MUpF~ZOA1Zj~uh7nyjY<6GzI-EqA zduQ!f1H$A)f2*ltxSPYc?dW~+b*>S8upe0Z%L?V^B3AXin4bfgowJ`T#5KSO*8pu0 zV#7LX{KN`+*-yJN(_D$_TcP3b?Vw41$lRwwf~XY?Ha*|z6>lK1Opf8=-D_(rA%xz7 z5;bwCbN}=!xjMRhEJizaG{kEZiW1nr3};hL?p!^6CPLIcSJokeaL-Jp>wV2ZBFO`W4!HB>6XzGBRod0S5dAZYeUIuR!944@9CD5WdvPXdOO>91C( z>VHv5W(~kYRj@&vHt2qlYC0{0Si|ZVX2>0|M`MRfCCSM40-id^2^^6XW%dbfB5b`~ z(cZNC<-@x z!Ue~{LG|>omo?mGkF{pD9CpCkS6{;IaL3YepUa{`Vtw-(EZsm=_X zFu=gel?X#_09e#J)xBvr+D`=*VBXO%Kuh%DugLcr|M@b(=MgcAUcwf#sRLl)&~5HJ zs0N|7syuK-{o76g23pT7k=u_2`vWJ~%*%LVGgt#Tf$Z0VLor)>@ftQNy#1*gms+ew zIity$^2}|%lBQVc`91KjR7mjmB(G015rtDd_^ua!KXQmyN*pu%!0uu9&hKdqG&c=h zy)R`4e_uZB;4K*H@F#%S%=awocriJwa%L`6hEC<{nPpLV8Y6y4N+fZ}SAEGdz42j< zD*#gdT<2*FFM6;0_keYEUh~TL^jcZ?A6s{kBSR$~-?S^pMp4_i^R&h546s*wl#mV) z^hwyS%vUzQ08MI$!A#JEp1%sTc0O zN8_hN@zbMDaDAM)Edbj(>Z);D23W|gC(CUXX*m91Geu1r3!7o-E0`s*>NwE2wCNPHgp1-=m|)lu3;?;6W(DKU|b zc=Ly)J^olDURSF`j%VhhyVTf0cKcl-g)xuRq;Yvt_y*7{@$jw4;WHT%wQ)V>Wz4Fx zrkURyvT>CcE{XW^y<}!sk~7I%O_Zz?NsHaOe^fL`VB(VkM7k7jz#-$$s|M4Vu}u$; zl=`rR9M*2>P0on5FS@B~x5C!ZyC8Wtp6z0k+ zG~xsJ3}Lt2+v%XCuz;dZS20`Lv5eJrMvcIJqNM?y$|HcuwhIx;WCjv@%i&R|lT z5ywhUKHW7PzmZ4*K6u~9cmPGtPW6F=Y{L~{xlmoLt5 z0ZXoa+)u1Kr3E%1#bBJNf=84wQ2-p!Z~TWcV92pPmLa~2M%^mQ9-(CHbvMSSax*Aa zbpXXueIYEnS6HDi6Nqz;Q73_w0boU#690ONUmwZ=2{R)-$9JZbAw+&097B$bSo5;F z?guG`0}?{EAf`=11B{%3PLO{OO^vO!ydQcZEF>h>83`x7HEeX%rEnsFn=LwW@0pxP zp%-;Y+^g;Ucwhv98mMw&%t&iKKnppbe|V|ekC}cq5I~!uEuwM;o6%h{PqKK4L&75u z=m6O_MLN~W(~=!0{kbnlnD5CB$hX5Rly=@htQ{u7z0@7kr!ktP2O-wd$2G1}&vKGt zE+UgIAF-&1k8*$$rj1H2X+3@A7Jm`P;)9F3lY-ONlRr6!j_uSu1pwU^PLd~4#m-2G zb>(q05VD=rs#HQjqEaE&_=v)tIyO*VoojVs-mBB!<$EZMI|iw5feFqQ1O^zFM_o0S zj8IK-6@xh>q84<(Pc6aafzRiXpOcHat^!ztBO&_u)U#_@4-UGJc1iWZFneT@8wtkE zBdXjFv`IELDlDwA$d?rztS>LDJIu%q9FC{}3WZ9Nf;e9_NoJ|Snozva3Prz;ID5CT zV!^sGMeXPI4J6gr^VmBQ9H0?eEIzs&y$38eaIhQX1fwnL`K8oD^Fk9*7#d_2qhqR) zsa1##U_fjjzU2M@Zr!VY9i|xuZuVU;^XZIJn*zcCz+VdTrIvN&dM~6pA1`Jl zC@#HYl9N&r_YfU=p=Ji8h4)Sse!-f$Hi6rw%2r%T}^Q0wdahuiB^*B&ytOhmG(^ za}$Sal0o#RG&Cap9VN#TCL5FbL?tJ|)2oIrFB5Gkh3S#q_|ur;kVLAcJ=$mINYrTW z>iZp8-OQW}y5$fo+W(cK-(<5K&PGu_BhDo+Uc1;dDVh`tNMM7p-q`91B*uHvAwMD1 z7PNVpn)yG%i;SuJ58LF$YRs>90dRn0utc@v`V&W5>*P~3J8$T{44(Q%QJ^f`LT+~; zDXY^Of*Mn$>2Hxb2(c!p804M+M^nQYTtUW`LTBfg4G#pb6?3vWB1zyIBCwD=+j(zA z(X*@FmU6AW z4Uz{quR0-u2jUtyESn1jql>3k=f9Y%tLGSeT?c4<=WN2kU9w(zXqPRumBm^LOJ~Sx z{n9-&Pl#fJhA0BL$ZFVP(O1lSSFiSzPZZVH_Wn66Pc zsM1!PI}sewf{pWpV^a`wAE|xzEFv)%+co;-2Uy*;)j7jOlDqp?f9^?6Kx~aEHz@7i?S?Qc<&$ z2FQ+4BgLG+kVy4dw<8vvOv5VLhhE-ZJ`g|Ex zB5^^q;te-X8j7PPK)0rNgd%019B&CL;?+x8dKbQRq2wZ~DudcY2dI4(Y&UaIHg~4i zFMQ2r4SIVlwdB%M)DBq! z27^)rCb>odD8ESeIq5X?mfI=&`{LyevuuV#sxa;m>5Go@jbIs}E$YM02exghcKkpg z=NN-kl2p!;4v7X*0)hBr1J>bTPa)b`F@rc*#95E5PH4zcd>E4TiWciteB8ObWksUp z?a$};d=pFH&iv*v20UkMa5MVIBvap+jDT!YN#rX$AZv={5*})>N3||*dxe_VHKwLP z?HTGhlTEtJX49A~0}|K8pLvw?uE{zJni5Aa&o>hu)4d^40#YtSIaEx3nAC?NR@ePw zmWZPoUV8p|r_^t9Pnl!SUq;fH)@U}s+&F?vnC33e0iD;X_$Hi(u* zH2^Rik^m$iW&v2?z9xlZ6Z8XVoA>y8^GLy-pz2G^64c%^m$lj%+#E>U|P)eG_cVs zoD>l68Nk9mt*yA=H+V>0DsH$amU4y^BP$Mh?Jq!&#RnIwfnoMK}(CkBg@tkqf83NnGGR@QpHd+ER6gdx47@^UZ9dLPw* zBl1|UICorx#~US5;kUiT_CPvFNPGQy2M1ZLm>SY^HZz6M&9*F{y4-99)}@1WM~s!o z@>xX7K|RU)L#>D%?JT@xsXaJRg@$1QFQR>wZZVY>x8Yi>VI&r#E!v3$J@gI#$5jBm zW+lRsYRjK2xKn-S@N3egH?{gMp!@ec3u&*`c67GD%6rGo%fUO8KQLZm=Gp7zWb$rv zygA#p)v(N?sd?m{UdyC{w2|tvP6*ha`7dZVt5`W8?xGfbeOu$CVwHh+ zX0>)5$M3sY`DHDDI4J;l-p7+F)^5^TN-u)#D60(_LWPI1{n(vFS;>|PO5Fhpp<)(R zF63uv2UN#YT5pM|f)eg*=?BEBSAkXb02Y#8me$w101dG9t&rRVis?8Qd zEy1naW)~>d*cZCMIfuL-CfS*#H~O&MKd1WCUmQ|T6ygzCd!Y6ybSevg6cRMx9H;BK zQYoAZ2d9UNDWWNu=W{o#M`I`6W|IhD;^MXAtA|O-muw$N5TS4G1aUTkPwzb->KZ2r zLv*U=^+N+h@&L~zffseaZiLtX!`Li1MBuhbDcmPw@fvV;Opz!1fsy2GtE97LQD00_ z5$vLGy93YKzyOD>#t$SF)Y`&u2_f`YrB&cOq}(S&`ZdeM0_M9UeAB^SB8QXLiCg)6 z6;&jU7N7dvWHr<+q5T)Vnj=wSP3<`8J%23HhaLO^_|vKPS<{bW z4REa*y>Pm6RJc`=|Mr?l9=jj1N_MpcMiPg5K>OlfshgmCy;6&TYUanWN}bdz zHJqEICmy;>*0E^pC3{EF7WS#?d}=S~eB}{Ouh_zlpLXo48ZfT<`uT__D#d$0L5Z?A zuyNiuKIQ4&IOtJ1)KErN>e?RP$*acqp;@4!8&`Yi%=dA0l<^(@C?Ie+TMXW$#%#d@ za&Yi^4$A807(mBsaW?SGrWq$5?oNvGqSyJ(b-Va1esY48Unmc%>-23zv+Tp}Ds_t-=l?D?JV?9MC(DO}r{Bi-YqF5dS z7PW;?lw>LYfHkfcJ3!a{L^h1$RmmeEU|$UKm@E=k9cE0W^ZAR3Z0=;HN5oUdS61gn zefT`}VEF=$k_hSI^cfEvle1{c&dUCs+C@&C+|V{7fKUKFhZK?{@Y)IB-edyz-LA}X zYyIo&XL;_0HU{9T-Q`PCT?+@Cf>%oAdBs+qxhIz;h8{W@0g3PTIoGpl2s^f_p5{D* zJk9nnpPiTJR$mhfsn-7_^O94)KD56^e)eG>r*8Fzk=r8;Q+K!Vs}2M{{|YZtC;93o z19)%padwXSqM8qpPcry*v7Vq`E~0HW?e$9A%rDK8#<}(6|rv1dj-foFUej1m;>cmF9w^oGD16j(`R9FHl(4lIjz2BI>1TR%T zbz%u()ZPa3>SybKm!6d+*Is$h((r@JvaOa@-_kH8Y--ixwjKaO_}k#m|?z|^i0BaCHeKwTi=NIKA03gaj1)Jo*G~xG_T}k z&KpSv3$WRhnPX++oZ-@5f0*se_F*=uO(BJ6O?}fs7afOTsD|Z37wP5J;#=P#Z9l|s z%=%`cp(lsbX0~svG*`1(O+H7|a|$u~_UnzZHX z;je?Aevg;R`6XKG5Z8Z7>!V`B2><{}&Xp8YfoWm;1U8s8*~jj^ALR#V9sbR-k>yDO)m3iSHE{_uo-97N_Yz&>Rzg0|mAYK~c}n ze=$IW=0ZHl;B+1uub3ArYa@&7r3O~8Xrvq_|74KKOxcWM7E?0xG57E0z0=^xEF1KK zpv|KJ3(pn_SAA5X6VgXyK7d`T-Zpk>DGaOhB*~oIai*Q9(0IlCL*Abo;}WCNl&A)0 zi%zNkZyb52oQWE6^&}na8mrckfg2<@bL=)A8k+T>;Sq(jK+jFEL~gx{u5`Wd{gqi+pop;kK5sx|jxE}@#z0~?R=||}?ELV>Lob00H(z3}eZ`MDI#N@I^ zl8vzfQ|9~SLrM`UQoO5)w|p17L8XiysYKH!mu~0=crie-B#`NyVFOiSFSO{|j$cb( zkBC{LoQap+aN>Gqy7cQuH*S-yRfoRFTRK2`_rrJarL*sf2}V2f^qm1S)T@>6AWQz8wGC-* zjH|M&Oe^C$A$r7e;V+UnpB`;sZVsFfYEyfTY5(*HC(74&EQEpXsJ}KBwM(@4ldH3w zdbg8Bq$Jnj{?|aju*g$)h!X`Yn@HvI-J|iPk0VTyt`%XHKLO**`-KOZUigRxb6s7a zQH}$ybRf#i6BlCT6^f*&3n3!RsVRY2vKFq>070WbBK5!4h}&Ergn0yHnBLHXGv~u? zYs0?z-al6jo*F$fGZUnO0^L~hK7OM0_Y^dmS@o@q%3DE+5pFY;D!iH-C-+fLbZ$#A zM@=3O6#cY(G`3Fb&C25_;TK-^jhSgu7vHlpKsuoV4Pq*T0$K)jEFI9MrjFA{RK%If zcQfy+<~FCiC;TVLS(s0~EqVEH}m{f11tpNzJgst|MU z6gk?M%&Im=b%>quV~H?GXh2}369zc8^p8D343VREgNOF!icCV`OUV<;NydcBRS(oE z*r8As7UK1I^PPa~xamq4v5vJ{``Egt2!1i@a2m4uv-5$^;mDxMDQsa}NgrFHTKQb} zyw!`9A>0Qu;rFgGI#IvUtB<|2b1K6C`b`9R)$t5p_fkX$`-{i>@0v`_C)g<6!7g*e!x?~ ze8=SAMCLm>z?9D9$fK|)GP?yz8%HceikE~v2FmiYVPY4)1l->th>WY}v^6EP*R%RH zu})S_PQn(ydp#I-oQnsW23Yb= zu+z8Y^~5_IseX_Icmac5uy?c9sxo#3KEz=DWqG$04_l89ro8FRDY>-G2-`}QB=+%y zd5a7P6P8VQLLq!BZ-nV4K^$Bvg1{y68e98&j!yh3K);%vkvs=Y%-w*OP7+DZ(DS97 z^i0_L97F_N?R(cmKV;l6U^8u4YxR96-bXZLjvO9&-Bq_Fjwd=U52mj|SaL65)&*1% z4A1>k8zQMK%I-bB7gw7=H#nb zdv1*~f@fD%YGb#40$>eJA>UCvT%|l*hN$q~fjGRmdr?S$dtETa5DG#u;?0>Rf_{=d z9LwC6Ahm2G?N}pU&;Bz@wA1beDTGCVTvqeu5i?2G@*09j)Okk6(t+aZtPm%0gKU#e zuN~BFB%FL>OQH7^VD-%$^)BPbB0(jQzzCT!-M-wEzmHT9Tb?&iBKQfRb=Oy1*%bE zbUSUdD+n?xeFD{Zk(x=rvROZ;SYo?_vY|-$_p(cd!ZyoZCV7iSCKwXo9tGyz$MB^D zZq#pjC|Y}XY+%z^M3byI01Hs*hjx_FSlMMZM+#MTt4}SwUk&STwJOs7*<<}kpk|yR z_XFd)RGebKVUb-pp8@^txJrNcpkQb5zfUjyI1^wfZmEpL)BwWHK#c#J__up+u^z}(o7j+!`LbyKb4Tj3y zRPM7%;f$r}h7zj;6FyJij8aJ@@ z(vOb6Sys)Up7&pyiYu)w5ijR_Bwa@=Zwz1gu=$Gp#FZFV&*cH+6{bn*$)O`b=uh)P zm|phSi9cF4ta^^baON7Z?_ubGu!84yFK38KGH-03n+sU$xB{$`ZKQ*L=$jmaq62R4 zm7lA%jdFNhRw`N9MPw|mz3vG}u^y4SI6IRT+vm>PirIz67q;rxEgA-$2O`1y@{%iY zGT-k<1mHvTZPWRga+@G4G*#&nKErx*NxBjgLgAc9yZdlJ1k=l!h*{35$ZK0D;;DQG zLuKT~r8dhyp0EV`xM%$^u<%=K1Qu|6Bcb&6@au|#&&%--JU!ojl66CubF9-F7wDy7 z4dxXEdcjm~{i2<#v8Op`r~!{wh&V_uLjcQRg| zi(<4Q4F$O_ME3wVr||3)<$#i{v5XITD5ZgIEI&sP!G5QYL@&t zCzUuvYKy+V`J_EpRIhMa5NNiRWC1DBgV03C=3y1F4a^DHAB7sbK9!yvO-BE;c*Bo) zBh6?KS3O%w9)&lunLgJGCowB?CJkOlifO!VYY_0x==-?d+5FVL5;~H9W86#w4U%KFNJay>EUg7#q14Kg)FCyjsD?wuSIUuBYe<|jnRsx!He+c3Ms54ATH8K<|Jlg*$3C6>}h}A51hOk++aGfcKA2{ z%g`sYDP_Ph@t^*#$ptd!ySdi&g=0@qsg7mLj}KB(r!nW9uPhSHvqD|2djQ%fr$uAb zM-1R?v@BU3m4+bMDhM)~s(pNm1v%2&Qw#CfrYnAZvx4{{+foNV2y-7uy+4yA+ugL8 z>kA05Y;%s2b4CCtUuUj{v{7q@>QqU?BK{x5;g+k$Ck;Q@GF`mWlN zuaz7M^gY$xoykcAD!j_kzRO~jdCD{zh;*h&<7@SboR>&m%n(4KLwgZPDIZY(EUa+D zkgOb2=G4Du`+_6*_{#8&Cf4lc?*c8!uCVR~mS{jLK|rt$#P1=q4OEi$?tx-dL7TrNc<`^o321)S~a2XFh1c zC@x&1CjQ6Q=Mnk>nf<|l6XVG9pq=a2V*1}0u3vZJKT-7#7*yUg9|x4D)^Zmy!I5~Y zP5fDY0uErL8rsJ}9??pph>sskJ&e@C#PE%nIu%Wdm=%a#&So=VTUF^g_P(xWoN)Sj z_~Lwl3SU`JO8EIS$16r?k8y0L>ZEy#n&qp(v=w6ny-sNf4`8FQ4{)g6W-@K7^rp1Y z&W2K?$IlObqlmx@F~;%^nhKhIdtAj_mv5~gZg@h;o`{PB_M&AceUci@0>8nCSal%9 zy=Q|5R^bMT21G^!e&k1|ZY`t-=h`|S#>+M@^P_6i{U;mV)?)c#E_@Q67?0G#4 zd<}_YLV-r=cq4mvBP~5JGTYYwoLc1fNW$3CYcas<{=vc16B+kxvTkh<@83oj-nBn2 zxB#g8+Xa?QpY@~5rT$SA?R@4b(PjuaHemw{unK@#f8jC*5>W)Wv?5`n#+G354g2E# zKpRzcg*cgCv=?FJdVZOMp;4=>apgvd?se%XED6RgaQbR=! z^~F}~ObL{Oyh@>#fuOL8%ZvghfLIUnJn2L+D$k!FCrDf<6&=rW1|eLFP1=lW^@ES7 zTTHWhO33`Tu0<`EhVde~$m+L_>Kve?O|wX{6hDqUUmw>R(U6nPC!^}iV{2fz$YyQU zDwgI2TpM)c;}8A2cpdN>cj3jI27@oq*FIj)O{RWp?twbup35ld0>+M4TjkN6d+z@o zm<<8H~ zo>)K5ee~pu?($Bbwcc*``$r`D)`3@ofJ5Gidi5kz&l!gmIUdOTrSmyE%f={Vl;47< z2J2v9SE>9gLusm}chR>1*5@KG7g|*qP&+d3CRsF9&7Shhv7<3}X-c6Vf7le$nEAP> ztRCxa?iw{8mc(yFGK(#<;Yf-p;~AJ~jv;8~d9gghwp{fF>4J(yOLO+KzSRy9%vMgu$t*umQhFrNcwEMGoCRe!HwC3H`Fq56yDYv$@@rcB+ z$_#^Aiz&L02frpgmGnLy1IU)L*MXE8ozuau4`h>+RiRr>6pgqt_nS4<2y6EO!kih8 z?faNw?-vVJ#T2_2*c!eHvz?kvvlF%|5tXb0}Vro(==9N9m+jUGCFoQEjAnR8_$$uzllcQdEFqWHF%jEi_ zGYmZ7cV6G-rbQF6m9Y>Iiggz`*0l;>pbf zqwag-X)Ck0Jshn)`E6+-5rJOD>$#65S$a7ma06IAufz_B5~tZJ9^@G*1>Oh&OKZ)n z`;jY#@>ii}FLC&6KwEAGTC4c-a*$0sl_r16%8(I-uKIZKFTfjMoEd0AYMD@65MmK5eqRa~*&S93&Lz(VYne zSUPdnRlc)VuyZfd0BOkSvBhwFvF;g_O@{V7l{HR3G(uzxR_m8+w{kJ^ruhZ#6V+wx zau#P_QR5+ypyK1}Ng`Bk+(+M`e0rE?&sZL0>9j=x}S{2N8BR?zYg5E z=r1X+>$sYHbH}^sWz)O6tP0M5t)+y2SekgeV&#><3xays-K^_BoYUm9!=4HJ6sHpO zh7q|S<5njTf`6J_9kwc+c(qxNw8)$NOe9tmxgH++C+?Jde$`X;-bc5CKqao$gvVV6 zP<{NTk8KUo6^LHgKSQuI#W$h)pk2>ySVuKP8}!733hZzdS~bJ=o!u{9t4;Jo$q9OLY#OQ_<2ueVd@=bz~`A1v_3ml?f@SA+?OF8#cSg-?7nb!+`!x2z8h1?yae&!9Nn z``FyAOqnr{(`}4%2igE6apzUg!+XEjo1na8@SU1+t%SvKu9|0G-)sQ$YWWAx`=S$O9ZTQ`n<4nY1E%W($2q;yZG z2PPwDa+jH*ZTavEPDYP%+WXLYMQ~H6bE0+!^kqe*VUjqy-iUrE3Eb@EeqOroPU8`} zhlVsu{~JSwQvLaT2js?QRFe;|-oZ{+-fLL&i3i;^QRWYlf?hQ|aG0d1L5@F=nhQO* z+b^%O&?wRYDx8xP!H^7a?d02vOr)~%RoX~f<4A2w=`%hVGW-o$gwcVABy3AlpW}u&;1OxZs1*@1`+~^S6>Y#0oiVnU)6%R$(cUmXudbN0+4R z_E0#s$V5d0b_nx}>cpLTvxy!)jjbz+r)BioUzyc8EZ2`DGXuZ6gLHR7Tt9pYDl_`= z!?qY_^JNw#%wnQ)8&S7a9gRNkdJ%9&O0AMB2l)f|r*vq}hUn$Ho?PulC zaFpY%1GWf;;|(U;!B9wmLswoMntsVNkbyQoO?=9PUt&S*Fc9we8v~bQ3lf9rb3PRF z@m%lvYU1&DxbE)WspY068TH~F)znq)sPzV=!NAmk`g$y=8F>#UD}`(D!d3N`V7)nsD?Pi*hwyv?fQ3VaRu0BUu%`L0Sx$wv zN0)uJlQYn+?dS-+4~&NLYa7+@@5<&Q-UvU2TjZYavVlc^KOd(iKZ@cgbu196IsN73 z3OfFjq@U~Ek6P<<%`=M2){VM(T<$t*SbU7IDKzqVsO}lpbourV7mL?_mHd=mwJMBr?Co*t ze6sY->mUKioR5GAS#J-QG7+YM0n7MtBNCyS(HDT&khxPyQkld?UfdX;50|#YbC34* z-Qd4ve8!0FH7fJE^3Y#UF8Uec_C7l8^0mv~hHNXVNlw?VW&mK90k8=2T?ru%5r3Ag z^JR{9J1Nn2 z*BeJkfd7uaa7=#qY*wi$b2tj7X{1Y;l@}!FtF0(3GxM(YVpdx=;(j;nlHuK z^ZAe`0)x4Fk=N0tpYSN85?V20s2gJHEke+>%t1Q7@TysRh4hqce}-JVHEc-9Rz6eNj))H%Rcej%_*&a>#Z) zQuoV&mQu9rgsSAW%5U}lf!9d~RZgf&p6PX$FLqq!BkJlfppmPAo4vPX*Vz-dYiF`@ z)IPRnhuYc+c*&Qs9X`JDd!Cgx27w$2Cs-_^{k4@}vk69CYv&Pt_452xJV)VmEM47j z%LTjs=129cOZ)b9%@6c6nt8L@G2tlLGE&Jc5Ky%V_0UvW-^;X$52_o*v#g28NM#=! zNKajtR1D2|XS=MYt%p2w9E6t7Jq|alU_mQ~lxk%dXuLd7WuFaS*K9JZNHs3~$bG}+ zlBu(|mq4!c;fKt)D}-9@E7g;eB|czRywA@Y`Ht*F?8Pv5O8NtYnx4<=ywA#b5Njs+ zTGU~l_(w#=M z*q#F|Cn4AArVKc=_}^FGfy{bm!vJt2LFyrP!!?TUZM;EQGq=6?)+qlu8-`xmYmn{rhdIa|8kF(RwSTYRpE`aP*CbP@M!K3OJT!2O*W zZ*VGat`6pkdDdN*4Czef&{YN|8n2y}wK(vy%Zywl&iZ$%5go}X>cJEny`?qz3!C?c zej!FPFX!3oaeQtJxkj)4VK`&hZPdduD)O~B{HOT#MEhTBod9Se;t{&7^!X+gCF<5J z^+bQ$9$fYMxV-f>UyyW}UVX3ZMyo7)pL$4JacA2(i@wkCR8@bWzs>!nTiW6Hfv(jK zNBfh{Y~agvT{dO+$lqY+(1NUPlykEk-jE&JH)P;_=4SQqZJs%K@9ulBx(OTY_hsP| zHw|Y*TF0(7Xjnf88Xg=$wAr0EZ~f!aEBENh)-nFOMo(I)dcOGnWj{BxP;lo2D-LlC0^1C);-gnH^yF{>YU#q6?m*+{| zhRf05eky`bC~)^{N-o>uIicX#LY?%?0bh7LJ+iR}?;{rM_;#p+N>?1`cW95!(j zZZ@(Ucg)gVF>*Ty99#7^(_txjyc7vqqUoenT%FLZ=7Jbbb7OzB3ZKMtVf4EzROPBd zI^C~4j+ijr(~>*ub3J|x@FM8Vji=HD*yms0xOf;oYpm^wg?@`G-V}zXC}2K({*}Qg zJgMb=JxL>V^|!^nn@1&xY5iU4V;-POfxMjz`Y7*YL;kbW@YZQw9wQ{ zvz+B9!%^ARva;!q_vib2JdQs6&vVZ`_nh;(_nhZ5{82o!2Z3G|YW#V7ak_Yy_FroE z?yNQRz1u0-bA}8MdD$h<-s=hTPE*6zZk>zgKUbPwwfGQVrB(ZN!BR2EtZB;d` zDQ00sy-mP7O)G|byHy`mx6h5eoIg<8vb2fmP-@kuLkA+nP~=O~G_@-iR}~W`MZZP= zRwQETE-Ou!-PvE}9jJ5hP(o$PjA&vd=(j~60LH^3KzB_}$mi$r;ca@gNPie(f7IA9et9vDpS?J zO{_C|t8aYsOuEahDD_-(*eT|hG4@-%i6Qsg*l#P^(!8(q9ChlJ)$f~5pFG#w2IEis z`13C9Z=2@c_jmTkuuq@blNLO!k@NVJ#`k^7fj~)2-@v{W#Qa4|#MPsk;w7^^m8&AKtZpP(W|`avkS~(V;)aR_F1WZ zxM4NRF}RacceIDOU+D=ZmsD}*<+XgVU*3Pa8T)GWe-~xmW2anAvI83^`n+xx&eg`x zz4-cuf`0zu>w`ARnakbh2;GYkM{hqw5yaKy+&*^Oy-ODXatL?#9^mZ8O%~^d~{~IytVs`x0omAT|d42%RP91}r zmE@2DRFnR(YW!0BJ-ufA-$w*@$lmq4%5;HX!I@lq|P-JZL#;3*!^&3zoNrB+#e zKJlU3_KnrU)XxiVp51;RdOPp|T^uE@hHnw%+eRG>5j6J6#sM_DI;%4Kc}5Ff-OmiX zkFSKKto-`}MxC6}jhSI+dce-*h2AI1FOhvIO%m*def_dgHR@fC$_&Q4X-Vtj=Wp%C zgO1-BJp09Bc^^#rR>3GhWJIVsUktD$;aP(_C6r+4Q^J$CBnhEl042!3wJcTqTywNZ zT`gebq?TdpNL~eDNG#)pQ8M6oZQaov|CG>V_^d+3Y@4~>XNca9ZpCwd#ikna>V}o( zVtTNA38KA92fHMCi+m(_8w}ugWF?E~q+eD@Z+m`nVA9XKMz;LU!sTvTP5;393eK07a}79pQ;? z0WkO_963a~F8Du*5FV{1>oW=aIKwi7VIKZWdnE7q*9X_4u5gYXyu*9$)_1~UedqC@ zI~@TjROtNQMN-qTl~t3IpPt@coR0=?+&uc~CczJnzf^`7X~q9_ThQs3;LI+RCU2QZ zKxO(K}_H*XDfo#n&tet(GXJy7^v|{bbmOfB=_WOBaZ>D4~yEbdp*ffg>5v zRoAA~Tmq(VJ5{(Fae`id&=F^v4~%;F40f`GNBD06WJzKzE`lu=L6NVc$o;nlp)5(p z459d}M5Z8XKrPrwb?(zE!1J(+LFcIt-Z#CNvZ>g8@!NFIOu@y!7K#UD((^j2FA+a^ z{&P8*X1QCo;JT{P+dBk2_J>XgsbY`k%MSTTfaYSt*8Lj`tngH`6RI~ZUiM!9X~#T= zy6{}7Zm}plAw=_Sk72AhN9N(!bCr@6G;sni<W}I%3|f|F0_Er} zVhSZURYa=ZWL4W!!tKpWTPvR`_3P)>bef%(c>YeQWL!tIeAMrGg{pzPQ~rs!>O$>T zqb!B7W^e6u0BBsOcO1ih-!igFPGt+DA4l#AN)$Q65E%lXgfh+-Hx~N;|EymERA~NB zbvb{knl@qeG|fF`Qws+(ITLALHGIeIz}#u1Z-oifPb}cCT)@&-#g?yk8lP7uNV^98 zh%W2Zk;<6c<@;&B|3zT45FKw&IEkoLTk@B*kkUoSr))!?Hgt?`o;o$CDYkF_!B>XZ zx+(Ib7VRpDOS1>CbzXhaweAsdMQ$PId(}srg<-NuxPY!+bzh(ws8KyCm>ui zUm6K}8qv1uc<<?Xth^A2-*xfp*1Y=2!P2eO5X1JvvUIF`$WjGeLvvF zUdoIZU=@I&ESCfjCjPno@Sr>d0jzs2+~r=PI(co*PcF{*d5ixsG%1L7wK{#KI`mYI zlg``!qE8VI%p^CV)p!xL(hwcA^}m||)NM3hn0Q#rKg-l*&WV%@5JLd9A%K|ll0?$~ z^d^E7glAaj_L#ni)Y3#IV~rDO%-!kHDz*=yIe%y2;rpLSqVlglDfm{Dj%pqqn=BkX zEZ_bvuqW_bPkFp)AHAGwv%@~)F!p;5t5)kL~p#49i6PIB^qbJsgYx^quQe=Epsx5!bYKN$r z)~Y`iAhkKC3x%%E5G@n>&VM5Moh-RCSmqR4PH6W!phBJScb}ZKFoIIl?&_1!Fc0kz zeM~uK9<8|G_Aw#}aD1)Trzz-s>AgnIl+~t)<@q(ZtH-Rem-4anUU5gc zQaD=T&M~cD@z1Pjmzz_CJe@O9$f^eKNKGQ<_MXKLwPs zU5X$s|E66T)_E{|(FGEL7ZKJ7q|1n&3xulFixWq31I4^O|K(OIj#_nb9=!LE{dufX zDfg4wZ|^Un`{=p0Mol-WDv!LtOFiMk+-2f;hC2p2CM1CWjAK=wm+4raa|z;ZC2pV7 zx&ETtHq`=q*+%|r{3=<#CROO$LNm*&pch5{`{TcmBRsmUO&}zUL57-6KRT+4F}zIp zV*g(i@arFvR*UEqAfNxY7-2Ig;Xn6Lk@TlX=c>q;|DP<$xKboc5qk=AX-TorQ-9ni z>j=hF3}gw}l$cD~C7SZ1F)=j%+&*q~)rDWXpIeW+KQwqTX_fx5&hk|a$GO~P+w)1P z?ZdInFm#3bnxu*tb|SD=3ZWLJ9CqiV=sS^~-oKi;D!BJQ_FmS@C3u_{#{YH$9l8Rt zwyDI@^sV>bD_Gy)rrZ8aAZ;EwB$`4ME=nz#MIb=8m&D;}aZVUx8fKD=7P?bRDyoSu zCQQG=*Fd2=W%8BB0pf;isTd&xl!|=rl1y?9Zf{sx;&eHg1M%Z`53b&J;KS?4Xkx9( zU4Ht5nTNd>?nZh&x|$Qvf($qTtyOoh@Y$bBrixzuQ{%ny@M9fC)a;=`K*;`ol#$eX z*OvC_fUspd^Y1?7iJA7ZL&|Hq4!G&f-@3J_eSO^Gd^Ds~QpI&M_(XAKFX3^hCBQhe z{w&-N?<3raKsJ#*^QW{0K2bN4(bDP^Me zJDv>c{SGoasJ9WSe00Y1UufsTW3N*dPhFDox~ZZ^NZZ`jZ8sqeJ;3Mu-4b0uA{f{{ z6unz~&vP5-jaw8-Q;dxlp<9ECZ&WHy{Z7=T3RcaUO1v5l{WA59&p1&aT)%t>Moq;| zSl)mr=zn(++JlHc|3t|kR2c&y45jO2tYNTJSg=fLunApE2Rg1slGOtbUQpB>j7@tOt#m2Tr{$2va^*Gp z)|=AjJ(Y=C-zB#(z=^2sX!%4HL={{dXlW|1;~64PRYDnQwT*j|ay~mh5grZ6NYS?H z@{E&rsxN_)0I)cGsQ0oiRu~kQBp=%=t5GoX=MD!LEK_Pl#{vIe=|>Eq?IlfxdIP1k zffB+B|1LkFm!+P|k58pROTA})u3flPO1yk9RrAp77y3+J_S;#uvP#C$t zVeEUyD2&zl})&jj}D9l16@h=^CreV1D6TH|78ut3hC+pC;$12!zN7o@^*#LXGR1e zI{l*K4Dmk#tmzU~c?tWEjK0fK=mm)Oh+l2u4|yfP{C!A|9sUbKkfr~W7FH3D$x|j8 zrreo@nLXy^Qm=Llj7i8DnI-qCoEAI%FBfj*<@rx6tM{+ZEx)@g0ZzOxSr)tZXOWoY zmGj$RFNHmL+|PyYTMM0SkeQb0UV5y>fhk?rQ1zZwA7uthJw*Uhdv%M_FDZ=M{#5j1 zvV(B9wZlK(piFQ{Do3Gm?8>ox%=J)og1E#Q@a+{x+5=drApXs zXST`O55`3Ran?dt1nyh~Vm=5&yLgDeBe09#QO_Buc9uxeE@hUGB9D)31)xV5Xf6QB z;VtE;A-iu9w!Rzx?i?ntu0#lgsO7?(Cp0mNT-oD)D@{aBJ@ypkhlMNZtvd05=!)FI z7TU?HMzht5>UK`9?3LA%N>2`x-vV>RUm9eqSB|3e&8rR?YE70oicfc*o6_CbGHYu0 zCaIZxtqval+;Fsi(Unf-z_n{X{@uCVptCILx+J+*4bz?ii{nqP*!?SHiLd~O>=t1$ zkK_T6$viVu2&((BdM4X^_|FAusY3wjTrz%aq zcyaQ{%kLl9DTbl*WnLQ3c8v)sG`2e*T9$OG$MN#a7<&)a5a=~H+Zu@v0L){)SQ8!* zSS0n6OGuR@1_<8P-!$8G^cQ2as@uT1qnqGs15$n?sunCQthl%U&~tIywBAAnCfCwj zi$}ZXjG6tJKJoeUs+`icQBAw~24qBHH{u{>MWc-4J&r+YG0|6CRyr8rMpGPUzey$6zfJ7pM4{!|) zxx%0z-27TOaxi@S%RFOu9tK%mx!iEf|3}l@LUrlphtECNgy~)6 zj5=(I66a{ff1UK;wN=1;i}rH^b)TO(=JosLzt+l9jt7(l1s(g4Y3U0P$;Bh$@PG9! zya1#QEe@Q+y3wTr@;TEAum<89*z&`{3Y%;h?HY-H0?|d*VXtB}e~_OQ4}4Me*J>Za zr8qR&1;q|K^8FUVcTLX17i}vv@Ump>Vb96OcfPeRhN|o7bzO$~xtKWdX1vWsf7QR2 z(!17hZAd4)(pM`z+zzNM!t8%`%eAru%=sBUViDXW@Yub~jz2@kMvp zQ43i5`gcLlL|mcf!)No0>8(Q7`xvB(2LM!lLZD#4XMnD-k_QNYXdnQw4Y(}ZeIzuE z14fwbCDQq14p^>WJ8v`@M?9Kd{HuQL@D+~=<=A(=InVSDjnvg>e?!gahMz5U z88Ux=uFkb|D{`V0nu}JWB{fIJhdSpe)rUv2Fai!TAMSWpA+Y_bZ?$8V)3>)0OMOtR z!RDC)pK!N}GR!Ye%N14NB2Q}Uo|VTFAvtS#S04v~&g1fLFzXValDpH3oT2&Ch0d05+oyo|@Wcr#@$kALS6D2`CqqHD z?xKsR1`q3j_~wsP*ygc;LH3qY^4| zZ;Dp2htVwKzNo(YV~&h|oo}nFrmUlci*g}R;-SVBA>8 zTjX$tYxMa;^&N~i7i5}~fR0$Lt;OS?r!^vv8-0pH;}FjuaIsD?E#UaT z44k6l{gaS2EBsO7LYAUsd!Ic#kvr}trQQ78-9KekpzA@&kl9z`xYAF644weEhXah7bju6owN&{^%&2LrfjY0vWI zFzQ{Ci1K?SwJnti?HgGU^yH`1NJC!I6;as^Kpaqnf$5{XjzzLl-Db?1#uR>a0$5lY znS-zi9dGEgILg}Fy2B((5robldnZoyCSXoF9-ZePDTylC$I>=iGUX4kmLMVuZ>3-E zIyjYzgV>G@Fm4>Y)$j>$J+8z7Yu!%X<)J&eZHi4y&Fq@0!Cy?Aysj9MSCk=_!Q;cI zcYJFWvhFC=q1bIgZ~3VDef)kXz8SD{ z;xp61?BvQ*r|F#QSM}rSWH$oXa3YTkMk;gH7u-eMY3&oO0e+W#znEdOS)ht#R>uc0 z5Rxc}GNak!J2iypM|v@?B;bq8Bi9QN+FI0L58%aci_P+eG+C{&ABjbZAeA*UN?NrO zCeZ?+l^1lTwdPe>X|X8fah4r!9<+UPhPaG4Lw=*>`=)HzpR`~L+O_*Zw4zhlfhcM#x5DNSfdsWAUSik2#sv~6r-;F<K7ecGFC67BC|vn4fcHYttJ@vNlmgLY_Cjz>)pz?VHlC5#c+Hpy zs-miVq{WVyTH9cg?Gf*xcg1>d0ZyPAC_ZKgnM!mF|Hsd?C?OcoBvv%Ey`6j+5w((k zmG++MQ`=wCe`$Y|yOTChWXa~RBo{Nq1#G}6ox$kva`2Ald=1<5>tb2YL6NCP4aKa# z6e5~gKQLTLSTY}W?GZ(cjsXJmn=DOHfCWRtndoj^s6|6R?h`XhtK9Hn%OU!LtV7X1 zi-YG7ILh=$gei))0kRzLSD56&Hi)|_JRA5h?^%gTxdv_jLXmim;mE5V8Wa^g?_@gJ z{~CZWU%EcLG<*)D>N6Ft(Ljc}(>b;W{G6QdztPJ;HwJ%= zwDZ=zb^wCa4Ba^#EOxX3EH}V|$Saba&Rgw?OU#fO&0ITo-BO%pDoBefyQ$IRjf)Xt zf>iKV%^WwyR#RUCWqJhAo#pHm%q!#MOe3&z*B6vwD<~HuFq6fTnf0b##fe?psV8?Y z#EcFK`s>9@tm2peTc*&z*iig1LT$)bBx{3eI5rE@?=*G_z+WfbJu%2Pv~<#N%&$8v zCvv`S4~)i(LkErnaf>8)MXO9<&^QR!Dp>p$M}ZrT_e*usEC0qVJ*6=~;z{^4=a2!A zYz|qhvoQ25+q|Uf!8~pnQdEv$^la8tAl<~l*gP84$GQX z6^HakP^$sZy^L2f0s!20{75Eo^3`y7I>LcJEY2iv7@qHpP2Ki5U^`{{=8B;0vFOt_ zZx{<=76yS_wCLw~Z)EG9a*;n8{7EAWyKkj%S?aWke?LJ*wy%duqc0C?)w|`6HgAfj z`RYqLd>nq#{7XC>A%{D1GJPz@>53tja>}R`JkEP<^lahvO#^D074G+^V?0Q!5umNa zf7k0dAx)0-Iyh?2()=-V$ewE?P;=$ijelu0Ah?c&mO%`D3@{`36y`_ys>*)qaz-mN zKL30kWJ9UXy$4SmTXDY}1gBH_j@7oy40*AE^K;|l*4H0gmDYf_8$JwW#^;~tUQsOH zA(l;!wVVzXW03j>-55vWK?pMO$#C?u`Y&bY^30B;{oK|!`oh);b4dLR;7H*MHSDbW z#GApljcXUq^~t`L5?KH%2uN_pY_m&h->l}29;zF+RGV>rD`ZGCls5!`44b3gU5>IM zCDjf=g3m=an+oT%ATiHqmOQXE6P&+Eljdvr@ZiU?IK@1;1qq}{0+}}Z8Vi65OpnS? z(+^a86?(FqcktfJ$-8*L|5PLwhwN;;?Q3>pHT`Vg)bA9H2OeS|M@eGy81&M**jJ|b zE}$pQ*rFjJnSe|EOTuMqa<~8wF>A2b_<{ya9(l z4G)hXZ(f4^%-uXy{*p2x29>=9;P4=K@|iWFHn{qF%O0lz>)TxrHwfoH>pf z6%MTd&?^A+8aKm)3y84Kp)I*weXw(nw`Y^11l&*yp>l$jhNr<)ayURSI`;Q{1%CX= z$V|_#yHX9`g3X!Wr7&{kb}7ge56hf|+q%G`@lYx&J}Toxl&Qlg)%I1w@#3|Nt`6nd zl7lQwoHi5c$dgAVLlXGbXUVx|SlG#N(S~M`YkX8_yV}83_^EX`BEbi7zl=+ky@k*} zOFF7n>La~d6*CmN0r4$c-5) z>dOwImZ#$OgNXZIjP(u$_OV@d;)|30Q#H&&G%yi10;u&|v8~9-oHg)9!g;F|Nt+g| z+GGjQH;1=NVM42Pmj!M|a{)RVasdd{gX()VpX#_2X)7VNUqb94PCtMTaTiXl`@`ax zht94GJ4@j)1MpPV(NoNGdg>ab40s$5j0eakeW5L;VdHCA%^G06@o06`g0W%9R_Os6 zUoMCaac}mpy<9GX*+JkQJKoGWrde6Tyj**z(zschG9hv9P2r9{pdB6-!c3Nu4iz%C zXbFIFc#ziH0Q;}WVd^H%Zxx6J7hoyCy-d_#4tj--7EeJ71Y$o}AY4vpiwV(wQx;$_!gLKg}Pve(?MJ<%YhjW|D&HzQe4T5x8X6u3Zc!7<_ z$k8*Km)38W@5q*y>!Urt6fL);W66t?83&~t!ReFE>}rIUkVX9EkrTDrWpmT~;A;tk<%UlbJPCjt3_!1KGumDWxExFI zAalS>jje#dQ;ff0A$;~tkvhI2NmEU!&OMQ1D1obCp6!Uh8N`1`iFXlz)ycq(Lm)W{ zc)tMJic~(yLfHL;x^N*oo2$VAie+Y&M`0KG0)wF1r&w9Md&U6%cQiWiz&j{Hb^>P4 zfF9nk8fnfg#oUPUfjI*}FB*Yd1z+xhR-+0yeBFRahXvB3ly=d>`S9quLv3`CcNq|L z7ub3{+Sa7o_S+3>-i=Fr1-WxK^Gm2!Ot3YhAoc+SoeMD|b9V4Sx0ay0jt7e?wCq8) zT(R&R3*+YPc7gE#RKPXgW>^R*)N>uIwGR5Z>pXHbTVxv;h=xnX=3&GPq@LXIKRhlv z&qTjrRGFa~1Ojv)2|AkDkO?I=NwvMF7$<0}AX+s?g^8l?1X9!U%|l?HU!Y!Lg!g+R zeNsvN@%Ww1jUi5rn--n60omEju*f{H5zp_HmAOmU4!ahw9`Br`b3Bpb9>8%ecNR8d zGcTZde*{oOPDQMZKmeQ!J5Gij5p9vo>p4yb zYpfeS_);k14YI>SJxRkpWUw76LblLOZ2L{vQ6W!A5&+T+EX)@kDyotv0oCBCCeX z$cs2^^&Yo)WlTg!MEp(H>O|7DLkvhjP{iMI3222wd%RJCo5`tf4!X}7>q~8;Ej;w` z=(k59AHPA|{#czAsM|{j3paQG0J2n^6tt&&)?A(`V;dy`-}ux0?+@!_U3Z{x4xPzf z*t{We0N$cN9e9wGV-K+Jk;lo9+#Y4poe?*` zcylhuoHhIxrQr4bECT!R>UM`jQ|aA9!{D58(P;*nWr;RB(I%ja@fr7S&M>;aoF|=_ zq`t0J2NtDW!n!8_m3ids1iy`xN6#1P#pr?jDl#kK;;!HIw)XLA&hdV)K?cll)gNG4 z;I$|r!4et1SObeZA5Rd)pJ>C_v8i_o$Ak?+FBJhhV@#ig0fiWO-;XA_19B5sSZEru zC`tD7AIQ9R)O!=!J#{dd@g#m(N0$V@sG(2C=qn{abn&$T>*JpRh{MfCPtQrhJvgd0 zH+8v5x!ptK#EG8KA>3bf=SlhJG+)_5peh+0MiK&PAte-$svm)P1A@KU)91nUv`|X!)dsEFL7c4kB_vrsD$RbjCw7Sf+Z8Os|j2=3JPQ*&jR4F^!ub&u+$s~{%iMX zCN0o?V#|8r+IyQ2#mLX=>>kuaembNZRUzpyF`3=m5AAN*|WtdoN3 z%kAY0t`-ui+!u2fhX1i6h^TlZFXCW**rFO!X&qM2MD;d5d?Q#q9f*E|d6}8(kQXR5 z^XOjcQR2J!igV8}4h-;4{`qW<%j@K1!-!r_3^=Ovns+gl@2>0fl`nZWV57TJmXd0R z0o#o~m1TqN7!ctw+&;d}L{($$tKnq%>)M=yrP;QclVfQGE9tSb)Coy<9<=iPz`emJ z!`(0@zNro`CuD^1dt4U$BglK_z^#upfU}S)CF{ey{i&qYaF*d`uBv-;nGsa;V$Hf1 z_~tb$iQkrW(Lc}~I`?mB6vz}DSQr>A@dY5sKz%Yy+zpX*9a%yW2_u751whShE-*9B zp3u77gRR!*f{giJwMY_O$SDZ}hnbKo&70_h-^~H}Olt%9#c^csIBIHL?6c0jnP$-v zIv6ETzFqY4O?<`Lg6T-hn)8q`%mpgsr&6bn%5g!GN$_HlNZB}ic?n_;FzKw)+V@fN zZ3_A8rJ05Epjex&Cp%9Lo`X;YV7YUR6n*^6D*pXOM91KfRqD_CmY+Tu;hwGbugB}Y z{&e67-o~&;ZnP3wzYV*!g*dx`2s#FdT}LD^pk%!8ZbAOKPQm*oXaJzRl!Z0_gFZ)s zv&UiaQU_99Z2EV@YE3KJP_G8f<=1~*%9Atfx$|j!m|Y+zpKn~SW7}U|o7G(8`vJEO z4&!|h&%+)g!%P8RF)hrXjOG&|X*69s+dnCbEh)idkv+EKis)rWPr^10W2j36jlKqxJY=%xU zb4g_=4`+Vr(O=-E61vBH?-tX$b^wVbm@~=|2Em*Qw)(T-F}KJp004x8(7TVUj^+bN zna}6GzIg(+&V$L5jaL=+fG8l}p`&udmb2Eupm6kd^+H|A?vdJ+;T^Pu>uU_4@bU*C zZ`|zvxHd`7HZHpj;d|AGXLwi}INucNhPQ>b0XRNG1=1Qc-Wua(T8^mnMi4E`o1XVe z30hIoeRjW%#5eiq8mLn8Y;cye^ofJuR%ISL*NSjGO;kIE7Yq@#87F}y)ObWTI90;C z;Q|_f1>+po1sT{#<^&AoO$&xdY7hX#Ea8`$3R^yKxcPo6@?9;MWR8bek-INToo$?` zSBNcg87y)6L|y`1iufhckUjv4zl_TEdBj3Xpe6?N*hPm3m)#*^Acf)bdHmTMr=C_#Iz4~3$Ge+~XwRpTgpx^A}Nc5$A z3w*`p62mi$elgnCI0uTsAn+E_feZ@#@CzL($_zjOL8KQ2X;ymk2nhFB4O5kC*G@!W z^v*Ct^L~fuaC4Nhzjor6XBU?4&8tysMb+Aw=KN!`s$3g6Sj-Y%f!n1*QC4r@;T1|) z8&u)FZeN<{hk3k##8^)xJI4ng=Tv#99N}2yy*W)wNA{fFA z1Pr;vHU`woxNr7s--qcI+`h^J6KQ>!4N(njm^fhzKjvevJNybYuBfeHs(GaCtS!jI zkb{lETsq^h<(@7{mk$8vlfjbjnLGmCO|R33#-4Q1GFi^**(@5?=liV(yg7FkCpCr% z+Bq|AteHEr`G{2%b95>iI(BqeZKT6!BCsnMWu_MBl@(eO`AqEDhm%)I?5;CH&bZ>W zE_DHn$qWmS_-jfQcyzYk+N^nB^8TzBTPxyLkHF~yB|!X2c2Z4bvdvu5TIXF(81G+p zTE^)I!GF@=7y(QDi|Jhy@k$Wb2S{10X*gya1yLr>p*-trBzs(8dOveAT9DlVYu!k>8k*!hPk);^^R5F=;C2tqIWj+ zc@5H{p$|o1$zu0$eXT`YulfuYJqXjH=FkT4b@+18e6mO|&t4V1WagF}!esE-2qAM8 zvd*9&qheSdRm5?&X)=(Er%>D(AdlFQe2F=^To$AbKZYeb0Sm5~suoW5h8}IMoO$nb zNoQ&;DycR=iXi21_bo5lE-2eWK|seWDgskVBhy5=X)KPvI~<@5lI&zbl)ET4t&l!+ zI~Qt3UPAP1+bb*zV2m>M@q_rYXhms-u*QQnQd4Zv`e({N0J_0HrZ~~_EIYMr$aSbx z+7qZHU-6Yc&rmv&jZ|yx60I}3AkV>%&?AJL!;;(}%Uy-3PHZU`hcLo5Ir*dCy)a*5 z63kKa)*gw*P>g^E6#}i2;d|*BJEJH$R$O+rW;R)3tX&f6 zLvpK*f9QTUIh!+3gE-*AmiYekmaP&YKYES2G)@E|0W2i6osT=YnPpEoSBdH zelkUt_&|wL!Ts(kO@8D^Y4GorRqb1NI}Jsk>9uq*+`J&ulo+#(O2yQFo=&^?cgyXR z05pQGdzk)bcbnKL#QxYsjGc69g2iYz8BhRbi*HS+pni@hzYOL`_Us}EzX2XRK2&&o zznUXsgY`&_3gP9mK$70TfTST_hCtUFd&qqkx)rb^9*;N-fJ$wf=6tSQRmU0gVRu>C z1>dPMjax*O1~LQ}#*fu}@y-)TetInID&QEAM!*;#NF@TGi4<7r9bd#YfFoHZgu$<4 zfsLJJ3qBJ^Ys~Rjaa`C{_pwn_)%-b+7v7MH6@IqJec88}?-KCZFRa39wV$NVT;~R; z6-*poalU<~sL&fofW*T9(12qt!R+=kObGdp3MycG%U)f%C1V+X(Bj(l*U|qjkw7Z! zw$JplCq~8<)Bs*(WB?|tx;W!6?`LIwtQWtsLU(-G3w45cU)f1v?)M={+pk(QIK&+L zkSybCtzGg!7Fv?r_=xAo8J6?lg5);=POjuQ1-I)QzO~t)g*^^=U0z<`iAMfVrEzIC-Sio2mIjr0upWHL~l>VDJtLB-JXV}z7if?qx!C_c+a!FDDQ zbT>3fvcWLBSF!X59O;hhm-Sr#QdUjfA6)qkJxh41dIhix<1X&o$ucf|`I=JsF#iOn%1WIMxQ(Dsgb2DF!2E4-W6yp=zfc~q{-Ze;q4*y5v$ zs_Q({oTKF@$_A@98GY8bAr_~vk7s5?SJ*(~+uEDgkLd9!uTMp$U2wUhy9v1-vVP*h zk;M@Xiq!`2e}O&2pA2&PDcz7{fxB}$-AKf`5@t$7V6Vr0e8YCm8gE(N=E|J zgb`f3fXm_oV2;`LJKSGnIT%w#HO75{(OgIl|M*ko-HzJtSnp+I55?BqRug|XFTr!? zV9e^4tK0vj5!3rV7DPe_n8HkBS|3~;kW1I;F&Bah+q*z>ai_+?u1h@p4pYj3fsf~` zYJ<*7F8SuT<$v6vwQAq59$2ZoZDgg;*0gvZZb}G$Rw0d`qJtR!bPfZW-?orp03Dhf z0GP$uX17|h_+g7GV6}Ci#7b7WD(!^(p)ZWKD<|PNB;iJ?*7xIqr2Y3@7c+Hzr;rof z;;nTZ8|K&QZCGhGM6w-`Uuk7GRat%*r1>gR&veNK3Mg#jW-m%Kij)Itf8pEHvhN(i zOrC(dwpqGfV?TbMi^*;3V_CA-Rly_LX_0;PvjCU~P?pTm&ju^`f`vFQGSLczIhKZO zx-A!R=3PeM+8s+CM_!gKlAbe>LO9pevH?PRW?KPt*fLCzes-D()5;Q)u1^B>a!F5A zaY%6EMA{{n4byGc8pTmyZoCe=;S1{ZGVak*iFg#iuC=qJslKTsgEtLd2!TjUf1<<^aUt(O6gE9U`< zyxE9Bi`!_*{g;j8TtT~JnsK9KUqiE{WL-0_zvAZaD^evpGx^%GkDP>0)zFO+Zxm=p z7h5VBQAxz+`m>}+AbV2BrjNe58koTBC;MvM;Tr^lk?uqUpOS8l0U>9p`gq0uLXO%v zYP&>4+sL}g*it(#s8P8&&$2T6X@bp>uQV%;&Fq~^Jc;J}6lXg~Q%z+4Xt}|>#elu9 z15E<3g9~P8Ax^b)y)C|+!{C^-6@*_MxTs^Ohq3cF&)CDr@J!BdqnmRRWKV5em~95d zQ0@LPWsOr{L?%4Lb~=scv}PC6WV~-u44$^(@7TKh;q|g z#qpdW$@_RpE+CKoph`}=vc=M{%Ve*Pv19^bXzg}_yYtc)at2-kZ(N98uLl#0eMF>i zhq4LuG)`pY{%n(dG^ndTRe`Ht!V#&ex@6sw+t^KYS)-&D<#qG(;9pp0(%rYu;CgfD zy~ox}Z+GFYSTblCGx~($>MJe%IZ_0{tfASW}*IF>3fLdZg{6GibeGD z+3=;2XT$ey>VoZ<5L?91ge9M|p7w6VF<8{ej*)J|fH-Blb#10Ok|sKFLtpQMez~Z3 z6=mP`JyS(2OiC~?>aIAhpp6VNt7<`MH*hSoxsCShSMw89DyaJ{HVtjqM-Du^%Xx65 zf6?u)U&SA}=Z1&7T=S-;Ql}7u=p`wcG&Ei3xWdn~}{cqKCAJ+KiOm$UYd7R^s zSz34ymgq&<>p)qa<_t>-zD@%p+4|fx!>#JKp|-?q@vSZCQx=9{As{6TUSk~$`UX8P zo3ZcPlRf6p16>g0H~Pj3I8UyiH!t;~MxTl8%}&Kx6YE6uITWv!rMs`(Z2pv0+GnFdkj72pJrIL-rz8JGahk-ms799gJj?Hnf-qjxX#PJVHhb(;m#t3=EP69!R zKuzgp^}wUzFL^qNK#pO#>prQ>1M3+F@UR2P8JzVep2T|_chYw?q&Hr7wWUv3@NFxu z2^n;r#(W&NDfh#MLp-{kdo!RO7$`3r(zUr4_xCBMf&M74`xw9yUe~fG-pp$k>*f}+ zb^O`TdU=bvdpjTSk^nMf3UT~=a@MD|sTR(BjP|m}zB1(?GrJ(ip=3tP53~I7jws0swHv{&3ktlb2O9WfnCW} z4>rcW-(X3sv#g?Qc*#{lqHN9N=8*|h4-;5B*1RxJdn=Dfdhhw!_yQ0kL|SGYFNf!p zXQixXrqH1>G@5h288)-7>15plA%3BGnvU#(p6tRFfNeJ=J_QBI5v5UFpzb=@pO}5; zTSf>O7BUMB7@yg<{sj1UCSWVWXA7!fo8g_F?j``6@<9~~X|a0u5{{-P?DmfB-Rr@C zk|Hv8%VxMU(%sEh9J3+Yj{Xowdb+sBgd=V5U*1d(Lh}{V$*~osW=Rw!0c8rY!@Anh ziT+P-n5l%!Hlb`5=T()Itp2=POt0FLJ@#x+%K#~0$?@6xYaDZWnlaZjeO6n`{aW&j zJOUm5sxHYr=8^#IDYDFs}G#s+xlqj{zQ2En08HZK_6&p0+&4Y$lJZLxVJbC;1&DVE#GXd*8ek;46hwCSHwQ1~r+F8j zQn7WmPPW5ox68bQ8PK8n5CiGAc{}u&5P!k$;8|$ucW4+H7L0*~F=6v%v0;pm2z=!B z%kQxo|1#1(r3Zh2tSqMIN5U?bPjW+>v@_e z)I!&vytQ?WGtP=-@5!OjFdKjt?0LoP!+Y~yz0YqJb%=6;<}REBsuK|+BJU7aF)Q=l zo>x1m-mCM`(+j=$FZ1ry(Pt7m9~OS&YDEgsG%wSd390iUIBxF0U$ss=1rrkIWhxKL zYF8#k+|CX^miu04rk6*q7%v~-9c4>$5t@J)em#xEMeH!2mTTT<;Aq|(_Ozqc3`iFa zDzlGwWj$DoU=F`Nf`B_!hzG~ECW1zR3jRE-Is5(fImd53 zIpt1l5<5<9)(W3)#k!g^42WK_6e(^l9ys*YRZBLUximd&cOw zz-Cs()80J_O1UC&F`7Rz6J@tz%f7^M(@E@><>Ct#gzzJeZ~0DIY)9O7iz}+0dTr6Q z{KS)$p%VA?+0dKRov;G{q^)LT3?Fug4zt;g4KvT!P8Sw7pE!(9`c9i1UR+Q!lyoNJ z{nN;JJ;bfBP>GN9-(1J3TyeXEi$Y>?`jearbCwL5{X?1X;5vtGy%FSTxwonFeEp+C zIH3G&EvEpp{|d(}Fig#aeaY{H{}r3+fCt~4z8hOdRe$SIy@i;_3A@A1IryN#`+#wU zEYM0MO-Q+9U31=+2iD&LLN8`(^FZ4EV0|J&iwFD;%`FbVCyj)QQ5f*!Y&W(lys|`5 zvr6g8a1P>2@Zt@KUCZ+mRFf2i3RwWOft`wgiFv|fowBxtKWXBU-yul4o{og=ldp=b z2Z))9E`U@QNb377u)*8g?WmZVv#Jb;|LpF49eF#NK3d#NIN0zthy1hHIpvUfitUr2 z2KU5D=gl{#;(}%~*3QHQmT!CGL(h1wnAnm(!w`0-q&u|IoKVzs_oQ}4-?EZJHiF=z z%kb_);7m+kH!M$tipi@wUF5Cx2`?12cjY$V`-E*OifRL?!D)z!>~!=CHVrC->n8{Y zHv(!nA~HlblAeL&eGn8Qrbc4+k+Z-GBqrXKLLInyKm z@~oTX5}>sb1{Nw!z?DH0SrX=C7t`QAv4op!ocYP?<+T z4u{|N)O`YnV{@p=MYaY|uYUNZs;=Nn;Q7K_s2m#`~c!DT06_$Q~BQ$z+v0 z=)9Y*GKo^o=N26#hBK%R_Kus|zEC?1)=7ywGXa+iA(!;W^T(;44^!n;HB61Xhp1RW;gtk`7{%|=eVHe%EjAj0nz(YBm$21q4!jILnN%$ zf)1Sg87qTDNJDh*V`KMz$<>36)G|5ZciT`7!?-l}^hbxO!l!a&=FgxvA2>>UQ;B`XAsQaas1h$+m5$tS`A#X$cOA&T-52d7e% z0{Wy?;t}aWxPEGiuUkmwD~fnXqNQv=$SfJ`8kWM)gm$E`G|_gO>-WX|Liv$_5b|{C z9!$JTVL-pwv$fsAE-Y+7+^cV89WuN@sg6@cjt*CH$n6?RyRWOviOap>J+OHI5Yn1I zR0|c=$lg?emHJ9h(#6hE9PGtS9abG3imuiSH6%_K4y%=yPv&aX8%sFLk5SXX=w#Cw zg*`rn8PdDY{CedVlv2QRCO+;4@9cW(ZuZ!GK6R41SDJln{~d78Z>2lSVszHT4!k$y zuJs!C0Ls}?Z5tf$_aQ%BdTSk-?U>FI&!hF@R!O;ZnmjIdIMdjv2BDHBi_xlJD^BAf zat$n1`9UHBms38LAAzfxQ)Z=SNNJ}Z5EGFHftuAc<}QPb$rOji@j^weidx|0g10-f zs5rmQNH--1()wLO<_}&pnk=a_jB(61XT!7*#UhiLogLi*sKFNdkb^38ltu?guFDDIylPmv|jJ*>K-eBR;$DI*<^u z#&&v#MLtPsl7G;UX`UaP>$n(9+Qp(tWn=EldTaQHn7?{uJ(XqePDs9Ix7Lyc zZl~xsc*I={DZBeHUVETsdf#%9p3BpIiimEIVE+^Avq;VC8=hPxl1FJ&ZCp0l2q!h{Py_$w?FsTuIt)9@AvEVd@6bh z3EdbHThr{|MyBQrF-CSG3ZGLjVzZ+M@kbCfVj{Ns`x70d?k-l%ffiGpid08garTYc zW$Kao0BK|{)1^Y$rTd@Mt^@vF#nY8745<3E3Gl`cFPPs7sJ)cvqdyK{hNr3*42$6r z)aN?m-7vHIi*}5{_m7ufGfjE?)<{AV+=)nlLMj|XSEnDtpyjqGID4w;#qLk|HpS6WDB^a|s=uCWc>1l|s_y+Y349Z#_kXk)j?S_wMDX9Pf`kTTjP{f?hR?1#o5aVQ zoV7B1ZT*!MO~*FGTRWL3XW@Fqn%VhQJ7S8lJtY>dQvXR8#iHx^aSM750zh}IdgUw6 z^KUGO^YyMoE$lA{%c8~Ya5>i`S=H0#(opr(keO?yhSj$Xlb6Vhsw?M1@7kzn-yKn^>qa{zLD5dz^if=~G6> zaYF`JmTZp+Ujwn=z9#P4PviwY-5|bsU}&-1rNOf2U-dLsd~<)D+#N$4*ZOARu{HGc zMNJJ8reW&i5*vQg=H>oJM|kec(AM0XkU`e(BV)-q*UvyQGk z`6IeUn|O`ncdb9AX(hGMC5e$W7Gix6q+Y-tQWf&RRxeT&g5?76r?+lQpqb_W_Eqj4 z_2!v!vV$j)qt-#B*dtGM;R^x-JB`gx&mX+uYUXk1qMiz{kHI*-U!G&+LVK~>WM?d5 z)t6exFG0@AArVXh{>i5@ zz-oL1q;^0x$DxV?7hZt3cJtK$r*y2?G$f-ns+v0B zpxR7?DduPXmKLKK>o--$5_8Q1Xax#4sD(QFKnmyuQ1IWB96qLAl2O=Z+dq<^?mXj~3dT5HM>eBG z5C`CMFPlsROl_-&27dEpf*C-PI{khdXag(M6$5(U#UC0GJ={!KrR^CY?qV!!X43!% z^q#ub>lsk#8^c8t-O|h{P^3vqX{>aw0^zU@?Tge6ne$QuO#3O#+`y)$V1Og* zD9HOPga_=Sss{nX_KI)3r@@bL8mr`p_MJ_C zij!|+08~Z8i3d~mbE<=rodm{dQZtL4#WJzWm4e%3#K;;aZCior8J*34)&;cOI|qAo z1Z0r_q7Et?Hxsf;ECeOgVQL9cQ@v1mt+;vf6W8z;L4V4@#*)yG7^@pOzL}?HVhVYs z5MC_o!Lq)JjHhzPd+9W8yFbt;3rOe(Xn)s7*TV2}zt)l>t!7{?RMq$y-Mm+7*(_CW zmOL(if^Fsvu+hZ3cMToh7@olb6Gj4IvUy%NmG&N0m*Ff827 zp1dTpCe1HC_%}uSQ|F+Wy}f(_nh@0D~uFJ!PrR zvq_?brZEr1*56}}Fl^))6mNJINcJyf#v2BV80wf9q2NEXOQ(o{NHVA_@{KFz@%M1J zi^8~)wjnfo$T5xJ6ynYZ$_f1rGB&{pFKYbzra^09w5W@wXGb?8(@U~IhE&Lx5tTh2 z_)rcH>|1P$uRNj%%C?HL%JN6`A9`ZL<*XS5T3G`&pD&!AVa5p79G^cxx= z^A1M&W3@7o#^?nyoIqr%&{75}yhCg~JARv5APg!H62V(=V5{tLK81B4fWaSr-tqkH z{xXEQ@@v}7A$<$bt1nMd5^1l`Kf-o%7~>-QV}S3$iQqHk@x8;B%X3*Ckho^awvu>` z2)JECQ)6K=u`kM3dRG);d4Zk?zho| z?SJ&PuAHV&B8verZm~PhG`1CVOX(xyh!Nk$l_%X_ltUK)yoKs!>xD)t17ZR=i+*L~ z9nTFq*T~EDs+>V&FCHr6sjz7r3?Ih^ehft}E|i^{;hRTb8QtxAD0=qj$5v&K$-=ws zf61FT0u@eaz|VJsZRNdo)JFBF`&reiLAm-QlK_vz92j-UpN3}_Mw|t8@W71boXg=K zT)7GPsjUu-b%xp7^M-o3U8SR{3`X7AJ0XbDV9k{&qlW<@RXr+n&C_uN8x;?6_1;+o~eXnUtjIkn9ZI#;Awa(P}7M9e|p&OY?d?V-EWhF*u`-EL z2&|*4RjV(&=1l{sS72THX5ra>bGG!wF(@3dY3M9A%>mH(`%|rjcaPtQJcPMx!C#WH z{-6g}zo)=698umyMH_CL{vO`?BiuSKfZ@#Be&x`!vEZS1H*>6;K_=AJNcPG17tNk! z`mf0HRL3_FKF=%l-c@aW9fL8v^)vZE47CqijWXx&?F2{-52&04yzY+CC>T^tqUK0d zA8xbC1OUkY%3vWp@`Zeq$CF!>!M${lvJ2f9k=T0q?R5-^IUN1sFigHzHau`)m^faz z)_G4lZcIGW#RM@Z5lygVS0Y3QqN}#7q*NW~97+YK4{i(}eCBo@Pd=`tw_Wc-LiN<7>uWC_%qY;l3ci|B zeK*bDYfu?uLo!fIVdj7pfQB2YIXb0P?ZxD+_WK`bp5Vf3QiB-YVaAWf&{PO<8Az;c zGpaTE`PaC(_mzn!1lw<67AUH>$+?4y%#nP1d6ZR{Eix{U(k&~+sB`hJ`RY=j4q=#v z7ry47I2;0i5C=`i`KbDl^u*?9&yS&OGX>2b(kr}tveMfh5+_>!8r?n$e^nbZKTBSL zFk`-&hZ&Cisr5TgGaUXJe$61?Z|L>|;Nvwdor~p4PC&ia8YEwuN(tcQB;)`Y)iU8j zQ?g&FCSJ<2$P5|wbvs3JjkZiW&Is)N5tERY+%s0*XfK+#^BubSU1~`NU3)m_H$}r2 z*u@s4G1Pao7SR0P)JHTX*Nv?DZqM82G^o6EsRa6p^C_*nm9p*BsIsyR>DKYx)Z;(h zF0Oj7WN?-)(qC`bW0QqH7@Xk=@@ap)`HZf3w{v5Q5uv7Tx=y9+ky&M*r8phRbRThJ zkBXRw_U}A|9r}H9WmC3DER{-Ubm#5a2}*mRXZ5Mvd%(IUqo z0sQWmyJKd!jV}oM+8ad>FU}QWGJ&7j^$k~tx*mG@$K1|3QwqZLvfXVSjxYh_DX(S# z%E`#J4}6)<$n)#HoOj%TFw|<5lNkv1{C9yP9NdOBjm@NqawiU>rTa=?-W}G*R4-_m zgv54AbfHGC0H0L>4-HP`Ved$+_4f)c6dPSvb!e**`m71zyxd(*m(~0jTvJCs9Y#X> zj}>6wsl6N1=*A`A%tV)ql@|;Dxr6b5l$;p(Z+_kA?)>}Y?=2Qz`~J}p-J4(;GeC{= zS-*^8?97Y}a z*IT_l{`zw8;&LBtJdR1V+CTT8RWNH_p+4?&=h>&rB<`OSG%*QvI z%1COy1|4w?IvAh*PUSRNgSDhr@^dWz_ju{Rc+)?JMbFyFL*ow&P9IGEFFj|&^TAFT z3U$i%h67C}lm0w_uo2&{4`8UM>W3?@E~DpMRq;4-+8Sp5ItXa&*Ng{5Glj-(CHTl_ zZ_A7YR*QQLI@UW4d3oEeYO~;u9krB`7lp0c@z#;JqLdZ2RxPWjg;mohaDS;&;tWD> zF|D-LexDSP4tl$>OargZk?`2-wArqR4Yg}uh6-^Tk;R={QKR>D*Npbx@;b4ES8(L# z_oH|Kl_%t3QO8<=6d?eEOXOzrN3i4&%u31(5=Y;L+}RUVCDS}F>r5i4AJVb6iSGzC zdi6%>`=-YilWq%Qi#06nbtM01wnJH)`*K_~;$dPIxZ+!`X&TTwW<_@j>kf%b-JP#2 z#Hbr}%XZR)%k#HADaQu~3Xo)*7*_3|cu-4!udKU)jH+@G2IK~O+fx+=>dcjZpv~mQ zX!UURU|99Zx2F(;KjWkadfQ-ldI4K{(_ryGQmz3PGha-@0dv*-62i(w1P@Ascug4x zya1&1W5)=lzdo#c6q}gwKtdOKYZ2QcYk_O*YeFR4A2wI3FwhFeQ>T zVG(S~fQ1^7?3)(@%v^>sLrUUiOu0vo`mCG>#s%;ItKm)`@*Pto{2Mx`$b9x89&)4@ z=gpP?bknod14;;>l4*&>`LyYL40n8b)FFKVA$+n7#7<@m zjr+p#{aQ1eua*v>*;TPuIQ;W>ABFF?gpu}$XbD;&9BroaHk(K?F8_O`;`fI@HzHZI zHYt;|L%1cbpDj4FJk?>P;(_JaQb6PC?9=faHJHxeiz9j$2VsW8tVY~0ce95!GrHI;h=HG47r z5N%OHev}fI6ws1{^i`R=uti5$Mw2iSMQ3LaL%wZ!sGPEaN8O9tjI!loKbH@LdTx&s zZz@-tHOu1>KAnUUG9*2t8v>g}RDp^zv45Inkh?JL_wxO-?gC7X;<(4&eg`y0718qb zdQHG2k4^3@$BReLvP-9RJ*K1g>H!ciN+5*W$i_(7X7w%oTy*02>ayc}6tM{BT^dIak>E<9}eU z0+ppp4S(1I90ZKvmkm;Hayp~be}%m6Olc@9Z6e@TXC3>?l{bq@_8@556O+@qG`o35 zEnuVwU5?PwW+a)gXm{N>AgCOg;0)1WDsy;3-(e38Q=SMX02yND@vnGcjER)8g9SM{ zSH(Du+1F50{2bJDnF>vuWeQ@xz|m6y^rGp@!psKK_(h!FxD0N?7(oV5$CWH+w3f`p&F;m~(lw;Rv5~v9j?{of>>t_)VQ%h_Y zh8sFwOwjo3Kq~U@1UU|#3QmZ#FA-AiX-{!IzSa*a?=lu@PXf?f5%6F6a*;#tlnR{_ zI}uFE51Z|OXeg~Y|8cCYL33tHXSbrkb_-1O2^T{6ADf zmTAGm5-3wfA@it@GiEu{E1?AaRARu83f2afycTWfFZgWTSAEeHA4&G6*E2XRwH`n70L#S80(^KvvkL+Uwk_%PWa}VG@eAza(*>m3pMVwa@CQS zE!q)t*f-qWkQg7wYo;5aL}5MRBo!+A3CgMGSbcAxg<))vbi`655;$t38Kd%_H<|#{ z%Xbuy?m4iuQ><>*O0!*GQ_0N};4+9(z=I>2M$M5J0@L5nsT}nS_6q;QWSB&mQi}e4 z4#V-1Koi2|abvytn?FdDn~Cby3_eVoMaATfkK_;`P={6!DG}RnZgZ&@BGkjyX%1a`*uK@W3uT3-^!J7Ab^*pFD7JCy+9^4thNrJX?TX)FTL&E* zJASx{z_(0rtivMISRAO6+Y@yDc#S8sA`sI?reoak+h}=ESJ~jw6B*3Y354tBj+;3& zApK{GY}?ZdEQ@~V#*9C#zE=Ons+LwCwM@qkterhj)KeTBBe>d4jXig&3iE~{z#c0Q z8ifF?*!k0i)RFOMQJ9>3|jK#tk0O`#o`4YgW(UA*Ocxd1=TEpR1L z)K$G|M-eV%ts5ALTmQauU3P5%{qK(CG7CyqPXceGRtoJzQY~eEfd_X+{f5)%Xm5kc zG5u)m8|+N0#PZ`hY_b1lA!3^fm#>s2f$wGwjXr9J==yRF(k&$0Hv=9J@*B`?txS9J zYN_!dcfvfygFf&U1htnxdxJkgR8g?Y_Z9v9agpOQ ze{t;WC4Hkc-pPBuU+njA;CldIxw=0d81jQB;Uz`Rymq7NFz$|b#t232CRZl ziS`-(v;esB{_%?j2usmMmcWV9^=2xnkMSM{+FB`wQ)7zL%t-69&cy)V@~i|485oL+ z)Zg+}j7Cj@+O#2qZ^OLv1>NWVE_u-5GI??UU9rZXS}#t@EaZViK@b&5;_d6Lcs1?k zrQS{K*|8&FB(oI9QfYv<7b1pekU44=Cx;CXg4O3lntSh&wJiV zZ{QL*c*Xa8-fDV~B#WenNNwL51&idU)G1Th_$wPuOZMCUt-BdQF#-g;OpP$F88)Yx%va-rNH-;L zw2wvOE4{Z65}jwUg9FP3z$=JIg(2uu&-P!#FyCcwUytI%)+G%6(!-ubzmk^T54YXK zs99R7Tsa4gBGf17j{8BE4O?cgMn4QM0`8V?lE9-r>sjRX5E`KcmL$SmEJ5%UaiP*? za5*A1Ll|Eb7ofPu>>KB_D&woSoUg7Q%anGn@N%>p8}NAz_w5es0H_AL&{kVVRJk8b z^+2;PB3-)Wh!wx7GAfKp1vg^8_ZD|0w{|fs{ktqCni&amg<*0^=4U$&K#e(hU(v(3w+jCiu6G-O>GPp3_Uh z&s%|X=Jl#mwD+TsH>qVWXe#}H(g6v~PkuIPV)RoiM1Uf-%6%kc(-)Dx)8g|o|HWmK z3oy^cIGH(x167B5L=a&zSS)7#g~_5pP3O{5jO_>25za)stn-}*hm;dZ*T>m_J9L{P zm6VJ9glxB|zR(Mp@)8^E)}?)A=_56 zU)g20RcBrN8gTy0v9^$wb0IPAy)F&YT+2tk_f*Z&RG$zr9k`%09x{yw#qiAe{|~8s z;D4P$sUJrkT&HX_Y`sf*YouVlz<;HbC|0I-Rg7xJe+uu=5X}nEr}2&$TnoqGCF!^D zc%#$`7A`@z4iZu^dJ`n?ZHC@wdkLLDg?S!m_q7Ydx$7WCoatGYnf#kX9gRtR(q{s5 zX|#{+-E)YpTqjkUC;I)5j^K(Rsa>EC!%+CS`A_55rH$`+$xc;o+x|{LYfp5^I-&M& zhWqJmCPZk9SRu>pKC~>JTFB%-U&t5e=nm6?W~vYJ0J2;QX)E;uRl5H{Xrv6Y>JS~!q9cSxTO zfJI_tKWAZdb^VT=JwN8Qaufs;1z`h7GxHk**r+TbsWDk^Xz%tni(Ri#@t+I2BvHVD zMxaH{4@}gSzbVl4#qj$}h6YhB)jQZ)5+GZQHi>-mWSjWRf>tka`=pE7oKPM!!rxm$<94ST6!t_^DB^XT)KBYthRiP6S8+cI7D+vDgui9Xeh=MJwQYj_X@ z)}EAU69f+`;R-kVR}O!_>mXM8PPL=W#W>?oTz*~aE0;3)HR%I#zDjsglV8H;JREW$ ztJ-3%5%j{{LmA{;CGo+5Jpa(WUYi@jF5UQ>j*G%J)^kh>1n5Pv>Y})*m9Kx3riU)_ z-rg8_5EH!!glh79+%JO@Q0v2K>zGDU#-Y7R;`VuPY<#O4)8u#K;``bY=74eLxL5cz%`lOe&Ni7HRq-)}K<|Uv1qyP#R=)plRNTUNU2WQxK@9S8Rl5$M-_^NNk%AFFF^zuLol$>Y&hRMo?2?gz#w)i98{XQ*#(oS?u^mn1oRUJlG z(wvWl{&YSY>UQv&xiJrcrZK~57rs4FUw5Nn#w8kO=Cl!}S{5{P7&YN-|31@6;)6TG z$&ld9A%UARPaU@;QP))e@Ph3cGH_8Dht6F(kdv%&eC60sZy|VQbXkw_Q5n8-C89w& z*wQI;kQCmec&(O)N2}LCv#wv=CBCZiTF3`prjO&W|F*gY8xh)`>S^tZQOoWi$j}8 z@ww8pu_kj)gRX@8PE^pv``SXlqi3(a`YJxEyE{xwzH0w@_?up~ZlPBR!14asPv7#E z60Ih|)y%qd1G@4rBKA}8O?pE^Ot1ZIW5z{YQbpQ;r%dUgu`jhj<9nv|nVHB3DogYG z;{vEaVRyB8GFV`{9h-d@Q_-OpwQc9sgsnfb=N!2fBChNg0G4Xy(m!SoJ+8EnWDV;bFYKP=L)Qx%f>WeEE0XY(BCZY52?41@caM*JyLp6_ETD z^qDD2sHHVCMV_AX<}3QEBwYjPz;IlL8_y}@uU;Ryld`C(UUqzpAL;(*x#6%*5N*&* zewO=~_3q1BeU>if#kRbK!U&cKr# zqmZI|u|<_W62y8XK$)?;U5BK7hDK<8{v^6gHx-CUBp98ub+HT>_PKnJ7zIDW*Y#^q zX1z$db=WE-RxQ&}46CE1IPv6W-)_({>k`k%|NN80$$dWZNLm1mu@X%E5-HXa4q z{^ne5=ztP)<}J5;#_ROi>%R&Gyt0n?*6r@v*;jFpaN${v{~+jC;0ue4?Fl|zYJ0^# zrwc3vs4or%jS_Kqg1BgA$H*NvU zORi_YmGMq&3ZIsPRLjgtz&V>F^OEfLQ79_JZKPrrNuypWBr#U`VrVWb92I&YBtKnNqJSokq;79(VdggC> zK6?Oc8o9b$?wb4a>s-w;M>?WJqBpnttBnys0)da!4YqBm!}IJRV$K6!@SODx-vG~b z6>Sp{H2{$?9!b|FU_daup-{GstiLQn;7S4IN~={AHu6gfpaNvLiBnNvc(Zppf79tz zQXaU}DX`qFBJ(~}$@DNUkQU2($u{on27-X1HyZh_`-vk#&tj^A9p}S`R2={5l?SJR z3xlTsdr#(8hkDWA)H*V0j%Cp;na)$z4CiTqGD=4jkqajq@5r3OE43Egv(gD_>BlG~ zi=4rW#Z5UhvFIEfu?~1@Ib1so;6~HmgyKOUlB337txtx|#)E zhC#C;Iut*#_aoIHFNi*7{3pS%Xubu5W#|U4PTerf6-NL26zwc4wZNtYlsVy+ZSFG8 zWU~E`bG;`jpeDC5Fb%46C7e}*0R@D_wZ($AhR}n9pU2q0wSSy_5e(V$AoSg%Ju2K- zCU>-rw2PDbr%E}*0{8Ex8cyU+CCk}#EhX?r$unwMOhqB5J4oHsqiT!GtXW-ms@KN4 zwCS}CWy^D(+R{&Ro~;)KY##5`_-WW-+i^4Tq*Zsqe16x2bFsy`+Q_e|Q35zPc`13| zd;ik@0S(md%U&m|HqmU#W1`cXcdkCayg8`XBkfH|pr13|61;mN`mxj30lgYZj*=6e z#AK%6D_G{RGcQrb^;{b-qob?XJe>MY3$n+ptv}E(Qm5pG(hL5KNOVK4m|t>=BkYXy zA`f_emXx!&R{%@E+a9Wf>51fFNgduR6B#+}Cr<+)3#cY*{O!=z;g$vb8xt^IqJ%Cl zZjZDye>Pi(8UO(+`eKQ(#pwD8+&~Y22ThQG^*vHhTgG`%odjUonc#9?w=(iY(MaU? zVU$k~UG3BYgp4nDaZ>*`_4+Rr%&!%#EmT3^%{Az{P0^rP$beK^L;G&$3zG9zaU^jE z)ksqq4BNWYpnSxHOh6yDi1|6;(C_{#M8*{={rON zIEbXo=;kX@xuCV|apK;?w_&M|ZzT20vutSN3KtMIW&iMr)8UUnNDS?yKYIg;Og)j7 zHkb+X%CUPNN^@iN<|>ncgayBh%J1YBZKzA)S8vDyX2^4_kY1G)v9VFBlX zwI3}Uy&iobQ$&8L0U$LZ(92A;$*dsKqK)EVsoA0gR(Xv%Dh6w05wU6ySqz=dJ%15T zn^c4eP)CYD=OGpDvU*uHePPI^kSf$+0HI{H!GbLbqN1f#nC&wE$M17Jc_LQjXD*N- z541Yy(H$o{x!;FeYZN|>Ffzn=A^cJs>uU>)wJ5qW&FSW!NsukZj7ZE-HNcepQ9IcD z#KSHA5T#5g;F$_wc0eg&z5Bu5#(OGMZM#T@8>La%SH|BBuopey0MU6m2w(X9!Xc4R z<2azn;BN=?7J&wXZ1PKT;anA=n?pUcl9JHSQA+dGB~x-mu<7FGJygt+RayOUbeC-h`bY30E#<}ygPY}MT+_M z*gm)$q*eP6Zrzv)@tV2I&9(7Xkpn#Lc)3|>-4j^ul5fzPJzqA{x9eBaxyNZyqHIGg z*OfMErAfD7e#d&VWz^SC0G1dQ_}Vb9d2-a^*)s5>cUt4i4HxPbgYrTw8V#%O^Ix!1 zqwYNZ(Y*Ukqqpk8j?ILCouM2lwqB!t*5s5^ang>Rf8+&z+&^0WeI)8% zj5c_B9YP$Jx6F^WU7CDu@%*EQ(x7))&-rd4bRVD~`gS4xV(ehmdHb>FxVbW0;-(Z+ zm8~+QYWe*Kh?Ptl(vGOj5K4ET0U7@y+WeT=cBeDKFF{@u52|i?0oGZSz&7*VDgkPF z*=X|UBXVK=4`|cTQ9S8FDSuyV@6(~lLkjZxC9nZvJ1RmH{cNfL=_WQH^l@N@-4}h9 zGXUEzWN%!L_v+f{7yv>CA%Tf2pEB<{fGI?&dP^ok^Ig%W&&b>s)}$DQyjGx!E)rqg;I;(VZhFywkfk@nGMJIRvY_ z@yRK(QQg=%r9@YBiS*O=t8jwuz+O2R`VgRmP!^_r{uJt$E9fb`TWQy{#kr|XWoDNxVNEVsXibdqsEn= zjurHr{5R%*P2c$c?UAJEr`zsPUzSkib+@*_kDkFF|9J0}bK1aJEO-^{Cx-X|U>#j6Dqg%yDLmSiZ}V1}#t_M6YD%aJO8E z3sEYQqPCc@xYXdIX-T(8x=;YXi~~W6feM75D-lfO0I!a6uDb_>P&B~~JI2#fY}J58 z)mS<|-@PH976}@1JT~ljl)Zwnreu>zFa{^a!x*L@nv&-r?6+LixiHs5HtvF>)rjzo zSX=T6&gS7Z+ra-_d>zWFP}k}Pc`Sof;;nT7@n?g>wot$?25oFJa2oP;!u4Z%E`w|5N^ zoYDkzoC8@d1K%V7p9EvMKMsB9bAK=JCnEqlT;xTVBiPz;$XZuRW*!FE?^ug;UUSL~ zM4sa2`c<(eFADcd;7Zp->-KOVgLRMsU;nnJgcDHO#AGkvH(f@SbR*85%iU$7>ue1G zECZb|Km$3Lv=BiAfG%hqp(lvO1kka!d0&{C%KQTcQZKT6JDs$_Iu&#v9W?wde*~^R zMe_#pLxZRgG7X}14)U)pCg6M6>Q0~@$ySFEeYKMIbaowQ-BL=B#XAKWrcMLBFmMgU z8cYr($cma{!)`aFZxCSqq+vCu^bXbj52x<-MVO$$_jx|AXC(tG2(2f0STPTgBZASp zLAVUJGFUW*wM`>||4hRH005?^mhHA4z;d|7H+1MKDtTGghM3Oc zj1F@P)v?IgmN>^Zl3@{aX-k{ga>_ZYj9)Mx@A9k^+FIMY`9>iSRo$+1yI1;Ltq74G`g2_{eEPK2+BSS zeKZZKXl_9G=L6!`x$K8rqviaq9$^1GtcTYz4#W1F= z*!5LmE|aDtiq^;I7aUexFTS4w;b1Ly6#w#qpkckCvE3U^YO>!U=Pdi#%$mTb{3*ILvgMW%5uSh3Xc_P*@@a83Az? zB$n?)z>~z#%A(xO#jQugh!P^R26Vbpge>od$8nQtbdK~CLUyt9966VnJV-LYRW=IW z&s`60|K-`S7&x>e*nQ2@MU2tW0lIt#x#txqy28O!*vh32cLzYq>XoponYwP< z3$Z3t9H6~sBE2}&6xa(fq=I;Sho0#2D|?GI2_R4`2O*#|mWr;W%c~7!r%PcydXlY9 z0N8AU4Y8qEtLRv6dX2K3fe{CsK}BBXDvtq3qdX;YBn6&Bfk!LfkfD$tpaIJ%lt%|< zE4G^k^{8v;ZEQUW?&;w?>CwCHV6g9oFXebK5mhA7N;V_7NRB&))C*iNQLlA|=+1vK zFI`Q|;WV3%!60*SClW-^Bp!@f+*&R|-rK8mk!^ai8lQu=NG||! z6oqhNwYPn}97aisiW$6Cp-ZL(yYdcv)zU98xym{OHwuTxhzf!LS2u)9Jz5}^7UGRb zF$@WJQzs;XGbHONm~_P05n}`$*%vg7{`O*Dkx$OFZ$%3)IA@%%Y1?pOwNL%Ju|+rZ z5C>sccdbC|YlQh{*J$eXRp`EMo9}}DU+4NWN2?s>v7VmbAS$AbtNcJhd`C2%r>gY* z=Z(l2%S=)p(C&`ab%s)mI#gG-a5=?DS~3h zQ(S=AN%WAwo@X2f1mf7ioPTTraleD|>l9%&`0c%i9SgBxat5U5iWLWJ&xQt5q|cY` zX7FOtWp}fvNCoduPSE2jU5#Q7y`tgLWr%bxVkO%Wy^*Wko$%^)6^`6-&K$=o3Bj6Y zuz-+V7{!%>c~vwLOaa+`gYZ1e_8 z^nHnn7s`j6GVS#QZ-L-5^~RnPWs$$qT_6$q=C{uk-l*$Fybop( zFEjMGQCtb)+WVXPlQGzeOUEin)0BCW+T5Qf2B}nhH$T;4^Bi)Eb zYwhb2vrY-(ybC6jdM=!K?T?576fwP zuahRZcVSQvSIrDAB149dKPv!};uO&2eNsvyc+NgXc-t59Mf-AS^>IvE}gORajC%%>og|MK@?fEXf$Hb9SNlD6YEzGEU z^?4u<0-gL_SE&yuEa_!y&@-`K72lEEf*?dzIE0Q9CF5rhjhUIMPcOdNp=#70n}7ks^Q zSHz7~(0>{%b!AJFmve|xd^{@_=QyQlbjB7w2p8$FI@3>3n2B5od|WaetM9v8U` zM>%Vjv?g$%^B$ak|B$+8L1r9THv0r2;+FoE_G8_x7kOrr)KB6m~IsWzUFZR>W(y4R10O?@vEe z!EjpmL+R&y(R``YFG5xFkQw43W3mx8Lyw3}ppV)7*Rso@?nA$}O>J{i28@}3($J#CA5OEi9_ zPzc+uYi7A&4hIvvWGMXLr0kp}_2TxPzlpzgzl_wmz32XJ*I|c;x^9KxfEZhVCl}d` zQEK957+gc_2QX{lt!u%#>#VH)`M{iB#e6r5NXdDPh)-RHvUreGE>ihLq^Er5DQy4r z6{T^pc3q@dx7d^8>WVIG6$G&iOcl?hTdQY&6=9G?a(M3^R?S!-xB>LnA;ueUl@YNF z|K~AcJJJuW*Drd^)PH=YH0I0F@8xX73Hh74=iko0__hGj`xDo{)p6I4X~4SHQW9!>U~K3O z;?V{tAxLGs3C0efXr`9xKrzI&=_a3Y{rwY_30^Ji^ZJ%v>C~z7Kolflt^nT|(&-T! z*6ek{Xlv}mTI6e%8Y`r8>0;J{y;Em4A6xtN00coOX;RCGG->m=hU3mPK)?D=9Qn$@ z-{D#5drvg^)x;dFgjGED^x)pf7G8=kOT2mhhsnynj;i%DZ9gc|yC!N)tiC_TEWiO{ z*m+Nu`W=xJrePMd_^d(QO#OP;<>vf=v#9Isod)jje>r*mZumr0EgYL^5B|9x`(~G( zVN>((>j*rV_pERbN*8KqF8w|L6aelNo%@Md_HGs5G?O=hEI7cz<1+xT^2P|Zc;Fw0 zCHXm(YWys>vb>PJ6MIP|x zFLBB4Em0e){i7bgQ4b-^4XJJ+%q5-hbK#$r?L@`KUh*YG4y$gR4WUzrwI)p}wW3)#UnRin5f)rP??K=9G>5$S-Ke5sTj38r3Icn8LIVG;E1)J14v%r?>WcM~^)#B*+u3aC(8=Bp| ze8OyZ3!ENmChtDxYdoG+Gj;ZC#;@^qPy)15H3#ccFo?{lVhi%L64;IT>IvNq@ccg= z+kv>3&T@gB-cr|KhF!uSynI`NocD=mBOa=-`741_AnKwVMa>c)X90Bq_#k~Vfus%k zI^=~d80~&lzpT&}o&A$N31bI`eaBOWZS2=aQ z@ZU|h+|)W&o@|;hZN8|J7~MYcdZJYfqs~`^M7Jqb2OqsA+`cZddpx`;H00-!UTDl= zre?^Yr#Yn?%f{(SPHVi^6@FWPGVlAjmL{ot=nXDa25vh#qO~W}^j=NS%Sdop_#7zc z1kDwzp5m$b=cwgnm)i`>ZAG!__DyyHZXGj+OT7Y{`Ka2UQRtD*U@#uwHu*XatA^)H*c^%~JpCqQU7BB=LdiP;{$ z?z7jhD$6h^;84@kn%UP?j)&hEnT0?sMnM(3oxs|;;L7lcz}DSs^C^WB4Dw%TbzkNu z^_vSbR>!PeHmjJaUB%8ALw*zoJiuyCCIojpOBiF;8r%2rw}r!?O7xyawa!+hhD~!` z>|+M$c;>;?;%Jcbg{TKR8#h5&2Q;G8aV|1khpj)3LtdO9C_bvmtJmA@ai&nbwCs-9PKkCGa^({Kw>*~vctTtYuGnHH zQ0oiHbLyQcO|Eb9)Z061L7hV~i1S8|N_1FhJpt8MX0jI>ARC9lYCUt3q~N8poh#KN zec$ZNb^@c>S1ayQZrv5yZeZaPF#+SMJU(LtQ~ zlm=I#pOGH_$41{MIdH&dZC>jR)uS!bzr@pH#YoCyl4p4^howkt$rFwEEdeId2oU)K zU_<1`#==Y4!`Sl{_poW*z}G=U@T2P+HZ)%H;XsBijV)MEw$M)}$8I$D>jZ1-q~yDI zSJx6#pqQ7y;V{Ye`gynMpWbvK47c7JXGq-T7@2@5i3`%bZ}QH$z2VFb_Wv<-?(t0h ze;nV{{W3NTqnWwiFUh@aF1efgC2H>1G*YRgZHBqze!n$JA>^J)zMES}xksf!NF|L* zy8QCn|L33c`8+=7@j36u>-BsF3&_LrT`qJ|TVi#cO|=}V41FnA|J}0UIbfEiBmgh! z!?2#_TLc>t?Fa>Ht8Y!Wet&ZI7mdJ}f;}MGs_S-i{vAA2?=7>lq^;ZjPFte2W~slFbNir_TbSdH z>5QDOd7R6Um(g-xl2p9|){4^}T5G!S`v$5F-lG*lbyC>s`FuB#gA}a6^1-^7CPp-J zl3S)ingqfzhKVMFz(4^@1Ephm$Qn*;l3Z3VAsoKn@e$xF;%n)z>KRMTXsXe@SUQ@$*v5b5*WzYXE zKg;D+PK2c*CNA`5mqg(2@1S3QGCKSA?Bv^+`kyBf{YRO6BtZ`)9=p(=1(tfj%?AJM z-lOh#`I*0z9#LI*{|VD*^Myyd41dPEs+*_WEz4aB|s^y5d#Gaf_1i1Pp%kdsouH$izlX$C$XM> zze^lA4$JR5s_{fl5@Uzho52KwWFOBI@gI%tHf?O2GZWoS(ry3MW#Uv0=ajvITV9zh ztmS0Z;-tktKep+Yt)G4@E^Ar8RVc})Z+kdRC#dm6ETwsTf*#mbTQA~kUR+As3rWwh;!(LN=v|PmmI}3Hfq%aS2anUe`UFol>g}I2 zS=@yN`HqG!Lqkx|{ITnKIPj(d?p~KD_&Y!b4bq?1B=ei{{%twaB(hU3Ds+n~^^0*7 zooZ=!BMfwGA+=q_-r`nvbcaI#SYXeCaNnw9kJKy`0qL8M)k>13^n^L8?4$ z!N((ts~_ni7R9i(m*qkapx3R^PdFS8S~{*8BN5szQSd(7W{f@zRN^wkP#XN<*mRX| zX^;F(ykTiYa8}+lRWgZyxWxNZ1{jA06G%9cDG#rZ@`bUkLJml&(V1?KR3kEu!csq! zLmZ~H^2rwYx{s~Lvhb=+b#-DU0S}KbfW?U3;iuikeQDvkZL*=23GL}IzUcu>h&l)G zx39bwkZCn9&Yk2uI(*6$1c>PpX{x?xE5x7{`^YD}J&NUeL>CA@V91cPzE2ww^C9}T z@(mAYI(_zkhpGF&836yGyvFguNJa}+B+_me?7>L0o0!kaEGIsE)zYr6_v~W+o%3B2 zkd@5t@rkxcj9|Nf?#HY`09-SxN9R}8wDy zftcWkinwX4DhPTV__v#=Hf@@ZgkqUc}*n>K=O70g6_OBctPV9{6cJ%O^ zU5uC8hGWAt(@&2L+XYWvr^})U=2C!Gl6h?NKD4FW+A$AgZ0e3SE`h4SbX1L$`k-1sE=xK|g-{nj*Y(1MMpb9nb(h-Tu_R z`pE74pDaNRxD%vAbnkSGM4XtxcD3Am*su3w#yyne{!ss=(z*1SLy5_r9ITq6lZT;A zcz=h}ym8Q0vlU2kd5rGHSFQL4dQ>a@k-tYtPjen)v;~)1NCehglGL1}mUs_0WsjxEmg6Bg*L*e2V=LSS~OM`RAHxSa_vnG+j^m|^Y{}{QG+8Xnw zGjKYw;knC6p7l@ZG3Dt+(`lwG7)TBFctJPUlZrh>g|Wu8A5etR6c~F9fJm|TYzH5~jZ2fM(&YC#|APM}swzv)=YTk_R9pZ+LXB8n0g#lT*db-I2|!taIgca6!ekN@iXdK@%Q9xUZO9x0ORdr#H$SA%mg-|J(5n>|z++$(O0|5@P*NTAGr zI*rJAZXZd%wj-Vk@T4^|WMt;P(UJR}N9_V-Q>Z#Fpq`^% zCB~W232F9BD&_G+#_cgMktz$T$l9a`KYb+V&bM5vm7g?a0mcrkV%*GcUn62;&zzlHzFrMf{qEbt)w@U+#NSp?*C9+dhm@I`S522Ew1tmn z-6Ib>_qsLzr8u%)?p#+qe#y}>XCP2_WU_x`kCpytV8dsokGnd*uIi)Cnb^IuX$^)J ze-`=AciSSeW4zz*@SKNs(cE4n&~M_l(M_PmM)-%wRx^@RtOA-BE}Fm8wF3j|wFkzn z8;D@f=`(dznAG!OKF3Failo(Jh_lv_^b}0MCgZb_-FLfZCkMb|sliOlt5#yOy6=&=9U>7^ir^sO1MYVCfY* z%T@mv|7#(D{&PJWIL-4#WWgB@_7P)yP#|Zc)zx7N)vnd{Gi%VSHpzjzjrZRSwS`W# ziJpbu{8V^MTIX1juW#dI-WJ_>Bef5J&<~3zJ)cx93X5W;7qZfQ24Z4y7ZW2+=Xf2j zPV3Agrw3_og3~>0R|So@*2u;_N37=l%?l%!=XTmbYtukEA{E*jeoX<`97jS-dmsR3 zL?pk=ytNY9NI1XgtkW3S8Sg3jV;Z4+?C6L0<|ph8hrft#&leVE=K0QdUUE6tTYk`9BKVcaTV` zYTvT{i{8qAkUvILiE^rjCdW8EU@nY^ROk1f5%&g2x^-m&qpu%HA!cHwYuQ zJ?rq<_Mm|rlW&``RShOq%9=0KeS0r_DLh|!r|T&*^QFuNLkwk{ja})gU$wx=S$(@4d)5z$KuIz zJb_A-Qjl!%%My3x+kFyVJ`%c8e%F5gy2A`}L9qPdXO2=%CMr!t-bmQk@CF@9-=Yli z9i4|yV9QvuO*-(XwG+WNqdPOTddE7mb?=I&<`|T|>6Q+EIi2O)x*w{w$k_+IPpo}?!c7o7l-m6eCl76e`C&GL>IFpb8voKUm8)F6ST^JaQEF zWYoddF6}%qC{^4DrwJm8i6(hiyCVxAB9?s|f`A1{vrgui(&~`Vp+=HP0e{#Ude1tt zc4JOZI+PLk$X(%wi`ON0uZzpat}^$mc_`(W+90TU;|fLmvImp#)<$Y2SH1b*W|Epe zhDV27W@WkE4$sl3{%z`}!j15X1!srpPlViQdKj(O=5KVj6+YvC*Kkr7E~Eb_vM^Ki z9w6JPy%8v?X|Uvk*j9yK`jdO4?+Y+PBHU?R_I@tJCwix1vUj^{RlY7&1YRNdHStTK zt7X;K%Q&#u_kkz1$)Oy_um63yr!Z>Gb7fJEeXv>vq8x`XRL&??IFLEuY^s8A^q7pb z@*Wsv7fX>=cOcwOpxol{Yx(jQRK@9nB|92zY*;UA+7f_=wP`q@!5`WS{e3-%7nKk8 zI{%Oh9;j|y6_k)(6>?gkO7X4o+HMU>vD%e%6Q5yKsu*RIHBhtHGkfzod|J{PwM%ta z_1r^}`|RMzEkkI|>0$T{R%as{8b?l7Up525`s{#h+G&?jC?yF!(fJkm@{lLy%+*ZC zWr*ZGyBuXgS@kIFgJJWz5(EDsX}?tg!(OX&OQIi0z?iFSD#HAC;lp%)44p5ZLkaQh`%6(=~lF72S31i$*>NM&2_uwOc zL7Qn;JDymCGHKx5pH`yFAC!NZ_|7F^Yy>n9?XBQqG%;qVi-6Y{pB}fCJld-*!eCnY z&A)a&*cZ7HtQ#)NVcI9JOkGRBsYxx7CJBI4X-FNz|NYXMa#g5Y zAk=?`!W7&Le#p$V8$#{W}HH_m|RBv|~7t|Fv6+`h&J&EtZGOv2!)mXt67)C4 z&^zjlG9fba?G8ovqC;aMeI8BI!&@u+l;roP%L9?N$a6M<%6>kNNF{rvJ-_aLW2W)E zt=1QP*wXRc^CNF9lPc^BJCuSA|5)Ph{p{@YGGTeFj2e=#A6fThyT6#@G`I611-|=S z(6{P1?{D5SU&;7cmPt)!O?R~JOqU=nrn3ZKs=&`5;%`ck-1wdIK%<<>%f1~(o$ZQ~ z>Z1rG#^~i-0^&V!z~NJZ4POa#Lf{{9R}yA8;esdS)MXw2xVxnY*8NbTLgKXt2gd+U zzuZoE&wuUDNn7v56^N zc$b%X3gU%pbuTa5+19?kI2Np-h+v0CU%%qT^1!ysWZHXo_Zaz3gZfG-JX+QdMxSLT z6vxc9uxk^_{L1&l4x1bvi4t3sFOO@q{Y6O7FTd{zPWktMS77bC)oQao_wf zF^KBQ$U8>r1t&SfCCB1z)R6rS{^>O)e<51}qRKDUY}n-~4u( zW1h&)v_)fJ@YM_ZwSPrUBnBhenIlmy66Vg)`o5oRC3hsC!F~LOPyI}-tc}aKv(J{0t8U<&bd7+n z*qqv;WK9|{fK^4e5j+5x;KxT8RH;~*VPiVtJL}FD?=mLDoPXN+0C1^f-YnGZ-)ey1 z!tHYJc86FcIw*oG4Q}-=5|gEY)N>+rbD6@_Lk0MK-ZKetPNe(&1={3^6%6D zP+V2_Gb@R>+GC_33BnK-K+~l9s%wE7g-+b5o(N^;=JKcNz*2*dquN{)7Q*|w+fyY^ z!NY*C1-VX8Zrvy+E$f?;U&&QL8DFY|6J5KfP{N!oX3pk{AWJORXzhR@J>dTJ><85& z6uprV8=KLEcV+Pb7po}?$*A$nmrv`KuQsCm$#1S1)34S*ALXx@Y4Shk_qo*iwD6$X z;qMXig_SmZ+R|h2oEn;e4CF)6XOzAQn&Qeu&-tk(#b*Ng` z)`C^Qt(z>HP6Ysc!EJqkdpH0a*D3O(@=dn|Yww^B<3KV}T#=%%<(d7d19bSgr}i^2 zPX{1+@{5GF7EQ5zP-7dUnN-)4NN}oLA}0>!=nu85} z&Xd$595%{WRCb$v+JfpX5{%i$x^`2XwV*!8t)FKwg<}Ezpt0uILCi`_X~Q*~HZa=4|6eW#Wczo5L)V`WXS zvhiN^d}Afh$O=aD>|<@UoL$MtCn2yC-uUR9a&h^{Y`M`AokW7XCf*%Hb+2c$r2}02 zUt($5lExco870YfymYmA${zKIChFP_P*#(zXjCu3sVeDVQ9q5}i>vSoce_;MI8I*V zOR64R&SN8+3VL5gpU+rWVX6PNHWM2W7<49(kMKsKdPVNOs)#gef|NItUe~>W2Yoaf z-nzC6AvCgd2drR*sV3z^&c#;7#a0@96uwE^0z}MB6X)z{E!0ns?0otQ*F>O<4|3g< z;RP`Q`DY58hFhe~C)S2-(n@!&E!JcX>s0S>=QeSll>Lz>D+a9I3w?0c6Ns1pP;VS$ zm1_s|9q}UKBGO<5 z%fIU(ru%JXGi$Sxq|(yG!y*y%Jf0c9`-Vuh(<=}y6q2hGauECH`D5SnsU|gG9{4(o)f&Be51ZP{qUcXgOJLrP4*1!Vx=Dye73b4nV$JMh{ zv0Ys0Qz)?LDYjC*c|SDS<;Z^xTBu3t-RJn$ecQdQ*Y348Iscm9kg7MDnWO(}O+?;Z z*~we&e3|xJw8hJ#>c>l>)A0IjXndI4yUt8cNZ`K)NMy?O*}$gkhdA?xLcVCJ>onnK zC}opn$Y=F<{lBbgq?~fI(Ai7x6S4Gf;xP`f%DuNCfot`GLuDSUXEp6Pv8Jn;jZTs_ z_Xtb|!~9eY=FUys+(Tb%`TpgzKP@NTzMPwsq42J=5KefrWxUxu7`>P(tVscOQ)Ia= z56Ba8%V4K9AAl{v!>QG#Q=n}6Iz%v+%stwfS=*8^~3=;mnwUJdiTPP8O>tWYXA&sN{Dn60JQf|b2J zs*&iR6ad2VaZc+k7pG;v+^dpg;oW36{=4cZsi}nU#Y-9r%5odF$+;RwUEK<`U|WEd z|Ea%CDe%DQ#HEuH^Cwd=aTgmg8m9SH$Vtb5ddVOZ56+;hN$7l2PDZ~6|KAP2a>y%g zoGIJ+)T_*EVrYLd-XL+vuf6TFJc}1a7gbODvW9~u+PxE>Gym!n@H1|@4(ed{WR}n8 z0%J}i;l@Lea{2dqUE{^2XV$jcCYM(-p8`ZWR-*zny=)Asq^UMP<6?g*vwrTx3nz9T zait#GeH|C!uWoyA#8mN%Lq~-` z{3M(pnkgE`vRTgwxX5vav8-V@v(MiIxRReWvbGEHlGwC2PtlmTjI@GbCOxe^4eCRF zY5w2%wK}8PCABV--1XJop9Gi8#IKculR!gO!#u0}+^e@Kl->g0`xQ&-k%Ye!_YO}= zlDK+57^2FZ?*ernq#ye&o4JF-p{z?tAZocP1&Ay)>W5Y)*e5$fBuW&=ohsD zq<`b5p~qJD-jZsjzX_Cz%3hVG-1k1sx{;3QOR*oh{$F^Y25!PBP5WynzMbE^0YcJ z!|Dop7w@zWDi41(MO9-|X-BLR*!SHrJ8Z>(L6vuO&1#TZ{k>m7?0uzE*1L+;ji#??c#91BH2(#^HkDfXUO&=uIcUbN)DtmF#-4=slPfN$% z*?+6;p0tol@oqG$YP;gQ-TPkZL+q=u+JBFw7mIbWc160`19we)7ta2D;TvQF3U-Fb zs3s5n0qGz|o&R3??D1FaU{Gi5pG+;Sb_gV=?|N;={Xb`jU^@$DUQc>+=}-lbe7}{Z zSk8verx)+iy{&56J|^6oX|!Am7cM+n*7;28N|EZnDW83uD6(mMDJlG#F<#Wj1>Z~f zUX)E{OOWyKWp3L#$u;z#jBzvffaGlqT{?i{`r%1RnW7RJux1uhmretVT4^R4?*`dq z3qS-6^LOQV@`TOP*D1gdTM==Ga+n)_!$AxM?VMz}(dm2&a?ytEb2w_Pg@Gi@A5EFA zx4EcHZ1%kATB|Fp>iqB=H&*7;5&l>P(Z~XUQ)tf)iXvtqZWRM&Rk)Q5jg$kv$!_~O zb?8|OVBl(4z z$|GE=bf-+HKyTd;ZV>x7G#R1he#g1Pq?4U+z?Ux>abwW)WPB=jPJ$)%Nwbwt!1W^r z3|19VGd?a@gu3o3rm^IWikD!niqJHHqY_Ex=;XEZLX@cWb(zCpJ~54C!~;yeV4240 z96L-VhHMAQz$CNSyi^BYJX%CvCdPt_S>H;Rj>B!G3&II@77WQjmhtc6hjs(mcH;K8 zpv#V5v0@I56!y1heeKi_wKw%1h#paYdgn-w{)BpS%I|`frWgJW&7ho^S^M{t?I=L* z?bv9=#)%2>zJ|8>Eim>KC0o&ZtXt`x7t#$|=ybRl+)(7SgdEB_VVodT>S7vi&^dN$ zH*Bik^rKS|{^+Wr;cPq7YDTYR=~=g8`O>o-3ncrTk*(27thjM)J5AUaH$p(mCFTb? zma99k>I9tqal^UAaE3{hT_ekTOPzzh`6=Pq4wRb0r1I<*^X2tRg(g2yC`_PDSsxHB z;uWY_Nmk;X*rs*i!%7&31&Sw5r%4mPbbuiueJd0Z`B!LqjyHE`c_h4Cq3#bRIv$*< zUH{d(H~sUm$2pSZ^Vo3y$bF@cPLX}|lFDRlaD``QCRTv@K6Csc4ci=2#}aS8(=&b9 zZoJmg<&tW#n>=n^_1HhXn~>@R2gj~MfV@ky?5oIBFyhn-1 zb>Yxr;db)uZ-uzsZEN@m`r=?_n>dzs^A22 zcPLAx8wbwSlnEoCJ!XF2AI|plV%k&_{Nub&+Ed28KgG4inTn=JFnCm0@F|`>TMp?~ z;cu-sr|%hm(r*@q5!SBzjje`P#p;VspNuxBWJ5*m9e#q&i%~v;lHhA&Z$*4q=+h%! zupLgK>$MLPjZO}`USSJewIHNlw6R}Rq18w4Tz%iATbYToOB$`Y?w3NUOD2Df{|ZX* z3op-U(SM5h`R??;`HL8eWb9#`P~W8t<>FC+lVgLDy<@|tcR+$CbAmt$s|4DjAhZc>PigAjx_DG*4v4t)%Ad4vOL{OE0j@?2uCJq%y zc9S%fJZ7!M7wf~MHEr4wTsG7*Zf==pm=4UMKA30F5IJb5JdEAxwAhw1eg`a*J(cNu z5v)B)lU--j;E1a{uca9{fjxGgyS~9YsH+ypt?bcTrTkRZdXn5k*$J7#hX$w6jyct? z|FwKjS3cFEs8fi^?d7!;nY0T&=J4XzvSLYF%hwQ_mlI|n0PbMqtEOe$kuf9X>ax|Z z4#6F>1%@yFtHEUx4(B}t%gy-=ofCs4bPGn*BfA8A#|V<`L~D7{YIcJj;aE#hv4x94 zx>621RwbZLSsR$`ONZ-hAnrtXbK~!<^$7XUsv}0{>57r7XY0ks#6p=x)z0^<5rlWC zrG51|^K{z})a6!PHCSN0weO8T%Y5i869G+1%Jb|~w&^DnUVOoc&%^9wP23^CjT89i z75LQRW2Nu@r>%Z1adALITql8j%W9&liJ-csQ#<@b<8e5*K2zzZLz7r&t3;3X>`%N&ysT5hF zG^(xrNbrI-s13xXy<2&}Ym=0p>dnzy(XR)iw*Za(iM27n=4xNP9&c?we&sOz2cL;( zvqAAvNyXnFQ6i~XB4`Tv5i9}0js)UyBSsvB{4@C>vaewbQGvBoNYusKLJ6WL==E(P zecu}&@J$(2fe0*wH9OJ z26c@dzxX#l93}RNcp{-XwQe~1Mr?FvT(<`2*EuhhgiunfqVmGjQ6rgB7-}aMC$#iz@8R7MxE>}Gtd^D5Nb-B3j zI|FCoGcrMQdl}RI)8ANOit)5q@af$P$d*}y*}QV+60z*1?Qc(i3opaMdiif_hq^Ph zF6eOyJW&z@sAw9UuIYo==~W+=MO zhWH*{tnR__JkN8@>RvWXZ}C5CPX}DKC$b!}2!uXs%cQ}%KGrCCT-32u!?{1xH+R)?pgOQ_yN(u0utG%4&;>HIn*M$kY#WK8|;lay5i znIoP^j`>RxTN~`^X4P(Go~e%&=|&5d<9OHA$m>m>p_B%@QB9!_m%bn7VPu}$pm!F8 zCJt3Mi{7%$t^S-WCA_ZpPTv6XLZgf^l`+9+PYz9^I}0(=7kX{$f*AOyxC=|57SSrR-ioFEVy|PtPKZ6X>UafulI}mPw0aJ&uzsE>&gLX z0DuGNwzhK1P!XA)P#eO;=^gIh^EUrz`@DUqC3ummYmu2Ow$oHIq%AGEEahO&7q+Gx zWL(3LcVL=ojT3AbWibl`&_+vz1q?#Z9#0#35R+dxbA&i2pd{;QKha^45T4 z#6H03*^cPX1dS8rpA^(s&|zYoOFilG2ZiJbfQORw=Qc-eCUhIH0a=3&tO#mM`$THAs^HO!^Tf+ zxtG~Ow3au(IkZIp*CdEW)z%5q$b5O5az;UjPZMpyu^fG%B+Ct*6m(BqN3pU=PR?LV zpEmk7sJfS@Yj=m4tpUyC%m8cSQ)g_) zRBTJt74_9vu}Vd@5sE*?W?v8$CmQWbv-|x4JiR!yIZy&rC+O)e0J?=s0l*$d78yqO z^Kj(6qx%y&10idF2rQMfA=yt%Kh&B7#ab1%a)L5pY!+O2D+^F*=RNs8VOZD9GIK3% zDtOXWZA}51z~tgG1sKfi<~T6fS=D$@Iy3lg?qEtjZD^ux>4l5-#}C(xZOZ^W#(nBQ ziYvNW3;;j_h=z(Xb*MJHIFErKZX;p|0#O>1?9;pVRzchd$muSqm@SYSe^xzVk6sR~ z?jAMx$$a(KHvKP;$d;Po)}h+bRR=*Pg+CX^Zvx`0g<0Sc+o!>u zWoMQ33$dIzi7RTKMTFo!;j;k_fBn(F^3i-WE`X55&tjPtvG{UUL~pz&g*K^2C(NP} zQ#_f_w-i(kSf*D0Gm_sf3u9@cY+T*BTE63zUZmhtf1KTU{9M}Fzq^_Fs`AlH`JGj- z(nWiLw}nlFPZQnm#ZoWehm+BVR7omC}iF7h%i zNaWux-wdS#GGr&qCuu~5{Er~kd7WCGxm+Gajb+=_*&6UFxsp}sxDiA9kTZk^Lzi#g znez@^iM++_{9%VH{8yuf1E%g)yC3rL2;Nlxq^cdH#u5^4R=6R;y&J5f>|KhqEh!U$ zl7zqd>u3VtaX5fChor>cLlj=;4QBq19#mxAmF8Cbw+(?yX;a1+2!#bB)uSMTvN?I` z`h&%%Mhoau3d^a5m2H{D;Dp~@#{&V+MLzv293ml305MGNYs)PuAlr=)u`F*?eRy*) zTRwKtDUm=G8$!ZDPpJ(~#HF-MTuah>RZ95d>1pGEu;FFfw602{>->#A{P{3|&0VSP#it**SnkJXh2OA%xQ%-&c4dW``%O z9v>pSBDI*E)5_07Y|*w&lkb`T1X-#dYoY|Xd#_}5OfREo%GXU=0lxF>H4zw z+d9*=_3>~!PJ|IVnz<>yJS_GX?FrIW+*xq=QR3Oz?TNjW=sXE{9}!-^KW}&Fc06#9 z`MmpI+!XfhS!~>W%Xe0nFY|vC;XUQVJf)4DGi>FXM&k8DPvu;^#o7=( zI`OJ$TsU1vF=ZAtxhnfyL6KE9wSH6bE=^OtlpAm(8LwfLKS28;vtLO)4;DKSUWUE> zBIPCZnu!VWpiJ&N0Dl+FgFrmQt2|6wy?$O`|Zzr7BfnsJ79vhX=kb8E@iKh{> zfaaA0_Nf)_gvRS@P*F$e zwN$novkvyEPVQ5kKne^071__Z6JcSi(Z6G6ldJj4yOq}QW2t?IX!FN#1+*n;BZihT zJ>XKjx!W#2IP6fcqT5b7gN$(wjnxKOi3xO-=ge1cWjXDwJMRrkrBJ0&Q%_W_(3bBr zpcqf%i@Fs|Mz$}{sJ}pjM~U6$kKyl`r>&DKB{Apj{;SRk8aj-?;(~3m91s4E%wj;w zIV%EuKLp!Wga&XT>&#w>hZm-ek0-s}m~})Cj^GMePi--2J44C(>jd9Ve|SL$wx6gv0txeL?l8@uQOyJ*#H z0Dr0J&WcD1#Y5QFc)l~le^e!TA-kmO8cSn6%d4RD;HMF5YNadpX{BI`!XOk=UZUVM z!4kkg9a~vv3oC5x$+{rLN`tNnyMQQpAJ_V(_G5W^qb8|Ko8Ngnj&S9~6}ufz=|Uc{(oX4Sm3&=N_7S*c^$^SiNNm;JnyQn1sDNr_3qFtRftOHgmN4`Q z?(Y1L0zbDURH%?8cxFT6KEr%ds6GMLxbeF2dZnCz0{#wDZkPnk+R+d(*1CJy$A@Rg zG*;QfQ>)h>gh#NKh{mzns`~1wCJKXh6<#bpZ2d_QodCG!{^FBK6JEm6{}GJnArcHV z9S3tAz{&X2L8wbk23W2_b-22&+ifd~QKYMQfnsxgWwT%1=^AS6*p)~VCdeIUPGs>s zjJ%`v{8^GI&QZ2!SL3ig_+{uXIqL~N2u674Fc9|r>O1J_#Mvvo5|_C<{M2NfK#}Do zVIYy4n$MayOTTSx4c!qE6X0Tax!SacY!ny9?ZkdgHJ^ACs`H=6GcDSS-^(5n(L!GT zuD0eXjgldefX%eD=gU>szOpy3nk_5g}#J}T2 zxk%y3H_rfu-DfubE8Qnbp@VE`9|I0I0JI&&Da_3mN{RyjWe8r}|Fn3(wRaoLcQLZ} z!yeTI1z$f)s{g$4VXbHj*xn-l@xYXMQ~TfA2p(0d@Sp2(VbPq3w3%6_#ToCgW_t9q z<;CM}UddeUJQ24U_V14yns?{t=2^=D#jCTQ6?ktm1<1@3wblR+<#pW^XynSBh>k%g zIqMD?v=Gvc(?+7D^7DvT_pJ^>g`pS>AFhL9#TT9ET;<&w@+4-_fgL~0$P`gFbCM4V zRuYsoChw2sbgQ~!Z42}zl6~x7+;xG5eM$ZiE!E`FpB(t=Wz(FpbI!i5dLvY@Sn)(B zOU>hU^SGo|Vt0NWkRRh>aN%&kjJaRKb*4xRdNDXGs<41HYzCg?u6kkn_uIO?q0~$P zhN#a{g@RtNh<5NatZ*%jU!+`?Jnh5;o_ZAfF3^~?LSPHZ#&PGGCtT2Y+64!7ReSN+ zrPht=@vEB?C0LvMgT8pHwD|YXtCPNQ{dGWy_{|fBXxnDCiEM(YP zdKnLyQtE|18?cCk-jGmb>0Sf!@G~s7j@KP>!uSDeWo$mktS*hJ3S$t2e;^X4%)gl% zi;{jKW}hQW<~`B`W%&?pC!xYbA^>a`5e%Gq?8O2epLgR^y1eB!BDhzOULSB)39)$6 zgyx%1*!URf0}?(AB(hxKau14lWQEoy4CMXhW(*h2!Q=9|2kc=nwU5jp2h9hN6Y~0B z>g=#7)@uyKDnqEFN~b62X;oFXJ;LqI!JdFdS$7k^{T0o%F;rwId${yOB-=~UAJ>uU zd!`4Sq2_)N`OzhT-()&p#2C+~l(I0$l~n-XS?U+Rui#S{dfwD)2R8ddEywv*M`RMG z#cZXtNjO#nbJzG4P>xOpi=XcHwm);jFndg;5NGzUouNm_P;z+V*BdyPLI?Pp6E16HftF zlF?M7!)dghFn@i%m8HmAxRBXTqVE*q$GYxFx1t8c zckf+-P|K&G=fuvG@t)rTHaD_z{G+uR_cwlWEPh3WqG%k4w)T8-0#F2fQ&)dIqY zY7aUid3&D3;hzz^CNDx;-S*nIA8*{ebo}1=D+kaKAH}PJlNs-Vu0Q^ClOoVOh}a?W znljitMrfk&UVL8eQSQCB9hR=^35KgO<27zF@@^Gj5OOS@v?RCFo&^G40A<~43UpY~ z_s7Y?x3mad#a0Imwcomx6rrnQ#m2MO{a9?#n(|cp3mjFQkIw{rNmlql{lGrKZMs1*#L!lRKm0PXutxnEA` z^DR$7m$@z^Ck%pRoQ`%>8uO=Pyb!*~V98(Va0UyaV^@RJ1?EIsJ4ZhlI~-96=G-Nf z*lH;(jY|XEsv?D5#YYuSor#0ZW}^^&bbD-eHiYW9ZWku(yQ zROtO2mBX~v&?uO|(c5I*NCM2gZ1r#+p-6}#qODxoj87~zZKWfPAX9lh-SF0o`K>ZX zGasPlO6$d~e8p&fd+9bKUXA1?hAsEEZ%;SFM0HR!s~oI|)El|Yo#B=kpY)i&ZDV)K zIquxt@GJ9&g{6rN>SoeUe+UeMBm>xpm}!dtb}&r-Wk&>`-x%mHmYiXBpmeT5Al;i< zC+J127dTE9`sn{d1T{Iq7tahWei(l}YJE`RDihakS9FuOgN121ZS1}cYV~doJ88Lu z|DQhx*bd|6H^7176MrenwrM7_U*UMS$=TtC@1?)3rK`D+o9=VmO?mA$bt)cs!qk}P z?@>z-yJ;>tWu@mpZS1tIgk1=EP*4p?O_B6WecSu({!twMpUA9ZaYsv;nm!i}8);J6 zMDt`*Z1wvcy39D5CwLzh6Eds~Q;pZVW}+M?u;LU2_U6$%cin&0oeVIB<6BReR~?=zf|I^eN{_9LC-Lwb>+x*#mBm}E0YtLNE~)67p* zf>67eAGdN3f~(K#l2T25CC)vWZuX7|vUB*ZAO!XE3P!1c_{-5y0*i_e56V&X>y%xf zyun7Y0>?^hyUo?cIHk!Bk;1_x7t_LGLe(rrQ_z)PiPT`h!X@>xyH+pHFXz8X0LpK# zcTSC^iCwq^+n*^(7n||HZ)VicFO>fe5JRZ$XR{5D^5GW~8)8IXcB5qKKlD3Kpn{n7n(>dH#Us zJoh>GbD#V3{alw!TE)ZKPBU5Wq}P?ey({$Fyc9S{BfmiM?AEi@a9G>YV!k9m)zgOi6Id@o=ha4l&_$imJEYC5a{WN0TW2n zQ9wzx58YB&+HbM~!Nl`41}wdc)DU@U0Lva+$+#sKuf4g^iSj3dWtxWtW|xUpT~4`Y z6N1J1n5leke@S3l0`$VjV_i01P_9MP=}~b=*9u=*(o~?L$8zR(VFiW=cQ`1% z*(&tvELe>^EH1a6d5RN@xay;lnEa%}Ayy?I;cr{*S&us>`g4cp-QH= zTHGA0c;WU?6UZJC17j}t3n{2a+&*{?iqyhC*sm30l~@_PjC=15NjSPAe%Cf4Q0ar$ zv8DDKg^YpM+D=*VR9O)>lvS?`!hp>Ca?;_z`T%yVgq;LEe7dVp0$L-I8PDBi%cR#T z(ys3T5b2FJqNowe#MuA_4xcLjWDkfQKNX&KngKG#rVv>?wi#fTqk1Z<=f=r+?=l=@#<;lc^`w@#l}5~xgq zF8mDgU{W@XB;yk-ynH5!Ub&^LEv$h4nV-O zP(9Ych2UO6=&=0c1mtb8zWEY}+sVMF0_fw2jwGMi1pt4VCYKgkah?aD@DK${L^qn~ zl@{q|fjEzc+Bl+XtBHEG7VvM~f3oHnY{F}{1@l#@ce z0PhTn_dUvYmi@6{;u8jnhNs@yq;*=Jl6*ovT8xv`xF#E}5BhU}ZCvAil~3EL$opWx zQ*Vh7+@m?khvfywTFXkR*XU;bIAIJ)E7nh&>;ZFyntKuiy_wN-3W5RK&QNWohG)^f z3$T;tmCRk!fXYJeEnRVOfrRngZ^_B%ZPQAim?kqeW6$^V8uwZozgz+b8wF>B2^PSB zP_*-#8z56OM+*zZtIs8173UnxY1WeXK^?+=W9yDfP#QBjB5q1)SH4 zo+`@+5L!F2yM~0y=+*6{F0#0a6w^}q@<9k^y9y|JLg^OA#WOC7@E-n(XRv{3LAOfi z+qd$Oy?RED2I9)zjp4R{w(?o!Sj`YL=Xc;0Wv#F4KpRJnMl`32ADR2fT}V;MLK0M_7Jt?E5**@&@b_k zasQczNGx@NGirt0*(gj3*np)9mk&d*fUmDt=F1lT2ns2CYy04d6eiv88HKQm*NQ6e z7BaYz;04v`Je5{_q zALr0;f|2lotr6ytf#zx~A&H;dVF8GQ3RtA0QzU`+i>&m4>@CZ4-ak#H1syq*VO%M~ z4JpC_!Se8pLTM@gwZIN9J{00mRs&^7I9uUXqv?3kYKYe^tpIAi@^oO2?9= zk`k(S3&M_&dtpj9&#S3~SB2iFWFh_6K%(S`H*wYYMM4ZPPv#)dC|)|F(%u}8*xoL& zLY7`LLKLyUW^hW{kD7;L$vjJ?ieD3u z@6O@B2Dx4-ow*Lw%Vk2K3OPcO@hU=->G6;sq;j4t01nE zJ!}pTNB4D{OHX8+x$gZzHtK*I{;c&>m~O~hbpJtlR6D<9kDa_t*q7jt#873GEKxO^ z8%KvBNx%2qbIIVHtdqg%%9tHj!$zzeGG(=|A)^44nt%7|{kuB=uEw>yA!|3z3Kw3; zj^ekdwdw4uFa!vZfDz18!>!;O%VsH#uydID2zvDC!gl2XzV`dkm)0)a(dW=w=SU%4 zKNE1)e5-#57syUx)G&jW8inF9ohAT4@djaaW$+_lZ!bHyx|W0 zIg|Gr*>{btB%K;lm%9}nru(`!%5s^ynN}O0P>bD=HA&B0C86?3`M$jQ0z2~1Fa16s z=mRfUz_+?9dmMRt94RcA;%{#AeWi!Lm4cmIw<^zGXcVFY7?BvbHM4vU0sK;DAiX#E zV||d%Q}%l$fXfl821}%*4%JyAg0#ARG)aH;d2nF+pg8WfLmTWeX*O;RGFTO6qJ(a6 zs_>cZ1~i87`HI&EsNZPw0RBP*qu>}miQ$Fe&O`2VhupG%xJ?`(M+N~9g8;&K?Y$(Y z9I=bZNP<{?upDW^&hbZtO0Q5E2)iFA9SQVlbOWx)>9{y@xZ$C?B#L`fUt*%B)WKNc zZ<<&*2)-)fa7U>nL5C9v$hU|L5i&v0` z@}!H1twOCO@RMh=q^Ydb^vBD1;}XnTr?gd<4XQPp$}G-%qJq%9|t z&-RR}`}W^?FATr#sE%8R5BZJw_goFPK8JI9xNIkJgrofT)UH{sS?G(1cUvyx7B^=3~#Vg^|tok#z+AlwC5RmzJsDl`d{c6&^o+ zeEgR-sEEb-g)F@)%3ahp9)b_%#h(|+?cDoff~JJj{w}p?0a*_6cfH`Mjfh*+LfxCa z=o+4ec_XiEn?Kpp-k!MW`fGWWn-%o6 zxsT`HJT{b^J(%yX1}rQ9odC>2HM9@2MOjw8f5S$h?ZdaVP%{TjV45 zCMV~1jP%^$6Xd)WKWQr;7BRp%lRh){RfP2|T+$htvi{Axc}b*l6Bx)W@rn56 z_5w-(Ymz|Lb6e}PTQS8i8_RS!ZF#L(NXd48=OC^UCHZv{S1$>1@{FMSw!9WVC?GB{ z*vWvT^h&g8l{&Po!vZeOg2WtM-&?+lA;99b0Ct~VSziP2vdw>PGB7uEdC*@AxE=dmNO6=Db~&_tyxK#Cq?Fhnfd~_k3<2 zw@%$#7!hskQ@}dm;%XC=`fCm2o&vDz=;+&Q&ho!^fllSY>)Vo!fof~p@7)8_TmnB> zUQ*=Q$(Py@RW?Z9l%)a~!foXy@wGon&zlr}Q1J$a07N`;XSzx7zv?hocHeSus7vE% zhyR04>Ia5fu=i<7x)HdU7e4n&$l_TMl+e?XaInz9&p*$p>H?##2pM{O`tc5&mh#XL zWv|)>ilhL)Dtg_~jon149liOou+%u;921Mu8~P~q2(>qQ>eHd#+rzf;+2PBbUwNyj z@78|I`<CaXWYDf%g!}k%w4TDB$HTO&!Mndf><}mgVgI^2 z%08n_PtO0rN#5*dpof<;m)2e;-F|#g199(zprzcl`qB1|dz9+Q!P&^aOS>atZGRVi z3_jKsKxN=j%=m%HCm0YQIk}352NQq)hr%*AH9bhVXMgSI>mdB^HskNzCaTH+w1PQ( z4YRR|qe>uET*(9ioyL3OVV0+MRSjNL57r^#RNfm}tK!!vu+4|jKa>BG!PuC{6E#T@ zsJsBR9y`VxA@VU<<|uVmR82i`@4_$>Si^B#$+K;E{V^DZOlTI-i*N=zcZPPCtf{!v zaSI2~m1L;TJ401(j>a@K2@A2v%;*eTV`e0&Rce#()piP@!83A;8~k}8=|%k5``;Q(9^`2{cmytkkd zq!+W=%(biVr%Z2sDeH9q_vu_A1zh4bE3R!EDkRCB$f{Te!MW7ht_o|uy7c2ShgX+p zEN_9lQRG$=uiSsR7(oCCz%J`P_($g?X18>59wRYfN^O*U$K{4J$pF*RRBr7lPcu%= z|MoC!SNkh=jE&fxCi&llFAom%31f9avqO8Y; zjPkQZGHEro66@8uG*=cOO|l~OG4^Iw?*__H#RdolGrZT+MMple8};lX6-Ll>xx!Zb zUdMYf?axXhprzyDVpG=f{14;ZFgsN&_(c{|##HbS&^+W|o1itaCULCI;5*V5G&WaQ zp$?MxK!M9M_Nqp3+%lm0U+nZr$3%2gdGOkgeLi68RS0eS+9DHIl;g5Xwht3cNvqE}zB+cI* zxpidM5Dr>651*$f>)qK@(UoEbU3<$qFIxr3G*rbPN%IVpt8g=&lS{is8Z_DbK*KwitzceCh z^kZ#sk3C+;2%PGXwHH@Dfr_R(^B9XzVB$tCo9Gk7GaROg(VS^~Dt6)GPif)Z-R^$D z{V@Q4lt=~CoNC`%M$1$E{4Frer^oAEMRub1o-Xl(?|vIp7#HW2ADFljc4TEbN!xN9 zMHvn-h+NXY_^%u`PHD{gU-B}iJ0r#RFzHg|2J{?Cg9kR2hv>R&#%EuH3CdKwT~f*A zuGCkZ8QMNJkxw{S&i9#Uhu@;HekzoCyjpqy|ADRA#NVergs4&hT$~l~ z7PL@Yvr|E=#0N|nzfdP>T|&;>mgBi8k5K>UL|$r!cW2aa*HMBN4uc6qb2!liYFIcu zGQosbnY#BccWyGV1L!sjkjJ`;H@>H-FvFYqz$Nnk-jGWg8Kp+%u{JX%y&*~Ter>i(;^bX`agnqS*O z)qubuAu$FJ-v-!)I73S3FsBfIX4oz#3QR}KzQdFmg?(3tvXpo5c|Nn$n0T`r7@2zY zkIS8T9Y*KsLkmT70av;2$AyjFOP=$QapCR|;B>{urpTId@3K#%0#&ZG-!kac^}K*N zv+7|bh^YUX%3V2DW=mXdWVpq=_w{4P`$m?c0&0&av>F-D*CN&LOu}5=z->Jj*LIHC zeaSo)K=6J}1$)(*qzhO|*1JY8Spl zbE#Z#*HogwG#s}hX$hxZ;XiL8MHFMI%x-&a^> z2pmte@iyu-t#4j9NQa{ZtFnoToOW3_Mf+yDRbpD9opF^lbO$XMwm$_$LKDF^P z)1RZ1EN7p8Ppptp=-f8URq2fj)~u7aR;s{C0>Hm#(Jhl6+6tT`oLZVJ*F`HKux zCEkM#Eq8C`aN*AV7Jkvu>5$xt^fV@(N&$I~VRbouf8{78Pqd}|D)VvUt_ASgVJ;ao zo8ms>>CDnd(y#%{QdNgX?&mcE#FfP`kx`L4ID{|snIwwgu)<-e)gAK8^}T@}_B1*bGemwa zl!6C{9Wn{9J)j^lkn3_ZCF5kuI7n_SaDOB7OHLB{W6U;GmfVyX@F$kv{3`}1O{_J? zprzOF>l!5l0ybz!8XOcX#S(fRlCsP&Wx5?$~7>@v@3$i;f(xYz#2WaB~W0 zw~#~EHAOqXTaW>G-E0OP7w2qm;qVgw?ER7+aaz^CE9eCyfb^*Gjjdk^l{L@@KOM=t ze*&e;X#a>v<2lk6@Rt%CO}aI)kn|#-OTv3q$_Q>cIn|n|FP62d5_@;6b|x}5=11N( za_DpScic+Uc+zEpFfXCFZ4{oTDHUR{#F)~Nh|TfU4MTzRjwiRtTRoRd9mXfC(0B?v z#eD;sygxlcZh_Miee|#ZMiyOKr~tb08~XE#YF41cH2Ik0kNeVR>}s^6wTQ#e7%$}5 zBUXG)WfeAz1TGE=ffGciA@`c^1P@l){YAj`+5i-#@KBYiz6^v<;hy5)fD0KwB318@Di}WU zxmpj*1h7>>2nL-K-pjd17Op;_qYLDl9bBze%~Ym~YJv1bQcds>a}kJ9K9z3`Uuvk( z=r}~nPtES9zRm=jiI_(+Ok^6Qv)5=k#QVo^bV&@R@lfZ{#f%ddGo<0yN*JPZ&OpK5 zylSu9rV?$~hUs8@)&-me_gE*B)rpIesexxhx7AH5728a+K@BB;J}3?tRF1Rne+TxE zz!W+)E1PBu+-U^;H?8Z&NDB_=&+cQym1KPQmi{>&)U$#APbW*kxh4LhFoJq_zY#w8 zt)Ks6|1v4JR68xg(fBuZVB;{IgdZSPAftNILs(FkL(pCuIkK!8o6`7S4qY8j<(55R zc5#G$NXGX8Rl8JH+sH$|8#$LvSE~n~%bJPcwC|aYIt{c__JDd7Sw?Ed>Psk#7c)c& zXPM$(l1B+5sXxLM{8(we=+yVg8HOO@{3UxV1gOx4NLo}8 zU&xgMfa?ZKJvULK@Lv8ldiDTOr(D~qNKUU=pdLuG`AFAG2DToXKGqA7`37-yoEE(x zZ%Cr48_+dNrgJZGM7B-mn{oId?}sj@e&WBWbfGlpE9JTpwLF=_765etKoQwjv*1W+ zcvi;mu_Y04Bv}MR&H@gfXntwY8l1(wj}lx_Kk0J>SZcCp`hBv+b{1+;WO8Zz%}93Z zruudj1-5^qzX<PQcE}Nqxz*yC+lcZ$s5}mC31ws?XdeG7aNE`ZXf*jm#0GTIVz>UIx^on;HIbF%O66uxd&T>1T0i zr!YDmDrp`!JJdI;4LreS25|H6^w%G*fwG$<+m7)dsh@Y=_va`mf>}=;v#VeqRyB}}f zgG}%nWq&Mf#WCQ>qKOZ-9MKQu!&zWO7CzlkSL72yJWfK4i;&IeezDf?yZ-Q;J;=o~ zJ(6h`3_MN(WW;->WAPA;UMyI&*9Rm?G=h?x*26}GDG{Ab z*Ztt!*^ue*>sWR%&c)(W6R0OpRYyv@Fg&Gk{EZQy_-kZ+Ij)0i&$ zB{hp5f^S2puFGb((MJ2Ak)G+Hq~haKR2?N6#TQYzK13%y%IhuMGq=e$kUkbc>5Ix0 zUn3KCnCZ+x{!uCFw+cqoQD2hQ$!_JMcFc<;-m<_??McgS8F=w4UoGkmXSyL1tu)2a zDXGpTs#63yJDwxz)m)z4y;GQwDGNd`O#*X>l1rcvz%Y0XFgkuaCC#G1!RYhbLR;M)@FNCtx|jk67JW;@u5!aC?2gpyF00s#mF-<1-8D_O$|mHB-Z@YBLoi(p1|#v$tQWU75;bU0q=TG}+GD&+H)a86Y!zQ*ZN%*()s@RFshVag45ByG%2nX|i^H{?Y!Nuo5)WaqdE< zorz&p^Xnw^8Rt6BXzJL9@T#FEhy{z{@o!~a;04n2#g^ghK;I2pQEk7x7qEk)_s$y+ zT8AunbV4~Tx&Y=~)?dgEP6TE}_D6kBzYxG-gYFhc#yF>}#XNm*vFx#!M?KkXJ1#i=E2CYWkd z1Tlw~(x*iCYCl{2GycGB(`aB=SxWiw_w)6&t>VKca$3|ZA{EON)y2W3oFEkCXQ1jTLfBm)PGA@Nv`n7MpJHvQA#NJeod>;?9}<(ySe6kdKt_x@1OgzbMy}Pi`lX zx9;CVN``{h-(Q;UOttRtMCLVC#Y43mGMwVkjqDUNLi*vEtKQvCkJPxHL=)kmZl$WkF zJz}zEvOn!2hr>QawRb1afc8;?s?(NSafL(AhoX7Eq&#ZnQ*quw$kLm-(ytCwU9*u} z4q#$W0XKkkS|6fM-bb!@js{4%8s}SywYuoGXCn5tfJGNCW;DtARG*r4)-3Ar7wjeo>8QT3!74VO9e8Og@%FfxEj2e1*|Gg%mgjEq9H-_yH^kyUbH zMOHsciJ*`Unl1xQjP8sXAmfu01XJp}p`?q3XimWQss}Ub18&W_dv`ydtl~M(JJV;X zYQ%ANul0m3_#uGzJl>{_?%hk{^yNLARpmWhp0o{MI-F6o0ql~U+-@fUk2e&(pNM&o z8_z*c0&zt42DAZ&LBaxJ#)ky^rZeE97DV*g3m!*_79;_wuRpMqrByNB#K)b-{Qi*8mkJhCUR ztTETCRk?)~Z0P7OI>Ru&V}&UNn@>NLQY;Dul&NE_ehRp=d!KNd6SIOUu%_k8s&Tv= z@vM^NhZe1Je`|^`#1!gX5kF3=8<4l0Kn0lymF)pd!K;l z=N<9`TPND6naGjZl~(n@#MITv8y^xsi6zCaPG8fcx2=7Tq9A+vU$x@<;XJw!DKU7C zpSn%Lm0m|6?pOMuIA2@ck>)YN=pRl&EauallMz-C0RV?xvRt8)s=NW7$O#JoI{eiZ zcw+m@ugF$sDPfVz;EmcjF!uC-E7K7bp~Zqq-|}3e%Phzh+Ni+Y_yBqx;e6Tp_j`lW zOrhh_AP`po#mP#(!c?pTusQF-^1PPg=6MF{?x8`qaQD)WArE_76SY}_9-aq$d_KB8 z;G0)~2lHIiZfj4JI_Ct#S zAD924rhV|>b{roa<4YPjqva0eQdrm})qo?kY4n#t0qM(!>tU>pUj^>0s|08-%N~%J@QKE4M917SUNsj3!R&m3 zuADBZvQ2;L33ku}HOM$-srdI-;nAO`o$^7?*<~mAj?Xos`lr%sM9e3jmfnBAh^_^a zqH>>+mQN~Cy6bpwjz$8J-Fov~-=pG>?LYOqEV5T>&gb#c^#%`ds_QNOKi*$A0%!<< z`tnQP&yR9vf5}mBFc>I;aGwu62*X571)B3x11mw(8Kt<7Wove5W9{KGVD^MX|2w*{_7NB z-KOL#x!Ffer&AY%5*8f~RdnU<9UzO=DDs8|m8k+xebAY?!WAQ!7UOfddJ^fQX<~Fh z8|h6kPx&Hqe~5pPw)#1QkUNYznPUCVIS>2a-dTqy-CWB16rM;=olNCxjCSowgYcy# zlzX0=`zrW^x+5PHyKcs-{yXJeKrHgWgp($79L=fuHzn+L%Bt%>oRU7J0}tZmz$vvL zD2QR?VQMM{4pHYaWZL$2>RH<(6=T6=42Uz3Cxi(WlOV1OLxMRYs{bNka?|K??-uYE0?@*zxU_O z5kL41hs9$ZUPq~W`B+_$*`f#?GtYu^9fnvO-o!HfyY6bH00B3@J*C5_WQYt=o}+*D z^Ok4PD~p9dK;bm6q~%Q>Mu56Fn8s%?A$T?I3@kWvZ3$8(B<*S$0=kd-b#@Ibz4tMU zrk(RUQlXnN)nISzLkM~0R5G&nQB!9aI8zvqswzi8d92OhAER{`OD!7b2_xM2bG_;@ z%oErFb&UZGj z4+F!QWtVFdB`Y`YrRxYJWtxMD4VgCaRfSi0cL-Vyn|t)IN$Sr|Mfrlwt9&G<`RNZ< z=GtVW?;iMLj79iv^6;cY1ocLOqKR|aoS(|Ip>Gi#nyDAw2be3LG@Onoa(*#9yLXtU z;7iF(%ukhr6m)5FMta60M*IX8>kj8mVNSL9c)8=t_cE^;3|_E?%KdEMwCi-;#d9ar zU2AN$co$V~B!fD?X*w7aR$`P8W-PPJoH(I%k}yzDF$t==tg}FWGLnh^A>s&apm%ua zZcBeSj}~NA3QmMS!(DWO*dA8+OYR6$6R8!+7E?7RhNrW$Jgi#YqmJ??etVoPRk~}4 z-NxI61QnRzK@uNzRl&gbs0mXLZ$eA^DcW<~gn+;Ozwx3v3AiiIxe_6fy1`pxjVkL+ zpucIHipt`22~OZsLX8X;*16VcAxrqipjnve8cJT-@R*g6PKbgh0TK$ZonZtV_qu3x z{^tFLuy_O4%O|2^HZ05dCM+?nHkFx9ZftAFoSu(qSPExa@tAyTN3M(e347H?tQhk< zKT|%NcyxIgP>Xzi_A%ZV1Qku~^q$m;p+nhWIj5VM-)TIAEea@{``&6PrZfT#cYa*d z_(bsmD%0IV?C~2eKo^%RuM}m@uv&y{`{cWbqaS7({`6Bs+EICqrq^*Ws7Xgl-&)}B zUP8c7#n*;Q9b4}Gzn~94CZQ>4I5)&)4*UYz61fWWdpmM+)^P%Ij0B`PodC--u%Z)M z0zfi)*-`>LXE$3F-pu+pi?wyDI({DYeoL|CLO36HH$#LIO0w@AO88_Hs_F4li+QTMeMNXD)PEBmW}?R?q=EFXh<$eN*a# z#w*DP{|WoXwR8g!WE+^}Jo)lw;;W+zcOdl84uhU|rmcSqCNrB>ehN=@Js0TV zT4Sd;e4h|q%u-77Z6~#&Uc=e05^l_wQ|WeW?%>FOt7F55Ww3w6Lx;CFcieZwxk+xX zhB4!O-M5(2P67zmc#8k1z%WruK`Blob=4|~MGovCi z!*bdWWg4%ir&qrHlL$12#WkKRo|xu4PisnEvA9-KCYf@mO{Q(V<$0;1os#D*#BO^c;u) zgSb;R*fKVd;6TcKYNI5Ir;NQzeq}c;zEhi)SPISd%1Rm&3AD2e`UB;g!^a5H`Gf+? z#;(pNS1zL2VdZOk2=&SZ5ElI!BSH-uFz0Ans#Ka6CKLXf28#O;M25iJjuReeE-uFr zQ7YJ|d0nh0&>(@PXi#{}!jEA8OI4k z%J}!R5p4#_z!)mt5vc!XQ%#OAmJ5CEibvKkQFe79pbTx($(QCFbOr`bSg$H()_XLwDyu1MMFd}kC3@N)_b3vs5( z9T6)9hroV~%y1DhX@6LDrkrVe_yq0>#7Tq(RgJQESJP9%`O2B7?MB2h zS#^%~!r{8^cdwuMh#46Wmu)w?flG3PM$T$dGVto_h+Z zn`#24ZoGo_@D&0k@|MrF;(1}l3q8^>cQ4i9SMg2gBj_R1NGJU3G=x@1a6AsevM6PR zJHG?gIp&=9wta5D-N-YSDyhRd=Lr?$DBeRCozl%QTuOf?$e&Gq7BVO7`tVeTXg0Ln zvRl-_XDC%BnTjXM{3J1ftR1{-nVKj;tun{skSY6Dio2Yd2BY;oX~e&5G&sUgJ+~Vl zZEU(iq73Y)C}Xm2i+z}mYN9VkVl+7^dNM-jrL2j#1F@+mQnfICKKhpvoBe8^z$s@)GaHk*9zk$-DtOxPe)FT`K-ht+F>&o)d&UY*Ddr+m)Pn z;P`55UD-PNx#V{r6;uB~NX{Lq(0E}nMb09M3HxxF>tX?Ua+SQJa>s6}WLXmRpVYQj zd2<*8|94bur9G%CQH2p;|$XD8M7x7%`|+0 zh;lOfL7{;-gK2#7Ydt!JaQjZI(g&OY`5Z}7ZV>j==4t-Fl6yy=7q3pZE*H1VSx)s# zto=@x>ifJaI6Q0B@riBf5K7}Frx0YfsmcKS>!-vwU-Fh)n1T$-8WMs9e1trp$q%IR z8l0{l0!souO?|2s>rG`p~J2!5iTx!d-IZ=sYFf_BKD?Q{g0Ol&e29#*tA<@k}dUk-`xU?3YW}KB`zGUy% zDR?$g>=3{ajrSJ<@Zmb`QY_LU+j+^*Gjwv4*7vKACs*gvVNR4l5ZGeC?1L{D3*mU4 zQWEWI(^k7&*?1Qe9VD|@5TIXx`SSMU!@Dx#4I42Zh(pgs-(>VU?7v!Ppkv(g3})ZN z%p=Dr%DN+h803?Wr)Dr35tH&t86E3&iDBPvh?Q62Q@=uHDW`aCP;&2_i@gS)em!5u z`%>negKe~%SZVC#&&3kgq|9cnV%sAHrs5xrIthQF#CJ1>T;Th!LeCCMi-6p4?f9`^ zhE02@lk0O^J8dUoS_#x${V07t>YyWL71w^`@NR=G$v zm6=Yup`MS7|65oSEUkkV_joQg9%6fZ<@Qrr*{ukt`Rl_sdAgV!UHC&HMeML?W5^sP zOjph^PLn%l+tkAzJwy6Ui{onUoH00*x-5>{MWogk_HuU-ox9TSM^>#&jk?q zo^i}MOvY?iX1de;$=~oXX`-oK#wOX}wU?qDCVO^2_eUzV6My@>m9I}kkVw)T+i{9- z?uhgCG36uA;q2-%o?H6&XZ?H?hf!gcM3oM|xl4El51f1}s{P3HYK+F|B5MV##fP^c zw(w%Jc_#iik%2ehmN~sfo;jL=lzFpHT^f;1hj@~y>XxZ03B<%wRkud)j9wcWuykbq z^Hz@r_37Ius-tfYV?XF3K1*MEA9wD7Sw7GGeAQ!s)(J+up2vT=mtn&aoDggUmEV?n z7~XyC-J5V?NwTd-&+F7LXP=!uI;P(w-;|6O6fnK{45UaTczE7z&2*%{`4KeUY}G~_ z(G&j59bahSLwJXaQR&JrcLF%}{%39wax{4vqNR}aVoQWb^zGw`ZrewIB;lsgFH@CC zRQa5*_=IijdjfKL*G}CI-Arn!OB=zg; z-#Wdh0S<5o0O<%6W#tQq0Q(*=FJGPU^;+KUST@0hfLCX24bBYrh7P{I9Pn;;StU8> z_3VA^c-f3>^!nRrA?C;Bn!1eYI@z<(uoTtsKek&V4L?lTFRi);n*3m@>1wRFZK^>s z9Y;YFbFP#QC9BES!(hVWPhT{vzH5GzBDs3;;p^11^5ZX_Fz(7;IQnkPCwzbR*FVN* zV_B(euLkGR5PdyykWzE=7lf&>03%n${N)4inO>&x?G=yh=Qz)!o*y0hkJMr_-$vWv zVE{qyy(g0|^?n{@p!;`anQV_?5^!)+R zl%s`Rm~qUNl+Ce?=}M22+(NkcEqH_YsXTy@+h-nxzwUOv%*9NUuzN_X<7nEU=&{IU zr8at#ulA37I)eN+0Oz#R@xd1>5yF%NZJQgV@SGh{Kf6-2lARi1jQ*yvP(_&wTKL|q zmM=)f91wjIIo{e9uhMuIgQkxI_?UPQr=x0<8f7^?d$MOv%-*nU|9y4_wiiEzc107y z(Podef}p9dR8HL$)jdb(oKd+%V6Z;&Wwm#2&G70jLE>}Mmm$A^8NxaYW-8KTu|=O7 zThTrNo$|(0G_N9^F{pva&&r?juFdzE4}a6B+=7Y0`zd1Ap7iGyidPKm&sQI5$|^q( zwqw{C-XczJ004Nd;)@Xt^1fo_))i-vFRgE!x$UJO8XO;!|LjaLFZ>3Ft!cO%r(W`V z3m)E^HeQu>TioL=ce9*~MQ~5hDxoo^$JG#gBkf&MdGkF^Inz zx2+Ol{4MCZ?%;7c+g9IZybe|4=gWKi6@GDc5^@}FueL-qAXMnqRuC!#qWkS3hT5%* z4r0P>3znLw0M3PtUNdeLg3Fcpy25&wE?h~sYQkHa2gkac%UEW+l|QF!;l|l;Py!|= z*<^PiNh3V9uDZ_p?M}pP-kE2OC|ye>KWsvpr;7ri23}MU)8pL)ay+_V!CPtHxYBG8 za!IxOnM3KQz>SMDEUI)2TvQl`51Dx+a-Zbp?A*rs2-gY$}IY>7NeJSb`s@OUA`dzrDIOb z4&N|+T-DhPkHzo{5aFr(5RCx>CJ}8T)<>qz#%ZX_`UsnvJiB}4=w}n#bn?(QOZHBV z+?r3Q6ZtbS0HnL*fatzvirgsbPs+zTNK`vbnkWcuFtm);*NeXdrK8Q&V?&=8lnSZ4 z-TF-W5*o1nBn8bUy)+&c4iB&si0VC7Ejp$k=2?u7T*vs>%U)hW)1`O|IaAlZM8LIA zFU`L*X&xNqlaEMsRAV*sPRAH3Kc4BFId}j&h&7Mym&>jZth(!)t(&;P%$;!-pj2@C zSuZ*vRkxK#^j(50qs$a)OjJs2n-hemOq; z*r`;0YcBMRORZ^+&}1dzA@<;>)a7OHZ5@pU#a`2?U#|kWc;vwzeP1_m#oAm4_pwU5 zo;BY#U^CTi4-0M%yjcAxbbSGiww!G&Q{YmPx_`dO^3t~_;g0o$(Mk=!zzcKvkoYuo zoeXze+Zi$M#F?ysJdix#t+RC-H9zpIY`g$n=M09%1K$FRZ;N{gw6&#Y0)loKx7b$Q zbj-gssKVMU{Xu2L$eR@*TV1ZQlFG{WgT5FXB)s!S2_8$n*dCf!wf4vqYI2A+Z~W6W z6?7Fgq~qQMZ7B)2P>(E%T#LK9%9sePUogq)d(^pmRANchjm*@ICaZEl0$d!$tPAQA zx@Re6FFjS9tyd0|InZzJId9Kwy>WFaGn?Y3IzlK3GF*w6NYkNwTkdGQy7}*NpBpyC zE_L%cYQ1DmZx;J5@mlFy9aLUlmLhNO8i(#4m2aQ|*73B}KCqTQR_E!+GiE6C!6#M0 z-$l%r)2?+})zh??9150!@##VcVWu0ba zc_k_yPnYN;rEBUAbEqz#QTeaI6B zFGBU0&!C`TdlWG7we*|=QiU;pTHV3|g?=Ax`we zS{pwvo>N!epbS0eyEnMkVh=OcS& z@!Dp)FU{@G%dS={{(Ut5wEmU^0pIlch}Vnm5OekQwx!$gf9tdEXRh39GnZAX47nv4 z<)arGkyT71<70^w6$>GEhtwA@Y@EH1^(}B_{HfpAcEkQ!AtT*MU}=GM4-iXm5CCx@j38Py^3P^)W zsoNMxw>S}XgoKE+BGyO&Q3n_(Dg!}LQ4tYQQQm#Nzjw!T?7wF_pX)iVJFojZHHt;V zLr$}e=R`8%R4?6PxqJ9z8@%18z$p;^EbCZ)>2OE=x5nz1F-9?D+pHNrZ*XCi{mmNX zg7pup*&ffj`fExOzsw4Vvh7KNXC`YS$txJGny(wqX!ItJ1}{DwoLJSCpT4-qrE2~> z3M}&)yZt%-D`g@4Z+uf zz(`EXTckq1TiVh9$~s$@p%QQ;Bn)+zimH1wIY9Z99#dkZ@Q{_5ylg$!R0zHO;CC7k zmj?L5Z2ObMxIL>0(qkDey9z*P{4dexo4AIvqqS3|{LkD3)`$XLlszu1;a_vB24eLw z{h=`xws9!WbRZv5)G|zt8rs#uwC7~Ou6&c*m>GP(B(Fxww)4dTdjdL*))hJ zXr){0v5X9GP z%=09)#NkRauTHh-Z?f4g>)P=f1`x7D1*TnL=M4>B&O(+(sOo7VgK&^_b%*h$+u7(V z4TaKU<;Zdh{4Pf3I8{j48hZPRW8ZqMXin=6uEf9=kg8?Yb8l#~f;d~l`GdIShi1xo zvfp&gFLQ<8s;d7h*Z4SVf=G(Kk`%WQGqam08C)8@>^ZdC@l(C?n*qq(iBKw0v>7*n z*VWprJAmsGignlru}cD*C7L8fekT-Kex0>R(Nk_53s@Iw(kr0)jH;)k7$$p29EiBc zj&!=RVUs`o=6b^{LnGOgO{huO--(;@P`wg6p}F1AzGW>ONaR0TWpeI2tej}t_8k%g zfH$}#pM)Rdjv5Ayn1zNPqp#IYYrS!$Mz9*+yM8^BQf1OGZ0ed9`LBn}D?}d6dHkjT zBi#8|@AJ~`2Yb9;p`OZ8IboI0OL70~o}QgM#6lM@=-Bu2gEneR-*Jl&S{e}Te#ztA zxLzMEwzNM;-@q(JWxvWzgZ*ab9O1 zA)yM792)J04u%xY$p|!nwOM;mcCtgsu#cJ|zQJX`Zr-5NdqV;NIsFjzj3xKBT<^<~ zIzdA4S67SBj*Y3KKL;BF;8+hOvF|4zEnW?e>2K^-BAYffO2UhX%F`u%_rG!Ml!Z6I z0r)bsb#F09^n>UMB^eh~KE@ihp?CKiI}%>M6Z_jQrudYiChE~1sff6*l_LDir_X3l z$puS?L#(~dcpMjG8582Ye}TZ20UP6%^N6QYwuI-{IzF7_=(Ou(mhM@M58R+-l z-|ch9Gu0dLvJWw8U-tO8XB6W>GJ`-F`#2MAjg!rI@#}q;W8;6!!xTH06P&LohfY_- z72CK)CfEpv2B>-Vi$$+jTB15FiW^Y1U-%(mzw+%_DO(yOu>*av;PHK?Wse4mLGVgq zD)3z@df6x+N%tk*eM5V=!MVe2H*}>!j97Vo9>!Y;0-5`Qv+#1lN6=Z-K?(BbjmUk8ssn(@(yu$3?-#JC$@eNX>24wUkMz{V z|DqL;mE1kPVs7bI4c|pP*c|5y`ZeW%%Nwk^Gv&%Z@e%IO(xyu(=_#$lVqDH2jfwY? z4}FdiKM2jy_41niQFzQW`gnkfn*~lN`U)9Lm~a;TRKjss{HJ$K;rTd!0)!S$YPiNZ!8szD*d zWX~ZpT@?`1>ss5pJwX7qsY_fbqE(PPFDoBODm~_L*(kywJfbSfxj)Fm1K&oo){h=g zKdoL_KQf;wL5IW6-mET7ay|<40w{_^>3DI$M4!;sS{cupLzP@q_D9*ugt7%CJm5u# z0)U>^_BxsiXHzac7wWhk_aMK~M6M$?`HHS+gOnP=^h#I6?)FBMeZc3rjb|ceP2QcR zCN9Z-v&VLHUgZCLf(Qombqmc!Mvu>+KLls^<7~fy&5C-A&j++CWVi>237O+;}8{d0&^zx@G4c15M z)0SW&NoNXpN~C9CPksD-)VC9g;^UnI51|4GPgNn&9&9Z$NrFLN?9=rW9ckfGCTD(t zg|t7qeVoOT4vTmtDIeA%hka>&e_a{sV<_~rPrsT*I3xDS$m4)W{{{NK zBwJ%*^O&9DBSkShC5;icJL&Wku5NyMJ1luP1w5sn?69p7DSAQU=frEu0nnbWP;NTAgf0)@*?d2{@lLC_*?N4(6Q&myytHKs1obs7fjdDx~6LC zK5(F9%k%KnVFG$d&n!!1XzB5R_%fa#?o}YhV>963AJ*dc)d|8o&A+4i1{%-Ai;}hH zx{c4#-W`ZgjWANxF*-N0NK-CV5G=J8Fg>8U%$t-^g=cZde4XSt>%GuX1(cIc&*7~a16Su#7{PN-qLE+ErPgwDI8eV2If8DIiZQplQHd{?w zpg6|mQb4f*rsmvfO+beG=<1U0pA@u`48RL=e!(c* z1-_?gJ?>cM9_!1*OaDl)*qx2vd#C&N3(C?!!27q$2*KgQFg#>y z+6PA@;rxP!VdEvhQ#s^A3q2mFDdP7VEPhKXGIOeO7K&^r1`TiyHe1zj$|A2V&tdFAdIH&-l*GT9_ML7Q>sv@U0c$W8(O9 zYn)doNo3RpM#4S8VV2<%mG#Jgaa^AZwDwBd1m>B1;~wfp2@>7FKgHsINfpA?V_la- zqG*y)KzvlFnB|f%8u;Vwh9Rr&Wi-Q{<+k2X5DK{6wNHA!*!LROG5fUq&L1as`%@Ei z=0fLR%QG#Jd@}P2fvFN4eEVUYT+rLN;qRO`s(OXXNzCQ#-*LZA_PhUy=MuyxpZA9Z z{*|9>d2AIBl||VaRV6=B^%}BSPJwzYsm9iyjB6zQo)3;iKovkb(pv4`ZIure8cTF#6E1JpbqwEE_EoIOFAk%H8B zM#mL&TJODSZmeBi1fFb}lTW}M<$ijm3=A4Y)@kl8syxj$NF#}2mx(-I+W))6l#W!A z#AgA%u{7a^s`;xE0KNUGq63KOn~2{7%Y#Q2O8@T}00JBqzYK|I&mhJmNyb@AL58uG zG(kw{ohCM7Hg^9;({XD;1oeG&RKmYOg+*m;lh%8kB_o}f@7rD-|77-^{2E;S!S~?L z=^vFgP2%UrCT@E{3Ufs_iq2jJxX|JbT;&Ng$1N@`J7DqGxJsY&juJos4q?Xq&$gqC zO60X`L4W%9S$IT#dfIeikHUsLDzO$78CCWA|Bu0UMM2U7eJY9z8%-|x%)Ic;7`Y{J zp`&Uojkr)sL5>4Z;{bs!ijd3_k1XO?YsoI4bTvtm$Cs!jYsk`_Xl~jqHP9O5w(`}ivWR<`rg7xTx#P@91{vA;#6U%B z`5F&sT0PPThx8)(^GL3gN_s=u3w-Xj0^m=-@I31;Um>duvy7<0;m0ZbyF_8_A@MpA zt{TWQl$7owNkx&~>Fl_~4IjTM_?r^|iDEndyrnVUcb4g!Dxn$UzmS-FN#mc^%(9!u zEAtE=k@>5Nu_V*(=eGmLj_-xr;d(;K9cEP@6;!Zyv?(295);b6+am%Kd+x~_l)q0~ zPW*O1-t$*2S2GEsr5do6MmvHIBcZKD(@2kd>_v+k#1xv!_D@(qK%b|-Y|T8Hyv9Og z;~ctqT%aIpDEu`<+y)inwA7G>Uihdhb{c?GHA(7t6XN@V67KtcMZIZU6YCW^+`j!=)gzR|za{Gh#EUVW zBobxx*Fd0pfrqZ>HSSi%iOEh@N@PF()PEG_uc7QA)5ZE=kh7p?DosV4_*{^_>VX9UQK^$*{@Uoy?MtDNWh#%@9TYwR{Ulu z+Y@l2^rP^N&JVW(8~??v^;{FbqVD&5^!mLrDz&!*FBVld#Wb4-XG=K6<5pf&}|2SJN zk1fXm2ubix)`yBW&?Fm3xRXobPD{ePj^@p`M@HK}zOIDZQh0@z&!KpM1nzOGn?FUQ z9`!zvPyTqf|8F#g?k|fyi2SnGjebamcyw~SW{(R!`n8Myu)uh2?kcdp^!e$C@q<{x zlxP4qZY5{NaQBt|hr7u$&myobk3$jyQw!m8myI1g`k!75aICGT$E1Y*#}^4(9%aNm zbdT`92Vi&#bzWN(>~;zb2}K{e`#fvv`)jtqD~iz6f3Zj8QTR6~7^5MvWAzdZc&U># zafme*f=4%TRhwk!SuMwXaBhoBTRh34y9%A31>$QL<=bATnH>u+WGW|!2Y1#WEObh_8tfxi=hJ5b^^;dsOT^r1A?ufhAV?lTU7j1ko&M`L(${9Q!1-L3e!YYxl<&@)? zWtaDEb~|Ms8{gjBepIw`M6&mF!27bOFBZcJzb#QOO?0zfy{OVr94Ui-I=6E@;;d`LWRN%Rm8DiA&U$m#Ls-Ua2H^7DKh zcvX-O1$GyQR$3BP8WLv1K)jO)MJ?Cl&;zX}Oc|T;rdkjGZkw0L*WXYD3Tbs?Ch$me z_g0JUZ-zZL-~Rj>>|a?gCOBYjzEXw#q->Iw9h3R_wC0-Q)Mzp%eB;fKzc8Y?849iUe1V!+|Mxmk+OQMhl zEMSSh3HO(QxS*qGdbzja(+l`D9GW*gu>^`*)+4kdA7b{QkJ?{5sa10%A)|89JoIc+ zyQrlWH1EUy4DE9EV)pOSw`US{roSI$X8e)>{E*Eg?Ip*hXWiT@3>0Q-{GG{7t^~aD zXZfATDt=G_g`->JOCym|ESH}`&kId3e)3(f!DCy$~lT)sl~S|Ra6S0Ikp zkU+waS9vjJ3n_#O%PnDWOG1Dp6j}kgxFq{^Acdz_in!U9?hWx`!@K^-l7XV;KqQXh zK6q#3L)}LV8ON!zW8N!VHUD^S|IbqoR6h#MbA#-Dy2SMevg7H(0bHf{=v^K2nc#(I z*zI?*0Y3ut#P`Y0k)Hf@Ur-L76$>^Vf@FJkM|WpSf!6h*f{8q=P8Ge^2S?`H3lS` zi{jnS!y2_DoDKltJPUXEADwW`I4QP>*7;SUa{pgxL&jP5?iJQ+wQ=ETOWWFprQ<(U z2QL`oWu}gy2b71mFH{(0GfmReUWHsgM&6dXbIoTV!0XYp*44rS&AE4dPzo28jx%l4 z*Th7MMGXn_Ld?s59y3>{s6sA`&ep5^!pEcW6aZPn!%c*h5^+65)H@=MML{kO!JlEy zFLMSHE%Nd{xcac+D?}_LOe_j0dW`!9GcDBSkg3fJZt_3Vk5v}7UyVO6!4=qC^OH1z zunTf|U-k2j2j0v4wWn%qcJks9%CC4IU?$I4OMP8?yy5Z}(ua6|{X)kJ6#rCAu*CfO z?$g;i^yi>I2{^=-{OK>J#E3lN@#y!zM5@k4HB7I)d@Bw}phBrVz z>Y3SB<^-leCrkwtg+scy;;Kp5G%jbQ^BPsl9Y^(#5vQ%CEcdlTRR!=?AD`O}2HO34 zcyMPsZ}Zjj>|J?td_eu5n|7A=ej)Ms6?BgizMm-js}0@iM&Xy5U~=pqlX%nvifyL* z)gP}^q%|{$drr!f;h(lzv20Lz<+$e$iQK5rm*fAWx=f$;b z*52pkhl7}5AC%;_9R+rcD9FpGD3W9X&j$h*U1hcK%ekH=urmkC`z*lGWTEz5LNZy< zJl{uuH@n+yuA$59e(S0duo%KhZho}5?`li_?r6SKxyHy|B^pcEP*6hJA`g>!U^z?@00$voK+Rl5$I_T zPGj-!vIKb76a}vOc?p^t@KfFO#{;}#oF~%t(VfQ58gQ9y&zslT1vj>LUglkjiWXK` zSnLm5*d`%uLIeyVQMN!i7g~gtaSN1!Gac*3hcTxO*_$dn?F#@hn>ElNj3OSTi?@pt%L5JUB=<{#>+YQ10fuCiI43(oVc za}kgaGJmd@>UPNth>&&aYn^FyDBCtrt>l?#5L^b*zk%R_;>y->svo{jwYZ)6$4-u3 zMV@!M%zU`~(N!lw^JJRAhVpG_t!%x9903aiauFs}cmI97z{0;}%H?|JOn&3DUAJ?jX3 zZ>{YRuw$NosQ$LVJsaJ`gP!5E^Ak{GOv=nTB@eiIeAg^pOW^t90lAxE_4cqJ;zjeG znVL`!nPY29aR`PV8z|v`v-TpS>pn&KwXtVN;uA}gDlHq`Xc>PdbTVj4*QQW2>6?dy z(Tlh$0i)>+?7`4k+wbAZ#DvZK>aN??g#j7$)_h?_JZt!{!oMC!rO-$p7}j)+Ix3*I z&TT&5)XyGkXstTj4%RlKvX$y0Zm-skmQ{`mQZOzo5iT%}O2*@wG|xUY zJFoQq;y{gA>wmH*<5{SfU!Ab-^qZVM`$w#7KH@UPO7eE(?$7~AGS4oB z-~1IT=e)X~68J)zf-ZXnJOB#@-CBC0@7fjXa3e*=OBcjv*vj*$QN}D8j~Ys+2Rho% zR)|+L1q&2cL)7}wkRT-$sR1IKJ+7u({xI%!8{n^Y+R)>SYbOh1xec?|TfG0SeldsO`Lv)LS9adYJ z-u9p&QIB4mOQatP$PX4%|5oI`_DQIGU{>>YPst*%Owv(dOru7;pg>kg`{{zOirf-B z-&-LwwtAY$RVdg8q`TxYY}a41Pgll=X4|DJ)%kJgKTK@Fnj8R!r)iRYn+h{xk@)n= z0q462FuOgi&(KnG{bt*@%f?n8>Y$Oe3( z4qth-%AAn;8*Nvx9)akW@!HcWG4Cjpz+NC$gvkwlcCxeBBoC7c z53qsQq;*+#dT2Ly^$X@y`n(Ko8{yy=gNIiYN2(7YtjrsP-4t@eZu^-NcSG^n#J3Z# z%Au+oLjsYUVZm~4Ue&`%1LkNH>|q;K7@!Lmlca&D$1px$3RD7xTLi_Ifzo6eUjz>9 z*Iu53$;ZWzHA>AS=PQ`4jG!c_*ny9E-dAH;U~>fBn}N=e;Nqa#YyjExy%wi`Lq*#E zRkx-n70BMml{Rq|z)+}y^DBv0X|+NsEd~YbxfGTia%Fu|#&PH<^l^p%VT&Ry*gwzn z=HFit4=>bj?&WKA7yg(OfZ<3Xo?H;vyX}RqWKYq&fHLf}U~gKI4EW;WN~PZ&yXc z4^@XzUVw`u2>JvE8J&_WrADWCz5*lW4gS=0u)N?0n5xXs?Z6#=Y~e<;>>8`m!B7D4 zvL7h2!oBB-*bqr6r?;seu=yRhdPVm}od|lVJyh97b~pemM1;E&y`F$dl% z-AO?rWSLvl!7tDkwkoa)y#H0Xw)>gvbxh!JMRsK-ufbE;Ao3C0AS%1uAa_TtCmSL+ zCnE)XK4u`9_af)9+v`iP+)w~Nm7y^ZibA~r3R5|G9?>y^hi8fmUaA&3Tn(d)?`1L0 z5 zI09>_XeoyajcmS7eI{HE^0^VtcbsXRdp?^kUPpy^_WQrazPji;l>@oiOqUon4Gr-f zf=Q+eo(WD_!6_WE!b>=U?7Th=yWN87`q7sAK_c2&8s|kde`YHcVMRZ#oEMW68z|_1 zc=T;cpULRlGT)l?VyjQTLrqN|=-ws5Jsi|1i7sBvg{nvZxf;5JR58HUU~L~?vD*{F z_kyI=w3`COWxfMs+J(V`B$VI`@V>>#0!_bqtYm!nNJMv+E1*Y9$KvANNb^=o$+s|k z(u^NYLIAOG?kD2H3=qYnG+R+0KXgda7tssfx;+U%9%&%>wj{qxwFLXQN_80`Dc~P~ zV}h#3_B_GB?GU3R&{lYQi>=0JC_rWd?6g5S<_lMFfZ1|^x9hD{NLq@(1ZWxn(sf)k z0wbmyuJq2Z(k}eR+elfgYuT9g#B3;(oo#VFfwx>%Y3Ra_SH1jPM!XrDPq#5ivuV8% zpyi;TGa%o(nyJQ;rEsB#IJq84qH7+8w}E)mXVySNk=NJr?*B{*6AKJ)mM&cdrzFA3 zA}|L4$jck3vJHsO2A^XC{{q`RYh1SzCo!`M&nkzfcEL~XaXrpcJi^12sRpSpJUvfx zVCR~lWHzW;NyX~MDdiD})M>({@d9#^p45B7e)Nf$&BFEpa2g2MR}b)J!708%$CKdR zI9etd!ES~BCdgKrZ0rzb zp_<$y76=i|SlWrdppvM~@Y@{?$9+3)49TU35wSyzhsm~H_PL75xg;MKwVqs804!Lw zJXjTC2}runP|5GH-s;xMdm0%hQ8DamW#a`f+km>OfZu~50c49)x{$ae<+(Zj6Jn|7 zaj5)x-7L0ws_wpro*va}!LJQdpM6I~%$_9eje%Dh!OT&REC6K6JrpWp`Ci|0=Ro1M z@=+To)n=8jc^_n#0bXS|-)Jogg&$-4A*xwta&?QvRCByUvkjU}1eYL#<41(W;%3tg zo=9K{BTKBR8JtZz-KIwSTgm%$^;fg{i4!^L1%B_2CGlUU*&z(&>>0>0#DEqBHJb0o z^+O3*uss)wE)g=d#TZMg8Kx#Hvc{NV5I zi;89m?<7Cj@wHIQANqTot?(>1Ae6D;W(ou)MevPDa7xbwac-3qtAcbBeaXQwJ`7{Z zMPIxQ-VdNUbj1K9q?mhNQa36<8^~kFyU_J$zFf+sZGVI(7pOm1QVD0?ivTF&vJT;3 zM{uy#kB~P@Sl!qXJz7~ux3TDNKg;cU%lflM`Z>S9*Y;tum2Bk&Dax)AFJ0f*s5?*1y?<86; zE*2WkwOH*}Yy}{)yP!B6IFJp#7>zjxIYT-}(8PgLKxfRjXcgzqAD5F+G>D|Q6wk#% zi=z!CLXPioi;okLfdy^mfkH+&;L8RXqdw4iB<$r<;_Gi9zCl(+Oo<}iWD{4fG*d2c zQ(czi50J8J33KZ0Hnf_{`2l27K82!t!u5a&mqhVSJIrQfHF3N_siPrTjijd$ zZWRg|9-_w7#^5z*Ojl!lM)_0NxjaYVH?3!5-=Z03oZ=>$q^8=xnBHtj116*pY=6KX zi+3N`fMh4}HF1#lSp4I?hyTW&B9=R8Ay*DA#%}hgdROD5freyuGW`+1x+avE0 z(qc~Sv;r9`1LG>u_A!tfefE01Mx*lZbuB)_(|V1VBvUndhjtR?#2+?N49pI3S>tOeM)0ihh$8(T%6ZKC0lAa z7rJ~v52K181BB0#7##}us4g;-i#2VBi@pOYaa=b!CEtg%VL&(KFy3K^8qk}eiTOd6 zcC997*xz5+Sj0es9+MzHgAqW3jdYzb<#Hmm1HDfDx!F^-uR`VPHQL{XR(k_YAi@vA zZlHG?PuUnY_eb!5OK^@>NDl<^{RU|frj5DiPoE(3q;k1xh$UJy^%Hvk{H5^mW7?Wz zt+b}kAF&46POaC`X43_sTM#k_Rz~D2$BmL2bh0=FINhF3CL!9zF?RD7aRYvmswndu zmc)iTutAouVBb7om$`usxZBlzdhW$ue^wtUFK|dV!2wA}XKxk4TgL_K^~}ntY1Y!B z<)Ev@y< zc&suSw(&ynb2*qmb}}&v|K;5N4i#VAWBiKY`Z^u0mSm{zmspA%BA&l`HU_gjpOsW} zL(N+B4e8mKrqGEaqE?0|4M$paGd@bdEk7aA`5? zxS^I%pw?CG}`9dS6=4Tz26OvikfQ?OvEro77ad1L@;%c zi_VBq=Dq%7>dqGJcT!~TO1Z!!22i|i3Cw&97N{Lbm4wAEXMe|7d}HRLsK)*4ii3pJUiGY+sX9i z$L@z_q_-P|1go=>3D?oi` znC6eZ70HH6Kfkp_KSbpmB9<>m5v8haZ!`NY$le+!oh!tA?%7N_>M0)b>&CdMhDwcD zk;x1|lm$6XL}aphPXxi8h+xCNB9kxYID2)G2SY&yEJ(-?Z(H)~hO}9=gDyHdSKoBF zq0pe)hwnuhX`*{nH8}83!5=?;exnf44xZkB$VLudZ!L!R-}x(S%Yy79N8Iq~aJ~LX z?K4xb!p@)ZAmp<&mdYK_SkV@;^Jm5<40?yMWN0c>r+eXVbQ}pUvmCf=D!vBgy%V{f;Wc` z_{F7K6@R)G^y&GBlO&_k*m5+&GXO>swcmZ?8NiO_yJdf}EBS|Mnj3pX6R`0+x67P( zirdTU=OnkUNv?V$z2$Uj;8%=Gd2%~5IY(XS zea@!7wA39h;PG9G6B+z$@8FtZ(yY^in%bkaYkxo>3X<6f&9BLgd_|-+M8eC(Ow%@^lmCE< z#9sSrM$jSGYV;g*6+;sby%GFuc5EUV`18bZreJoa#6J3|Q^gGI6oX$6M{CIy(QTum zY!xOM^3mnPsC~~^jY4`KaXEa-6e&EZS43BXfq6VQNx)nPAd;#aoX8#hVGO(=Ex>Wr zUPf&)lm?Ir_<*l6UZWMNzdYAaC==^If zxNmSwgaz~{!CXCL;&NNHBP-r7*tOo2w zYqMQqy)NE!`F+G=XkCMUpNnkj^tFS+x7w+)g#*I^`>zu}8&)x?4aG*9=fRc!>NCqo zjek^z5FyD107BgTq-`#iM(O0Y1S}0**MBMDdeMl`4nfNfv^IG?2FxrY_P9tn@3RXcT+!6^^5p zSddUZABOsHodRTN^`(QcKmH|w(Pn)~IVM^j&OUIhm&68BLYl+b0@?AZ(@@EVGPkFz z-gafdTiQpSD}5IGNX)E?y@fLuzQ8xv0@61I62Pdw#EwcVLpMx$lyj=2$i&MUS^5G8 zl}362A7k|@yIbwPH-@+daB^*_%VN4C?)YXht=gQSB&};LFSxW(GP15N%VA5=7c&mJW%suUKz15{ zqMBqm1?xiQ%j45m@wqf5cPc80YNbQY=TB?35gjEm_V$J%jzGPDa4#G^;d%i$-c-?s z>!Dhf2H>kqmxLzT7O1CFa|NX)1(vA@*CuPm9Zs&gYVv7AGH)>_nrl7fpnS70$$iy) z6fZUlCvmCZ!zj<^j0QvfwlV{#s|_A3^d24ZWmk@A8AU=5 zoKrIvm?uCP$yzYcf)fxHC*=z?r8Fm8M!uzO;sumo>4$j7t&)}7z@Ru# z*ty>VI)*s#`!lC4ZY~U4^YmtL)7pL?D=%MQxdKZtwuxe%mh?X7l*(O_+3I^c z$-S?QI4EaCf)j)=Fq}maDHF9t>XV=|@--}Z& zVX9O%HylxyzTk*p7u*n?uI{fq0|)Z|?yg&g#Av*w$r8T>O20-3GrDMS-3{wUgnA+E zkzB`2lC^boD@=||9Fg*I6*nsJJZwIyl#-usIS~rui)IVuNOWBrbG#Fy9*8aTYc_d0 zsqVT%^J$$uBc445A?ySCIpOGg&(fL`ms`!>K*UKGJhe2pCg@^0%;A;QV%yyCmg3sB z$=74>i)e<-wWMbXb%v?YXAbo{orO9OmxTf-z)sDL3yL^e*BcGDTeIF4N~1^gA2^q^ zm6Cm;&XD{ZqR%8uu`H&8@&Zro#jl2h_&f4+q6M>5N90~|;SVUZL(4I=_*h|WilY)h zoXpZ)C0)N*&Q+0qs96_%9#=UHBUpe1>Ii?;QUsJeN z)9Y(iF=a}H*ih-h5d4Hv-aDG8f-g{gZ5X$a(TIN5aH+bLfN4EqP&G={PE~8Eq39LZ zBq?C>B^a1-M?(E=s?{LRve%{SO_R$LC9wXakOxIYZCLpppkeq? z+g!CWz^#nW#a%6EsWD0-1v~&ue#C`6pFC~BbrL{Fu%MRgA-;HWvh*>oGh#jpKKa(> zo)F4Hb;292`vSO^VKAcoxKI6f<7h;bgMXeT5tw#`UZ$auFr|6~D3C<8k=`aostX61 zv9Zssn@*pvd;qpHj+r^=qDM2hA*qJN1wOo&CXBt!J?GJ?p9@HT`Q#-4>H>LxBvK== z)@U`(#6SOF^|dvaEDNlwN|!}fjM#4B`P2sTAy2}D&tK)Dcq057wymhX=OAH8{iEkr zztunu1#TU#>$|E&Ll`<3xB`o4Y=#3Zmp4&*Yn$q@N}83BkuKz&LOyk_!!Ej$4XNDE zN1ddr)M-N(Oh`W(xUI%X@_8xS^>1Ykdi(~6kkHH{Zdu%s`|r8|h}tLCVlO#~Gn0yo zJu6@(nLS{EvoYww=LX{~_V4HJ!#$?w>t)q6UgRC|C!p5O?Y~B8k@Zx+lqIt`Qf>9` zn}+APV6%bClkQ)hj&EXtNJMymsX_z0(eYhG4)Xj}0{wA7F3f`Icj=EyZfLlEjJ~OL z(RGk>S99vEP^_ZZAhqo~jo^@@odm+Og!laF`_UCJw3(Z9{t1uVlL2OWs@DkqwHg(- zZrU{7T)XDTWjOlflgjBKBdYg4-6{_2J=b`%q5L#URi&LP1nS7JT01*Got7338N#daBM1!U}4eZIh zd$TqdM-{EV1gpqLPc(F<(g1I6a zETUr2s;6MVROKIUMLlUBPR`ObaZ;ZVzJb~SRjG>3R{*c7GKqA*OeZdY@ zS!;8$l-hLVh$b~JAYW{SVV^&Aw+OhmAr!LSukf<lsq&_95> zR+HA^DVbNc#1}{*2cQ&3Kch9rY=e_KK?7oig_$(X*fA^s74@kh*}4z1pn16fQ4?+Y ze6tq2BUOlP2@9er<>v?*v8!p)u%^XRDE-hr}YZL`J_$^--EPhfn*2q}NPT%IVjbFAPQ7o-q!V#ahE6m=^=eq1-tsCf$s~dv%xO*;EjkTF|en z=`uZTY{95*1Uk4*tAUgT==$??y8g{?p|tg(yAJ_pElfei1B_s_cjyk3?7iTN_Wrug zSp0LxImu@6`<((+aO8j)@`4{`&tJrkc#cNcq3cA`m5gi4%ki&vMaJR^G-&w+pUFif{r34T zhG-D*gIU>Xf6+vK(I)cGhLFlszDWfi=-d#C(@uT@`h9#9jFNa(e0ihVhfBx0&pAW6;<6yEo<{IpJ^ zoY@oLV|N=ghx$GV;)n1KLFa|3!Xh?ud!bJ^b|39G&kZ5wdTiu+80R`s7eu~;^(R23 z-@*5OSXfbb%ZztTCfuxagGK}#ebSfRDX((k!2%djzM2gXQn0stmf8*4yY( zAjd!|Oq$sR_f|VE1F4-Q*t-m1rP@oB>%6Aqd3%#f;3>3bI+bP zdhP%1QBbgpd8RiEl7Fl!f1~o2BE!)ZF*q5OQ!snxOAYI!O|99atwT zH7uWRJLYZbReC)(k7b6m55SUNaqREj#9tb}?jrQjn)lu34q07(xFPFS0Vg)|tcPl| zWB6Ob6LSD~TN$cozd%DMY*~Gqk5XoKe)6@jNgG!k%*_2+z7XXNrid4+Qn)I@!5vi> zETtmdjOO3D1IBN1r2{@N+W0PAU{e7|M+|%$k?R>EO)dzWbaOs~7&7qU5?P0}yMVu< zfCG2XZJ{8+N=%*O*{V)_xG*Fb~#e#aV1n#SQD%t({V{-@9M^5WLc)7@#78ULv4yvqt zd*6{;p&^mCuEour<^|jcOMhSUr5_Sfs?-KF84`jzV>`c&7^3q3j#MA`*ZjFRahQBV zGrF>vpbL8KZE++|JxF}`b4;5?Lhk;z^7g>JWjT!IOoo_cy*OW}W5N2Xd48Y%Rfh4M z(FEWtnc~m#5yyf005D}0L=k`k&M)*105!$jzuqezqsx$II&NQBw}^2N~3e^iIK^2E$Py1XO(f(>)wot{>{iIZ-uu{7zi zyV3WoW?td#y3NG++Zm4!?DJw7PnP8WU8(Qyh8Hr(N%wft>#joEl6$t4*LJs{m52=mzmQV#$N2$RtaEb1;Ku{XE`C#E zTkF1ZKG~0x_4#CI;MT|0MW`2Z#z8qQd_RBt_dVnac=x@60xi4vUzow^m#WtF;8jj- zX^tAcL{tUZ=fss?JpET!sQ#c8;lE|Q*+CqhPuZVfqTKoO(bHqvM55~-s$EsNbM&w` z{V;snarLHOUbzn3l|_Y5n!hpxh!fGl0#%B`(KD*nqD)JYH_!!$8v@#jAiflVqd@mJ z@zO|HLK*(~M<@zf^LdZm2ME-M<7g@<6 z^tSUvoo(?S18-;fIvWF4<;r+ZU1qijh?n@VL{tt~gDGnEsz*(d!&{iOCUdp9(kh;* zi__ouy(r?A7+FB8g~*$AGcUdW9&*lH=70!&w!Bp;OUI^*;zjRAVThJ&W*hJ#7o3;B zS=30apnIild5}G0#p0|-m1vwKqio0GSdDD{i;Q2KXfXB=R^RoaXQg@Y$yBDG?#;cx zK@QNZqQy(i#I-SFSi&R-{~vJmA`10@S=GMql-*R!)arKu>lD@ zNJ~|cpJXdGG0idXsGHAws_px>yYc;nFAsLMjAF%JKnO+5g%MNP;V@lgYN~?*AxF)b z)Bv`(ZEqt;;UQ2S-2lMN(rQ~-A2GU%D4oj#{UQqKW7-?z1u`bjuna5LzENX^b09Z8 zYOg8EpsmeY+n{rW_|zGjqP<7EN<2TPkvHCf@W>$XA6D!#;nr@YOgft~d@NzL3h8d; zQ0~L@;`So+`Y)9ulTyC%;Kw5HT-N-rVJrTmtLp?FTq%#N4&BCTVntq7q&n<7rk3bLOc`&7 zwS`(1^XQ*(i3R3E8ap1F-D5q4tAt`r4x=A7Qs}6G2{uEfPro5sSv=B+ZA&&Y9oDX? zOnh@ACjKK-+2NNC(6h|%j&jl!yU75k8A&H!QwuvZq} za0*uL4iL0P!Fc)kpppR0-UYOMTOD;+VOtJtM0L&+KjDV4gzqE>}!k`~nS^w<6! zB|yPsc7EE^5tcnb*2F>&6)Nyh=-qoUr%SZ`a7O*bzeFnx=O42&LIFfI$#Nw3;+{f= zdeaN7(}4H9X?pauPcd&@tC zdlRlwp+nT)LjN2`M1kB_$&-`I2OlKP(4mk#767U|wpqBh1{@2t-U%V5#glll(kO@l zfTu_SA_F_<1EN3*EoY`$%p@3U3yg)G`FRMiiq&?QNla6Rc44SOJsWE1 z^R%ymQ=VcTe*m%7($|K$q~QQyEh;c2cGco)xWp*@RUUk`?Ad%b=g8c| zNEqw~c;8$<%-fl!wyn{}aSeJTv0v+_(N2A7=c{{h@ntq2x&TnBwn@1ar|Ly%ReSZ- z;>gEk0f!rfK60S_<(oDA>c3a5o3TXP1?k3J_iJCi$*otaXr0$V&MK1mA*EjUUX_Qd z!UMkw+q-P+jpchDIZDqFULSftONCzQEraVJB`x6w@&qt-?}5q0>0w`AZs>P=_|jmtX8@rKBLYi)e9@H3L#jO z6c+&Uq(i61l_1g0jO`^v?N^}+t%%`?dBRP1d!DRut(-H1d|GP}g0T(($@3n8-nE#u zp8FLGy&lnd>$#6{IHAWw>6^uQayTRvlCEy19djK*cV0{UxRNe)XB_)@hSO<#+LL z%lpOQ_f9g@9yvQ0`Vba;m>~I_MX-Wk)wpJ6z2fBM6%jTBIh07hUa<;^c+Q5X_2Xg2 zsr8Y=&KlOlQd9HuYxz)pjXD11Cx^YYU04v~ac|Lp66(yB+R^mPKL+@|iZpPlaZD{r8h5laO z%@wY)vzNwrRbxjsBU5_E^Q}F1*ZSim~mdM6ktwa&a*oCRcW7@1xouM9>5@ z>2)bq*exexGK`VZ^hWT77;WG^fj&0GsO;9hzm}ER)=oVzq_^f~Il-ahq+*xg%Phl>u@fYN7vf-WsUPXzda5aheoH_Mm zL4*NA=~C3gVPMXY!Kbqe??)oE42lJgE1I$bra%_)>@0drK+CoPyzx(mqw`-G4k(Rt{sL8X?an=)KX!VU;INxkb_F_qt~2mGX(&&_-!qTA37}OIq&0nk8^h6 zt+XYL*ez3@aDdz4i~ti{=js19DC@^Nv6mUd??! z3*T85l$b|>uNyE7JKp^p@apOYO|$h$SNto6eHG?brheJt0-GA(+;q}}H zscx!+?^Jg}b&FNiAA;;f@*LoIQV&#hR8$WBFSXCoj3G;^e*XFNi$b=giWr7C(;prj z7cdQNqrNKdVF2h-F}-9e#HHq?-EA%V6*_IDU`MymW_5G_JK*`2|J1J#Ci6C)<^Kd7 zBRqBr=Q-NemXUbn)RzqBameA?X6&1TNHwsl<2~gIe&e&eZ$5i;a-7nssPPd0263k) zO>Knn&OX0(Lp*jfTzz_0W+Qm}M(jA?Jy0Q43_P0Db_QhIr z52KlDdPmBLK-a?a^zd{|T-MmE%eE|6zyDl7F?r3(dm(17sEw_Nr)TS08(PWv9wmd^ zQom6%cda;CkqQo_;1^p_j3bd=8Ps?v0KnON)AXxixD6o38e&-Tw4&&GmHu|QkliLO zS5F9O4^=PE?zjEjYYfmp-xJUg+Gvx)Tr-@k93$TPu~RG0)iOjo*(Y`WjE#tUA^}~Q zajuEL`B64?Q1%TxO7EvV3`v5hSg>xTX?HdU?@4$q)j<9IM@pfUD^ze$g37!9r7Cgg zWCO;RhIhX&(QQS5`i|fyxyosX{Ys{ClsVZD(O5{T-?#ma{S6V@OkKwl-{CxAbaU$jq z_4J*Fi#WC~A$0t|I-Z5Ai*=7o|K_4hml)PM^1i_d$mD1^>sqFQ&DIBh&h~B#*X@te zsw~1c3xyW_9f?g7f+Qt;dC*L+M8xosE?GrGBMxXmmANI&GXD?SF2h zkM4p?YCL1(j!ybXJHzI-y*i_)e3oIy=URHD+EW`1@Se$f%8t}G624Qglxp?G%#^ba z{zzpwI!jB}pZ$-6OXd?#+*#^jJ`qjKHCm(P3pt2g284VZLuw$IHuwdnVmi~ z!na$zo}FDp<9G0Z+hsvIETZlR!x{(mt7BLhRQWe)lB!8YL4$;iyldk<$pF#mzZ|TD zdbjfv15k=n?y3H@xp;aGaJlzvv%y$XWfoiLfa*Ul=gjr`k0aa4xk8mLlcP~s3{;TeXwD!VqSir+vF_F7^lv#DT>2wpi7hr!{;g6RhD-w-Rxv6sy z)Hq--Liv(nlN_Hb3{lfn@11$^`Hh`Dai+KRLwPV4j6JwyGumehn9H-xK7iV6q+>Y< zd%P^piQ_sphrMhQHSlph--{aEtBA0-5qnQjl{+$jc<9=Tz@Fiaf~Vx6tV1gmjsHw? zgF;m9%<;c0A2ICw^!+C%0vdOEKm(f2m6uTG$tJ~~BW!wHfh)UUY&&L@bLNN%h)GqT zRvFnaj4FBBLA1Me`UtvG6uEzjGWZL|jLX#>GCJGHGZ^j=%Ss@c9hY=1>AD#Z$J<(^ ze2AfhPX*L6)N!`IxFpLKMdvnpICnCV;K{0n z;%PcV+>46PCP%=X+6F%^w@F*=f)04hG1@$~$7q(l zDSB6ZAmRwIBAr1|PN?q+7B)?>eo}FhJ*NY_6(FH%`pt4L^KQ^h9plb_R2(m}7;%#Y zX7ir#KGibe$Vmro^HB**z_THSBd5>F5MY;e^%D? zS18jPK->i{bfrBtH`UW}=!J2BU0XZy~#Gw4cv5&Uj+o2#d zx~T}#!GdBpSw3Vw`cWpDWUskeOQr_AGgYyS-G1w6opoxTtt4EU?dCQ&{ADdm3elsw zrIN5emb|wYHx39`)KMz?bdrxWh<(sB+Wk;#w4&l7}oXaDN#DAmYEZ18M1bcV8 zgKGe*0}bEJ%qtVkSxJ_zCrqp2Em=EW$K|fXZH+4k>i@N~pQeGfj%ufHkaV?@^Qye# zmDZr$_G480w*meIc<_!4e>R*l_NUc&XcM%Z^wmM#<7=th8d%pd% zxZ%7cVHlt|BR;rY42u8$Bjbh%T0L-e*duxZIW){*L8Ts))MRe-`(D;*p_3Zuq~v#p zHkE~5G~AZow?NH<_(pKg4b+Ie!f)9s&V zGEapvoQVUh=YuS}nN#_$!0$iB4L(Ivet_E#qk4WfOErrZY%bNM?Wyk;BRjM)e88`Y zz5WN>T~DNtGH(ur#tZ6ijs$J4GMeA$B=_oeiyUmv(8uZM-d3AG=OhzDG!lgN^B);I zAF2@!J=`l4i*maWwDHK0uUIF2d)$|vvOQJ})-B;~8umY542@(qwoor--+=G#hx2#L zE6WGsE2DBAD$@E<_1`-z&3-iU%9eT=&QXs)eF0KRQZw91xG@y+8CG( z>NeeTl)3E~WtzM+eIqtK`EIW|q)uwJ=2IF6Q4n`2XK8B3*{U++h2)7;`Cb#&g0qvO zRdb(}0BqjS>w2Rj>nbguo};2JgCFcj61s)mn`yg7Q=2MDPUXJai!T_7;(~+TXH%42 zuktnlXr^)Y1?u#VO*I&G{a^y;fRKY=W?z|k@hf}%VRF}U=K6hB%TP{JX7f692w+9z z%HHPEslATLTPfV?{jf5ZGW(*J>ZVgeG~BApIz11fcR`iVcZ#1YDZqltQVV-^SI4iJ zf7GBtoM{%}Zf(!(ASVMffcpC)E@p^_Gl!M-T86buSzn8~=Jo38*H>iw-;3y_X}JAl zxCh9-*=HT0Xhzy|*8K37`-MpYOlW`N;z;?n!K-qSitc{OIERf(uFi^G8lJgJK*iV7$I^~ux?sWA+D zS0@bsmx}5NWM;y!s^Ju?-hN4==cAp6@|9cLAF+E!w@inr{bg7aagGDUcm zWPt$)YKM2`qO?fOy_pmtm5($X67ywkErCt-j-(+NaR@Jv^YyuuH4w-FW~*n$gg9-M z`*>GP41{$AEN;sl01npX66*xRTCbv=kP}hP1lZ}5_#uIr4G=0{&WeGSx(HZa`e#Qs zw$vqZ?8hDF0$&e%)Jp7I%wU0a;uF_ytk3{m^j=zfzXpp}1`BtV;s)YrDoyj~8$T;*u)(OAFS6DQyGE!W2Y|jc> z9(og@v~T>4LuJYv-?)1l^W`rUzfE4gRk=E}ZO?=CqXDNCc%VPVB@Q@!?B*;;wk)Ry zJj-swt0xP&SqIQhIayM6OtA=RQQ_Vv@mOj;gf_=1 zm0vSQmE>dY+bGZxYJTxIpF5`rjP!98RPgV5yw1W8|U#;N!gBD z)569=QCQLgbzoG|AR2@)sBp@;Y|YJ5n0HXgD)+KSR^kJPZaQrKUW)MYf3yGl>yyV< zd$pWx!Vz;v4xAW%_D}aIpvJ-jcl)(#625$P9~C;msW0Gl;1>m#OG=zz%JI^Jh;=Sz z7;LJN#{n!5xU%KVc=C;5q;v_WXo`w7COa1%nY#V>O+2Wk}8i3gufQ&mqvvIRD+>oAt&}$U|lq5kbp>VyILoOD# zb}1e?nF-h%h)=y+48K{@3sM{cAX#{XCMq%aTPt0@3zzk;--Jz)!|C*obS0B+t@Eq7 zdo)H#f*qA1n&E#yHt%Hjm}JmA5(%djp6tsaby=Z4A`Rs7ET=U7h!DH+E7X7Qq7;kp zChBb>d=HqGU^k%r`0xr|vrn8u9Djmz7ulzmO5zNh!P_ip(mCS()5%`-G8*qApR>2o zl)bTWe{%5)s{_U239tALp$k?&$2^9XYmM!JLAg~S1*=d-?2;ns_Cv$;5b6DuWvEcu znFis|O|Z5E@5LwLcBXN+u0iqJT!5QMIY60}I^?id7lT{`#MF5;sC^WiHL3P$HtM2+ zWZ3l(wu9ddKTe(og(i{q9;CGrFiyzP=5B13mlr`gH<5=wh^@My*e}eRSNmwD1eDia zgPM~dyLb~*VQuw}IpUrei(%bbyEQYrDs=3Tm#?Pvx5wH6J%Lw2z(Xnxryy%!O|=9Y zj_t*LGeN<|To+qbfz19lAx%3@_DH`o&8&g|Wz6oqcmJ0uzrRgjuPZ6d^=Ru=Y-?7c zv4OiCm1AY#+duyK@{wXzMx(K&XuDFzLFk4OyeVY}&I!b3M6Qt|woPO_-rzYUgvY0d z`$uDr7DUXuYtXO57~)MDHZBNPVE@(8%6b`lxpO>9Vwp`Q)#m79wWIkV`62ULe&(TM zl}8juvbzbAuEs-cJ3ooYxYJZGZLU|{4Up!qD(X#%VfvLEK=?6iMRYN?1?$aSFmX() ztlu_688CFG35_d7z<+1-Xbq!Oo9-Ahmp`0>yy8HM zNKH^yJ7?}Ix6*`o@W>kU03XW%4ybBX=i~3M)c{2_1*YOTr&McyBE66xhXiZjry2i*(2GP?m2IPS)#S zt#G95K9GZP%(PTcN3TUDbzkI>x8964N3r7l>*(pg5p z%yQY{pFLa5wmeT0>OQKM;ZZx-0p0GczQm#_aN@<5MRq@7d{h*=pOgfqqTVm^Pn;y0~ScpNc*&-#Z!}Q&pOMk zaKsLc-S$wI+whgwvc}`I+AV)>A!-god<3o!zTupCWeqKV^aB3T;*SSN9#6}TyraUU zS7nZZV2*C-!78&Ynt*gc1x}*R;;>)eUsKWRLD*mQK2iWP6{ol|;);4>^D^5Oj%vkKX@)ni(! zHC&sqOq=P211(|JcOK$DP-T^SWTcDnsCjZhShuz#jHi{#5u>~>-&=8kMKDeOrv-GMH1`HYBv>rs5kNBu3F;_;Ca*!;BDduA zQqDkJb%;t!h_h;M{`jm|3{>^$>Gj5gq^YGAMdL;i*d}1yaKm+LfEXeNIO_Ze?k6Y{I2WxfE_4PyFTS&8^ zfs$iIpfJ`t*{oJx^3dA*pWS{vY3ak(o}W80y_mHy8xfL}wqmQ{3{m1yR(D-K2>1C0O8dg4imVDhfe^Zw%j%`q^s8u3pN0qQ)ABw?G5|j8l7L~Qktz{o=z;=Auen0Yt;X+8MpzgZbC0GmR)3W3f zC%#^Blz0!Q8d!^Ip-THuwaY2m?~J~n3QO%=ZXAK54)!(Y^>!3w1saLVwfRWO6*NXx z?gjX)a4^l3VBPZmr6@-+yf!_m2Y&?pGQJR>8uC2&bH-5S7N75VMu_rweRUr9>x%^i zMdN+aYc&}AS3{Rp5g@5bs>9}K27EdfpZy+DAvPJm9#Bwf(&`@m+r>#oe8Cwo^E><3 zsvENA$Z54Ud`SXX^2r%pR~z2o^rsN3JB!5-w3y;-M5xa^Px?<3`nO1>2{=4DyKQt< z?JA1cTdPRnn$)jdx3~)S!y{v20TZA>Q;F5!;fQs?Z=s4f!sw zf!<2D$)$kfCJmpUuJ}1FU_ka`-m2}3TLx>OqX^b4wth{(P0hk@?Nu?nu8QGemZ`{i zUa7^BR;{y(hx`q-$2YD!2TJ$a1pstq=Hx^lH+m^&9B0?AUP{0E(Z=SqP0><@#iWv- zhfQ6`?)8Z082awbj)OLSh1DpYf)N*QpNv^?l6tED9Yb`eVs{s@;TYo0K+)Dg`Qxpx z;jP2qJBNWb;ZAPZagdf@WC!SvI?TzwJ)!2x2;QEexqi72*A#3c`@>$0p8CHW`MEvY z`fCYevuY#U9R%Kvd$Y$ z+{M&J&Vk0(cLql+&J#>60e;fnxft(9SV3;0qV>M#;FcSos0u6O>$}X!Dj2TxkXVY9 zVmncq#A|_>l*1wpPW*ve{`sQE|45p2(Fok0)+}|lJNj%h<4%Lros%Alre?QldgxU& z)!!C2n{^=@MV|sMUqWZPY5Z=qtEt70XIkNVWbgY*b+F}nuG5G+6CY6%!;WDg1WcU^|Xv6Wy zb)C^QhYqZHt!pbeQ4fuVFMIw-&N8x;A)3p&Smw%W`e)G_V!5Lz!s$+-G;v}ElULno z{fUht0ar-tVm?K!<*1u~${{PyXk=*fRbuQz3zST+1qu)G6a5q3*I|IS6x0WlIHhmC z)jFH#qF1YDyR37IAEM0X;)4t0s(|rla;xT;&ogSPQn#xPg{_y|yj7W7Jy|b*Jpwa= zmn!IUSO6OM`s6jTDx!=XW#|SeY;zRgXr18Tp~=U}_4w~+!vEYVgpi&0j(hiW@PPzB zB=0TaI|<;T5&07L32#%+p05!VX(-C7_TZE~|5hJ!uk~-xC8{^QRJ5f6#fm`5=zBH* z&X*iNg&(X~)cR-MJ(T0#p}R*rC2q9kqZ~<73VE<sc>WD4sMtKJBo92#qt8$tWP39w622}B*K3vL>0#@5n*O!%dC-;T zTTN(;(*9uX^O(oyb7@`pGRy&>=#dzuJ@7rq#a|{gl;lWH#_wOCIiN$~Z*wgwxI5mSb|*=JBsQY)WZ+o%}V3@YV=oGr@P!)&I)=u82F&1P+bQ+M?8UnA+{DUhDiOMXkL2GRyj%}19;j6D z^4?=$b8b_Xn1E{mK)+w}b(6PNSbA_aK>Kn3U38Fc(f0y*wUbU(QEs<-me%C<>zMyt z*7$e}A7ulylt87IMUdPS0r}H-WWN2MC!2H3#rn5u6s$iH z(RChq!4@s|hbkp^r`sC;_;rxKUQ;(oH_Yg7d7$`Q%r*Sf%&4*0<7fAw%$DM5^D8^n zF7J6+5dD2;8Q!SO%;j{Q3A#7d?3d?gQ-EZ|$epMY>H4?w<1Y{VkVQ12QseCCVL z5&&(+_Y*EV#`Gw=(@@Hl0f9PB^)XKgm)EcZC_Jm-|4x8guI*w)Dur?v3!t%5>hFpB4nsY4-pjTdU& z!|n%o6Mi2UhYYk_e%Fk57eo1?N78jNa$j;H^O|6<)F_=qUE<~Le>7q^K+GlIPwmMj zkSY1x-1v#7K>B$bB?TL1GZRFB%7UPYTSYcTzd%`=Y#DFz9#*go!J4U*tsg2zV#;g) z-VI#HcC=YW6@ZbAGuv$VBlO;zSEhnM;V6=4R4C4TI?K9+Tt;?}F~w!9fpUE0lu!`F zs+{=I6|_`0q?(F%15>4>SJTX|1OilNf_TtRC5mWOqb&_8_bPR3Ql8Sz8<44Yzsyny zhPp|}`>wN)9p4g_3<9nn{k*R8=*+bP_dOH-F03d;9jwhKFg{3EUCX|odh^3Ksg&5@ zGx%Tndq3#pD;k7vxnjV1iiQ!{S|QiNa*7l|`-Y+>>WoX5SY34?*T3m8&jj5rY7h|U z4-xZyNqFNn9#zKpRh+_JxDT28{*IKv!Nb)iTwhhAG5{WiNf2`pM1ziU+5M@tj%pyn z9Fo-J95u3Oc#m0MX!XAA#;m0zY}p|EXrHX5>N#r7W6;TNceRZ(K-b|fEg4CEjIqC@BS z&tzeg!&X*eVXqH@rIplG=U_{~Z++cQ4W9 zYSC&BT>JLA$vdm~?3=^k_^$E^$8A%NyVT_;jecC& zJP{@a4$AsABFau|KbKqr@))TX`+X>fiy#W&Y+jLd5gzMdF-7Go|95W^ePTh{y3Gde ziVrWtnU7=Px|I|L(#{M5Q;zPJg%btZPZ1>9x4hcycQqM_J8xp?a}L3YgHIiU-ssET z-S=Ip9Imz4#e5` zeQu2FWgi|Hff6bzZRP_f4CVWfr>|&U{l{cbV*+zc?dAmVrEqm>IEk-N zkviwQA(uWo__^%9^|T&LB?U40$n;TEn1?wuDaH8#Og3u5;UD_E@TtNT30O_J2SLa3 zaCgQ<=KVA|kto};V*-sh8peAL7{D5*xamUOoD~6wDNZ z^;3b5i9(>v_~Sk4)ifzZ1;7>Q5wFa!<{7ejY|8g%c zn@!lcE(|)x&T4s#)b^|YS);2~+ik!KvAo3aJP;0msJCJ;C*%8dJlm@d;M`2F;U60x zT|>PH0u|5mz*;K$LJRFUnbsMGemlh`&RoW_r@n~Vy2{rH&)Xinj4AJu(^yY^a{Qa? zlY8qCyes1(!r^+5f4Y~{kEPJvXcv3+MJivTH9lug=CniJcQXRg9wjBZ+J9DK*4}wrw5>;Xr_=9cPNAS>w zVAnMNj`p?X{-g*PWpFn+QR5k9lS8QS01wa2z$R@7sxXF_3&c@*@~P}S-V@K>&;bLK z1qk6xE9z3 zTD=2R3xwrZ7rK9v9biM%qa@5}seGsW55jEW#bDX-6~C3NYa5H7pg!(2M(nEGx942> z$|$J6906-QC4w(m2{B*c=J9ji&uDxW-KF4pDj7ZUx1t8jTDU=nsaWOoW-eSczPLT= zw8M7NMXP^vGvy-7_M@#x(P`S;O&CS`l$1azUv-XF&>erzw9LPt_aGizeCCX9vFZ!E zyyn&bL$H~0Pi6m>72+oqOpl0G1+xKiqlSB!OV8{QTnEm(re3uEPanVu9FX2I0xBAZ zXax5{w#2wl^%J?xcUq7EhmRy>1t=JtzbSZD`^7jcqUT6#_u0iiO~x_L={m-1dH4s* z3imAwV=PK{9W1^Ut8t;>Nw*Y_y5NZhYZ*2*MfGpQ%rcF17ocN_JK9bK*$qq`}0K!-P6 zEtn7n_LkDK@qvWmefd&$o1)04_w-zSn4YJC-SN8PvyM|KoQ$PKk!>PkXT(pBzl33D z3xhax7XQIm)4@^mtSyXi5R)e;H(RN~Gv1L_=*cv3&Tr5ou7 zaO5(TXWl6yvI)DpO#4G+jibTx>r>}kO^J!w()$;wxAHurc(Ny{V8O4c1@7MMC4Q0f zo#8VfU1r(=LnOyYs{V1O@sn+Z`)?I4B|5!r13>P*YQGh;^s-ngeB{m2!s~#qx=XNGRg4SHibJoZr>3|D#zUy0i2ek_`xl`BV(UIx zzhe*K9XauFK&8s}QV+dV+UI=pg*GRkHqqaF)Ng_u@c^ZG@Xj{y8Tttj!6op6B~xU5 zc`wUp)!{xwZgw^j`8?*>P7{|(zP#4nhQ=KqN{^z~K*lt1ECX_l1Y7&Dg;hG`CEA3z zN+6HSlI?CBC24B~(KxrhD-0Yp_f&#swsA7q9p1x=vK zC((PGg6(+NFt`~eB-pB1mSWF%4>bAjnY#YgkX1aQ5`Ve|fGXr5V%QL)@xm{mJDdl1 zY9$!a6#!sB8Z@3S6^2JreEfUT&N_u;${o)53aqB2=TlH^@hG7P`iPsp-UhZ)v?5$W z8n;`en!}qW!?m4k4v%lYJ6B?wZR3+--JwS=8b_WHqb&8Y6~OKB?Z}Rcaem_o$@Za2 z6aZiqXt@g1WJ3Ho5Nk0=k$OT&&*fRIQ(wEnGcB2Ln7pp64hy$=(BjNd^PPJ?-ca~r z0*bz*b^Q8C>l-`%xuuZyUCvc(u}R-&Je&LX$En4KvMxIhNzUjGz5rSaAqTMV7!fS4 zlosd@Pz8Vwa0&{?lYH4=M98sy#d4=RnNnXh=Y4}szw#knfIA;FwaY+syuxLY%%OOA zsRVToaJFk4wIM)6Zw>Bpc562qJ#AFiH_h65FN0NZWRt_vOFQ>ihCCSF83>T7*F)7~ zrOFf2HOIFZvJKV0BdV}gXGO@Liq`WyS9Ck{At9%He)~>+?2}&j#Y~%%_|hG>)Ae5< zulJI_A*E(ikjKTa6AP?RsJfvfBF0(^;C=aqbPqh>xmAcvjex1cAz@8m=QikYyWnOZB%67t5fYeI zkeG0L`$b1KxA*|o%g=50S^+ieFjK^_}d->uXS zBEW7nLxM#$iB%wysNzd)z+v4(o2rM-Rx;+h%>2VNix0A+LKF~U&^{q72Ag^FH9X4= zJh7lo>j1g~5CV4NF0h|4dLsSB>GD%WmP>zlOWCVs~cSe!_%1==2W^JBwC3!wj2!EvLA za)!!@F68ee*0W+LRSb&x*}D!v+zEBL4?<*!Y&?(NOp4!@BpNdeQVZfj$P%o=YQIH% zpKWVj-sLC1gW$)g{p(cZ7F!v3<>0Z^q&zoxI35-%?gz;xqZ1IN*oji=M5VCn4fmMI zh{DqH(e>ZuSp!E8z1YGqurq-EbvE)oNt(%AqTS6VC#I5 zzjN92ZCO;iBT!ce+Kq+!2oaaq?d$QFchsS*j3M8bQu_#)XYA*XR;BOZ&tAc94p*{I zCrhB-!fKt3+ycjoQT-zyA6*ZS4N>^MH~HlY>&B6o;&MT?k1-eez{}4a051}rFI6o$ zNrBJ5iZJ%-6-+*gR^Ga>1C%IWCFTjGi+(ZYt&tp9Y#Y3I9NETJsa^{$5XWudEFTv8 zo%$ws@{LmwwWVp&zfrq1FWx!{Kz`SqX!1WrcOJ;}{|9h@jSF0=NPZnjFjdHI*$eF}W>M;OJ^-b^6+ zg!QmUt(iNx*gsyFPjqN&3FzD=b$k4+krkxZPFO}>c$owtNpT8RMcuQJQ z_${CRp7}|uOT70!SxIoCfXto2fO`Y~lHpfAFJ1k&1iFu~sX}y1wfkvtYUWM-AgzK{ z5vfmwcze%V?;9(6>;8Mf$Cz)!O4q1u_6=u<7}B8;ghx8o&}&=%hqdxQy7i7tfqVh* z6arfgxo#{Zl=z99qx*O``8|Zolp}2l@kHtrLSt8R+GL#QFR01`!mqYxaJ6E~(ui=K zkte5|Eg;gMQlrG?t8drB0;ANG)a_oY{-day7(h5x;s!)51fWo>+sP| zqiBQpMjgmp5>Vm*XtDx+l>{ZNz|43cp1E5v&COC=h~*`*2P^P6Y>RK@r1n+?xhlCS z=2)~8s_yrCW^T6@X9e~TKQ`Y&7x2h%cgbwIRP_c21+Yvq*{;HEH=(8k)u%NXORr}y zXs!|)R}g-D4z#x@)xPQY*Vz6|hXRw-Jdq@&kAp$}kkeDp@3(v1abP5!|8xgi@0drl zBoRWCg7f30-oC_!8S~o(gVeVn-0G;qQuuuWa&C_sW;Q}qg zW@bn(6_xo)+&VA^t#`i7`>PBUjN~?m_O1*h7Ak?Irluh@0nMPu9}T&5I*|)@MGUa` zjY#4#T!wcPyOUYDT>6zPA_+7gsQbF5N~ht4RBHxSw0UT6*}G$FB3_5uEUHm3UZ<`j z{M!3|@00DBxy>e_I?Ic%5?%J!Ik-jaj`QeM&a4sv*~d;%F+TetV};VZ-V10Qv!QIR z$05q+a9k#=OM{Uk2;mmHAyXV*zpjR+Nt9sx?TL~fEdiwA#`^43i1L}<@m#_Rz`h#V@ z7;&kwrpc(Ex8_pFnOcRb<~ZXi2yHY2CLUQyhO3M;tmoJq^kN5&jJl&k;-QkFqxCP-F!kDh`y!fGp1 zc}5!KBu}XlZKn*)M&YuQ!>TqG3SisLCAPCN%G(8(tA-V20&240>H9<((cec0DK72a z%k#WaVp(?XDZWuWzBgh^*e$w1b-K4GFufIXLDyQ-QLHMMTfXLS6)GU-jUz#*=QE_A zD}m|SBev>=+LB(IyX}*5ZuVU&T)mY@?{pt-J$6$1FQ~9JCc~k}L3e>tH5cNOUFe{n z_o?qhhXDv4QKEE@+eGe>Ilqk~AEee%ce+M;KY&zw%WF~yR!9cv!*~ks!u9Vi!b^dH;m?fc+txVMJCp`^KRBM) zyzO*d+9c@{;q{mN3opKJ7I=kx-4r=n9(cPdC^>MDS0CN?Iw0`mhY+7{I`QVG4$`2< z1ss++3~o_Z2)zeq zM)%4avXyx50)Q5XT5Tq6RypL}fH;3?MEW95(NH`-UFd$gbOCmd7B*Xi`P3j(CSWtU zn4kk{0U#Bl&1GC&ve>~GSs{uwMEY|sxSI0=mU9JTmTy_xq#TomLuNW%l9SJ}u8fw+ zErmzFnnpZc;c#^>6X~7l!LzveeDM_JxIkp2y%}aUk*Zay#buXh%J2V3z|3G(wy?cj zIG!Twzu1s@RbLMK#}8q}bayf1nQ8KRLTknhGy#*hz{v!NS~)Pwn-(Pa_5(x?jUTlN zuht(j%}|T3vhiH0^WV6js^-|v<+f9(ml(>D5T1Tz>+W>BOO2|2L0KXx&WSIM02bS) z!<|*g9p_S0BV%tZTu{HDSMrIaQXz^xRT+ZA<&qEv1c!gWZo+JHQKFysp3|;1m`Pn2 zOiO4+ctx|7$b!{i(QVXnLiIOukpji>xWL>;^a<%mOq0>?I3dj`x;6g14F8E-h+(B$ z50h$G>;{>?<0BmqyPu zK$3YhW0cLVj|t%mTqGXS2i3(u2r5KKKHUJKsJjfO$CE=Fk4UK#RFT}kApY!dYlI^X znD6fBUc!i^slO~Szv9@e$$1*s*VF|pcNBQY^f-O%Lurs$r*sD{L-Ue!R^TqVs3S4; z^hvEuyOu5f(%$pGA^jZVVL<|I=0lq3k6A(Rd+3L=^4epM5f*LI9dX`}(66^LmJ@z- zvYV0yH7Xuvh0Jve?5S#-wGp8T+eB&c6(U5qK#sjYD7y$(JQu|!<0Y3{E|oHUjI0VP zn>XhyS4fF_`Kwwq1}^Ybtx4mGOE0e>i$5LRO1jr}uc52afhX5m;CCF;T~PP&Vw@E= z@+-3{sUVsgPm?_P`t7mL4Ys1kZW$TO0CO6SPydm}-|(73MVATI5}eIEHFiui1{QI#+&p7g(oBsiCRn$a}FU)H-=EpN1{yT!Ef6a6e!E_Fgy zIo%;T5`gS$`)H05e9YkK!3+7Oq@z~mO(~Cg6^~@YF_C-R89iOcbNS@Q?md&oGLWX4 zWNI-TYP@HPew+)_6D$r>vN02TT3M^y^Sl=4G0@LVE4-T3FP*SGkmX*7NI{(ud8`+I zhN_zSyU$x9Q?!s-d)H$q;j?YkH$Hw1txO9V*?$CQ`3R(bQ|5BoI_BMAK6@OK{pq{w ztBU;4F5F0TCYf84vNS-nd8q{R|u;&lEkK|Q@GBc@=3ZS9|;&^d2zKO)q`?o^H4 zvzq@}4(;w1ETw4UQh-VP(k@*{Z#3@;pYci`-%%RLO%3sf2|UUA<#fFFe0cbU9wKS zq||eBKK*ylgT_puG(wLgD3fRJp3@^@PD9Vl4uzK&fRb^*>2ZA#YoK^~v6(gHex*!h z5LWMytUAS?W}Si%hv3l^6;o5ad9%ySg4kltBQ8vHTf@x{|CVhFEsRJNa5E`OS4u+P zsU5BQ(655iuJKxEKc-cK{nO+%1+f@`cpK=P>D5k?5~dPTzZhsQEu?<;({><39ropd zk|aMj==d5!_v1P~x>)Mz=$t85EwR%v(Yg60KHdKRCKzrxkHaq=$EvP9=igU%!LZ>L zhZ;^_apr+V6iTH5ELD)^jN%h$N#%9Ha~MLjbID>gK=Ik(7}tJ71BgAKpG$>lxSeH* zvlbkXd6<_5{s_i56o^a+iV&E_eHuL5WNa~$+yT36KxGN!T>?l^;*^!ogS56=djzc8Ua|}u1hqzng#<{@xSo+XO_vs0I;f^=R!a+V zrzwzZ*I-~YMR}zR`_yY->#A_t{?w8vEb!3aQ9e|0J(V7k>VbXamkiDQ51M9$n+d2m{Krvs|v%z-`orNj{t8Hl=l5S;1)H*`Lq4qPB9Hg=nX z8HRFX!zsfzWGg;CK955Mjy|x~%J908qjD}vt0DKYik`rQJVV0BYE!|nh{lf-2=Gbs z7D2LzHA!wkFarh3_U|6Jz!3wdlG(OY=VG#8B0xdA)Wp;VY^{H{vZc#ZXkggL=&IiaMbGgZeeBdEb+W_ia*)j}ywm+Zu znUFqU|4iYV!GLaO&`RnOpLR~!#5sz68evFVR_9E3x?d#RZ;E0}2d5Dzovzs$*>p}h zYJyE4oC2LkqHpAJ7@&1Qq|Af^z>!`0rd<6fsP#ykFHuhMZO8D*^IfmcccEDY*JyYx zDX{Aj$}zE$>J4^em(5y-z%`{45ZMNiw5jB^5iIRE9nq0997FUjAiRU&ig6$@q6#RRgrC1mOG#N;c-IZAK&A)PpaO&?7eCgFu4=Nty683dpt+0(Exw z%%lu3xLwRs+q`-em*J^w=9UJp&^TD8LW<53=sohX0FPp-D{saDla~;rm`Dc z+Fwr`BB_2tz&4>^7jEAf$j3N%sNu_-s<7{FovNvpVSrO(w25<%YyI-6A2VRf^4{_< zUDHr7KLT_r;pW?IZ3hBQaotjzODAw8b*EO|j{xsnESC)jHp-HCCx`--K*9OC7Iwcn zDjse#(Di?w6tLLQxorN%s`Z*Fx5=VSw^51`kCE zqe66AaJm@!fbw6tI!_^$ZX$N8LHv1@*5{_I-vBGXf{|OtnRxDx4RZS>654k2LAZd) z0_sVgnw6ba8{1!CHk>Ly;bP|U3l0_{C)hn`G{ zG^|3Uw-a_Zz8aI{Y_=z|)8X^!e;<3?p$BypdVTn>T)E`+cK@{Rr>0|EW`k2EF`k~>pZE>D`<4JV zTA7bFpE+kV^YYJa3jiu<1f+&VOHGj$)yfdX0Db_24GdMuMVCVBFZW6PJa&@a#;J0s zE1%A~dyGcS-mdgwnQHIluY7SauHc#4}hG15nn{)t5|IDx5eyDip?)w41-r;WHnI6 zqWZw&lmWyOXLcb+#Acx6Q`-W>G-9s6xQY05=|Nu5trUsqzfI}N8Af*qv4sUL;#pqV zby}GJkQR$H-#IPk@;NP;5#kU?_p`bb%i7%b3 zB1IuW#**^WbaDqod5n)IkVHmC2Mc8+E`h8lcwp36xe;*QBsO>{FLz2a?XZ+K4c1hoIWR!(s{hjd_GwgC&NWazx_xvuH zQydiD6ZE@0$z@u_?4gM{o7dvy6O+NcZSAlg7K+Gn23~{uoB_DDW!`Za<9=zLVGFzI zcH@KdaInWPHJT1PEd%4weXi$lDlHE7(pi2g8g2zQOakm#Y|VEfeoQnq*A3u);!^Oz za8Lwk@A;0S{x)LoF5li&!FemLhbU9)Ji)xE_$QZ~2k^XXAMtd|@SEYTZ@NZ{Rt!S? zdCBOfn(sxt%*|+eJ&!_@oP!iZUn#^Z6M0Xgez>_tl2 zQ59;+*|g5_&dIci()(uA%-cO7tQP5SMVV-M-SEeUzhwqbi@Qco9pz zO&lVoH3q08o5Z2nTKi_1f~(3#xf{{D_EX=TcHFcQG;QA*WI$nQQCEU5Y@3 zFwqSxh{93(BN|rC(7uPOv9de*#7IOjmI=4P@sHy<8Efgbps&)o3f1(WaWf=m3Jp7n zmCd#lji7K_iC^5H>5S}ZXDYPq%1mfJ-34vhFb~PJTwcDHa0DywE>Y_#$- z6re&IH7*efa{?H3d~J${oPTN|gl})59^w_6%Yf@UYYF?LHOWy$5=Jdx$Ic}kE#b0V zrz-O~WOoahT(T>~#=yIiX#>}?jA!Ss@meTA6C$m*An}&0+}lB&t~e5$myd|IgLM`7 z0_*kW2_%L_Vp-&H-6cGii5%ZDFZ20rCg)$}qZM$W$2f2Z!3bg*zvpq=+dIZ#Xh+0S z@aq&pHC>9Cv~&MGh(~LL>mAqL+|QH-PvhCvZnXDRqAeE>rjpTqG^c3>oxIeRGGu98 z#S(&HaSz1ut%K5_#0F`qXmgPm>~%Jg%zc)|Z{ksCWxn%y-CcPs6s41aFbdJ7?$kF?X{70{%w;VgX>hhi> zcfsw#Ucve#zw)Pdo+ErYdvd})nZeenzOh5v)=R*FSm%{C?#o2+4pR)`Hs%IJJ85s zZN04VSLXLLM`aaMd=||L1Z#3ojj}V&u2Y%qTn^@@@|GukO;P#zY<3%ne06U?rj-iS zsbnY`GZr2CiWF+PAUqyAWjvMpsQbJ1F=HoC^etFXzmQ6XyR+$OIeF?c;O7imz(m;7 zY7x}{6}NB76Jezfi&@F?oM2u+pWUz7&|?reG2a(PB$+knJ{uL-YaW^6(S?! zP|ftYgU{azkzFj`TAw@7){0gzyg{U;CZ!^BJv zgFcob{UafI;a1Y~3{Kocu7bWyxBE2*k7&(jr3E|6YJeFS|Jb4to}Qzv$Rgi@y`n(NlVm*Q~{(V-@{ zxV8$>kn>RVl$`h61#(*NithS-B4yiG?e(unJ(Wgz=0rVFRAgNF5$mpo)4=+fo{iQ$ z@nd<=kEi~ApHqHhgM&Oie@A(FU1FEOwo*b#r>RQ;xj4G&91i1NjKeGtkwGs(!bODCH1`-@Vi*{CmMQS&hX9W+cEIEg z**Qsf_7U)WD+!HQMV1pFB{0p4jH{>RyHeGKY734i_!&0RQsSVB)WCmBe-QUswK^dJ zvB4$gH+T6$cjQ}#n7{A-TyG7;Z_@kR+sLSf6=_osAguV>a3xdW;>>5j4b93@$Z{T7 z18d3~J(Yq^T#47vdyqD)Q|fSC@9C_lT*}w})!&PTgG!byXE*NW<5n*hU896UmNeuqF&HNXm}`&5{G2XV@XPrYGumzP^3c_v+)t@hE`nv38dew9=-2*|gO)lLo zkZy!Su#wb|=j+Sa-m39qqho)`-_O69*PrTsrwKXGpPXK(YsGGP zVB~B1Kpf&hd{@(%nu6?&pGhOD7C#E}Y*=xHgl%umHb+Dy2B934JoZxx%yTGpJ_*j^ zT@yJlqnhd*bC~L8&O;|IHob{vyG$XDg2pQ>KG+XNThN~Fp*2|3WpPw{77BqJIJ~0(UjH( z2=XydufR;OXh4sM2er^ej9k#pBw<(l(Y-Wbeo|?!fQwMvr@Qo_(cF8X!l)+AYn89B z5dAn6=HN5TUTq6}3PqAdiQQjcvvPCj6U8JW_ru+pv_BpiqLQgJIE$}@^@$pJkO{;R zIVu6cq5eN2{ErI5;^7Vol)H!OOo#AnJd0^21sTf_jrQO)3}u#nr_e^gY6+&V+lufB zOm&4^XSjvpJcXwud%=DMlAkS9%y1lmxP<`0VL*@x12vUl>;A@Uml)AT%|14QTFt9S zJ{ABW8KGl|7%wk>x0i^02dw`-GAFSgC|e&rY#p?2eGwg*)#%FSPKcZfz1+6UOz zIo^Hgz%8xlV5 z)?3u)$E@=TlSjRNZn*Q*RYfnBQA7PcG)gG6XYs8`pmqw3j&=a|=xXJbY(bM05j068 z9gm*E3mx@`D{)Xr8cLVCo(_u%TNiEG@B)UYth#izZ#WEY1hHx^Hc*}!QL-Q9V@|C3 zdDM}R<1A!osx>WkZ$?%-lqOV!EwRqyTn5h5kGXGphLwB9h6hC-5NIKu*pNCB{8ScI%FmXW3LrutY|z;Ar^1Q0Yd zmCeHt$bAmdIITN2AT=}h3nzBXq8)WC_Ah!YLw22+eU zBSj%+{4san`-lzRgrQ64am%##)o=57`o?c0dx-UfJPXeeyJPutBQIJ>^vmE2r#={r z>5$+OEVrYmp@sP;w|vbJ&eE&>N1@S<6$0IHLfb%j?^?32yq5-@qX3^xN9sSacQQ9E zZGgC-qo_HfBdOJCrlYD@(*-06*#p(x2`eY z!d-+}c}VYsZix`pRp>P{3Zc>ZJ?6X5*F~n6g4%*5p3XbK1X>)eBPZ%_YZs_La;5!p zN}G5=p;-ToLk=0qH}e!l{!tw6<$0zI^bjWBr<%^^sPn1eK!?N!Jmw0~Otl{rnOPKQ zR9&^wP0?Tqm&%Px{MO$=~a&NjhbZz=Z!%|>^M|yPT8`-s+$bN=YXQb#^WPyO5y=wChm{j5 z_it;j@?Sb@n!R!3{)YXB(>BXX#R}xU-_^9`&CQGq7}(=N~27Z?+%U4$Ey0g&>Eb zKgnp+vV}cIa59ds9&n(;J*Y9#N^vI>aYTa#2fBS&jH&DVrkQj2-??|j-BUo};Np#U zoYNEU49Sw)@(V573-)(<_7@NX+Yhfd3y0v5UxYCejM+AlOf=}%ouPmp`k}c(Xh5)x z#cT0VGsv=P#YVGrHqkbEtkIYSr_>pYnKkMSiS@jH*5KN`(aO7XPcN3(5pnM47+3*# zPPCsc#mz6O;wK?94`fBGHL}>qXohPO0tivU3x>OMhscS=F*QC8|i!%;U?{60wx`=|dCbYqLXjQvv&crTZ1 zN~7!HxM#s0o}p?>0O>EQ!iPIQfrBp2adMQP(gcUs^Q@AQ3`dl#Yywkt_e|jk=(#^r z9tV=lZOf{7p2<`aZrMZdu0OmKHFfbbt%G4m4_f~W1WAze#|MI1J*1d0(nu6v62Uhx zwU+qCE6&2W`E>Y^;~V&5*ET&=!IcV3z=?Qo2SnN+Uf}gGrz#~Ij`?6`qgKD z2St)TNObg`qkr1qD7g9cigrqkW#HE@)Lo|xqP?udt#4n?IzN37wRZp{TJYH8J)H17 zvvhC)HENl-*krDN98`$jM&22f**ouZZhPLFfi4EVd&(?!8GXkzmDl~I^B-PZX;JTm z`NmFdm2@T7)hMh4up0!t$uG7Q^s2LzVQ^BT=epy6J&Ji6bdg&cMB$wDH4M zq0PY)pF0U~m{)j?Z}(Xg*#5)jtgR-Jd6?EwNVGk~@d*M=WfL%G4sLMD{X*8;Rx)*q zQ*0B!8b|YA?IlFs5v#F9oTdH?-qubPbs7jD6h(V47KN5zz$hOoh3*zyxg*$CbF*H% zTIt;jSru#b=X2y)54w7{lI-`ZvL&qeNJ$AU;Il%Kb2WD*J>Gx^HlL5^V(2`fmAWgb zhM3CL6p1#lB$S{js^nhnb%Cz$3UsFGh^aAS;hiT_)!$SeN0!BzDkd9D;JzWgzeGkc z=23*Z4yS{|NEu)7@X-{W6feK-Zz)-{Ry*UOt+Ycv7USYfIsGKJ7f zZ1M@%mlj#r1n#=B^iGY__33G$lNO0ZysVC@bt4|*$oH6?=1W1xe($bc&we=MeV-mf zU^M=``WBYz9ix2H@j(9jjUPhwtsMv4>3sLj{w#iBmJHy>U9bxgej|1?bBmW~ptzcY zxYR8`Ool8*M|+(4ZvV;yFDB>-QyKo>JN-`Z0_D&lyQ+PUFiyuGQxHGIr}IXIoiLTK zJ~UG@2%en(Jzu;Xv>sLO`g0=N-V0YbF_wG8z)1e;Q+#BPkf1wXiV8Zu*LdL=&^}QZ zUvvg9AcueU^J>hJe){+E_UxhG%pvg?jc)#U{$+aE)xupC;5~90$F=e0Z`;p**fCJjg5@}WqGwvHR|1(wP(+>PG4ao;xO^*dDpC8kJT?t zH9z_NGf5G^-%C2p3`#A!tE5KudwO4HPn&%68@~|{gFCuNrt%><_2-pW9Q~SqOke-U zR92dj-&>=e|2+Rk24x+U;d_*QWGPHoFIkdB&5dWSH46bqJR@|DWR=sLavTBeOZ0?< zHyQaoEah$%;8Q9kwJuODDS|5?OM3stgyld&i_G&&e9=IWXom3K)u$Z1bS_@e`VD3m zrCS{tr(k63+f}kA*uDKL_UEtUApZ~x{}3i=&nTdtmutp8C=9hqh)-H80V zzm&Bw6Jb!TAh|GXe)pOBCLMygsx#6i6-_7R02=5*klqO+mI{sKj2S$oOqNk2zg7dC z7+@&4GnGUB%C~`5n5K4g(bogZuN5I_OX>?{#yE^m2V?{#YDUDglT)+rI@~d|$lM5@ zt25r;V2}nB#+iy%Azi(>QY2u$qLYdNF>ezFGQ2s&&-csO=?#-lRRk_~91~9zk zZ1^NE#UJjukT;LaQq#7_Sc4c}nz*}MMf=(iZRogXi#KNB3;SJ(%5ad;ReH47i|}cQ zTv44Zk0P{ZM}ZXcY{skRzz3~#F(s!v$6elQM7+WQJD+kvL^O;5LjW*Biv7I*_=R_+ zc105{Nr@LfzE1slebRL|VF%4oeDJ(HIlSrbvc(hRnKJ%f5KV6Dkn-9MHbra{U^f;uz``=3l-D2g4HU;7ZM>0t{gdl01 zA8{L1R_Ky&0n3#{87}>)l@VDf)1VJ>U+9KTq>||0Q9zmuF{Wn$yB5(PuLExaRp+|y zKpQG{@G3P*xkUNdaZ)u=4yC($KK|--3jBsHbyQe`lqkn&FJXO@T@*DOAOovdz zr5|nsr3v1O)*h1+U_3xMa{-NwhSxrUj@gXS08+|>gc(UKqC@>%d%`DOo{;|<_4$MP zX{!5(ZS76~g3xXFsdU`Ys?)u2n79||(S3ZQZHedJM$t$0&aa7CJnFZNQVMFs7r&+O zS^l}lE9|L6sTKIEy+ASX)E*tkG?v)eD75>>^-$ovkF=MWrEbQ}H;2OUA$b;ixPbuO zox$Ln#=0FMTx#AyW_&`cZgLiuKb)<(biKvmIgeo%)eQ@bWJibZW1qV#WM>t`kX`OZ zcZ}Yx3^}rr%d5{r>eAQf!b#Upft*aRhzP~^yJSj+M4rg0A1LG=ZyD32SV z#VRKIP!|U*oai6*?mL*(`Y!mOMJwjJy?Tj4?ZL35qTWn*XXoR_;H4{u{5{#BTk3QE z*-_oEH?}0~3_S!0oV{Lb34&Tc%2N0ARuFg5{C;s+@!CP(M~77Pu@RaHjnHl(94nMz zUf`&-4B<`01X?g0F(tt_Pn2Jz@SPG~@Vc}RJPhW&^1b_70Qb_J9~wYCr6K*|pj>Bu z8PKpzv~?65E6!CmlU}3zs3O6~ zsZSe`a6(V<4-tp7XpDfK{x>r7wHe<2K{*#%oYh`!p1dB&LWK9G8wsv*SWHOsUni#E zu-cY144y+f7avCZ-V2EvJZaXE>5v&x_Su1;SRUyYqeA4X)`f<8iQ$pHb1Cxs#Vi zCYe4QcNZ4UUPyE&zQMM7m#t1FNTpGqJTr6TOWCWTMQ`HE0oEB}S!d@(} z_yhrFV8Ar~9=R?NJDhIkJRL=&oBZ)&Ql98xWeHoAjSqn<@mkbUi&?ukw_AP?iY6@0hms&oY8jb&rF#5JJ&}dqdXFMww5m5p;ex<+Iiov1JF#SI0|}M)X@?lD zxFC7w&yStGI!!rmVmne)3#yRU=fVAT-WERdrh+AL8mi%uT$wXx1y-*NYF?jqJ=z8m z5;RQJOvcmNt9O_${aGaeYy5i|r$xK=G*t;KW34oRxn~Jg1^;J?5TkDmdFRW7IP17A8}Fk9*?${iVH<(o6z5EN32aeVUW- z8{*R`OmK?ejMipv_JOn;SHkI#iBM)_Q4peD&G1#8*YyMC+c7%Pe1Q7;4LcYC49yE|wn$s|re|CL+E zv&J0Nm@T%bU7@8NhBnHP;$A5CvQDw(QRLFZBf!sEYJBf~N27Be?*Q8}SA4F=c*hnV zXGRRC;X*#$=RaPd?Q~Y>Y`i-tIVJvW@(Plr4#rdz-}j)&Oris06_olo_db(NbT^^e zM~W>zSVWcuIG1>4hj#lPb9#PILk&9aM zp!_uE(vOYHPx3RgGcst1R)9!Sav;>vf%|L?Ca%=@Up_aWaLBOXqTD#R`MyiOg1qys zc6O>B&{#vgEeK6qZ+LsM`SlXS1#}ACdcmM=|M+ELk!Wm|$2rcfiU2z&%&VK5h({}6 z{w@Fq4W}wlO~}|%u$}fW9}yWi{Dw{Zx_?HnR7C&Tub;s?u6NmMf}3fBHA|Zk>(~Fx zFu{+mt(HL*60ba+8h3HM2VQPhD=G~hFEDucnKJU>+eXaW0B+?Go^pSMu&}|`tdxg| z=EdG?!lhM31$h44O33G&R{u({16}*P?9ntgF_AWS$olDTT3loU^?uINu!_OTV0cK7 zOX_bX?*B-bsI1(PC$dJ>Ua;ps%_#w1Q)R$L9~ARh`Z7e_O0`d@$#i==>Ta0#7W>1U zw>Ab>vd6d18pUz_?AhabU)L>_%cbZz?ysgJMK=HtxcQ_pa(J#wnesa=8ykTa%9|}J zxkNJ=zmxI8Aq~EjE#<5)P9F^J~p^i1qyIcdZ6Ff^mI}`KLkGP$ay;Ko#{Z3={=V*)DU(}K#svf zCP2;AzU(@F@g*{%0yyma! z#SaGz$pBvMfoN5jf-3G6EZ3hApK?3Fw={XrDhpw0fyyY6KhfxbD&AA)MMCg$-6M5M z8$#H6)5!;?S5mf(VtGw85{1{cH>!}iY4Tl_0zPZ-Au?3Knqw*F*j01Y9!_`baQ#K@ zSMaG@vFn`_XUsK-A&=A>{)V+>ErSjR(D0hm1`tNTLHiugUt7Tfxhd|U6_5eZH&%Pz zGVoH8#6%zlTa6iGi2v67WVz-=y+;%qwwiygobJI$9UN&S@ZLcn&b_XDSTG=(<^56e+Ys3PA7~vX4beibY*zV)UOl+ z@&lB|CR>CV%r7uCOg6=xrO3$7eOoXQlZ0~s>qXzbPoYae5)c3~1_a-3+ zIbT9#)L{cHpIr=4fR4p_Ps0`71_tJc4iyxXogp!gCKTfAoMu{2o&{k~*F};kdWcS} zz)Pdsd!dQWKp8qD0HAD60AB)og?)MFer^ReEOB!nR^^trZS@bbnT}*u#ZlhNSM}WD ztu;BAh-mYXp~(#d024@h{Xn6WteaB+9>Q7u7&fWTmqie)>homqc5hdkpP#f(^PO@s zF_ad-ME*70IP(XZNPd4JBZ_B5^=TzQHbH9En+#3PU#oM}*-tRk2y1uNQogO`oHqqv zAE>-?5!8W~;rLSg)k;>r!6d-0jBIG*^F4`?a6{BbVO0{~GtoC1tU}YtZ-lClFxzvcJ1ywAGs8lukgW2g#d{JK%*QKV=a%?=#E>)Oa}3~Hq-Ru6*^h5Jb>~&&-G^s*)I-SH*frQzHQfJ|27+rD z3oub0ScqE*8+XMV2po9W^42e-VfgoE59Ow>C5pQl?_A$*XdfNy!f} zfGCcl0hb6nVPg-N9D6SlXvv zS;Kj4oL05976|0a5O1v#Yg!evCiS)vIqg}5pM-#NI|2LpQ)ubjA1SArq6C!W&U^?q zkuo*W2bzos1`>v=R#NcW?5uhXEyFT*2}2hS|JN5oiBQS9V=~Zr~ADQy)&Mq|bQ8KXuL!lefOsEdNjAoD_lkbsM}z8q*Xg)>hpV|pJwezi&1i(99;3z3-jebhVwWC?)U|BA{W!kdW51}SLUtI#f4 zFNDU4v59vwIp-u^rtZEXe=GW#0GZgb1j7bWfOLL(V4PKNoD)Mqz$;K_&E{t)U&zZx zGOHJZI;j?T-}8s(y@LdFtI{4EIXD{qzB_drKpc`YP+2Q+Ovx+}=Bh!Ym z5fN=I09}Gw?22gJJ@Hsl)gm1sC^9R>zajR}qN3J9248w6(WDM~Pv7dyvjaOn+wwsl zQeU*|HYG8H4wy1(L@2dob{bq=wgp>z zvpF@d*-O;$$YOkXy!}wKQeKl%8Y+DnLBiTn7sEHCIpYY9GGL2uL!{?p#Zzk!Cab}^ z0GKsNj1~B(e-*=Gpv4#v6`rK;9dVgZchw}Or@Hyy2Ol@8uFE2|@>)h`;-f9Q3Y}_LX?KPso5XnUSk>P*?mH#AvG%cjmDrx=&EZQQ z)M5(G68!qjgBC7_ZHdZWm%H`(zOwNnOzLm!!(vKr#DN+u#Lg*6Bwc=neiFjQ^F#2c z4cwT|e_WG*oK3QP@(QfS=;qD3|50=wj!^%99Kdf6^PF||*_*RRs&md>M^;uyvNH=w zcW2M+5z5X=XOvl;z3a$I5~30csWiU%`TY&=@p^yW@7L$?L_AUT@?E~)yho;c>nhRN zc9Z!>Huz!sjSrI53XN_Be2q$OJE=OPtEy)>m}PxD~(t3EsH+TvnS<3VyF$9_nA@_Z>FcBq01z#lnt`&h_L++?Y3A!mJE( zw0T&G_7Qogtm+%7Kkyv8%LB?cIME5`;YuIYM$D&TIS< zJfl|i0HM&2-u%PE(ddK!Z&dvZ*c~tXS1_NKCBGQW&@WLh-nSa?4}f%lyACH*2Q z!H5_Naw3XqEPMQto_TRVX&0lqUrgHsuGA~$)@EO2mcC~A1LRERT5uKY(my?WaICp{ zH~CH7>NdyAKm!sl5Me5*G55K{ONm@hxo^!hR6PCD_wqb0$mNQ?6zB63Q+4ELD&lk7 z0Z&o6)1%+tzLwcHI|4W&MEM+^@{f4&WTmsy))3dpo{?nfEq%8jq0?IbtImLDKgL;Z zUDSJBoTB~uVQsjG==GIBBPTItrB;^BudQybFeNhdIv#D&4+mAWE@y2JZwZJ?T^Mka zBl*a|Lh5g8b%e$f&(J_Tv_wd>_b+dF8lAN#VO0ghF(UR3?5X?rY4k#cTfnP}g|NDjF^2mE%2b+e&}@e+XZ6`Q zVV{|S%@n<8=Lz5Ou+Y(A9z~~wK+)0s{B$H+g?cu5Yq&_6bn*8*$^tUB4CjX?!(_jZXX_&55t}ysnG{{ z62#!w6XxR5me`)KXRh70knv1`Gj<4v(D?m#e2LIYOIThCuv_8jbq$6nqTXk&{_Oja z5&>zr>fppvr;3hkkf(iHK}OpS4BGhGt1D`*!4_>RzRA;iMk@)*!SzX4ADno=KNiFo zTkAJSsu5r*WAnHhvt0xQv1m`b#ZZ8=!)ZaL;Zna2-@CQdzE+j|GjpivT6_ucZxWyk z-*R@?+v@Ot74a=Y{HFE>oKsh#zJkpd=b6YYIG#6Z9_M;ACWU!6XDZo@kRVAab8LD_ z-^Fyn#j~a=6S<9XQA8eo%b_7-<#9TQ`BL#|(E%<+T!{WyqP5^Jd(vOnZ+)(keu3$H zG>K~aM5BP~n%xJZe)h-}o6*8#3)^H~m+0@st_hOsFsyR9mx!3MsaTO9Wh``r&rxE1 zkX4!D&0`Vutb=l=Ces0MF*mg#USeAPGK)*5jE8&WdgKj#@8)rPUq_}sSShG|TpSo= zV(B**++&I#sCV$HC=Fo&*b9b^=q$S0GE0!iH&*N&%Wv(c8vB{iVdfVsR1f^OY5Oxp zO)Yx@kd&0PGb+JvP4sz2BShWm2&wYt=AEc{qfffw|2aFf_ zV!qouG0TzFmoAaOKFzKP?#ulG%6#H%SG%=yX8mQp^S}1J)Cp6lEAjg6a;@4byRpFH z3e7IKXTH22IjteBmCsRD)D&53V_e?4{>xuDP~bw@!JWO<CK$vqYrOPpA|G$p~S!b1}1Z}@B}9EgjgJL z4D!-ylO+9F0Q85|CB~XJ`;FFsW9PYz zYnsq!D>{QK1}>6aH>4irc1e!^3+R_f5d_q5UW#R?a|e1@ACm80`odM*kn@nln=_<% zHZ5~|rvTR+Y8#;nWMKbH zW}_IHGQQ$}5w9?Py(hl>r~__W$>(Xo53i?j$Z7`Wyo@aymWOzc>hk^~^WOtjO#LSv zKEG5ZqIUxuFDv7U3?uQZ0diF8UJxGrVaV$qq}&byp_`k;Q+YNJx?e<@SLHBVZP-3W zW{nZQFGWHj2PRiIayHxVB|3FT1rygSeYX2#mHC^4YQE5xqVr z6)1?|^Fkir!`J-+sP)v~Mtw-m#WFpq_x-cpyMcb@nb|#5E6e`6zG?z*4yP zE6z0Q6k9E;powxZJ$65;2}9%sL_@>V%Si?cQ?%DdN||KRlz4PZ&T%;5TE!kgjPLf3 zgU|1qj@)jcq;cwa-GKe!=^BD2hE1tq`o$>_ zjdXp@98l~;N5D#yf2DhO(znKb<0n+s=da2>p!}NpX!ALLd@F_6V9A$d+q^en?%p)` z?z5C|`?UVqAI-^xPwQ-Uj0flJf0QoPDOO~v1=kGSyelcC;#I=YA z;ZexXKS(gji9Hd{tcgKagm4IT;5(|Grm)O1=GXyi%cQ5{*Grr3w(86bD_iJu%k*c7 zBv-MWUQhR2l5t?lkGygo3lfT$TCn>Yb^5vwkz&(_@n-luGV^K6EB))}_6*_+S5~n2 z5CJVld?1hX>3dJoisbXx#q#H|v1G{?=@IlPtn_3}6|2{11bkX*_t?zgo0Sz`Oftt9 zfXN@1D0|fXG7&K>(O2>EzQ+yV*(2#H&u9kQKh&AYwES-!|G9CQbk33l~NvyB~ zgwlrU^G|*~V9xJWmteQMtU&jimFPcTa@ky~#fIsJDnXpZ9c2zjivJ-HpT`8g6(?tU zK#D3)Sc0-O42x;;1IkWtpSgZ$;2f1rfqT&qJP2*G9B0qlKP>vl74FMmyKccNxPB@b zNFBuU;!?epqtfhF6$>~&Mm-GL8@@xyNVQ)Og~Bmh7C+L`q+U|_l=Tzok#P%RTp)}D#~>CPO+!J34-UUW%4^1=yX z1a>?Rqdef?Y7LYdhD^dZlO@ziU81fi#_Zs%ttaU08q|yNe?aS;1M>*LyJ^Tw6U8GG5_^BmyB*7F z<-nv|=^xg5K9~|am>-+E#j6DXTZe;9$Pkw`ST-Ux2zyJ}2Kb}W`9h>6uc#r`(TCQ7 z_Eh09Eg}|caf)m47!zf`a7EBKfYR!~ubo#Dap{%W;kqB879dsOeV2h&Ss>Jq^Vr9* z)2F62VxUb{b}c%;j$AxK{>ES%Q2}Ln+5cPQFWn&4@VHNk$^5hdoQP-xPV1nAcGg`3 z+vO^%{1_Nfg=Nt+5%5%Mcz@vzN%RoM5wd@S2-Q8TupN71F%ou4#K!tFKubwM*ezG{ zG5O-3RuDXxj${7a`{Kd6PGX~z)72}2#n(WV9A;bq7j81xsv?QD$b7EwTvG(x z9uJ0i01$R5^(b|c1CyykYyrvKc7!*j3uGf6svHW->EgZW33;@Me?A*o!xOe;>@0O7 ztOj8?Y zq{DwAZhVb|=v9;;+raM+-JgT+Ab60<8gP(-3A8=_->1O9^+3%kyY!z?yff$Bv50qe z*)YG%fdgO@T9A~Y+0q*48N#xF&EZZ>RnDbCUT}u8XhfpXRSs18A-u5tlcW{?Y;TnBa;+M# zuZX^w@RJR{6`n*5oL|0Fwy}i~!sc z7&YL{F(7cX%|R?oC6nL{`@LqM*6;c?fS6Y)rQF=&qyuzAVZ z(cYdCeG!QF0Ia?bKEDQ% zHvmemfsEE5o-~*@4dzL{Y(@7HWXS#iHjX(Wsq_wuNuCd~?05O^k!g)}6VjPWA%~<} z&gQ9yD4QRl@-rXGmm-oa{hmCIaX!qBC^jK*MK$e++GxnJ_s_?nvw`A_0{7_3!w2xo zI%oM%&2hG}mI$4bq)F|j@7kfrhr-$H)}s%VRoIpJt9zZ~dJak%cV$NiI^f4G*kK;v zJ}?FK=+KO6=v?!0pQW7+CniFnudwAv&c7*9Bqnjwv`fQvP!opO*g|dMC{ByeY9?8_ z?^$X}E(PMF14;pUbA2y%!W0)}gZUqDUCfc)VLJ^FYsABxR8;G3oK+8KSH9Vv0CSbZ zm7gW$y01Yl>Vvg=L53BNfqux%ZSP7si~hNeexf;Vj(KOkcP|`aKY1nlJ8zuIedSi@ zuWnvGV*%O>MOc#ekQ20&V2Qo@M3IzsGTsD>(ZsweY}^Ve78BrY)eO!9y7JwQmA}ny z2<|ObJ1LP*?AFz||HN68r-9#)%$p44`rB1S(>0uns`1=^hT*Q7;Ndn7mpK0i{|4IA#5y z!|Vhq9_EjSJMMS?s066lX-!YY4dfW8;E^1uiEANGD?YNlk%!4T#K?NIt7D<(u~1Fy zxH7q25WuOl1}O^!@9sd(R@_!2K`vo=W4g@u4~o}cKkv@JryPpB4nW3wh%nF5>*a2l zdVs)N)mzf%84*{w`Y^ovp$#f6xhk@FZ=&GU;vFsl8j!^C8+||*)Sz9Bt%F~{Lr*l; z2CjcdSA-X@={fUkxrGZ@Ic}v3GuXZ{G88^nt;GnQdbdQ}%P2F|t{j0XpNe-6TKJ>* z|8vz5F^sEVhPiSLe_Lk7+0?A>v)o^U$uIQ=lu2Vn(W;~w-?dXmQPOqIEK_8r8WQqu43f8> zmU5iuEOjwQGSpqZ;EXQ6uCB<5>6B2zhYEf_bM}MN4@U!36ct_upI6?LU9LTi< zoK_B2S@vqtw%VU_)|4Zx4$G&d4`P;_nX^IVypgjS?7J0k)K~!#5A()BBk`~sc$lI& zn0FocXitJx`7)3K_}tUdvynNpH1a%x;iAnSaDzE_jgk7XwuKL^uok5iCO#Gvz%q!- zGENX(kHQ^{XjDBmsfX>9ctT716j%YM3L!XNu6(0!#~7R+a*j?;EVw?lhRtcj!vjJ% z?A9R4`)Ku>Xx?>*E!j;C;vzZ)Qg}T1vwG>EVUGA}8|u3W*fpO)(Lh1X&1!zp7aN zRU=6#nZ%{>y7W*Wo;BQ-gIyXIJ~p$&hd21I>j!>n*EC zi>l1I*|l;7($Qj`H4Z-LC!gjX;`sMNu@66Sxrv9h!c0v@{c+KXZrQvlfPsUw#tncj zSGYat_JfGTZveIi;haViJOU5Zf7^C`e{AvFoGpFa7B!&&UaJGullo;ZOy39UFyF)9 z>l-?6C4U+ta8H@Swnbulo6TBJTjyx``%2Y z6J+kT0U_B|d15}hqBet=G=G;ZvfkC_1$7*B0DFbK>*Gz`ghFb0ceubqrsx+sD`AdS zKv`6^3-UL6 z`RCUg&#aixM#OSf(*L3Fu+0i#`_jLRxWi|Mb?^f3{rAdp$ZEG*6j9Q1 zzFL=mdu?|E%ld$X6goHgqQ+t(|H_FZ+ePKp-5oxgt~QLa3it+<&QGjp>Ho6Y0N7(A zc=4KMiSxj|S8Q2zwn%nyEfY9tT4C=;ci`3?jipz_i*NI76^3y(vp@U`7jRnrszL^7 zlE9qzUABdocK8460$AuLf1ItsXVr@%EQ_lTUg9ORg%JJkW?B$9fCvtu?8%CpK2*BT z035Q^VZW_;iEF7E-qYrdm2CZrS*a^$18mO@kJt8ryOO#mv! z)y9_Ftf0{u8PL!up2SpuvlG+}J=lP=%3}Pqb2c`UksP9iS@~G>;5fHht}9Z)My2^jRyV8Yjku?fp{vY!LW<726^)>VK0ck7W2R~{ zK34pW%6(HY->)RI>L?3(^y>GUf-oz>G9DH5w*cUm1r3IlJ_t+({(RV^Ndwjda`#<{ zMH^VLNs6Zw@7uN|AWGEkd-p}PzUfH4^v|-QLfvoH$A0nx&DnjMok`VkKO2;o$#37- z(Hov@TTj|uf-=Jti+jr|zi5jd+!%y@nyD2hJzf0$9Tf9@HS)jN0amNU=Ew_ggZiQa zwx=C?e@x{|Xjw#zW%m;XZ~gssaAWM+yErQzZ(qteArO&?MRpTlkO|$wH#X0M0043y zlL;Vx$~|UEmEHfOI00=Iq3=6H@;9x`N|uN*Vd1yfCnt%-g?Nc)y5lNAIWh=Snl_ znKeo4Fp;$VbxY;>7+Kt~W(bSY6QwRI<#v?79_`sK)12}XCVLMhmeq|Zg((TLf!~-lxT^bPcfjF`?*NPwPTo!02QH|BuEJpSxExqQA08 ze7M|y?l06`m!cPe48BJqAmsW`?M)J6^rSPm zN{LFeIWZ+yw=d+Am!xf!EEIE_CMu2zl4yYBnroUq;m*z-k`fC)l#n*fV)6Dd1w|wC z%NPfB^>j%sI5eg?U>1^4#C zgaT>+cak0LXAZ-sJY#s_spM;89fbkJE)n)d;(Vtjl%RcM!Y8b9l3gb z!8Jg1C>^7Xn*R)`GN3O_sy#PK4lXkI2y^DTSyM=t<9O6E~^Txj=#^?Hl zb0-AaXaXux?b=bT-1kF+{)2!->U7pO#;~=F< zvy2B8YTd75KdT$6+e3|LjRPEF4v7G(5S|-lt~M4-lG!VjONT|IY~=tS6k` zn+ntDl47-GweUMmkPM#5aNqQ1^*E+1c!b1rJ==t-k@{iI9>tIGbxDD(%M3MN}2_g;L+AC?wY-KmV8dtuKMqVNh@foSPsdO{CXJdF6r*OQ$p zn8IUxds>4fBMJ8BIc)*2^`r)peG`?niR@;!Kw_#NVU=JDN2OGkoAs3CzvOSF& ztMonNQ@J?1WLo*^$v9&)nsW-<`rF*jcXJ(E9P7oiL`<|i7s{kRw$4(mkt=GKmlcLb z3B50_5I;V>vJ+c}wGCJ3Eo{Hw;t@qE_ak4mY*4ssYAm(!Y4%}a3QrY1fLSW*G(jeF zn(3T!+-J^m!o1Dor^l&>j11%6KQgazFxfcy?fU(?yH8Jq=vBdj1q0d+V7a-LXh4+#QzU;z^HV1P%S#jM$IX#rO&^Aw z7f^RP>vA%#V5)h$qF%CLkqagpqq#*jyiZlfCdgY5Kw}OSn-N0l<#z&}i7|x=EX}+n7`JVYWZQzb&dLS9Z({+#safji|@1{-`{LQd>0VAROv1s&_S=>kL-xl1b|j_Qx*{o)>GDsF-!A zEqhGy~w=D!~ng-+>J973N1@KSO%`$<`(Fw0C?)R&8g%v)|F>x*t;3!xE|m))2uLhO+gQN#258p$E`m^K`j`U<&w)lj;RW4 zx*%9qY{I1SuS4#kP0nfeEzTlDfnc~;i>f2^wK4<#JNpI#-lhFzfk@eN zcmmTF7HM6)!DH1s!S1wLn?EiNu|MgRxp`(^BRJshg1w;K>xM~NaXGo_2F>s2&eFUs zIk~=vO50uwO{;S5D%V_xzC$9WcfS1kuz37ay|r^IR~iV5(%fPxu>!+;^J& ze^TuH4Hm<#o-#pV8EJl9FZdmU%Jq5{uB+&>5JRPi9A>K!(WvZZ zZ}M+Tk(lxwgi99?f*QUzg9aj}jLH~O(OZ{F1!ALp)-y`w&)&l;K%FRItdGJlwam_Swysx6yU zp1+wYgljol{jdm^AZEi4`*i~39ZTiw!aK?Hcts-_#p&kZ_1o<&hj#^?3>v=Ya%IXr zz7y8_B!Fv-)MDCn#`a9VC*vo6Dm>`Lz^Y@kSN$LkjAHY zwQL|trYVN+9uJrrez8eAl$Cl@k_ni{O@6lBDqO=<+F1|ajcR+xPbu05WbSmOl(vnV zNeQjDanpfEE?`~K^Y1$khDpGJrMiOX)EA!>7ER)BrGoW+)$A&gLK!6pxu-?N;Oc6{ zI!>9w(zG||+CKs(75e)Sa{$!bH=!wn!rVtccY#8+P2aA_&+8H0MdYVb&s;Qrw3(~_ zc)UK#tDifzw<{Hp`#ZyGyHp_KaoFDsL@}8cSnY_+!Y07HN|OiQl&Bw4c~KOYZ}pQX zy|H+(J@eJDQ(l0Ju+yA$iH)u$@hE@XJw1Au{<@bm|3vnyEjpkT&%{bxxqPpSsaJ-TEo7*O)W*B^Y$rS?<(qb;h1BGj2rmF!ZDIDEGoIIXLad7_ ze$b3)?w0q}{TQ37)HTsOm5M)(FIodiAQ*sh#T&C~Z)OeK>lN(;A;j#2QxKtB^@OTb zLgFDX#S@skIPw*kxIR|pRUER6rkr^m__$xaN<26DS_Icuxv7Nl`c8l`#w`PZRes8B z;dq((xlREWrtC{<0a~=r^Nq!|HDxm=FcTy-ub3GqKOJ{83NtU1&3FQ&X;P-xwwnl_ zs8)~0C#Sb_jc`f+IQ9@+&5S(U)db|VD-=o5>`i5F_vmWEpW6l&Qz7N@KfVa z8el23o*{WfbIhDf-eCh5+v>#N2ohr-!!-Q^aIl+C&OK#f#Zethl5kIXW(6MjzT$jz zz!t<@o-s!j0D!@k{EGr9A8z@)-lnNh`u4eVFx=+-5Jv5P; zeN3?koU3*PtDwM{vf7As#b1Hu(On>`TQBAJ=WPC?mNGB9t25u2t*CBSY^+FY!tyuE zP(QqRS;kQOU<%SgwxCX9Z{zip_R`t3^;uraJe;|^9eZVDa+)ltx9$_=c*?L>@~ZVG;9UzN=bR$RvJq zaN~$y*UYKimoi_PG{brJ;wGf704`HI`=yJlkMDB)EX4QfiCT@5|C?8zjtpvwSI+ma z!`rikZUO~8+AfC?FMoDZxJi*$GvdTiE!53w?9AAgP?|_JeeGPBM!FheSz?KLk9E1! zCAB~XyG_Dp!O||OP9nXtc*KJ&hQ6#^4dg@@daiws`{R0Yic`3kF4K>VEqvp~l0iQI` z@XV6mH&a()QWZ_!iye2aQ1jL%QV+IPtAt3v@`sT`RtLtlPqt!D7&gZ>wv18o77^A$v>-mAV?9#j%kKS11G> zae_~G;BTftZhOuLeQCvht3hqurLWubc33wGDTeD`yRg0epJ7oix&1y6obH z)S<=WKfPB*NnYt-d^+yYMGHJh$zZTpGhxj3{Jj5VZW;>vSte~7J@GDt$w~}lU%8@` z$@J)pjBIBLnR9987_GO?;5Ms>7s1xIz2yg1PqOViutfK7HJ>Wl@<MnoxXt1cSTik@%7^(Z!HQ!Oq**r!#s%6+ z3BIj6wU&xjc^vsFbbdY6*=jFwiO=HdUeY?%P>znPF8BfNQEUk(kM~bOE&ku2B zVL1RGf5^w5hQovamD)LN)Q3 z$>Vd@hN6G$crb=+nYcI?D~C36Yk$V1(FG9ttk+&IET1s0py8GH)+c@Lt83PHaq}Xp zwzX>ZBcrZ(-FmR<{s}c~#4F57hqVRJ`jAr@+%D41)HtoUXIYuBO1T~;&106zzi8jU zm20oaLulZcu~c=ZcR%cbi)^@#DD~G$g{|AZrb48YJn=p{iYT1+CK{<3YgFE;?gHLCv5!B z{ro^Ca?T|*CVby&!hO9|_jz=1$KrO;`JZ>iXbG+%dfq8sfG(TvYe~N5H=gvOF8GWO$}!@e`I9G043`qbt@1Y72i_6 z;-9Vub6ELb41O}+RX$I<-OcQqb)g2k!Ck1*bA8-VZl}kcRd+eU;acHN2~e^k-T>2oBQo(KD3U zSW{JldwnRm6FZ2k7Y7o}&CBMxgs`~>f?~8yvPt?7vwR8TB$i(`?g=@{qCPmAeuL>e zwHpKpzDnz2!1YUZ;7M- zbq7-2)x%|NV6qeX!CeN>`o)zs{O1c+9F}~E&I34svS7T{2Swi1Jq+NfTJ2H3#t8ks zD>-Py!$eDT!qPXM0Rb5weyPwulmj;SjXaJu0EoJ)FJXJ%YmTke*y}FtOieRMf`#+1u6`h13g_*F%zn&~ z3yV#txoA1DRqPrwoj`WAKZgNab6S?X6YwbdS8b4c>paHU`pNeSJ${M)RQYkc%a%GR z_#>cm(DdVC5BJZt6j(iQ&48bLaHZd>Hu}emhjNb8QVdElO)@w!xZBCNtFo@P!Y)pe z4%3bj9pN{#t1Szge7awTl-RAIJIJlz23g*S0y)s{Zt?E0wj9=gVwD>hAmZ2YllawJ zgA1MD=*@n)Rby?$(G0gTUoMQucJMpbkoU^mg_yTq1-8g%UMMt-GZ$}{j!IptOqODJ zUr5D4zl+(5X9m1YQ4GU1Mua_1@KPZvQ2ZvXVq{U{9syw!hxi zt|Y`gjb+C7VWM9{VZ__VMHMAtsKq+41PaJzo5IAwhI&dXW0q>;nsrhOh2Oie%zg7= zr+ics0ioFO@m|yBOnE@-p`N!hrz55xN~D;mrbr~=?S@u6VEQ|T-7P2kpRczLm<=#V zO?h;06+OaI(xQ=KJB)7k+zUpvUAlLqUwl&T7UiD$4EOM} z_x{RhuJ`w{nohGs)z#rEA4dcOb}tsF0dfCTJNcI!xVPvR7EZhBI!I4MW<~1*w6M98 zs;?5lr+89g^<8ERpKC_Ee85^L{ry+ohw#7JYCY}@Lc8qTuD4oz<7{xng5>bZBY@-J zX^ajw(WkpY2L-}dyC-(-uY9&|iE)kbL3ds@H$|X{?uJb&E?u084*6-CeVj!8e$tH5{1eWlWI-W*;ZitX7P>1 zL+zuEwfV#azN;+N&$pkBsNGeSC^<^0d+qB12$)DLrRTu(S;WX{t*pg*sUkIQ{_5#d z_bYwEo)aIA=4T99ig9;$^fd=cKkgF&c0(}WKsp3v_hNBCGmq)Y72U0v@#dpCAy*a7 zYa)FM#!{eoAv*Tj86Ea!TKM!XmP70+EnZaOfMalm&%$9Ja<4n>KnmVTWC+iqqzNEU5`)#vO)U^xZtn+p-$(IEhU>n1|3aw z~&B|K_wnl@*Xo4h0^gWtvotd{+Kdldf`wuJ`N$ zbK6VqPVB0?y+Azdv06^|yY63@Q#d{?eKJqx(9U5l=JrITIL%3aO`j-Nx6i+{gqO2_ zKjA1Q_xvy_AILp6PYbiZnI$m=if-p4)aIM}NK%;ZU0_sp40)jLO{vN^D~t*?JyN68 z=>Y_mP)q5Ha&-E8-^&OhWJA*Et`%GYr1h{y6y={CFX$ip`mgT=;W9}B+=^#rNYtRf zHh$E2LbP2X+XJ-IhU{A^$Xhr>5D^d4xa$7KBXa*->U{6DGg3Q~r9Gu@ad^X+?*agv z|EunTT+7Jp%1WYgrvLDsU;dQ$)woXR&6~QfZY`~MwZnYjzaT++fc4$qIbtE}rGx)cq+u#4>e>l+g!fDamG-^#^<0?LKJaI~NA{nA z4Dv4=Cut2?E{BoD1wXDO307S0DT-QyYWwl_vfia|F)A`H#PxBFxrrm5j;-J?&W5}q z6lMC}>SphGW$AZO@`J;8bkLI{=|5fstjUi!jn*~}xevN!$NFkF2l$G@Rirw@lk6&fox_LiUPo+o@W7M;I3KlzHmqDF3Y zZ`3L=!*{!P=C+>F58Q?gSSny>b z$`vk1<|n1=^;ti59Yxj@=rQm@wD`B(2A!z_y8CXYfedQoewHZm4n7$}qRM*=2x$X1 z`pq%rbcDKl-}D;038mo5YfuW2_%I!!J!X8?H2jM2C}h?>dv)OP97h;S%_d*%+^WRm z#E?i{?CaTG%d$|vd(aO2q=bQT2VQ(^e0+OkN)buK03lu@##n+lVu06!V?GfNvb$7e zUvMirS0>Z*2N3qM68(S`rnF@`r(iUbLyTw^F+XVboZ^vTk|nXM9So&|CSxP zmdyk4%qEb<%nM#8l>_En6(Q02KtVD{=^bxuKV;lsvmB76I2l$(W=$AS=|gsn53W)S zwEn*3l~_Xd;guJFxTtu)#CRncifJ($CK5roGMzvCCja8=B@E|Nk_l+cuvD^goHUgy zQ&y^B9sb&`T1NDmui%JxHI`fO*p;O`$Xdi+)H>4fAjF8H%v#lsC?AWj-1YqDMAjIO z=kFte2QV1GCa)`$);(>noibi2EF0?lvph){egAd|tR4#Umlz3uJVN&yZj=-=38cfL zYS5=#>`+0AYn4MRzMp95$TBViOLgFSWwC-HN)&2u@yo^y0jr>c7%~Tjl8Gduy^TN6 zy!1|L>0A&nano(JU_mDqtAwF2ODr+>0k~yq_3(qZ&jajw_}_>c6fyWHf&c*GD?E??s1+VPs@U0rS)V~*w5s4>;5Lqcee{=$(0k9bD<|Rs% zmMG+x0J3XXye3&#qg~T2nvlo;G1&q@4(s&QjK88@x_bNv983iwD=Nh>)&K zqVsY}oJb&1Vyq0E`cL#h>LuB?cLrI@fO8+ZxH5w4jP+KQ;VEn5G+Q~z0-0dDTC z8W!}aIO}w(DuBT1PVo-GF4|oK%o#ZWZ?8Jd;sflJ+Gt9Z@XpFY&Vs z7^@S+=`tC0G8tl2{xUJrEJd~tB4i=mUQfR^!fPPM{gT!1WrnEX;iv34+FWLSr`QhWNgVE5h#6bJ0PESe|K?dvNwPufq)Yntn@GS+XAsgrS$YUz!GXFa@p9H z$E;-l4_?%Il_iZ}eD5MxoFlH0}=P3QG9ZH7NjDiU3Yxx$h!N9=&K_tH<03>h$%k;f2*tV;%X#RwUV`aV9K?&FoyK>=NduBUOPc8N_d z677pHsKN}dL=?G52+-}6l8r)Iys&xpLhhn>Ly>Tx%kQz%QMcl%Q`%pKK0bTR(fCmCToF3PsMx|x^UKzVsc+t9BYmdv;i^9)*n*i1l*YV<(KG$H zfDkc|5SCi0F<@0ABONlpuUWw#LXcP3X>IY`Jh5-OpPJ#{xc7rH^<&Rhcp^xIXQV!H z9f-+)#`mW6mQt9Q^(I>j@EWmb1KNKO;Nao5%4JpZ1p-r819A#3I(>;-gMZN6-SRek z##RPU4>8{?gj)d5U>aj549=AhqMm)J*5tF8V0mMf;nDzeYEr zW#-i_8}Aw=I4mAl$Q?bY=GOh{8X+UiGQjHX)j5Udz(X*xK%rg8Yq6%Z7esMXlU~YK zD|L_%@eQ{}PBre+8_fyfT&Y=FP$049-^gB3pN}jzne9Wxm%mCNco;UXYG7?=T^K8- zRq$pvK{T5n#)2hcsPv65Zdlb}b&KmK>gIa4q(3N)61O(PYWYmR2ieZixBVrFn^bs(5zzIU|d-!qX&C z#qp=vmkXx%@uK=wwdvK)Cf%)Ceve=KeY7c&X%&e=$!+xoiez1vEm}0Nb!L z+&B>;3rMIqR6P6ZLQ<<<$ez_EL3xdOv6scVSVO3+QsAY^nMF0f*+*{*ef}+nJFVyb zU3>UdOj=gz0oH}ZXeazUyP((C2@5<(76X!zpk9u@#%3e!bo33XfQ7q!F$zDF*UU%A z;QQ?l0pEfmarkWqeW4Y7p}*C7GH@h+qD3`=_;xY_pivja@AlQGj(ZlR#rofD;KhRw z8|&|lFg&*~ueHXvo$q`z!K)9Il#NT~cx!Q(|vgsWhuB5DGm+KP4fnQYsYGZ07ay)+h)l8 zbg?ia(#GS3YCI#ZYrIaS!xB0^MnVnx%Li;L^eQ+sY`a3HeH=FzHWc9n_9e>8S5;eH zq_GU|QCmm?%7IpUXE<}eOw@8{WdZiw0SKqLq%EdH5W}06@ItYbm;bIC{Dz`Nzp`KOR{U;c z`{&88z2NET zVwjitiT#zo9BNuR@jss4IqrFqr0U<*ywh2iUSdmE)fuMqe~d0L1Z8) zAtj2K z#m6dMrF+N2jn3GTm6uq#ao)M~JF0WBZmLBFsdrB?l=WWqmv>M4McU51PmIo&x!nLW z2=pHx5;$KrLpCL7hrRHpXW=vSeO_}2upl4(-#Uk~=Gv4C<>nb$s_9xp$kOo(eF|gR z2WbZICl0bS$*H2MFqQU8?K5jum)-=3%ZP4#Jl}Bhm3pUCyLb)g+0WW{VYP=JW8ZAw zubGUy?(TZ?`jzJO^TPlittqZn(frkRyUt}tZcW$-1X)S+^62BBY2Gss6+H`f{g0Y@ z&$e9^2^*d~Dcr`sgo~c-VJP83H03gg& z5nK<)m8d3b#t*X1qpg*{r1^!!61^~$=+k&TR;G&s)?WcIW9<8fi$EhfP-cT`H( z*iG~JX37MD$Lf?H)tT~jx%1k-TUBpN;0?{(t%J2gg{uHvWIG_jj6$t(V5n*}G8)ca zZ)x2RHS6lX)7@4CQkfP$VO(He9~RP^-#oCVJ=r0!!mz&K@sBaZAbAY($^oSNw3Hv3 z#1&{iME&lO7r*wac)B#jn9(Dt(XJ&AwW*0rf9wAx=SXJomzkS|snroONs)*KrtbUh zF*?cMS3@qYp+oKF8s94Q_O`L+2$bI;WLo!~F3}Dw*c-N)_MVTdMr(!fjbsR=Qd;qH zjm*tVu7!4HMxITdP1<+e>veWUN~YBby=`Xo;S2`_NcgWe-5w%;qKM#A zu?0$v&FeQ+{IPQ=Gp<`(2<7T{rI4zirR!POa1!Q^I&PKLT6LxQoV79NNYyRS8PC}M ztc6edBj{HM`SNHZlJG94AKGlsTs-V8jWBr`GBG3b#Awj*R@&f?(L&v=J+;CtzNMuX zS;q7}r=!flsc)>h3kE-{pGk-w#Z%-}Kt9;2O9p4=m?W!iWpaIlG} zcdzK%$?Dbx2K;^Ka`hp{4r}9}LTqy@#3wpDkDVxkPo0~K2Q9->W!(nlz${Gnwv7|N)3B@L<<`DJc@duw66|)^ z(b_w!(1vNqC#!_`AR8S_ZG4jI-@oViDOW!|CPWOcDVE3U(TQ=^d_F%Lh2n4id{_bV z8Sy-CBr4b0y+Cejv0T>(Zg23g^W>7*z_m7@bhfHaUF)3;?`u0ZfDhiODnAS<&b*5~ zIY_mO?CmN^4AZG0F(_`mtOxPIQO4`#Z9KQs(8X!&_80Bd1Fj6h#uD_!_U$wX z0ePrwBLsSysdE^=iMCaohV|>#pvg>Q0k(t%vy@7IZ)>JXp>er+jtg3xC3n|szE_M* z`@~*wHf4=mnU%S7u($wG2&t@%)=VdFW+W3uSP$IHs>(CQWxk>6zXnZ+RxvY@dwZYQ z@X1bj$2ckr`JDVgbgv8a-c9kT@_r7Y<^&}=N(T2?=?{}kZH=OkBVuPX(CmAyu|>GaV{7l9RL4a`ZyWW25@ zB|awS9zpt3EOYUp=cUGgJdFkm zQuFvjVppSWs()E^=S_`dWB!0e2g`fRal5NO|JcPWR|uG7Mg{f*eQYaT$Sv>f!lDFf zdapm?w$igFJPiq2o1eVqUpdO3gP>f*D+*7gJ^@$z0XzBNQe68sLgiP#d&YXZsOwd$ zBWb~w$F;^@{G{d(>Oz=`+(}k$cj_*xLV2X8vm_o$FJopLuX-YN6OfW8i_!-DM7YvH=pqn_NoB*EBttxAlv=3?1jHGypkVk zJaxX^RQY#shQa@Kg+bvBJ6yIqX}MH4*3HD7eVHTk)e{p<{UC;0IO(&PFx^863*X0d z1@b7CNjW*gLe--; zxdz8i^XHL4`dhg(gd7+1Jh`H$xFGmZirL`U-w!e`ny-&LBP^Bi9=-k?h>K>L;k}m< zy#qfVM0tRb>(!M%zf~0I^?6HtF=kvCjZye&$Tf1##q$mB#wuoA0srVQTQt4p(eU$+ z2@xcy$=v~;h&CQyX_f1k?%IuFal;_*5IzXtz2W#&JJ#CCA&y+VnwIviH9t2)y*dT9 zOX6kNHSO0O&sH( zQMX~es?(@oX4+Y&>}tO0t*Mac2cP~BjSo@-FMM@`X>jq%A9j6VKWvrzCwh8#K3^qF z^xw(B7p_w)U)I`rW{D?eNy)aX3|m65dGZ?OP#l1JDO1lAiAn>; z_aT)8#4ZdLFa8zN+=Lw+9QkpEoH{r2@?Fbk36FOYQ8KD__s*m)H|+flzTXangL3?q zD)bV4=42Fgx8?RH6h2-%6WZ{fq}paefgGcycHK4!zbOCqlox;;mgN{5GDc#k(s|x0 zb!}_@C`x5bj*6qit(PXftthH1jou{z};5Y2~&FQF$`42!4M2DLqJ! z`Nr%wL|BUW~NSe3xm$vdpKfrwv`((i2$`dxePeuQKN;Wrk#2qAA^!AwHs z7~E*;1S;?tN;)5v28(9@Ww7CF4A0A=d!?*wAy(j`O%*TqxJ9XOM0_1HPBQsV}#YB^rG#J+XFS}Jjk`J$AUY4EG;EBDx6M5hoqtN zSkR0Q^1;m+kz>CWBf$NE=LT>5zH9bTj=#AWL&^xL$pnP@wdZ3DFOFqxk5u zkzFfvk{8MBMKG9%Xtu#c=FpIfWH8G~I_(gmoC#@o42>pUS*ODaC_&>(_pE}iI01%x zw-_&WW&hEwV65OR(#EQ-q36(B&vR=Ii+kNO^3Tvrz&E2~lpQsl3e z%HQxBjmf*Vw=sP~aA^dh;pO#@XIo@{?*|8KJhjM! znfLi>?pm$xPxxumYzlM<+q*_vC-ky1$kxZ(Et+>rp-epb>W8%#fGo-`IvTGWZ(kkT z4;6lWx-s`w;{u!-W^>-%20dzfoE5OFX%sRFUCjU3ZHr`4?e0A`)CAo4f%-C>V~U7T zdue-yp}KEzj{if)<|`fN-w%@o#_wmz*6u4lVl2qvV+pq>zZmazZz#LHhWlB?_}Fl( zi4tN^bl9eQv`f!Pxw0vF+-svZ+Fan3;19AuL02865Llj(=%_sM^TV76or4WfCZHwp ztowOe$<*1H_fW72u{_cBaIL|aV@o!S!6P@i@r`VhpNGv{yVvbE?ag0q7bqKzDCheF zUNlm?r`rBR>pV=(B>YUb|E_u!6FU%M;kHBg><~s0-ewfsa3`Bv{AN6}(r!+OIjSf$iwHbE<-!;)*InCVD#~tM+$oV?^IG2+JQC_NWTjXm2k7(*bWCd(D zr@4}XJT5!%`A^Y)uQbqzqEt_n`M1L@5cnjdAtTl;$UH$b!kw_nGw9}Vx`c)3!pGlW zpFZV52pI^V+d(`466Xej1SgOz7IN!>p$(-Zhj&C7tFZpoP5!k^hDY~{IJtpyomtK2 z^H(k-oD}~}O3Jw%j%?(FRVcVCjz6k?3KF@IjAvpcm9(6q8|It83Y1*fA!Ys2<|}TN z*ZYE#dOglH5dFg=P1Yvh-azH@2fd2p7o|SPm!`#_)8J_obTw7)F1vh?HNDg&TDIk= zSrJt1vewuo<~b1e;OXgy#CXrAKL=(4W{YKHC-ScBRxivO+RKDG#_`7KD`dU$@2HRl zW<-ic?_%zxR`bRp|CPJDRtu}P1%;ntYs16jG3 z(ob@IZQkQ9euQ6&Ji)Hm4R&^GPoH#X(Jj{qeDX%5ZZbQ$p8%=Ub8p2jbrI}rtOL$E z4i}z`#Cv8Q92#73CoHhi>{pDAuRx6x&qb`@v(7!=UTBYIIvD`Y&$*I@v(2((v%%w) z@u%%`N1esGcpnO|HoioUHBk?gOkE9%5+|?`_R_q{zDXT9m+QAfMlZNVK1Kyv`UHSo zKwl8MO7Wfd0SXG{=qQnIC#{iwvFhpZ+j5rgN-`j_Sy+8Ynk&m;;FSx3#YD3xS*17o z#IIf23Bc&h31EO(kinm6Y*?1|np@k+yf$!FTQk*-FzZR!U=lW1r{~&(URlH!D1&^2 zPDeg<`DR$=2m8UcNq#;PazS`xugO2n^T0*=^VRY!XI+X~B){0V()%8oN1T1o5v<+s z3=aR*Bp?E#-AfRB^H`T*Sw4v0!>K%-VW7T6h4KgiR~r3db`!a)F7odF`??~1# zlbs{8ZB1~g$1gL5+(yg`s^u9IY8zXY+rYu4LZ!!s<(lUm)u}N@*`jFaK?WO@R}%l6 z$g>T=EdJ`)!PiW-1tn(J#eAz%0m-OJSBt!c8~%^kLrjBGf`uJH>SLk& z6S1~7JFwa{M=!C zPY>d1FJb8pUVT#lvdOPb!aztot?@7B+nu(2J_4$BjTB9mk53S*g1f9QK*A5z4Hb5S z0n=qvz1zM@f-KDT5#PX4TCvsIg>0oo(r`Qo`&nn0E$WbLsa`;mxt>~1K&D>S3y~&a z+7qjumIOY?i)xI#BoY}${}%i}P7hWs;w`y=$rT4!S%LrNAxTOJ-}RR_QjyK`0eTiOn@_ezTD+E+a;UpCN41D+kOqB!Oe!cU$F9+ z$WnAf*nsZw;#a{A0w%U{!|!t4UoaH5-z9Mcm9%yj{5|@xP^}y2>Xs#cm{&2$*Fhsc z84VvMEKBDfhz5Gclc4?!%yyykPwr}h%)gtVb;1|yoeN%tf40)>{~liK=O25>ZaQt3 zKJJNhl%QOQ8~*9(T79vtXO&bWojEnfUAa{k#?*q;~F*5K+Lpw6LD18Z}F*r)JoRB zA+@g;UBh$(_^O^%JW{m2U97mAU)@&aBjgwG(*9msP4&d@6W1@YuD5HMjX#2?Tt~Dr zlpXyE4Q~-{lITU&{v4IJ^|wIb3DL%SLNG}*7`XO^x;8>YHtq&owO`kX1b&nh z^UWAmbQ-yc`+!iGE1{Yqy%^Voqg&=jk>-(9$@N)V8U~UPK>5U{v@H zUL=$tVnAD4yb+^L?6^$z#0A0}QqOgTBfFV+WhtINM1FyWFJ(Y2)lL5BVFDF5H0A5c z@~S@8XBA98LJDbJzi^dnWnpV~_d~&tQ-O}WcLOd@N%`9;zYZUjtNPROBi9!>aQJlW=$K#?EMz#mI<1;5Hu~xB z)i&&@JzU`4PQ9Q_t;M%PhhZYB`V&gk%VtjVLjrNXf^vwQq;M@V@!wcj^?=nXntUnY zp!hl8E`@uD_*!O%E@XXr*#0?Jxp53#i>tc#NvoOa=X@@>X&`j7LGQV*PH5P~k8M9b z-v<1%v%NSm75PRz`DdB7E{&rZO|Op#xiNDpUd_$@`C8b5hrL`nt(w|XnSb#Err5C5 zEtD1Y_^#8HOk7$Ut^x7lzrY_Rdrye{JN4MB^@0K*Schx?i_&@PcZcnY!PLXSA_{Vn zNcbPM|07i>l_t_i66xj)pjbEQpjZM6q4DhVtZVJOK6*mtmq_cMSJ7v*=D|U&Zv9Ie zHTV4=lyE;=FbQjIe?8o;M_D`fWXJ73RQ1qJImpz%M9RI%_hi@4GPx&L@2HE8@);F9 z9sZN@5;t~=F@X^jn%H^d82gcsvvk;8+kY^}hMHop3B?EO!S53&c-$MJVLo2@+kFt) zjK{*4dz-m-y}G=c$H-B*Hiatdzx0qqOG%=YG?CDMuPnvBz7};|2k$yR zg~LKFaEX~llfSLgg{;W&GXjp+kH_M8_>Ga+Zj8OXVtONtScM4B!>4=l7=xg`|lD z192uKzUZqmld4~*?rt4PgJdit82Btbs^3zr+*;}dvk(CEUG{IVrf|_l-2Kh+a=F9` zzjLce2RM*xzuZ!GqWrTZx2DeypTeY-pBRP5Dv3L;oMj?TX`vL;j7lb=*DJkMZ^l)( zlvHW*DSR|d523y~;uQA;Yc2$isT`wi9+Tl z)Z<#zaATK$&T8~WO`OCXi5EOCx)^U&%TZ|OHZ-;q{0)Ra=)G9xL0TDQMjI>OF zX>8j0mO>L>maAiJL-pB*JR-y$~Ua0d>Cl(iP|G9K)b&;or}F)6Sp7y^Bdpd2zNY`iJ)X zMdp>v#|?5m%|L#Toip&1Tv}tX#J`))_EFwqY1=~PNk&z!Dy~||CX|r`^iz=Ku9>3RgKN+yPu1dbl197Zf0rH6j#Lk6-wOZe2!~-?Z!O`@no0e76S=AszC8NPM7x zTDeCa(TjlJI*Iiars7p{XI8tR=HPhzN|FRJfeBqOVP!O!#=du)iMs%K|KO`w#-9Sm z@BPO}r!I&cp#2x>WPkPcYzU3~_u=_1oqUcT3RWc{`4}Cj1$Y`&rk85{)n4wXk`Dlu zi2slPfNk*12$=Cq4xi&r>;yn6L9w zy7_lf4tYu|F(OL%NeSKiM5wR)t*QIiTcay~G>$OA@yuJCtf3G;yczn1%<4a97FlCy121ZCgB7?PJ3^ z4deomFHaoDnMphg_Iur3QlS?*e=HaD6k$EbeH0KxL~9@Nsnc-kBiIc9GKfi)U+Yp_ zzJEdJ$A2e!XfceJyH^d&c)Zqo8}8tI@Mk-lT_z>aV48yhVWq9)oPX(^1s_ze-nPAJlC4WnR z48*;s9zsEC_uSENp!1749N>%KCf8Ab7n4hUL?{&~a%EE}XH$SOf?cP;%>pmvDX`3L zhu)9Byt|YX`{TLHr-vqYp8A~?8Aw|AF7U1Ic;1;B=aI}03ikw)G$L{3E#Qg`g{pg} zClGP(Cx_NKy32>m4#Fg7juSAPXJi`d4}*w`p5dIl;?%}rRBBEGYNeitW>Vn^RCv(Y zD^^){Z3n1=5(C5R?UpZ)JT@0-lb<7+93Tj&_xe|0iut~{b8(+yTEgX#WD*7lVscS7 zg&JuhS4Ko~Xu_PJi`R1{;GGn_ljXhdo9`YHLl}Q+9x9f08=Cd=zo83A3rUI}KKv#- zo|kq!t=QSJ?PRv$P3&;#zgL?VKACO)>pneuV>svG6@_cKK={A!_LEVyJ3xWp`d4T( z&JEf5kRmb`{n_>wp}`K8k(1LkH>iIewn4ww2q>bdct)`ykpQojFR(5aH>6$wWp?l% zJEgceX~v5cqV_xEjfgak{Ey<)5g`gEO=!HcOsIv?gD9^T6++l-p}yjO zn&zz>i>5o8$Leyx+kjhEIC#Uz|D2y%hcXcTsYr@Ja2@ zKP2ux_Xcy$fKHRvz|M8Yb^A3wIT>@fdm{z^ z-3=yA6Tb4lziLux9J7|7I*A|8$#!=BpL0Duk|o!^El84IH2r)2-`&mSRBr|}QXPL1 z47eZrN^>}cb?OFg;{GE;em}4GADUKA5?WW}k34UCZC_l3^rXOphF)+p-tM@Cz0ZVy zGeyu@djXV0@}^*9fM5enfU_@hCIi^y8eo3DaQ*UmCQ?L5$)lzAVu8G@foCxrGE{7M zG21qu$Rk^iZzR1c27tT*Z}5JXJRjK0tu;4eWAmdUhET}Dru_elu!*Ap1&v7joDDMp z&;xltzf*hO@xXrKM6-NSsA&mJ70?0=*ut-HT)Op(i6G-N~Y0+mCk_^dE6>H zw$~vuyjRkKuNnuuY~@o9zMts6et>Y1bBQVo7;6^t)w{o1{n@?QVZ9@-55XV#)FCFo ztx4Hd{_+|Mc7X!vnD0$}fGRCAP9+M<%Y6_qU)HoK7s4BpGQ1KeG*Ko$q#VbaUy50|ptswBgVCBZ0C8(dI&Stf`bKdDEc(IZ@jfKT7*?MRrGGn5yab5U zZ37D7DFCm9bF(8Ll-ekc;oQkbqwuo{HA?X9s*!*7m(Oa zg5z|HLBob_7+~kU#`pGM!Jtj1H0gJ-1;4XcxrM6pZ+3bT>Ngt(ypupUj-bzOcI-Ci zmpGwv*(48B2RW#)x?O!4(!VV_OSZyo-$syQZJyxw_(QS_oG(?%SM}hzy`p!)QG{D( zNt6GwANt|fX_=aMGgKL(B2B0wx9rMJz&;&{#D|yDAiPGJF=HWOw8=CswQvgX>L}lK zacd8VT4OAmcV58yj;%#2L~@aA&aKDP1R+rfQNK&aOrM=>L^f^H5tQ?G*b9wLx;B9B``k9^1Q(dpX0zA!5ec zWkaPi`D3&IS1pZk*IYZ@R(kJ@a*f5-AMrc^f!rxKWgYv`#?myD@>2Nm{jx^lK3s~r zR}U5Nd5<6C(Pyi!ho}*K)@y<9<@t~rjeDa=)M|Xcai5k`k`W(aQ+O7vHx0yHCufQi z)xccHC$|JZZS%NkZ(kiET#qe|jlVA6xGuJCuvhAFyAyOn`h>MjY3W_(x6vZN=P!&E z)az!<{q7RV>+{MONLrAo&D_I`!>qwhZ(37q#u#A0i?hmFh;-4-oMbDD31uHGMeCVd z;FT?qD4Pv;p;zRmvcdeTHat*TI*v)ksIcn!=GiVm%Fd{5ty3DKcfCHpU%h*K(el)# zM1NTUt!x|PE%ipqlBx|sWJvagL$OlkG~OAe)=%S&pnwGE-NO|h*d<37M?$=qG?(T{ zP)Ba|<4`&nzRrTAR?h%tg1ahhS_$&qBcK^FRC}35Q=Fz=9kk>F9zzhNs%G99uZqhp zIp!HYBEoIFK>RL5h$5s21)Ls@U5oIZo!#QPDA&~#pCM}`;Mb!`#M>)P*WURosIBu| z?J2p?^?0c@BH7@uV+uNzib&3VZ5%(5=Hu+y|I;=*mI2@@C0ZJgCEQDixK0Z;EY@H` zZXE!T4;eun*If0r`qn$&AvKDyN!Luz}R{L06r87|6XNqM)Z!ty^3M54HK!?64 z_X^69Rk6+iFVhDnb3?C`T0VU459-JeaFR@mQ^5W=^Dx4hezmHPcT?RH6WpK}@#Cz( z(PBAq`$ME#-n046Z~>pIF9xjhQJf;Fo4}34fE~CxhQ@eqY$OqJjluO#M8=@j;j&OT^S$2koQq zgU(G|?9KFsmTf+)kn>+JJ>fj?1@}c01B19u;;$#%!E1TexkZ zK72_K9++#bX{KFku$?TDwETM^fTvcZiTK02oM~wbjBN;OBS9xpsbAl!&1& z5OoI-AddkJtX(~~!g=-AODDl7P9(XYzBB*UZhhjf(R$bC+-ljm#H#he35-K#;XBW6pfjv#k})upb=X%Ki*+pQc#v5Hdtd^X^=C zd^ICKm%tlDP+b3u^rNJS_yI5P+x+CIWPubHiyJ+r(+}y5j|$3W-30GF8<#R@?yixv zU6T5e$b5Vu6GV0Rlwot4FX26B5`Bqj|!I;v*y>%0I^~ zHna)iBwzliq`E$xcUzLmHtL0^Q|7Gsb^G~e1A~8SW&Fr;05HS{8CVGnA#*F4IpOq4 zmX~`|Y`j;@?pk02P8`z$Qgi_-yWrf4FIbT;@SM-Y9t2&H6MO57L7qz~+VM^H(oGO1 zijSJ@l#7o`11ag!24sx-7)bfn86S46=HYip97XOCIdv#H4&A3^c+NFfFf@JyarCv8 z$#*SijL=t4WJiL@Pv{A9_nBRO%}Xr#n*Ka%CbZus{|bkF>k)SAo2?NZtknmmoN+hP z0r1knq55g=n$To20@_m$dIpRpMu`S`8PRl+Js>Aemj)s%9+T)s2aS#=Z(&b63t}Po z?9Y#|Vig(2&K{du_M)#dbhne@LN3qu1`-dyn;GtG*(CO`H$XW51E*?vt`Gpk3Fq#6HnMt$R9@_~RX>5#1G|Y1` zUzG*AC+yOK5%KPZ#Iex)hhxIIS*Z`wQ-}6YMQph75qK&FnaT{Q)fCEsxRrWf7(s3k zY*-2lVhx~Ztbw!vCC0HLh}L{9{(L~QiNG|3bLP}7Q^$y9(h#8B_nAU4fS$*MpJ&47 zY>=76ieycwA`@_?oWCYpT&oxlr-B3b(louWL3pSP9T*`4JT{oA_A2m`0O*aCTHg1_ zFO?Y|e`FIkvt7mu->e#r1d11eGBpL%$M}Lz7|@RnBw}tQe}h~Y!v>21_2elRI0X7I z0}Tx`oZnNd&nmW|H|gMibqG*aduWI*2$q9LD zCfJyac_viuR#py41`h;>8SgRluayhorNMikP@#%AZ%jRq(pep`4uy!NVQ&2)J%}CX(NX@?lgxL z|0hp>U_l=XP&4d5K75O=7zkSa4uS%$Jhh7X*PxWetbMA++tT9GPcuFsjI6K{R*6?6 ze`e23URg+DB=iCGnI`)9Fiz!m`z73-0xcpMw=Qxmb!%IW)q2>7mAJ)YODhjU zT5IJ^idZ%^6d`F>ByAA}oV7ihSLTC_vJ#HmsKAQPok5Er* zLc9S;{R#A{COU2XsOy$SiYEM~P5v);WD5~h!Hl=PdGZqLYV9OE@-XJa!dC`4)4i_8 zU4or|^7fg%k}|BYsF5Z=V89mk?YbZUc%9I05&$?tgj!JB?}S#|wL^ZzIAEC;>du`G z&Qd%$XD13c*d8qYS?{xGm6j2KAro9=Slv)nbx+!oI2gV}Qx~FT3~K9by~WnORtvVW z=$H{d@h&rS6q~Kmd}BrI*lK3xs)Qu-hWKYox6d~KM~iW`GKWD}LFdblVv>f+f<^TB zqkeVk395W@#^{qVy;&`%_wrQfP=hnF&&`D<#%xkp^29wxOT7S|o$nis{NOHl#Jx|U z2AV<+O(i4mlTitpWy<=s8n@k_c-Io2$$P$Gszo!;BJJW1QFcsS+CE$RXtbyx#+2ZV zQKEony)Z+l`w2<#BXp3=lwwbDk%(5bJP~}10=8p9$mt*@O^}BueJF+wTFE@Qt61$4 z^;1!bStX#4Rr&W=60>KR&{DkhNL3#~aI@)3cOh208k{^e$dxjB;+goT*+xgZ8v{QD zO3*kBD)`8i=(|eAR+=)QFELAYcwhc%-I!)6!*O|J525i6kU1_WPTQwYBllp{2YKcI zxa3ixl|C&KWa*%}9fm$~$~plx3G$@~nJH1t-oUHkA(3pjf-kHw8m;;grZfdMrk3Fs zf#RPT*1lLZ>b>VRJfCM+oY4qW*se6L;R-C4)M3{#dYUob;K^RK}?^PFe zC{mk0)kbB=``ff|D{zGU_yt8A(xnP$YH2JiO_X-Nv`?@QA?tkIB5XY~>FfhE4_ z(jzCz9~~d9?X8xZ9(~Z`b6DCq?|cD=#VJMSAhW?%(GLV>ZfK3-qNc@`UGN!A z0WC)vgnfeaR@D^kjzRsM%!zS>7@*DKxgHPL;uF{rk-LUF2s3RVsWEiz9^8W-d+LlG zOhWGjLto zM`2!kC4T;U{k+Pb3-^kXPgE-6NMl->4@~#ygbLir_y;Sh5FagY_vw|Us;F_K6l{dg zvp;xvB6y+gj-B5~W9*upAHb3f0R&SKAtFQoqy>g-VRI~uD8`7UDH2X*=4c=xFMKiH zNkC9C1rrS+y;-+jgr$->uQMS*S5C$Opc&=18Zuzf#d`^6i)|xQY5UIdDG!GKMx(`77afV@mRkTex3-`TU_o6EDDwwKz|lcB;SnAO>p1Sg>V&m zmPg!Jd3q2u%I!yB2UQ!z08QwyoJB;=BK%x5+=31)Ex~_(d2 zR=xa70Jwtwx{J51Hw9k09U8WF586}L)bGwLF5|!iot*NYwJ?LcDP%c2FK>*HBKX`= zzvv+VfTRPrF2V~7Ulck)>x@AWo|uj$hx%UC^Dot$ia{2OJc(`X=MACXC635dZaLaL z8Q-WDq$%lYVc|e9LLHf-iO3ag_h_^9z_4SXkNOc|0Ma=oUJ8K&H1gN z1w05@hp<5*`C>bdTd_cYgFMbWR;eecCB zfStNTd>1b^Eh6LgVBUC2nKMT9i_F|R*lD7>W}MEm=WS>!J06s1{b5G_z>oY(!^{`I z@99&+YO5*Dfr`9j;MG3~R@?`UCot>vD8x~KEiG_aVaUcnEHj1`!`>m^&oCQkE2afvV>*H?Ojw9KF6tdK{tATX4d zE~VJKKtL~JNtggSl~yaOB5JVa*0|IJZFIUhXmy$QvNbPJ_H3FNlovN_$HtQ~9`**y zDC3-IL3vW9A>(EC`s!}{I(DUA1T)A~7G&UsF{L;9F`9t;o)N00Gy?zv9IkR5p<2!` z>Onahx4!@$0*RLjjg4Y~k7UnJW8HcjE!D_DIsu?@)M2T1%D+9DY=lRRf+}-9N%u7Z zBciJ72B`-^a`MRi<0hkN&^Avx;A|E6Y+P&c*j=EByx6++G`F+NT|ij-g-eY zN54}InqGW#70Jk>GaXqHA*TZ2P4TUY!xE9J0oiEPb$l9BwtE`PYabk#4ZG7bSxtE>5}=w*U$X7NB)4wy92@PpmM0#fNuZ6R$nymE-)SK>*BLfZnHq^D{o$7=u?T(7!x|6fs5GNdXp$y7*Y?# z$FpgfJf)9$O$B|rbMz!j`84%p6Ikx>jB~32{vxm3e`KZkYJMi8ZH<6q{CWrM3@%k^ z;B|qQA}RN@OEfa2{6v!QpMk(%`)YUI&*LOPo7`kj|xSl`|DmT)Fi|_PFg*uJTl) zQDXzCz#v|xZ^%ct!&D{oT@(t%T?!W0qEjB`xv+rOZ@m;WOGU&UVs#kFwjvX9;|Z z&+2~3^9pe(M~CSOc=LFbA4>u#7XBjf7GNqQ{}2&cELx*{laSTVh|H{KBG#(=#aQQ_ zyelrKrzqx~ypBBWD+FAy%Z`Za373*a;DZpdxlxh;f%}Zt;%~1#aX~kW^MY08ayG@8 z3SL0(?Jyn?2Cw!?Wd4{jaa3@foTU?9Z|FOHS)v(?AgkxjlhG ziTE~Q5ZZO^$8tZV@c4e>2rt{ELdt-k?sL)YH6Hb--{GT%+;Ww4{^WGiwuL>IJ}al> zUA#c%E2(L0m#^2Z2Fi{|>$7;(e}0itoQLas@1+k$KAsJd(D0de6+VC*ca4^J+tEmq((JTJqU&#kuHl_JgtqY=d%ek;5u+fA_ag zT~L$e%JXGg<^2pBcDktK#3pw{Wx>%!0Nga1hC!#(G!B4RX7n4rdsYa=bv)S8ye2UD zddZX8SFWKpAUKx|(DWV)ti&d}fZ?rJ#>C|;SAi`5X!kodgd!JaKIWH!68|86LY~so z^atcz^i%F`ko$JM=o=-zP9;WNN7!q8=E|L6lv}ZFy4-d&bV^!>=~Nb*H^Tgd7^n{YE^1=u$Zjph^AGgdMpmxO6rLJiLE# z1TDK)jB6y_XYN(=RaK%KmPuSkgf(BMysr%Nl*L{qT8O^22l7l%%(d8b*QwaE+^(Xk zk`19RQ}LOT;}jP~bz0tc7bPLz(AbMfF=F+6WBY}kO2EYJ!#1wr83));ow`u>*6o6|jo97%8ge7+>3=H~wG>Ha2zaLhdi?LD~y{wyS1SkrK zU%s}C_@>*e#c7Cferd*k!2U!r>O>=m6@=Ntm~RcV^*?E;t+9|ca4xpuGDGo6l29() z^^ZLb%#%TWmeTBBc^$*f@v5JU zJja|HA%rA}j@xX^u{owvjhrcmD3!W4=W~=wQXxvEE=i>>pM3ZI@%;z9U$@um`FuR? z_Z!fCr4gh2;qtQUmN(U6f%Z(v^N)9Yi&WNz?4P66rV{HC(1Cxc-rpx&IY-KQq&we*Xnu;y+(h2HoPnit^WUHyiqFy3C6C_as|Y$nar{ zr46Q>0H}dyzc=W*I3lp&iA<|N1`VJ)ZM=Yz2lu}NckxRf4l5N3>v^$+MKgf>J*IAY zcHyUnXhD`vP1fNCu(F<&Z1N3QAZs@f;y{DM^g*>ZF6&l$cVJR7L@bf++x1}KXdDb zL3^I?NCH?Q^`9+k-Osbam7?;HCWkw$l1@CiHSY$dMeJT-8KZ zU>nf7dPc~uFUg90%>Dn!_^1+Wv1E?;>>j>p$IA+d<;KMJ>R7-I2-srh*G{jfNP`Zh z#zOv{Y8*PwbqM@_vVF;D^~9JJEw0ZB0(DpgDbs)$8cV%mM2-i9-(bq>15u(P_s>Kr zQ~L+>-2U5p%zMeNn@e-2ki~Q{t_m+~Z_nmcJ)$-@G9Gn5ad`gHbw=cRAYz{aA8aWo zd->7q7lRdHQEO(tOJ^7~VY4f!vK+f!mUIvDpoilux&MEwVn}%^Wy?_1b@B z$09-dg}e44>n(2#9yv2Uvy;PX+d^#W*xANNj@uo?gff zip>h4YaAkGg_9urd-?4eRZ3fIv8ci%f$JB`4XEJkLxGir%u19(Ex&n^MC~TPJ%td@ z^=fi5=&}P)nNNM%=Tdi{e0>X%r)U54_}y+EFyr=Jh0lnZp1Xm0UChco5+3bKl)HF~ zVK*Z*MK{z+>LT-(#NMw5_C@e7Wr9My%VU5*rFDfj z>0DnX*K?I~pc@icBQsLm@)Bn(tdvlWe&pFb` zbEMfA#dg@*cE;Ufz6T6Fw#)Cgeq2jexxPKJld1)jA7;+@c~rFls~7lBd_gBmMYi-@ zgOHf1@ zKJCx)ZeXu8ojP=P7ZK!AgrRO~M*fh0=&gyDx_pC3vtBg4nXe_CsDS_6@6lQFW0R$M zh`l_;{F~?azvS!w)wd6)6q*@|RnAjgmPRBSCDMuML!{>`h}jNl4g@#j zU8yyDNI45~`ta#e38cNh=b6yq*EM6&-ABJn{m`=3#6if`nTC4oc{1p8tPG0Y2|9Bx zG~@b|J=?yUvlGS$3unAOnEd(xd zBe-nGYjoEj=qwu`=8bhzQn%ASI^_Hj3w<$=oU zAXB_;_}|aDcy@(*d*FXT3mCsvp}l0CgVjqkL^207rSJa3#!lCtu#myxzFF_6N9 z0Y)e|c}Py@1J#-%Uk4`gT$=A6#z6Y-F%fO+B`H)9e9Wbl7u~)tFL}kl;uLU4cb&bf zFq2sbCet(PET+iXm^~V;eR^Jy%P?K*3B#Z?VGP#%Ld zU(Ct{fYiJ9=h0+d6$1^|Gd%+jUHr+-O+R#S0UA{iS2_9OUO=> zq{|1PZyUVKM8L1S4SaL>P?^0V4XD2kT9Apw!d%>_xi;T zu6PF=fy&x;%Cf@3!cpr78L*gj={UWgfb&pbD@USd(7BuAkqmK4|0(_%Yu|7j?<5B> zp}_*KKMpFb2wl_8X?-)B8wd%Jt2eP19`)1hW&_465a4w{TFsCx-nQ!sXqPfeE}f-% z!MKVUlmUuU?H^uspJcpmU>?;0$rE?s;rm^l(@&tTDH=iIy_ zxqtRkA}2TXB5QumxOgJJ+gmz*a_Pgtv&TC@1Fhsdld!0OPJ1~FWiv-C}h5h z`kjl2a@{|MwgAqiJ z%R;93Ar6+pp=1Y2&v3sgJfS)Op8_I>ifawh0Ah?meurf+DZy9az;dNNn=@31H4a>z zZKq10uc2KamDcd9P8Tn>IK=(D@!Nit;vxO9ALyOb#jUc#td{PA5>9Q&!zgOWOJ4i6yEJ@h_bN*B z5^nM^A-Z#t3VxP;rVGroGwnXOcxyRtgyoF9tFchaH_s%eyM`lgMVy_YI%V)FPWGiW z9L2D-MhGs{W^u=ndLsD=Uz^uCQ;a7*Bt>vHLWc=nI&)ioA$FFQfI^rZ^cfT?g#sde z%pdpC%juxzplOY@0oURRxY*j_I!8a`L7K)e*6t(zwM_cQAh+ERV0<&B_ z>F5rc)}Vezw#GTmXNh~sxH2(ZY*{-{LYagTK0pCb%#)j9b)EE5k@pbh{nb6(Q{No} z$yAV=)kG2S~?Z`W*(!QUxLFI%MU5a=eOkB@YFC`H?Ra^KUd>t+OtIk1guMlAw zPA7Iq*S#%QGzt=?&zKilMKXcsbtwK!oGm&M@9N(|aKbTa7Jvw+j=o9L5eNGM)4CZJ zUM}bbohs{8%VayLpUCKRi*8+nzC5d%BB`7B-GYZdQUlDAGf4;NdLA#IEgw1mcl%_X zIkgP1NJOratA0UlTNBr`TzSZ&F5%B>GDfKxL1n$%841VXV^FlM#SA<3>V9xb43EHf#_v?q3H#N-A!yb5%4g*SM5&JSEG{nWz8!oEH$kv0xgy& zHCv4HjT8EzV%0EP^qk0vTcyQ0Qc>yb{Kz#=^%^A)YPh~~kd>H1`-nN9eOV$e?5j^& z182OmMge)vfo=R&S>~AXlEiyP)ulk%#nojI=vx0+3cXSIykhIoxuPnV{5K(d{&83{c7$|d?4ep?1ql;$ z1pbbNX|5HWjh5s&nod>K@2l1I`ZUF>(y7j`Y;(|r$w^+@T1ZlQIzo2q+;d~Lov{Bn zGVf1~Ggu5eWlAmE^(;!q&QxOyW|{b*kPI z)Ul2(f~^AB^DHh?az&P+mPz}o*9j{6$k98QTh*rwB1o|H9Q_^&uWr|9H1FGtK6&cj z)6>o7&?vtwm9n8Z#OAaMF17}KnXO(Ng-Ptbp)!YZ-c2-xQ>1RXgAr8E+do5%|8^$W zs~Ko0FXmJQYskg_p-@BDb^f!n>;aW&?oi-+toH+NRauJz)^z@bR)kLrTPn*$nZ>F# zdSbM%F7&veo+(2h*4kXpqf0IN<-p@1S-0UX`lX&;DtfmBwO>BiP#B|2*`0Tz+CS&7@}t3khU=@%Or}|g9!xSGr(%|q zHD4v`CrPzc23ej&ZK=F@?zE?Ahg=ZOp(s?*9LZT$cmq9_WMk4W_OuPp_)e7c+2M7% z3X6BPSzlT@;>K%rzevDWBfw+*ktZaGC^>dp_p_n+ zkKMK7W`NIur0}aV%oD|Hx7Icl0N4ejJfEIrMFM4noXhWwl?%Q`8yxEg+%{KUvVC*u z_qbir?X@%C-tTGk!AZY_ZpPk5gv`cZno*9|%vqI-dez3s!d|&HKJ@TL4b-lEGBHzH z;fB$J2$@(R=%?l{*DK$jIw=8n^eES}9G0QJk$H{21&<3}Pw1uP@%R4+?gP_K9M&sA zan}0eLEY;Q`<<-vY?FWQ92!!5X$8s!Nirkll~z!H!ieXk9VA^jp!nD7L)OB@FGo55 z;i8S34g897GkK+wfvWmF=Uua{r~Z4h_57sfA8|gxLJM}Z`hv$sU3#N|EoU&`82lze zGv{kN$d|5)7eyTUc3SftLvBW67j)x?*kh%un{jX@`q3keh1RyK87itpZUMs-tlg!6 zYb027!zDXf-_!{8(j_JHd4!={U$X={;HD+8~c&9qVltC>)PK2i+U)TjACh3z-4vD0`9i1LY|Z(m+L)W42rlF|Jn z-s=Li>mnx7@5hAPs(1Bci05^hBXG;xm7Iy^mK9`BjT=P1J&r?XRsSQSLp!+-+PGr#^8Vib$hqkpBbCSFj0SJG{a~^_B5~b|m{6j9ylC;KyEt z7G98ptHG_eK77^fvJ1b(Tjfw@S}cjW#>934cP;PI8g@!_M;>iqPkw_DE#F0T7EiH) z{spK-RlPK@#NO;yGQ3$_`7+e}k&=N3^uvLDEfMJzs;LrsUVLFX^Lo$Moq=$B zrJi(&Ty5r6!J$RTfzf4-waEF6J;&~o{F(l2r_dtYyym_q%r{>ylt}`mx0%U*0p;#5 zD24KGwQDMk-o%|#cksNvR9o@mHP1ieP43>x<8?Z|v~ea=%WDSYl~27UUKQV8R-KG6 z#(_(gtJqw*3oRm=f4<#vjJ>6U*At*djl;QK=@86Ha}Y1xMN7)`ij?=R$LsE}Ewyq? z6m%QjM}`6&LW!hITTb;Bi)vOQf>$jCrs+KlB_X@TvIwU4`1PVH)o~^0F7X1OrFX{B zD``2DXn%;hfbgnRic)gCL;zogXYRHLJER{LEp*)^mK(o@Z7`6}gLW=FmzMa+(EP?mvcUCq^ok;WQ>$vCBc#f`gF+ z$}9+F7lhyKc`4WOnSVIG?2AVpF$I4~*KR5MU*ik(xWM7rrS8mut_aKSUUBQoH#s(Y z5;@$+1^Nx07``6ZgB%TW)*TUQcX2fnKwfK0`IAT18g`0f0GgM7tTy-b0=|M`W(%RC zps(|V(0F`el-kd=mp_+*>NrO$s}jLTpZVEQMya9XGs)bXIRCxNJ{uBnO#W-j1LWSu zqZ<&fZ^KN!2-Or!M%T3d)GrmwCtX}*X8?%J$4?v<(Vhx#D~BgrNH-|DXW$_>?#;ek zE>eF@^K~FUSUg0np&0wc+PHt2sm^q{6Xhmd^yLS|xJ~!pA7q93D4LXRD}wd%FB7%S z!7zciGc3%u3Uynh?R}$f*l=YhRQ{(#%`_>wPS}cFkzxoR8*%d>ByeZn5+t+hKKLDs zy1SxCGPPMVW3`8AIIJL)SSzb;T!#; zRevIA𝔈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⁢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

Ao~wP7F^<9=7Y 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�j}qz8%nj>S!I5!Ev#s*XJ&KegnXXLqPwEjj6}`C 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

  • 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

    ?ooc}5q&~)Urd|e8q953kv?VPr@xFQf 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ä~r$djV6ral3d z1l;mXLX8uHn&1D6QUCgARIz%=D1p**cM)63fs7oFt7X@7zRXtSjV{A)q5NDS9l0uFO$S%qP`Le2V&B|7`=7*l z7V_f$z(Yd!lF;qW`({~0_{?4PH)61-ll*ioGFN(k52SKeFT?JK){1t~rLel=P5V@j zxsOw|T{~((++#ZIM2n~@2U5yH|9-IdCk|Vr3Ke7U&UJ)Y3!QN7f<*&hmTXud6;7@2 z`f6t^ezs5Ip0+q&CLy+7;yIzXprz}n-0e=8@H>=$a|xhIhnD5b`M#c8AfVU`tc8wb zNbbkLzN)qfOkB}MO5Ry3?iIVQU9iCJ-@8E$pF)mrj>JwgYM42xC_}#gr) zi7H+C1`~#obp?nE#g&{}4)a{AYzTYJitTIQ^|jSn}*j7ndePNH!A-C&dp7cvDSn zW6w?kt%Mq;$hFRO=R6)tBpw=kB-?5{XCvQ*7+Gv;^4qh0Azl5C>}yi-*Cd*Lto$3C zbiACrfz$g$-=`dF?kpv$vTw`4g53_NB_CaL2BV^9lgvznj&}un2-H|forbYQ-7Ta} z04*iX=#(N3l+iQB0V7s#q_)k=kU}#rjos-C>7Yk_Pu+W;DT~SpZ z6yh$?;wjTxrs+va{&d4GF8de3UhCKUD`plDetvU^JD3l8&6s&Qsa-9pcANSuCK2nXf{-+4g< z!RVW&e8DsPfzrE3F0g@S(N2XPQDk}srk~p*XY)x5&a8VFH?F`0oV>nS$v3$T!o|Hg znja(@2J5od8WxpbyesMO7}tPuQ7Rhkx&gNBWrx4#O5gv+pBH+z=i5c`@~RsnpRFl3 zhQ2)N?P`Z{q8Zf96-g@8Xf$`w@x*C+7YiKp-)08dWRkO%A=#K0kRseVR(@7r1o)72 zX5b}Cp`&kZ{8uh7JQFT)=qanv;_n|94kDQH^eNeVp$LJCf;&TQ*7bQssPLo3y_MZ$ z3QizG)VU(w)bcvPI%~yaFAxC#Ice1?CmDTb(IREjt}NmjSw8|~Z8?~&y-*NtL2@*q z0d#(itwF64GXw^B&;!<7gb|SKwD3rFm8`}v{4pdUqf4%iyQU;h z2hP>*CxTC#U}-E?vW0(k6{!KUj<1fVp;P0PjsSgABr(#C5 zqi+-(+gmpk?r0U}cO@~)4iB@XT~@55x>f%pCc0JSQQe249P4oIY!LCg9F*)935DKJ0@XgnZ6$5^sUzp2O_)f(t@_>x zYs=&DFA-V;e3mHY=!2}(2Vi9TSvQxf$SI}aD={2^r?-nqyHWJVgq^#RvXhUtu0F>6 zI(_9cts1CaFaN{zv&`Gm6?mRhsz8m!^AMJZbzK92oc&5;>2DtOWBDkNad96qx@ z3-g!c5#ii6`j~YUj>Ug7kMYoW{q41>qjhM%6~TcQf)XAFJRH5r@dx&vbNQ1<;HsXW z_-iW`I_cl?RVM1kuP>Nax@TT1vUn)ZLYUK2s0&UeCNL`1w6Xf8tylel6fu#Po+Mr^ zsG4L1eUWGc@P}({9-D#MEN%_=9QF!dNPW$;F}aV=HIdt2u^ZmfDXoiir`7Yj^}VZz za?6q~S)?}SAh`uE=8~&7|7Ev0@)O@Ux}>t;d98B~zUS|Abq>*hnJe4WLv$p;4~SA+i2T%C<2Yvi7w_fp zs^U1@A+qgj>t99W@|Fo+buNfme9TduZu-)GDKGg}G(K|EWRIBJVS6@A)aWekf*+U-Z=s(y`6w!}WbRqZEM~Q3(s@fWz;>l{X z3KCM0G(%MZ5ZhHyDl5sCWpr&A;wuk+$c&qE^_~J9N-&WEJA-_LQBy~u3=e346)cz% z5#Ws1oDqVvq+V*LA*uG_q$3mx*kTjvPeHH&sCzVwx+d1q%eRw)Ji&&%iJBzF*JheO>p{3DThip(4O1$JoJAH6$lS$_V9=hN^QSS;b-@-;aYsZM5Ek|45i9 z?5&(o_yS%&|356$tLKjRf+tX&`#%jI`^`kmBkxO?gCV{JF0bB3>hQtSl7Y5ZtPayU z3atS>1%bbJaCk02pM)M}S{p}rRg{s@hIj{FSjBq}=WWDIrdAZ+2?~TdQJma3aTWlO zEC7Vxk}laova!NF1?Tgb)Pk+tM&rDtVVUN)0=XEO{|1h+DHe5GKGHkRy<(PD0Eh(@ za(5ukf?{b5P2e5PY77UudV*5<=!AXs7am4+6bR=s&l*PlHVP1%HvBDl_Vu>)kq}Z4 z8P1>}DH<1!^a$N&9)A%ZqXw{@_~{O-K|M`BBmO?{3mE^`!4P>gJ>|ez`kt~GWyS*| zPRJk}2?GabOBpMQ8}~b6pg_!qH+(^652t~*%zBxaKQ8- zurU{uTMr&oQT7(F8Uh;WPy{Yg1nyuWgJ%<7J44Uz>yY-=Y;Mk}y|y#_=LvCV!Wbk} z4_^3*p>UU}@YZReMngnA3lc>T)5MfCbf>*BN_u2pRQf$F0H^#TyxbzWh!QG&Hc7f8 z9sk1Th%U&u@(%8tXR)KqS)&Nkye=F55R>bN$J%65Y7p}0jKO=L|M?VcR7FWfOP~wx?2&Xt+=|$ zTme5sX@T~2u3#Phdi&OOsOR}U3cKz+`xfE+*q$MB+7Q{nJ@#=;whz@9EeMSPAfz?@ zbZ=I&XGAQikc5M$9-|$AEa06NBC;fDeUiWhJgi3*6HkI(W-)`LZn*H#;_vC;ibS_K zut}J}ra!6+`d?XuP^E97Kmp3rKTry)0x3H4=Mh03sA)G6%lv61-+^gtGMaX%78Z}< zPaDZj8#yIsXsemJlou<>+Q>LC>K+^aa}Lyy$)Vyj3S{) z>@lj~7)xjxD@1YGnAgfB;Z>A0)kkpWvLWE@hiIAjFvESfb9QdFtl@vg3EKGIX_f}UfdTaZoDKe>=^sOQ(wln zKmmJ>Slk9^ycBMm`fN`Bo3)JSg^VrZXPq{7#ybH5|hRo$%vlT3H zaUP`#-_MkzCRkjebUbYHgMNt^tp*yCb#JMHCzjCOQaCSFD`++3AhUTB1rttY&crMA ztV4|OKqNj%y86nOXG(`SQ0Nju@owrP)DSZpd5eq4<-k0s5C4GrB-#wFFJPPNZT>#D zX@7FI*3t;OT@;PRxjnxkrV+K_MA*UHTbfS}1YwSLWJG-E^U|^vT>=U7hE7EKlU>B0 z9qqFz9KNvkp>W&hd*jF`p*#`I1e;%w8vQ>WtRvaAcc8>>-V9?K2-JSUd_(tWH zBe?LwENwv(xqYqQ)RFx1+K`He@)wp6|!&ejm{;A3I%KsnDrT)-#a@h{lddq5OIFWmB0#Ae_X49v_l6p6s^- z4Cw8v2ePQ z%3~)%wYEf#kpKy=#iXz&bkDn-?HWU|TYtf?Q#*~N*d2(Mv;b88Xf9R4qA1+?&eXBH zUz|%=`+v}zCn+8Jz=3<>{`F^?rX>giVL+H6NDB`(0R-4{q|Oc8i4niyfd@;D0}pF^ zsD3@tI1ClqM6duCa;+~1CPv6X1LT6o`+U`H? zB~P4r7=HRm3f%|F0zvvA?#FUb0MO$&UDJOZ&@b@3uMoT;p#>hiT*Y5i3} zloL+vMKtr#{55pv2Q(WXSJsKC<6vkk=npoucIHX+an!=JNWpWLc$n2$vx8^h0B>`(EYHU!Aw<5Mi%eE1buVh4Ca3qU!QPq zk2$e}`EtHTEwyLT;*l3Ptn%mCzHa5^AZ2ubGP-se$|-YBy)Dw9Cgu4!x0GX7VBdS@ znUd^9n-H&lS8>bgv_DmYat#I%S`EP4;i-qEiImExzqF#dG4}?*gSPR_swtj#B+fovjokA?&1=BgFDmU6C?y92xf#K~ zmyf7{*PO`${bv@PlfH>txA;X(Oj#{)}!R={D^L9tNXBHQX(Qi}LJ@0nC0 zNuVvjC^mN2VN)u0wDrLV%=*#ChAS@)OBilleC`gN_czF(2*mS2YxA#8OiVjNLL;BO zlC37+yVm~eUfX^zi;@nh*2b8We6G9eQ@ag6$)O$D5^%Y`ML)CBhe9Ny5V_;X0V=yA zlX{*>JYy%T z<-?4aGW&c$s$JaciI_0WPyp=SW%A0mukWBJbr*(oPt9PK+~EgvMkerrn~pcorYLUAz|U8y4bIw_bQ+^uv$qQ!`%6qrK zfp+_*z6OURHle|z%8nC~;Xl>&anGUp@OjxDN*fpiCf^HXvaXR+ubJe^mb8UEDV4Jb zcRLj#20^OFEQXKt-xLz~_a7^EE|NIyq55qqY5ZEkzk>gWS5`M>-$d;F zbJ~A$&%Lhw>tv~yb{kumi2d>zcX*LAoO_T-CZy{vYKCP<>YpK`OZt(k!ICEAr2$db zQ~(taGtbo%)MoF`rutBJIi_pFvBE}ur2b5$E6ldqWtes(_HKmVX{b`g8ZM6@ZyWA% z1l7jQH>K(lOeQc`q(PDGdX!0tH|}&Zl55POm(P!#HaEN00SDG3rF;d|^|dn^(ZAQv zrm}B zN~SwxF8uts>0Mdk87Z z5&0uw;=wCAt%bY0RJ!mdl;chfKq*$0>w^775AomkO7FiMSKboFukLFM^B0n8bD-Hh zTQzdwJ!^}S0i{bI)N!)8y)c0M1-IOiH3iiw<`g`ZJGbj8DBDoOx`o!QctTV;?+}@7 zFdZ4`V*k5ruRWjeg7g+Q6gW=>WaGcC9q1d4+Gt5kK^{}*goe)eR_a@vdAdlo(0)n@ zvnXys-`K{civjYpnh0vdvyJ7UaR&}u8(l7?K6*Lo4-(8d;BnMFq=jX`4W=x$@@$=+ zXJm^6xEakj+wQ}EAF!Np_^Q? zyXlN-iskw>TA}f>;)kG?|P580h*fI6$%*1J(6Xk%NvSgDEM(SC}BtGBQbm zg9$7gG(AvIhw!9(Dcue)XlVorIZ_C-7}P;#QbZKai1;C{MBbifZwB*I?AemkI6bwg zk@zgvb8Ps!o%fpA_1uWp1wj?8mf%=GiexAGu;iXRP$YlO zURBpv$@`lQx{d+UT4mZKg#$&dvh6LM34+19%T-&c8U`+3vfRB>FjBw3!@HzR8zKjN zo@^(FgJrs0x+!#gc>h>GXRT?55q$9se?E~5*+^h37>O5Tp~yhtvNiR48*tAnB$fX* zC!IX7^TQ*6qpCAuh*UetRk9ei7>GJq2FC92 zN!eTb8Q)y+&)&z?;?Wa%De+*MD(E8x*R(LmaXGP+ICh? z>%RlJgl0Lr_I;48F@albtOzvqBJ0L*GetSZ38!Vkj*2?GI8gH?#)fx%dB%lm_`T5} zpzE!J=6kW*s_Vy(49Nr>o(ALt%E7iVIsw+U1KooR1N%MTD;1>==5X+nLZ^2X>%JLf ze#ypqhKg!Wt)>fx649_Y1c>9}1sVahmUa%-yRSnYM_raoyy2du^tbtDrvgBkI0r(< zV{zG}_Z9(>VATG``o!bm?pI;84g&Md#~zCwNdn1joP6bBri)%&v9W;)30m-HQYF&_e9jn=bMcF~dCsD{#{ z4*-@)o8LJ6kfg!Q+E-$!U+_IT4441-e*qtrrW^+{?Xk+I4+2EX-v~R>VEna@hP#WB zho7Y7-wy`9+Gc+~oIiQf;onxephC!{tB>+TOaRbqlx(VeZ`bXGYI-&UZm$WM61+ez zSnI@tQNsox0D#tBdJ-(v$bEkW3k98e4YLR1e5CvCMxB!rNE7Q9O~oIRQsu#e0CuvY z3Ie8)!a}+VZh^f&WIDWHsJ$)nE$}9hW4RjS{S-W=??gMwvqUL*Mq%(gs1=fgOnRq=+70 z@k5X4cVi`cI_N@js`+rra=X46wbOl=uCXKK<(IbLm1<3;TMdKLmpa|0yWaO+`(ZAc z?yQ+e07Zs^6q&S-RG`cxRRK`#{T7JDW{DH7Nn#7G^O@zR%S#E>e|s6iWF)8kuo$PW zs2x~Z12h>_!4-<(1g-a^_PLsdAQi>{*8JhjACMv7kSQE|9t_rEg5v3h_mX-Xzo7Md z9}ao}q%AQWSt`}y4-V86RdEkw$*C4G+bm>hVq4UWfsR9n2RCbMVhZF3l!t7Mjk~vu zZN+dNof0_<-H*=*xQ=A&&u9Mp3Ji>=Vf_?pxbk^x65n-b(o@;BnT+FiIl@l;QfT{?2G~dfVL70~e7Xizzy=E? z4yU*rO*NkbzgkX<@k*6jd~ChdkhtX()6Q_S(_GCe`yPAmI=25?lWEvjE~Ca$7%m1` z)6`xutud3@lQApM!dU&D)`WAY0BNM1GvG5)NEVKk?P1isv_Du^jlF0mUp8PJc}RomDfk|#-sn-$r9>u=X8nk075mD`u`g^5tg@8fKE*nv9N+hg&o6_5~uD8JrzVg4$qP>1Do$l#mFg} zzYZh-I}_pg%3HT}IVs9zbT2AIhuvwFl>adM*id1z4Gb>SlE6KSVDrUA17j$z2pOT9V*5nJS{HhZtTi@|Ut;Cuqhhp%uN-aB}7o z?=Q6fDqVfV?4KE_N{c-jrI7^JvgO978csi4tS+f%P=)ZoY&O_9vh-O17cgi3J`-`4 z*D*CI;Y2H~kJ8TH0-7_yhvq?!-&}g8F)M%Cg-wgcwp#`7U$@AV zZx=F-c4!v5PqN!SJZbqv?Bo+ygi8-m&7}h9-NyK$lOpLL(NK*Uubz^HO30;YsfMWe zf`p?60it-CRu7m~m1?m=TQST6lDXzfx|4+}k47i7Hd}7<+YR8Udw4TCZZ7j9O6-RP zXcZ!=xkI;=%XgZiFOGqAB25(lwERw)Yt|+*NuWd=)DQkNn+!RKZPg%YWDloY4UqY_ z46K>-V6JO!>>EFcGiAS+`li?3nq2F@2N3tKmShHOwsbum&AElm6WS`0GNVb&4c^v1 zGTPYZ=W`^R{M`JKkFhF;g{V+6y3gY}_B46+-i^|ADHhW0<$$EV{9QJZWQClgZJH7||5M-S z1gY=Pzoew#IQP~GPdEAy$SpPTyMR(XF^BszAMW>Wip}(g0il)Ub=D_dowdK+lR4h# z@^nAk*Ah86X66s2cYYr*hiEr(tYni8`lG?x*bpNUNQHPSutXvPnrWlmf)^wWC%agg zzvy!Ib(-=WNbtqC=N_JRxg1to8(FKexzIl@n0ehy>H1}$Cq11J)yEv-V8(M-|dyNNi@0J<6PqXg8GG!N~&9?5iTl72B1RQi{Q>M>>4TS`h_ zQy{-Ij?~De(gEAjTRabSra!(+Q`OIE#h&j_GMGR3bVF54JS2d74>7xLs%@_vF-mkS zpf>vnel8+6>sB`R2+I7*1|IkEh1&mF$@bj^$}wBe!TUK*gb^hLbK|($665I>VXfX%e%C;W$n95PTC(|Fq&+5#Q zRcZB^LoOArQ(f@*qajm14eE-I_6!` zhfZ5M*2^$}S}5>rlCT8|tV|4EU{pzv^wyrAa2hBI@;I>aM*s#)D9i{Y??!Ij03$Jl?oM`OU(Oe|t|#WEt$%w|?tq+uTD) zte+?;@A~MRX+3`m`U-ir*~QCLb=h!&Yo-M{{`|%+aAL_dn@CeMbJJ$gwb$rx#K4K} zpk8b99?*Ne04mB4&_EWv#(ZQAl!CU1-+#Fw32X2E{d|~kWAgBH4VioSd@V^A`Eh_$ z4=iTGD+x<3LV$LyADBJ=)NESAG7in?wlA6F?H`;$%A6AAidp@LSNgA!(FYCy$8#oR zfnmxYoO>8{0Qwzgzu1Lm@IxveU6$Q8Q)!cLD9G+%F5k0_S$Vpg zjh8Tr`6TOOLrM4)k{a|#kR}kG6{<|Pi+p>%4D$I#(}yMDVSupI4$vSe*IDzs*Zb7( zkAOihH^$0<<~=Fz=Th*0n64%L=-;n(Cp8ZC1WT^v?KN1U<}w8yv%YKpC$s$837~}E zq3b4r^{4=a;jPAQ#-T}|BA;2snI}&e02IZ9;n6`4G;?|t>pN_3#JrTgSRnXR5PNDs zXc(YuyBe-8ax(onw&1yqu0+(p!8eLPSqccpN-<@pXtU{u+4S;=*}$rjV2StISLLsQ zYxkUT#KX7Em7j&+cwe%moOurF^_-S!$E|nzLHgZB?P|wy=CYr4!e$G8CGNC9xu0fx=&o;KvdvOW z$QZR(YWG7hqzfRv(RZ)Msm^AphbbvCtV0W$Aagz)$8Hrh3CIdmRs|@3VW)a&g2e~` z1#GK`eK;Hr7=F@v z4YDIW@?YKPua$9dpUH2h<_F-z!P`oYW08r-gBTiuO_psp@^h#CPqYv(e{rwGdz*|M8dGb?jvv{)#?-t=W#g2(l=w^xq8T*%%6 z$jxOMYA!{uuF51Wo~!zI;@kQAJ>8RGQ@r8O=h<-*F`llc?dtvG*9G7rXb4)>Z<)`N z0NF*sWBJPVqV~fxch9dqt#X!@quoWZg6;vJjSYNm;)&YR!OzvAN_TNB@f?wN0D8f&0aPr8=-f3F zi6rJ~y!28?n$K&@+9qMpeluNVA_dNmYz44^j+!-99xp^9Z(RN*toP;U?uVew3kQc}rYH3TydMbyg%s&D?igVmykuFm}GSQvz za`M7s{V@hzOzrwEjyR6^VD!WsG_psy{5m!gB_KGSu~Ld^v$T~s^4e2Cf!w+E9}%iZ zo}LPPVMRxs!J9jmhv%6)tDNC;)a_w`${BLU*HFzj>8Amps&t>{BB(fD>K+^tess=4_^Nz+`%4Q((g!zkobsK9#( z8Lul6>%XeklOM@M-cL-FMXD!epkw`A=-SS#5qF=I8`HIu^aIa*_kDt~w0ja+Gz>l{rgJ4>7{4{AX z*;%K-v+USvl=B$pRR+{SXRpPDb00Mz8cYS3l0Ail_#WELxvEULsM(TQAk;xJXy+qA^b1ZAkX!OwFV4pW?BrL_f%sb&?@8Xt8R*KBB)z1z#C zg7_7~!PTvr1>dMl?1x_0&~59^=3@w}E&3ZyzMyCv$?k3=bLi98U>u2e_h9^g+olGk z@0ueITc^7+N%#|T-%fsA$36MCbL!F~lgTS+SfND9Bk)9cq$fI-VXta?{LKEzwPJF7 z5_>iP8w;Y$et?>G7KywpjK;}MF$ipBVMw@$2qtL)cI7~Zvu!Y3QD<@~jmwITBVH(Y z+<=B7zz6^{8J$j(KRIo&G0KOUqaZ2_Wj7;ph(_o%!&Ev1reifPg!+F3F;LZ#R9q8S zp@9uf&n9g>6E96VXp3mjJ-M&F>7qhZv0VxlW;poR8krdt(r7W)zbC_Ylr#qMZW7IE ze7teyl3eM`Z2ugIA9EtQTW0xg%=O0k0-w?p)htL6uJwoMtV4~5-(A{@Y8pgiop?LBgy}cMR0$v{-Gy2@45!a0(k1foiM{Y z0fuhNDojkX>0G z!j)1pleq=K!91mu2X#`WC|bb3r;RQ^11>EV25Pa3v@Rn&kr&?E()sZ>4TMawivzggr*bM*Bg^K;L%tKqcgi(BHjG1QQkdW;8nNa zRXD}6QT1^o75t-Z0@k*jl$A0C2si*vv2B6?9(n+NyJlHEg}4@~oXZ#vx;gv6SLWRz z^eIb2;lR-+m2+61IggK>%{4igu62L;{(-C4+CZ0N_PvVV~?Cvt^#?y z`eFrnE)(<+TMUVpC(hxeiNjG#*R*m1RIvTsY{DGPzVg;0d=S>=43usWzu7ggFa^Xh z0vhZ2i!@tYU4Y0xs@P-^GHN<^`0>-OJ^Jrk+4v;q{XC*@tYSHniZoZgl6s^{4FK!I z3--y|?Q4EY01~!NS#X+gzj#b+k)7X6B9W#_UJ%}AZhQNXb)f~G={Nhl(|8Nw!`u^d z2>BhJ3f@)&Tcc9UL;FMBd?dn|X|n!l{@-STW{!vKzW)5zuVuv@30SOI6cbgD_;=ckFQQj(|ww&{Jh+t`o!;gFYU(4-2{2Hr9#zBpOKeJfAx^UbwQSa z!`H;FM@e5NP=rhlzewy;KJNS~;qQrvrAOd;|LJ0g@umQ@P{1tah`?fvfXMt8Y3f7P ze;MA~myM!g-aut}kUG=3_SK%k>!2dpc%En-bz?XWsr!WUl5EjP5a|XZakipQ6*K_V zsN2}{-~Wr^%pri_&0BEeQrpa zHzTcwd+QcJh?+eN2U`EagFKfKC}V<`c=E3Sje&p&h^JppT5S{*Y2^?!DJ@=1Q=vk1 z<5ScF`_=F%N@T)k(>EDiR59AS*B$810lY zd73d^l`SYg)>^Qq3T$yZOpB;8t-4VyKx5fYRHs_RkzTOE9y}XL_dgi z97ugpVG(*NwS|D0qYBsIg@#3<0_R1sVU|L(vONmOh-}d~kmgvG8ns_=nuc6174ry> zrVheccq?CmL@G~|0oaBFTsI`g`=JWuN1Pm&!Xyw^cE_n>uG0Oge>fA@szTza$ezBN z<7F$%xkpk$wzRGRMaeY9yfm_I)*T;dZ-|UI7r4JtI`OtXF`$fKTRCZY$*y;w6~z2Y zeL_16Ty~336rMbie9|+VAjJa`xj?xUpyCEFuc;=tDKtpBU{2lzBcXof@Db>Ph~Izf z*0=T~iX2~-WRfjO{vUe)=S8lYhcx8d*G48ehbto!gl-6QgP~utd#I@b(IL~7kY7;~ za`mM%_Zupnr&UN2lUfA+b%6y*1cl)jQBy&OeV<(p8dRR)$!Zb=caI2;JxYt57e-%O zpv_}7r5d5t3Af2jzw$7E6@q^q5^tZOFk<+e$1(?5YkVk zlIx2o-`~rc(NH_rZoQNh@}7KmzkGGX5e>1$?z=F^k94wz$V_N10_LZGmZ8A&j|Ay* z`}O;5yDmm*up#n`Wufdyj#Wu6?X2Zufx>-n1qo=_+Pm-X2#S!gydRpmr5}$A?l~Tx za#w~@fBiy7%YKN!K+nL#!W<)lm%L(Do)_^D2aMkWVoL$r@N0)#I_7+!m?{x>)IW&g zHSE!{RsYhQw-ag&GgX7Ya75JdV+-8s+0u!1Ncg$I+StWoIQ%%Oe}6d~+|3qbA(Jnw z6|5S06a`hbsVy$>W1mG?jd$m|Ln>d zRf0=X;o5oz>U6jF>-6=jne{7%6G9__Divw9^1#)m)Dxj%0n|`SCZ=)J@KLpTcQMkP>HJes;0MRSDA+tSw;08qoyBrmkI@l zjbZw(QQlf@e7^W z<~>SVZwPSh!nT44Ras2l>G>IsY%zB&mTI{VsP?UkE~YLAWz6|96C(%yga6aP>UO1`~zLud2ToZm>KRQc_Djj2lP+qjlk#g;F!pLu~P5Je8~$LW~W zi)EVu)K9B1n3BhKEn%UcxEsG*xs)-8*~YHv>IUE~PjV&4SD8hgSnna51JIyTi{U9QJzqX*gEp4g_iBI&ezayHAXo%fzfs?;h4t`7;5vYd4#Hl$!&8JVwRvNtQFm6sV9`Z=eJU zC>V}6sFvw%A^lNz=W)-3PwN}?7 zep9HtL_7H0!B|Iiu`5Xa(klxZK`Lsm$c23*Ht=igAn*ANSX9yh%4zZQ-Ye040ZpIQ zVG{7LG>;Gs$T9@?}U$}XOlVCnGeQRI+bRKKG#-D%`+{|(CsmdiA#`~r@9Q{O7 z;n;S0b?OG56{kZCsHr}OQ&i0Q)hhe7tUh_aSaX$<$4CcCCVi6cGm-2dNZtV}&3$t} z)vumo>uH}N_nv+4wVG@TT?W$Q{~}FE%&nUF=JMd_hpMYeI!9Al-+UNuEy{d08f5zK zuE)fq^z^S$+lt8VPq_`DudrJmSU(7q_&7nKL71DslK-{OuM=Lly?EBOZCBTR=!a>Z z68>^e#@TltDB-T%cto@^h`1AB4cjwRr@S&$T7e#286IQga2R4O)v|*GdAM!Fscxz8 z#LrxDvtu2?BtqmdJ^j{wL(HSIWAHc1hE{}GkQ$`vQ`6-elFow?!V&9-_PFP{QbL9h zn328R@Xf?xD&-AJicN)L&tiEaI=3ZGnrNc9Gi-$!rBA$cAz3O-bM1~?hmqo-{?!g3bs&>bQR1=^-v#NeIvPrZUIeRFkbMK;@G!4mh~gyU-UBdqh?@odE(k=i&fx`224PDblyg4>QD}%&BsbmzMewWs#efMi*agky_xc3eYDB5|jq5ZotjTv?2r{!(&jBrF zgLL@uoHe!!hZYp^pWo?E;_^aD1DPy>X=9=GpUbRm>Z8+(C2{)5&O;BXOBQ{QlgLTD zsjG1ZKAW*a#YpefX^P$I5nWGC2TIIv;Ys4Xsyko8KRlUy%zrm_x#_^wMVT`o@zZ)o zIQ|EeQT?hjzS5oI=Wjie<))r9?l#n!#U=sY6jbIBvt4q=L{({G9(RQ$hh*_z2kUrg zfd&#x+NV@)L?f;9UHb4WHfHKbe3~0rVQ`db04pt3a?MAgoG1Pqv|HKb`(zALTN z)Pn6TY2cHc(qtQY|ZqoM8HhWP}Rz}+~fq$K4FWa!tF8Vh&yDGfNlLB6&BS*O*duE0Y!8Mmy$;YuP}i8_yFhG~6m>O>M*B zIR$fy+GQ+K&1UGVVxYW9RO&ta$RCYnXE01iD~C&i;n=KNL5P@;U5dr+i) zBybpMB8^T}mJ6*;!-)r=A(G*fK%B2d$VpA#C>{gnAN7(^8u{g$2B zYw`Zp0y$1R9$Ksex`OLuWo zHiV@pvVA-MDZZA#5jq-i7>K6{CUgj#eeY9m8g%mqWq+?PI zQ48^GYvB&bokto_L;01^-RiltD=0c`*hMIKzw=%}Zl5NSjWj60H0{B*@)ELt?4@$N3iAMa0!n?VrwUYnmpkcBEcZWkfz_F=EE*184<)%n- zI8Ys9;N4-ZP=(?!@H;*^osNeV`tI=qE&W)<%}{<;fi_slo6`HN@sW-+3V7b{7#LHA zhH8}oHs-u&Lb}j>+K{Us1gB#GS53+_vsaMy%rMO1q?n*UW5pWHra~Y6$|8r1gJ>-@ zZyJ0;+b1}5HAUhe2@9B3r`GYIhDk>eH+xz8r z$g|9o3X035rB!lZqb-E65B{S6gI92dOmb{@8d*{^SeS*7EmkUf4d2T*mX{xcYM~lT zV~Wx@~(kl&oX7b_9P3aP`#Zcv2qkcFRMMvVhY5>v=x>E*#0(SLY?9YFmtIyK+-bTOmd} zHL>99+G-!I-qE0g9*LmpsvyeG6rT?sx+bK4n#Hs7;7{kSR(+sLFY_l%HLC@Fg^<2A zyv_1n?7lcYXpb{{mJv~3Ska;DHYl=RZqyt?fWD-NSMu*APEs#yvP<#(rnl7#)4_5? zK-^5`ZQ2|jJ4uMfF`h%^i^cChxVUUugoVftau43FQ$8G`{@-k1r@}1mKQCCs4MO;& z4SA=Z+P!!4@b`jslUqi-T;H`6;idEl#io}+vmm8!4eUd%Ia-iQ?4xfdI~$a-^Ms_i z1EQaqHxHB%1k#(j=olYm`=DW_9~Yz$<$(;)93Z5J`p|ZgByyUE=XF8Zc|t3$v0=4_ zOdc|1H?##*0M%Xfd+adhiK&tvQb%2Q6y%obQbQWV7aB8dfWFvBL%IsI9l|CPuoi4w zhE!at0&7Uezxoqm;knk)f4_<~lYjx?*B%_}ehUd{d=g}#gEBJvhGje4(tr0HzNcIx z8jqE+nq3sN7Oi-+^QB*jTU|#P9+<=)vRxlLi}; zrzpFP8evu8(@^40|AhgXL?G*I*^C(kHF-efIG5-#O*q;dso@DfDRB{0=k;JQFBiTN z{Q#d?bd?r<0&9nrrwyr_0FU|R)I2%6fnGLN7PJ$5hs~zSE6$NMX=T8t(XSWrd0240 zuKgnv+r={UeTisz6Th`Wm*r{bdb@TKaxOVrzytflA^SyHcw~2-r>g;#wzvGLlrzXB zCYC35g6@EL4%+Gk@ZHVNSbMCk_ED_VAfF$?UucNEZ~p6@@hsxrY8PZGMMAQKThX12 zMfAo+Oa5&L?9V(T$Tmc+@kQqko4MaO-6_{fp@IZ}cbr|xC1+)-7lSFm$s!?{)XmGN zvy6ebI|GqFC-1$M>Q3BDuE1qKi%K_)7yee8|H{h1bJ?lNY(POo1&y@d-FF*8?JqH# z@Ba7pSW7@rJQs5FQ`wk^5ASb=-9^!B!LF8ARQe~%p{AxcPO z2#%~bZ~LHWxZ_NwpnTRfSm;%Cpw-|2ru2iP8xT`$NH)GDTIhhKAnyno1m~SZ!$Y)2 zmmj18Uc*2_5#!sXxUY%h8x%X8gMe=>&Ig0vLXG)teedS4s2Gs2f|a!*aazxoxo{Wk zDfYQT+sj6;?Ls0nQ%XZG%}_;9)mFNCVt_|ii<|E*+jgwx>QN?slk75xEB3JdWk^b$ zFFv9-_fLetJ>R+v0CwqO`rm-m$gI^R7^rcc(2x=tiFJ630u`CyPn+;P=XvY%%8y4` z!lPsn_$h4G?X}m0BPnB1`%;~QDJA4V*91i{B`Ou`r>cteeo3IrREHlyghwb#NO6I!r_ z%#d?(A8I=^{r>5S?pUvyxF>+}5QR>l{$+^?uQ6cs*;@}es+{Le;l_nRPfR?}-nVn{&3scHg+}FW0-TWJ5}Vr$IQ0qHn02u`=KZyrBF& zx^Vi{dbYF)T>?)Q&An!H(#qL?4S!+Qz4lrWmuLKhSgg!1(2mxA`Y5;jtzk;f>icap zIlENd`3r$cQ20tn^*Zp1)WDk&h*C@6`VfL$gI_n|SL>E=v7$5{J(aM(cfQTzlFZtZ z&=X;#K)AK;q_?3>NP?a}WMse&4U>HY4t}k>Z3O$!qizHM`=b5sf6lz20X@YL7~DU1 z6jDTlZJLAd>KX`zFKukXdsFe6?Fvy8^xm!WBngj;gy9cUuMeGm=+|hV6!S=Xs>vp= zMfd*a7nCi_kt-$0lHy%?wcs!{<|MrUm;9-U!qFsF zCZt+o!NU$NkK)l!#Z6u$CKqxL-Bh;=L_TeP&vHndQ$lD;Ps4`}jsHqg<5|%s=Aso! z(J}Vue%n&FpJ*#q6!-B8g+&ERmOQ4FGL;d{f^f?2| zRm{M~_v(rVuv1hueum{>{Xqe+$)250S%S4+*=MWY^PUh*llJ=%Cl53?hDnaM(z8|a zviZ?Iu63eSL3;KBDilqM)*4Fvj(rb3*-Mzy3W`P8`=L|2t~b=X>p0Kqh;Z}@Mn|J( zgL~8nKYdR6bTubwN6&tIIk*`YL4~Y_3JcTSzBlf9>gOYKBu5;yxNnVKWvjNqCA+g! z&Rt`T6h&$%YqmsOv#aZXDRxUR~t=#Ki^vJP@#3q50qy-Y=iVapH3#pom+GR!-2 za%Ui#W6DVNHw!1`sEO_z_q3uZH(Q_5q`bCNhD}-*7x92f#D~?oNmG!p{%=Vz~_7c&R>uI!5X`58IB*Lg; z=hNefh$=7NavlH208tB|csY_*vI9@7lZv&vm^yIkdydN0Zc$S!wBk>%lQHSOO+Hcf zLj={Y!r;%>BF%}*q&)}&yD}=a$o18VC^_kq(6M~D_*?dK2^;&&pz^-N7aC%5?#8Sn z+h5eR1^;EI4@9GV{hVsB>4c*LSL6?`;5EhgbXcMNu$yOLm{!=a2q6Bp zjTYXj$q#d8%}JaN+H$-0dUtCRwj;+!FZ>*hUc!hh^T3be-HLVUn~?Eo+a2Yd`l?s*RhdP zWw&;poER1g0tX*j>dNY_nOy{LkyTNSflhl(I z&L%1IXZO_b!m1e2rz_&et*%|HyLKT|wy;jNkfvbfC-}z^t$Xa$R@0eytU-Urs`zFt z+(|!TvnqiTna{^(CvutC)pu0ot2Wv;-6x@l5d1LXyvVH-Cy@Z_+u3E&IVmcA3|J1f zdiZN34koUtjHc`95k)>%5#eVju;ZM5YxY-d;oxt-y4v6A z^C?3pnqTR>gB`6U@(0c#d21#dz9Al17cFUSCMhN$Fa;2{s}lLF85wdzLD~!a!fMgI zFj2WjVg0tVI17+P+YHuU8sB<7Ht7seR{b0`Wk(Ywmn1EPihMV}rkHa^ZD5%1ox;^< zkG&NuM?yQ~B#{~zJ`*FNGdPD*L-W1Uv$~U2W;3wr66Bs^5moxMUl1r7CPRaU$(Gkm z#0AOi1WH^1%v?evWOMy>@qN2g#K;@UX8lO`qCP?ehWZB$v+n-*?x4m7wmoK2C*S%; z22l9fy8b7jtM359pi)6U=FIrt%;;W^_!yV!-OK_%jr?K7%}e7%9Nj0AXW=*Z`bb&W z%ka`5w=p~4$;hB9{0V4yzyBEGNKy&m{Ly8Hj`~>{!9xr*EVG*1;e7O9J2MI`q3D~HeI2M2ar4fl4|qiOq%`S2YH@vPK)Jww7t^Ww^Fzx z!Z`19jow(t)XxsgUcVm+doNH0;O-r>qk?n77ydqd4Y>9Q3Q*3zAWcYspP$vQ8-ef% z63(QrQOAU|bALKW1E>=P0C8nX9gAO*a78dKfpo1!~eT@0J7J7-iV95zvT6e0)O8%L8se4_jkzyDqZ?1bDCM;%U+ zrzM4niCcK@kjax5@!7J^-ulD^^o6hZD^;iIir2|%d2-3p<9Yk-)g{%G;)Ki`DaG8= zX^9q?!puXB4vFg*v>%0qmE%^3=u5Ymrl zM>#;|06J6DE(J3#yb|}wpT<|g1=}>j52)jn|GQWY2EH;X@V@y{$ee!&+Z#zDa zr&~qrb5qnF?sg{GcHweKr@DcXvWPC4on%x^BuWyYP{$C)jWr=lx3@YOkkd!L`=8lX z^Ii^h)Gu!gbJWMyMoD1(D6D3%5aXGON%>nitIj0u%6V3zAG&T=N@@0nqMd#hLY=g9}H41I^W);{91Jw zy7y%PWWXGjlcAmgzAw6PP?J8g@!sO|$kP_@1R8*At0DuU!BEYNMzshL_4_tXVe3r} zni~oR{9YvA&|;5H&@ujj!{(Gw8&~FfOh{6odWB|Rsb;3cZK9o9ZUxe=B0?m65-bmp zB9PQnb=3m|4nM_dIcn)g?=$K4_GR;xUZH3w#QEt6K#Qplf5HVdf1fbrW-ONR3c~H^O0N}%BqYGO{BU9q-`DAg2hU3u?$kgS3boO02WVH8N{zs>$R4RlV z#e&rjQpQAu`Ng&3v$hr+9nSAKUe+qW zyjsn1DgFS*Qt`dSCW}l_;a9_SnL;$msOlBmqsm$CGGM?Z42G+13$j#8u1msf8lsRu zrC)Hf2V|n}nV8s5K|73~Z$R-@=Ck*~$@!6A=_r0jE2wz*z0T)FDbCMa!u!Efbls0M zx1Th}Qxvc)RR=mED*Va+zLDq{@3iICRiRP}L-dSK*f)F#(_~ry`$FE?pQl0!%&5!h zwwV>6`OA^t?9mdL04yrN0T2D6C1g7vq8axD7&g&WX!S_o(eL3j{oZa+Me>c!LHBI+ z?tqF6q&Mn`uDh*th1ZcuC=&@m!LvyPf)5>$Tz~^=1fn_35-Fr+s+)D8Y#ok?=2D`a zZHicX9}aqpU*%3MwwoZ-ui3jdP_(2@^l($G)`i9tHtY3UIBp#%Xq}LuiU{WfU5)2!FE!H%Ow0*&HRca-`%x)= zn+NsW8Ig5iR7FOl%3c^7!_fJbOuOf>6<*9R+3*FY8!zo2i;iUCAlG>5XxO-@@Mq1P z3e@{=d}l8`{~FH%J+f&pTxe7e`vrb7_gNz(0>=H7@UG`UTR>%Xnba8?D(F z5h7znmekh;AXj6)}e5^6y9Da+hHu`%(uzl<$lD$a%!PE?CDp)H*+gH z@-RvZ@NRBH(A)~cJPlXk%%{h=`h84 zWl2YMLA?18c&5b;10o+i9q?MBMgP&&?T50B8qjwY0I<3d-ku5jrm^UIaF6~(*HEfa z1=xjy?6l*_``!2e2e4#hMX>?Hj4^mfc-Zyz27uKi9Gi!ASp2HtXE zmO4&9FZ4d(wa?Jq#zP}Wo@H)hg66f`Iy({1&u#{c-VRPQfmt3=tCzSI4OK^Z@EIa$ zFnZRNY9olZg4Y~mH{L!v0iAfW+@8?Ves)3v_CUpaSiobeXUr>Rr})1CjDQt2KkWA_ zwO4V$BZDFP$LLE$u1lt!+53T`8(wm#|F$`}ult%h3epaH?#$BO(M1gOaiYPi z2c)UZFC93m;#C-iGGiZGQ3uCgMEbMA{3q>Azq{Duq>0}`t56QD8^_bO&VI@^6JVVF zxhd1To@24A9FQ!>08Vz3>`aSq2J!>FTmXEh(G2%5u_48%)h48czv8w}@P3t$ z(y)&Z2>~jn<_9HsAN_wQyPi_LG%Vsp6)3IW^9#EC$Trfln)UVEO)>>)QKzWQLX-@ zPmq}6rBLLk!fL2aXGEe37UWWn(VWaCHI#o1suKoLvB$l?h{3F%(`;6H z4J+$$2>4Y3aU?@d1tep7fO27~ZPI}nXv*dt_8{`RA@)I zxvi&&rMrCt9+KK|9^DAopN|`|1qcA>$~Z+KB+!A%_a>b`kXId+tGPkYRArD@S??+ z8>b(EPH23WnJg;%ul)Q$*q+RZ*5tOWfN%IbGg#QG;Ru-=i!V!#XV!ouiku}ncQ7#} z_P)jBXo}f^sDB6Yv%fi~m{JG7;Xq!>t`y~rH{jZ(yo8MUWMhJ)UX zikt-&EYZO7*yz_|joIp{%UkDmzBsej3lun3Dk|<+Qp`n3#Yh0(I}W^^!)L}Tj6Yc^ zNxra+219(T-AehZ05z0)q`QiGsx~XG2SFM`oL-6V+(BID?!%YW$N9x{x)62_o)>en zwy_Ai#E^s);XJgYfI2Em#rgtBE20J5>Z|xshG^3UscVBAVgZdENolGjpO=K$FH05%^7BM@TG~2^S8F{?vfvAW}Zvnf#IWZ zXc*>}^3*3#^A?*QVvu;hK}$->gRbbyXS4`{?c)4{iv}v0iprT^HA6nJY4b8*C`0Mx^ z{It}qE?~vIe)X$WViA-uhEN}B*3o`L;!>bTjVTjVNo7!#51bDSK@>^&U<8hVH0(Fx zS7lldv;51EsN-F&)w`0|RERk?yRxme7zA-ofM~M;n_=D$>mXrdzEmPCg$Q-y$e>s< z(0hB*OC`wG#;}gJr)#WEI7i8c9zN|-b{Wy*?fgwafaNch78(INn!;blZc<5zMtKEj z7kQbT>5>WkbweKwSL^dpD z2kMB#y`y)00p7J4!769~_~-Wzut&jTrA-6kh-3oVtp^T66Sl`uKb z@M^(xX%K%MjgE1Djd6F_PbXnv?>ga;epe74)reV;LkTh(%a=<%`Byq?&G=GCw@vD9 za63`p;zf)W^z^Iev=!_7d#xOn2}}7K(f)MeEAZJyea8 zmOUDMZ7j@*$d{VHmy-bZafZ2dnpfjWjAG<_*V`23^~71HwKjn%sfmgdKl*}wWYbm0 zksp;gJ+gNOmJ^_7*JfoxDgX1p3Km&o5u=R1&59 z=GO2jkE@V4GG74;&gQ}qiPs*CF;7ff)3iRSqFH7;}zjkX8`=aFBY}{%#m^7I}-h^NH7_ozLv&?G6GbMb?R(39t6Ah z+Kg8Y^g2o9cjVFS>q=91MP|uF~9n82P@Y1pm z=)62F6JaZJF(qNpY+$6N!Da5|M*P0g#^8Ot>48?aoeY`mRe5d+?6#G?!Op{1p);ko zk(^thDg9wLl`#%)pb^yZeHkR;82`RJmcI+skW6%sG31ZPS6sgZ{b`^$X{jmbe9Q$* zNC0(89G12zfW;58pWGaaKq+tw*xiGuI?%o$)I*elO91M1g1>GRHkUu>f8(hJtxdsS zdhHy1`qm}&wV`p|{k!ED!_}bxjE4E?ntc?q>>I(m*yanIJw6Z52Tkgs;0GYnvr=yZ zPSpe^2vASsiG4ZP;T$Y~q9woYRS13u6l4k#DS4dHfjlXc``_QT-YQI@n%`Q|!l zJr`|O*D2L`_Ism&|6FFTNmZ1UG!#FGJVrpET6^=%M-Oq=Lu z>^7i0aV+#r(am>!)Uv;&(qO9X(5=^E(&Z*#n1`MlMUV8<7h#2kkEGcBL$V@QQe?C* z&w{;)@HUq01V!);RUq;?;^=Y2O)la}!e$2>$;QGdSgYDE_UYo%TNX!CB3zC0t4yDG zi(&l}VAmo2L}}4ffN>|B+^PNS9_)4}0yx9*2~;SF`-b*iiBgMUM-N(N;U@@u2%n zp=U9&KciLIqgRz8V?ddn)LluElUh$4`Xo~sf#sLFE;P>;TI33?bA=XI$UAcaX!p$l^5)G1fpQ){gAJRZ zDL}gvG%f&99T;u5EoeG!(Ae;1rdy8I)9in$gLx{tM+fDW3#7=05VxP1i3D2OyPC84 z0bTG5^|tx)+g$FR8%7{YNFw&h%cB?S9V$&CN74;Ttg{+?JHjMTjk<+{EW>bhp(dlK z8J6kSz6TfE{e+BXGoe>8j#)#p<-_Z&aj2wiz}E6GB$uRap0dTlgolpSyI0DG*1yD* zE2!hV**wzyDzlU7mlmzxyl*s*7}TUaC~|qycl4vYS&Gz&OJ))BrxG2S-Bhv)ggQ3FIvS|s$jvCB>hRb{a=!f> z+UTUnbGtM1SdXxAgs8MP1#VdNEeWh(b6|`(oM~;Ciq)$&aSgh;{j6VSY;n4xEBH=A z<$)J(%hmSWnXp!%O62!5P&pI1ijT-N;O2MZINz9rS-~)b zZD2<6s4T+p)jB)WlQ<#eQ!UBeaCuMk-8BE-E~YsazjepBF3DIENJvSl??00H{`{j{ z0%x0Ve;Qyr3t=ODoUnnF)?3wgqRD$Rtq~Mgw{FoR@S6!E`S03+~YI+*W{|Z(F`m~55N$yOE87V3hwh= z(S&^q>*^Z-P3XYW{g+ElXhYK|RJ!^87|b4nDwEtk6bg z{8g?=XjYW3nPJ)ekaMCFQVo&AttEN%)a~tS@7hPj8yY^E?M7#kv((ojP1LTKRW_`aD^BOa*8`l(Cu-`MQ~Uk@9Jgu)d*RuydkBvtjbe6S(6dCghE~tnM77H@qPRBHW zg~VnF6ROU=_CAJaZJ#egp>VlxS-FN~J+JKLGB$aCJn7UmTKgQHXG`~UwqOgWPv@MCBvwOcka4A*H@-nHsELMrZJ~ho<6PdD*vY9| ze6rKWW_gFd+@dJ;#}&$D0PGO%awg2R`5c$1;9HwTbC^?SL4qsH1 zy|tx`eF>NA#?Ih4K+V8@4av#-eC+K;4U0E6>Sl@i4%3u%2?wvx%KVDUdUaNHU#9CG zch4c4RkKvw&li#GI%f;6P+IXtz(E6P)&GJ+*Hs6*ChMx(C_MPx2EeH4>Z| zoHm)3?E6wC%ViUaPZ*Jf88QQI9qnLNjA@R~B43)S23;F_r?=3A{7$@3PWNYgUPEfN7+uZV4rsMUBaq|RK z@w9hgM}$SawjQQnvtGj0DFa@$*8~dBvKdm*JYZH(cG4wU0=iDt&jWm0!!yPf$r;(%4ZnnrfV<(pB{M(~PuoJty7SEC)Ew7dLA6%v@AID=C| z0;_IncS`=W62ryiSm*qvNoDXO_L5mlr9YhbpbqU*if>$>sU3DtVkQm%NG{Z&$%QwBuZY_EQt;&OXFb%>ZvjeT7q3P$t`9OhMD zF1_;Vc+gn&^Pf6iW@AP9UkstN&?lZ=8_l2#XSJET%l0|xAHDlO`}Nu$*j{3OgFdH^JYXwnG;|tXn+a6e0VT&>4Jd|Kr(cXsY}$ceQ2YXML}n6MmMRW(hmZ5rnR^ zhUKW9V@VdhxYs%Qu9R%`pKwtCnJL3&rR@N(fq_U(L?KqWE19FVOcN(uFCfvf$<^lA zyy3d)CrE}yRl(qD-jKhbA@N>{IK!CD7)u|vb*#ayXO1-3kABgSjLV@LmE}}hfV8Q< zm=aFPS1nJm7B$EIP)34g^B;QA^xzP3KQzRNki(+e#~3ch@maC%=mQv5I}qpeJMJt< z)=#j?LXudpQ~gQisY2&2(O{leYn93|-!P-)$YyCUlOcX9KM)F1T?Q6%n%f7O zb<=IHXV@xemn4$F)mxbZ3lLvcZ}!j1X07HYKL_BBR1xXPw0^n{k!}!bTAIjY?ynJm zF0sSuTh)|9gNAr^0diJ2fOtP8|5k}W${B%?T``RvkYVR!+VXYz4ILMcnvugbgfJ`n zF5uEI)yYgdXS8Nk3((?J=DViy;BditFVad~Nj+UQ`I}gD9=dbZw^!r1r>-e+bpz+e-wuM&DIq=Xm*9 zy@KI5CHBIj@1j$GM0<+5ka;TXMi(Q;#xd|6#VNSZe&({eQpO)(*PdLNO>DmCDB8+@ zt^V|bYXP}woSx)4qeB&p_KXL(BE8lWI3oc9M`=ReLwsBCxK^i}eyRu(Xi!1hMRw&( z9=d|X>r8?a0yS%@X>swlzmi&~yypUXfNGt<97?`sq#&_U>f0{x+pd@aQ@jFEbI?JM z{rT#M1H>6U|Js9@ESI_J)d~27g;u!w{gTH_-^a9Dz^q8Ex5}oi3k3&ghsbW^Xl$6H zkrF{+uDZaAIEp8Lvm6?qBI&9-LJkU+U-wdg?QLUY$-v5Z_pzi$q6AvEVfDLNYmZ^U zX-?U0Z~mG6sU%PB%TFI&uE9kn3pWg24gnQi@pMY8wz*PD6@nKi_-EP@QSO3E{sid3 z1cZXLdGfkZO8s5gxB8foal=Fg@|n@a*&fRZhThszV!g)Ob$FE*+!gHyA7K;bK{{I= zGDNy6nJL1gig2hR4*#dY;SySK!*Y z_AQqzag)3lsFw8Tx^y|r=n7F>#;1VVeaHQwCKZ_O}3T6lejFweiT@W!q9&;C9Ewpps$kleqj zF3cx7ef&)@JD>k~wBZZ66{M1DE5iZwbS;b60Kbu1 zyWuJ&Q~o)G;BQqgUs$(`?Py-uwJeMlPYVKPEsy;CNqfdBUr`C{TW7wBVJb0cjuDpt z9?YCQxslHWZCz~}zx+cg|K3Z}1U$3?JP-}3*#=pY-K_dvTwRw4#&~BTK{*w)?xa^w zq8D8Bcvsp3#}UHgZGiDF2#JFwlic1U8DlIJmO$kv2HJ zSJ~!Li~CWqfqX($;L!<0h;s$aYesuMG4l7rwy>@juf3Tl>P%45N^2S%VrTdsDA36k z8$abP!io;9eQQ}GSZcc%esJ@5&BMs!n~YyP;qtiYb@!Ew!AKeI46xwvUz5q<$T#qT z+LX`~-%J-OG)xmF^_js~>Y+0s_LC5MR=lP4Y}(S}G;S~9_mwOz0I>5O#0AvFF}05~ zBMXd@Rv6O0Om3E5Q%hJ^OpeJiLvN{LZU%#A9fgE3ta_fhIhVj&sMpE2wPW)Wyg{!E z=7yMa*~j1;uEF2BmvfST$=LOj&Wdk3&Z%NKrtjIqi-&mW@?~qLpzo-gwq~bIO zQkTK5%UL00PFm+uW#0RH$KmMXe8QKO&Mabhy91J@ECIl=tYx4{D3AxDtEJOb(&_Tu zAR`J`Jf`_OgK=J2jITYuL2SYR_TYUW$3hy9ryempk+U^Pl}a$y3@kN6yXx-4tIYg) zskbktFpG}oxa-MX`}^wPYF^c+UWkxU9cSwfBs3e{)o=mz0=lb0xZ5m?T4RIVm4WFns2TA1J@~UTg%@fRrCtqX$xz<%ZBsj173CC2<%ZTzxLs6 za1^ioEX6`su4m{`NRn62k+=iTcCwl8NO)Fez))lt;m)S(vlK7jq18k3R7vSWb{w!> zf3X{j$*3K;SIADC3%&o(>C}+z{K08SF5sdu==D=NLRH_R;fRValTKz{eu7_y%oNqMLXG`As_tr89dxsFc@}FqQ?xpXDk0kfBEa=bYF-^B-NX*lb}ftsMIJ?aV@Q z7AHANQ@4t;)tPkj6#>MQ=pRYHZx&RH)wL;JtIm=lxMA%CNpwNgUvcRN4C+z{%g zDOa3BB`EwB+Iji26Zx~PqdSC(oV|90U(6^7ok9bzak3$<#CB{a2`Va~MiIv(uyYC( zLQ-6;!Z$dgXv+!~HIzm#M__F@XrrhH5Ew!n&Q8{NRBOTab^3gA3r$#9NS@GX6*G6m zL5QeFU5KGKl1~ULtcH`XgG{5 zC}ZCnG|&~!6IMMA_#^{w#<1=Ne!ztmM~bMpUW&g@UqlK&pY;E54t5MG^hP&z-%R)ukQpQdtj=Fox>8G!@SZ{F~X)^KUfl z(xumSGQOnYYq-(Om(X8QNY@DB-9)x1_QPU}D4xu%%BH}E*qqQq*;n`kg8)AJdMVX1 zZ@(iFY^uq5zvRdXIW-^cg zcYv#bAi^obKrnEbHR2e`4n+~BvGoY$q)vLC>;a7uCO8I9F2t`ys}!30vY!`P1aE{x z6)L%xgr>9(pd7SjH;OAAJI*f>!5bSTTx+nJcV>vNYSaYu?BwvwF-2)(-Izx$*|Uc$*DlOwOC48k#3D7WHF^ppR!QYJD%|ga9qCgEdhC(<1p21q zCOY)Tu~)*j)%1Z^8R!N+Epvz$|3MxlQxx1(mwo5++F|;+-~9RNzV_BXd6n+Q-V&aI zI_+$R`=yvgn3q-lFj34eNEs$q#!mbtm&NOH*|_UJB4~IsnN(n0tnu=`R@2z=lke(t zYV8|VDN*>t!YRiu8r5Q&j(W-Ey3ucxu#fONTVbZY_46rbQMi2iJWdH4hHvS+kBQuZ zJhr1%?v3;{B!cgc5q%92JstI8?f&D3rH4s5%npT%(UUsQH?8flVIm2gK7o>JtO3Cd z39uFn2U8Ysg?k7@FHd*;p-9?oX*2WuGvhSpSuWAa`SBSA%F2e-*<3`#KC@QgoQnKR zOd;VKAyYc{Yt2?~Val@AGka?9eqj=qa$Rl`on=$I^32UvAi;q@ftC58-yY$K9bpAF z7Tc!Xqx>ZyeQGb_uUcHt2JUAU5CCjr5Y=r+Bd<$>f%`mC#XI=B(a<{7g{^MmGLNI8=*FKjCRu z6R`lg@_;C*CTx|RWZSIr5TlU#ui5MZr8%%A&#ljsH=n%t!9sRzUm*3`A-!wjB&pM5 z%Bj=)--3;mM?f&)V*OCnPmR-|soeiyo>Sg8tV8+DIippmE(3?qu+H9!3H+6rF9n)s z-wKF^*qW$_sWzTdw|3kse50Hzou)io8s%t5GCGQ2!8VJipyC@oNF26j&pU|?!7LNo z9N}T=*w-RXae?xsR0fQIaO+3(wF>b-XQ)vBT~k&MwL>sSo~dclg*bF4L87x_tvRBo z(ytSAemfyE5;hX#3Mk4W$%mahGs`;ilP>j)w(j_ZD6?GA)Ce9{mQ=AKs|sI~NR@*- zK3ryL-3aH$RSe6nR+v5nf~B!#FEPd8jfaApO*P&uITDhJk68+|*y~*oprjRD$E98z zJbm$FBMN`~HT+^aF^bLEa?OyxMB?rdQgY&RM=~gh! z+v2d$^6GXgfAEWiLcPiibdd7YY!%5(7I`3hH*b#M-^dJza<5ZXAIu1!S7YxuX6)@nEFpOa>b zmZw{+%>4eA=K3rRPC^e-E~MAS`yl$6hui{7a)cH(h47qk8_6X2%Jzq^M_k6EPECEI zv<4xV_g;VpFx;*$$=*Ya(c54fz zCb32VCDbUvI@nyYvpDrSKv{myWHLzn_|@Y!j*hM9%Xje`-^;eF-!N_>0+l`r=M{H6 z1(SWW&5`oF=X|#5N~HAHV5Pz9*DzrZ&sp5v+bO*dKT?KQ57)RRnh?@xi+(_ab&pO* zkiz!J4>r;*dJ+jz?4-$1 zhSPrm9ks-t-e>tG2t7_%(V4!#x+v?YHKM5NX1%pS+&a?r)K7kqu1y|MWznQGt$HDI zDJjnGpZ4h}dG?*KH0i=oW4S-209VcXPX4tY*uf)OHLpA5iV9Y}i2UALtIpz=fAWlP^!EVyc-+(LT!D%#e%nlR!Lix9`Ptr7wR<&djd|fcRo>e<7u4 zy5>IJYwL2IF|Towb(yE6Hwjwk1GC#l9t-i*Ek=%wPXr{C&i&=rtq43h{S3B3SLZxl zc~4Uwggq02%v*`iipn+`XLdZBitz^q1BTDc0z}DH&d__pZ|U0oB;H>%(Di|PTq}5ub&#O!l}Tbez(zaE zI@*Wo4c}I?wf-3_$`mB&LiRppiVO=u&cAYdZIyYP8HTg1wI6huLVJCZ2y^kwWDy07 z3dUS(iK=axL(#?N!@ie&>Z_?s7j=pJgPh$m-|4@ASS_k6m0b1LN+% zX1+s1lv%CfA&)mM>rt}xB3}6~d8tN_WCmofZ-`mCzSNxpK|zIBLQ!)>Q;Vs!A#zk7 zO)&}+J)Dlv6ZYE&Az3%Fr5AIp&%6}Md`WmdtV#x%-6CmHMpWfN3QU@jLiNjU3n{vl z?w>rOah1sn;r4{57~_glHvZ-Wei*C5rE&Guukcr`4o;vAyY^+R*~7b3<`ImI=$~L~ zuFv`2TI=>XPn(TBDmNt1%6;_wy&IO9{5!(`W9Urdq3qr`KKqUt`)+3J`^Ju zB1Z-Q%%P)4>5+_efr%W@_YHc(t0)<0v>!*-Pm!;X(wKAAXYYmPn>z2H#j{7O&itsT z`~5^?5-a%ZHRQ{%mSfqmsu^wD5y9)HgOc4*ml`c?edif$%fk|6F;Hfe8%%kxu-R|tM-QGN2--t8dMgzK;VTd4j3zu!LU+;T!+;#(X18FmgA{e@f_(4 zoA=&D&q!n51zE-osLfN=tu4S+k~Dt!&`w}K?S0?|sp;d+<)^923a*YB=ZXhm9M$|r zRRi^$Y#ffu5uBwRRX&Y*JnoxtM!Ca(cv#IzXM(z(TvecZ>E`A%lR%J0rPe17l^j>% zJGW}mGeIV~aB_j>q&$>) zbAqy{3)aV4^2D9hr*rl3%vW9MM1x>d?K{4^Jg+~WNP85NmT$W%1@i?c#TLdIWE=vw z4@ZPxu2l49^Fs>I>_$;HcPfc$^RaCD%1>9Dz*T}`d6eO3$~4oV^Zn2k;%9ch~?v9!F$?jGrJ= z{W!PAm4Dfi3VEcht&k=;dAMkKKf&?gs^|sT14YbEQhw4p{oTE~}%SswdqE??N#X z;#+wwEgFg$SRNg_cdgH(;NXRoql1A$HATU)4en*jUOC%^0U>92P1!Tw;J)~ipV;^YQ+^xorK4?=En z$h%CD(fxYSyp1Yf%mHPTv$O911scFrDtz4b2G&3jpi{nAkC(&m6VerN4T z1>&QeF+sWMjxsgB42ypp)x=BQ6a}_u{~IMfeM5P>`;KDZ==t|s4jN+@)ab|we$+hu z?|Ty83|BcVU4I{>Uqf4+;PUkfxk&CPIc2_UcZ3=Mo@BObU%SSjpM>1D%Z%X09?8yH z53rnR=NU7bH9t2G?2vMN&$%aB?hWf8;{GCc{kti?L@mjbtJpD=RE(=7M`pEgvF>!E z5=~gv*h=soICvQ#dhpNzCu|XNg2IqMYVl&}O+-&fOVoeE#b_KV0MN6=TSF z7wlQZt#^DWGg>57p*HblEpA87ue+mYHYfAU*}n^x7Mo=G%7|byu+ITVca#smO1~AB zc~d4aLxtw;S~~Fh?r$d@S6k^Rok4e6_x->8Ic7SsFTk4Xv(Y@+VjGzG*oo zTh64bV0ESGRDINJYyqQvwfY~w#>16jXgDe)4IE6Ja8d(`=)_l*GQ?Q}`WI{X+`B&Z zP9JRAF4X^-cP_UQtY~7cy(g$!S6Q7i3o+RLh~86^{+CC>iJQ{?zQOFv@S>ci*z!%_OO_IQAMxhBxg&K{158zUAj!y4+AhIC`i{|&2hh7~uy(yel! zzg{`%Ol3y=FH@Y~9YHeAebM*S2&Cw;MdbRQm?Wj`1Vjy=nQgap|8@j@{!qdDVDWc?p!vWS z!7?s7Z^`?aAe?JMlXLp{6J42~WB~7*dD~n3Wh(tt^9h5(k5f1Gb0$GOzk0#h3f$>$ z=5^YsW7F}nt#7unUfSw4Sf**1L@L+2_cx5vuF@@)le z^IN-R4yA(@gU1v>t5JjODI3hR z07L*nCOTR=KL2i#!!+(6wm2>T!@qD-3XNm`*hI4Q#w1o-Rf8SUnmtHa% zF*H!p4}a*)9ZW*bh={;o;wtzfVZf^GhVGE6uk>_=xP6cg+&F^$?&g>V9N4r~O=J=F{3<*2EqeF!9 zNgBqe6dyfp`u)SSqOaej;rCy~rfeb>`AdlB^OZ&e%2d)vIHmszi07P{Q`j&48Z623 zal^x&Zcq2G=V|7tusROxy$MQCijHa%AO8}7i9H;YCaE_O$ED&2b+bppIaC@rls4 zi3NVFphDA6-Xmz$f;}!m73*Z+YVvSz9b>YAwGt$&v@5V2)LN_rn^13=xDn}(4W$m= z1d)o9&cEM@g}I+DuktF)v#UHU{uv`sl}wHh@wP8*5zo*gBaHO-NfEfG)c^gfX3SG@ zR+6C4tRXUNcktGPo6MrYPi&@^dA8nWaox^wUR=hNVek|4=oi;E%>`6Cn?V^W-klGB z^Gb7{fXiaD1FEb@69^kQ3waW-)Ycd|@ZNqHE;i?etz{sLk(A1PYuii_&&t3o{6j#a zSn!Rt_o7FP_voY8kUG80d;b2ra51sXGkC#+-}Q6&pW>fRXn9jNW)h-RL;_Zuvk#H2E;B7RG+(WaI)pzgaBT9jKRb#uVcF83weiZXsONt? z#YLF-TPF2iU^(cB}uy(DRUQKa=1Qs%ShVxc< zGsAhh1y>^bDoe(QO^Vn#?jJ>8Y~VoR_4`^%ifyGWHngX~=LX^*37t938b3$2*j~Le z0r@FA^y}g6zuTmT?dvb@HQe4{!K#K1)=*CU>FXUjotK_$1pTb4bPS_oSx_P$m4?e~ zP7>*Iv9i{+B|D~JK^QDRBcMgV?x7$<@`r}avHN+0l}wNt3+NKkSu0jURZw8O3qZub zxJF0ZQgO-!t`4~IeR37B_?{tn3!h~$VJOjax8CvUj8))jXL|n_@@T+X6~a9Nq+Lmr zSVLr+b<85_o7OD_5MsVH_!V63HyKLYRWonz67ffr z9F>*$Ya!f(iec0nT=OFTBCp%9B3Crx3Y#e!!?KYf=Ohk_I7)`V7OQd}=09T$rbw2*-Wpd3GMu|=bRx(F z_2b1&qkiCHceXC3mkQqYAeR}q-RNt;!;aZf9Bm`?YXTj^1BRNB*mYplXeZ2I$Wn$M z3*Gf zl0|(+B;t@(MZ`O|XRa%ri=XtcdnId<3GY1*|8lfC90 z7Rm5=aw>hdARK1sy@oh36KdviZBt%nO)dYpZLbc%K=yim1XtMYT(^+mxpwu44`92& zjkCo7n-CjZuI)aaSW>)NdQCAyAmjRHKk&pKz*M;aEX*ZC8*e2z8Ih$I=87_t?sTQH zz~a3t5NQZObMM*@s1|;vvh&Bym&dhJe@K9E56>-pEhZt;7eu8isT4!?HDq}20rsGq z=D*#!{nL#uq~^HBf6jRH0Z_zES0V6{d5B%cH=*fDaR}kG<%IL6_-qI4+mYae@tokV zFSrw2xZR=cY>2*VV9U_54?SXU$cCM!k4SB**q9`(K?N~H2?gzJvl22Kr@#RoV>5&! zcEG}Ri3A5d;F|PC=@7vzP%ZI9*{)caC9P*7t=?$nYg@Bg-e7MQqgkoqmG2#>B^R1KN>@Q-~ zU3K#NI^rZ36fTE7KNe4g9o4c=X_Jc6kV$C6VbX=#*2aej((Ytbr6Y)jH_gj{Rlfh~ zZVSY4;2LDH8wAKLhLr8NxC>WciS+R&3D>*z@kX4872#6^V_NHD$#k2}GMg{&T}6zg zQbXJ)E2h^nqfFziQ5hUv3ApPAp02j(t;8em5PgF{zDWn1-o1{0-3oVFpDWSwiLJGc{VnXU=ef?3J-oZ$fYlUqe>+`J(VK`}>Oa9qB+N4tTH$mNfidGGmRkw&s>C zp87$=6nOBHBd|;tsM`{PaA|vmkV*~vx=}y_NsNEzoe~# zM&tQ8vm54}KxrMgB(6A#CV7J^Ud@mSJ7D0-oS{|IAN^*aHgA)U+6d`A7MNrc&dATq zPz5@I40NJJ?CW82>O%YY^PPa+rflTubjl1HLq!tU?~qkIWJr+jG68w=>Auc*vqGVt zKieiI;UfJI^9hEVrYnnSTe!9N5s4fu@lvbmOHfuLPyQw^T>~{{yIDN&H&{`lem%8a z0-KJ-Q6#shRMz&AXuOsm?-&+9m@Hv5$HGkC!we$Y-PzCulvv_yz(&^5!*lWU_GMTR z{(Zd2*#;ZXo#@VgIbRC@hYCM2{Cps(OKl^pMwqi7kq&IT19Rb^1?$Bn_@7G$i?v1I z_Idi>1hCDn{3SeC+i|H|2TF7`Gi5J+x3kV0A%CE_6sR@0}6Y(UA8nl@FI&6pnAbaV? z4Ik9BYK`;)g$)9Qy#s}g2MTutoinI4?Bt{-@sMj%vq403Hyaa&L=^#i0kH_|uzWD( z%Te|dNRVuF!rTEW9q zNc`d>x|{R5qV+=JTmeUnKCdJJ#`y=mR_|wXL?Jk0gKf{EZ>7*`zBROgD#g1%L=sC2^msFP9max%&Zn z%#Sw9Tw+%)a}Oc2lxHBYdQcihz)I>l8mw`N)94=ux$Ma<+M-#b6ro{XuCb3Rbstdn zm$^4fctUa9&2B-dKC&bzFfb>UiZ9lhPZ0d4-nRZddHnOx0_wp}By%+(xF$m&m~UX1 z819G&a%jePxWA5Z=y%4yN$)~U;JJcrq9^j6{C(#5Bh;lmONoe=RRR$NgS$VKdA6w} z&Sw!KU-IPvDE$+PKeP9U0L&jY|2z-gt?ML@AO9LECXwN`f?gi-1hconaU?8^EC?XO z<;b`ji5{;w7#_jH<1Eg5ro%K)NHp-dWH+XlWKRBiBr6+dKo+X*I#Q|ZBOfOMGD`HW zmp>T|4*{X%7Ey8K$X-0Umvd}|!58-y$#e8ciB}Q@$)^gP(yWt-J#hBZq*0hHr&h2Q z^E0nm4VIT1zOKSm(V)xxbpF!-cm~gkPZ6p@3JB%PNkbfF0dKN6*f1ag<|;9qVIVeM zQ)d*o5W&+DiNcc9hzd;O+4yTo!Muba@t%PH%B^7h=k6`2CpT%kddmNmZyL-(#58A3 zkX$6E{#gf$F(WQBn;p+2gYLixYB4}t4o<7oSrsWNxQOG~m-7x+2i@fd&GlNJdPI=R zJ=}m&c{E`IWXOv?g3ma^Lo1B&g`MTU#58rf8(Z$|ak}!Oc_P1Lx93wTdaq(s*v`Eg z$4{q25yFH^O!rWbk!QlJaO~_2)(ocC@CFA%ZJ7x>u=6FM5x&$MP^E9sz06f8!Hx62 zfrP99oDH~rVSLAYLpNFAMDi=F9q)&*Tn7L7s~TH7ssVIakD!#-RzAjI87J<@gmE_u z_(e7%Q$@10{4&7H(HVwpuollLp$j}89o(ZyQ3+uign{Xs*^=kg4QwwusSH#IP(|0j z5>MDnDQ6|5BbwQ$Fk4I+4{lW#wE~ITyH~-Ca5-%ser|!UEk{@5$zRYSefNsIwo&@M z_<)~{y1(JfDwB{0K_$nQqHFnLv^j7HR~W=ag}pRs(HAtgoPlVXUe&^{QTd%?vYxW} zepXcMQ-xHzz4X;dKGYj)F};97#o%FYxr0S-vIG2(bjYunxP})LW$=kQ<%$(1hH`AZ zV08;(4!2aTV~Su3?xqbK)4}i$^H{#iSs;Af*X|L$gpIUoNt#o2=bjGpGk!%*>mB=Z zwM23JN|l#HL!js!9+|;reXK)-U9lMbtiaaH8G6#ckY_Jx>%-#c@kR%>m~M9Ijao|f zmIg{XAmStq;{Q1(3U6A*F>$8L{?Kd8Tdersy~|SiPA|VlMNoiwcv>)7H#tyuUO!Qb zAz(b0FrqJ2CBb}zJo?krY1aKWh8S#ST>YpI;7h`m1d1-xkFDVaLWoZvn#>r83H)ip z?DGWn*nF$_>ni}{s1UlBDxh~jcJCkx?cBlK5FvPT^jbS*+Te<{bYwSPakuAYyYj!^ z^?SOf1iE?0b|lo>D)C7Yq4K^TF7fgk>+52vb&+_e+Hl{SA7>YJ24_d~WI-4Iv4k$v zseb;Up@3KXu6)$DI^dulv4wYc1&SOc@cqou63)7^ljEyZZZCemF(|!ug~9GEB)=Ky zH&C*iFum~9C|DH1S-kgpncEuBOzg)h^X|#pt6kIUcalEO`F+l1dk(J_0|St0mf5<( z-UNXWfnJ`s_C17xN5zk`cf`)tRQrU;9DxpO6`S$4U8r6rPiJKH_HBM>8&Et;jCzI82kP;w`}8`BJ_}8 z__H8i06`-eno^y5kv(?Uw4-#faDL9hkR3!HEY<{XBneOeX^+%RAaC$L8p6~lxDY}^ z=%%~|B&EzKy>GSgd0{U4-cBWo(i#eK*4ZD{Kd(j|Qotv+htmZ>zY+z5BaXn$i+?0Y zB|sZC{JmH2T>JB~%OWIPVa2q6yfzkKJ|mLE=(-@y@7ejWTSJgXKlYT$zj~2B0sExB zt4B%@*~jLaJBSfVsyq~#ix{rq@(#0)<_X1TkCkW7cBZ8U1@Y^BFsixLtHB%)B-Omv z>%1LS*4~)E;yO@%e?ZfqADeDuxy~p5oJjJ$L<@P@ZAe&1p9uyi7*p4~C|b3e^LJx| zOGe;J-R$O#z^|JhbYBOv^6YP~JAp__;*y+G_Db$}2pb@>$(7FW^1-)dPZ!p0jj2P# z{q>&_H7u(hGSThUvMmbVu@3|y2io){&eV{oCf7arn8qI42w@gLf5oJPeObA{sw*!imGm*fRMsR@Y+X0FH>tXUjv z*guIq=*M6!vwyt)e&NSSEQNPxm~cjf?`NArJ7BH+NBP4dcM;%SiCXhxdZgP+0at&I zf$v+`vq8qg&u+f0Ys4#gHw-qaD(u(n7!6lvq3x8E?9F)B6s$D+|M|A%t#0nU=gGUd z|Kw&+9ccmapzj$(N#+V*Hkfy;=}uko?tMXRK*>4R`RHwn5D?y%#trYd&Sk>+gmpMO z^bw}GFy5el&DvEAWpv|RGVDVN$H=09jDUql?P-@1fc5qA+3;^821tjLs{@O`sI&Ny*@ zZ|!aPbLpd(_ac4-W057AEUnYaNu4j`7mEya>!v=i<)2mm5??(DH2gP>0n3j{nO9saSr= zYOJTVl)?-bikJ~KJHIpv0mm@!IWvHp}!a+xK+PqUDSg8` zC|4mlrdR~eD)W6MUy#z5E!VU59-&ZUu`up&3rKk-f6e8+aOmK}Ry$=*a=J_G_Fghp zbmrrsDGmmV&k%t<3#>^<)F5t?PdFw49Tx(_Pv7GQzGGbxj+oy-Z`Rq2pq2eXw914c z%SvoMw|@ZHs7WaB^7l`3SdUh+KDP%Lc~?Uy2@s;qFj_k;i+T0Hw}03g5u3w8OK)WZ zoPiK}X+FFxf@cZ;NX;g{Ufs}j*8kD)y8l?wyLuM+;?=og8$+LeOYEDzzb^Ao;}9#= zzihsnwf$^t@C+yYeMvUoO7pA~H*n2c!grwdF4J!Ql`p%IC)+OC$>Fjhya$OWA z9YHKin#{eGgVD>uN2SHL2zYf~%xtioVB{z^rF_km_W3U`%B}3(cx&jLicdCDZqM?p z4vRJwVTs$Dk}=9xle#~XT|b7+^w?+=4`M7kAC8h8sjgY%^PH~7+ligKrW6}MJT`yn z^i}LVSX(p6N_uI(c-nr!LGHn>^)W%{w+>~w<7!>=C1lJ&dk)FbbX+(AA!XX%iQhyM zbN`e$Dr8G}B|R(8M9m$u{12uWn1Q2}V~Z`t`ssOY8`|L5&vZZxF3WcZ#>|nA{EvaN z?lV&CnsT&-7cU|cey0CV;R#sY_)vlkP(&WySB-woE$YA8E83yrh{BhGrslIOc-$b(ar!12CpZo5lF84hyq&pvo{@j(!>e z%j_A&Z_MDyDZ|435n~!4f*NTl&+7`cNKRNc+m;k&$YNo_4c=zm_Etp4RD$JgAFKOY zE2`!9zupcD$7&Q1&N={wv1vxQ&5&A5UdDkX-sv26vlooez% zC-+@+5cf}rs=TkziC>>*Y;z+r^qaZZ8ysux0`iM0$$GISmK7dEKsr|r3kPAWBozYl zJb557lLy11t2^-3DJ7v|7pw3C&mU!zw&OS$!O5&MA;Ye98b#YIJfoDCm8+5<5J6J! zc7ME}=*=xfylM^~P1St!kpw5rFfgEr_M5_Ylvtc7?ji_ z^H8IB0^nUKvrm>=)_FW`{$6mG8$21-Obwbz;ev0X?)SP> z@EHOZMBG5`ols-%Kunkp*yo77NZT_mUmA_soJW<6Y$XN#dd(1c2!P3NHEL%d3j$yT zz=sM5q#bG0@#^kDL8ykj#0&2%RY+hqNqktahf}AFB_LI0kBHr4Wu)E7lJJzU!X?!( z!(0EfS~&Boho;;X30pOLGa!NvdDcuG=S|og6?`m|$s|vvny%qTjc5~xnuy%jTglNi zO;gkTm7lMVq(bav2gDw%CWe-U>{z_3BiV*jSs*u0QuR#$It-IHQhr=KLuW$STo;Xb zzCPWvlcCIC_af{18XgnnVw>-xvmiN&fX{}RK%4c>sVPv8sfPC(0>owaYbEB5a~^|8 zU367i`eA3MwNl;CPw@tSyC^R+=Q>>BzQ#NSCs|z|EtGjU-?h}~{nEsdbW!e*x#5WT z4)x8_LFhK$<&+VrKGHvU-c{{GL0FR^jcK*Uh61Ph`tDsM+TWvM#{uI8CBU^v_h8AU z&Jl@eD%@^ULO8W(UHFRRy82Kg+P#YTuy#R0WMx_)ImF7%P`>=tU8+f zfLUio|D{)aOHwWprQj2@o{}(SFq3}n&w5oW#!AapGeNLN|FaOO8)9dJ9roU*ZX9G- z{_k{bxLfI$gj}=lQy*M9^n$onOZQ0^WPtZ&V%-JQTZ8!AlNp{uV%+BOz;Ni}h_872zZ<7d@I%6oq3^E$ zRYwI>>e`0v(+-u|Z^_unzmsd;()5w4u^Ebt4&KQ0-@Vkg1k(Xd)f4;yoj9-gJ| zYxYhjK!@Nbf2`Ho>GV~|VuLoNN3-`Ozj~t3Up?9YHT0cM^z{_f9RT`{ zPF~d>dJ4}sN5YH((490?7hAH6hNaP6Y3yK`aHx+<=3%Dn<05}brq|YE5M9?m_o;vkO4RqN_f5zbp%JvB}3MC2ZPaMGo zcX{u@6&G@_9mhe(MjT3%bY@@jJ5&}+=CTgQ2E_*Ll)FZ-{lz?BUaZW4U$F8InUyxG z!30q_Ahm80BwFIrsC@VUl+;O$+RW0VBi<`r=*rI4oGFDK=C5dAG6y=@bir(_h<`Z7 znwsY63QL@U{mCk?0$!{dfqTuuSghQI@Qe3psQa9}+KIfF^Qc=S%p(#e?n&NNIyRpw zO%OBdO2iFKKoGn6dK{1(slf6@!dQ91!5T$(F2zEac4cPbaz~TkfPs%&5JfG#U?n2S zng(OgP-`jSg5uRqa7K#KSvzIK)VvOC7wVM_IZB5ZQ3>tkzLM#{%Yj(senpjGhrdfe zKP=xfY>nQgll9)|Ql(PSGS;(~{FA@+P3~P**r_bZErf)gzTZ?p0Uiy$SA5;m=ZSnF zs1Be{L+0yv3R%ZoZH6&AOZ<45WfWC49Z@Pd(r7jdT9V3sTxvT|8oO7jIRihtl)C6r z_L7cNqo*z}0Mon5{Cl8YJZrDVF?HS0GdmKsv+h;j;P-aRFS^6xXvlIZ_8|vdTUpUb zt?Q&A+fuN+bJ#n3dDYk>2PYLn;yo_ej_1oihNv3hzKHqSE+yc4W$GKWk8=xNysFe! zJ{@9MXo0x#I{|l)h<*6o`Hg`yqPr@7f&Xm;c8-R|<`kufo^8slMt_4w;^E=+CV@nl zuh_Lpv1@R$<2L@*#jb108$vq4r!V1H+$z3t4&U0SB3vTzS>_2cMgNC;L*vf^>Kb$2 z(m_wi0Q600wf?kf9mW5v7plQtks~Wi6}F=xb)zhW?n=?|Ia%z?X+v=x6UA?;sd2`s zF$j>dUaDzTY*fTeCL6u6aQg`W^Mr$hFPAEp#4e4urZK2O-O%#KP`@2`GD$5NfNZF% zWwDLvJlNc?+JkZcx_bvzGf~k=$DWPEUd5uj*vL=S9iJrYT@x)Ibj3eUzl500hcOZu zA0z1=Nm^p$|8ObgcMHlR^$fwP8{K@HHf�B-Jv#}vJ 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�a4S%JH4VVWA>3ytvonpfW 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

    s~hw8J-s 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

    $ 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⁢EvTq5G=_~tGy{ggp|4NVlQ^u7kZiybKv}- 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%0DNw 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 data = arguments.first! as Map; var json = data["data"]; QuestionModel newQuestion = QuestionModel.fromJson(json); - context.read().onNewQuestionReceived(newQuestion); + context.read().onNewQuestionReceived(newQuestion, context); } } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index bdeeecd..fb7079f 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -25,7 +25,18 @@ class ApiConsts { static String chatSingleUserHistoryUrl = chatServerBaseApiUrl + "UserChatHistory/"; static String chatMediaImageUploadUrl = chatServerBaseApiUrl + "shared/"; static String chatFavUser = chatServerBaseApiUrl + "FavUser/"; - static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; + static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; + + //Brain Marathon Constants + static String marathonBaseUrl = "https://18.188.181.12/service/"; + static String marathonParticipantLoginUrl = marathonBaseUrl + "api/auth/participantlogin"; + static String marathonProjectGetUrl = marathonBaseUrl + "api/Project/Project_Get"; + static String marathonUpcomingUrl = marathonBaseUrl + "api/marathon/upcoming/"; + static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; + + //DummyCards for the UI + + static CardContent dummyQuestion = const CardContent(); } class SharedPrefsConsts { diff --git a/lib/classes/lottie_consts.dart b/lib/classes/lottie_consts.dart index 24dc423..d7d38bc 100644 --- a/lib/classes/lottie_consts.dart +++ b/lib/classes/lottie_consts.dart @@ -5,5 +5,6 @@ class MyLottieConsts { static const String winnerLottie = "assets/lottie/winner3.json"; static const String allQuestions = "assets/lottie/all_questions.json"; static const String wrongAnswerGif = "assets/images/wrong_answer.gif"; + static const String congratsGif = "assets/images/congrats.gif"; } diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 3546f6b..3261149 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -118,8 +118,9 @@ extension EmailValidator on String { style: TextStyle(color: color ?? MyColors.darkTextColor, fontSize: 17, letterSpacing: -0.68, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), ); - Widget toText18({Color? color, bool isBold = false}) => Text( + Widget toText18({Color? color, bool isBold = false, bool isCentered = false}) => Text( this, + textAlign: isCentered ? TextAlign.center : null, style: TextStyle(fontSize: 18, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -1.08), ); diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 2f7efcc..08f8ad4 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -490,5 +490,7 @@ abstract class LocaleKeys { static const yourAnswerCorrect = 'yourAnswerCorrect'; static const youMissedTheQuestion = 'youMissedTheQuestion'; static const wrongAnswer = 'wrongAnswer'; + static const oops = 'oops'; + static const winner = 'winner'; } diff --git a/lib/ui/marathon/marathon_intro_screen.dart b/lib/ui/marathon/marathon_intro_screen.dart index d85a82f..ef29809 100644 --- a/lib/ui/marathon/marathon_intro_screen.dart +++ b/lib/ui/marathon/marathon_intro_screen.dart @@ -1,21 +1,13 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:lottie/lottie.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; -import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/date_uitl.dart'; -import 'package:mohem_flutter_app/classes/decorations_helper.dart'; -import 'package:mohem_flutter_app/classes/lottie_consts.dart'; -import 'package:mohem_flutter_app/classes/utils.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; -import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_details_card.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_footer.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_timer_card.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; -import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:provider/provider.dart'; class MarathonIntroScreen extends StatelessWidget { @@ -44,179 +36,3 @@ class MarathonIntroScreen extends StatelessWidget { } } -class MarathonDetailsCard extends StatelessWidget { - final MarathonProvider provider; - - const MarathonDetailsCard({Key? key, required this.provider}) : super(key: key); - - @override - Widget build(BuildContext context) { - return Container( - width: double.infinity, - decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 14), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.contestTopicAbout.tr().toText16(color: MyColors.grey77Color), - "${AppState().isArabic(context) ? provider.marathonDetailModel.titleAr : provider.marathonDetailModel.titleEn}".toText20(color: MyColors.textMixColor, isBold: true), - Row( - children: [ - Flexible( - child: "${AppState().isArabic(context) ? provider.marathonDetailModel.descAr : provider.marathonDetailModel.descEn}".toText14(color: MyColors.grey77Color), - ) - ], - ), - if (provider.itsMarathonTime && provider.marathonDetailModel.sponsors != null) ...[ - 5.height, - provider.marathonDetailModel.sponsors?.first.sponsorPrizes != null - ? Row( - children: [ - "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), - "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr : provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr}" - .toText16(color: MyColors.greenColor, isBold: true), - ], - ) - : const SizedBox(), - Row( - children: [ - "${LocaleKeys.sponsoredBy.tr()} ".toText16(color: MyColors.grey77Color), - "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.nameAr : provider.marathonDetailModel.sponsors?.first.nameEn}" - .toText16(color: MyColors.darkTextColor, isBold: true), - ], - ), - 10.height, - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.network( - provider.marathonDetailModel.sponsors!.first.image!, - height: 40, - width: 150, - fit: BoxFit.fill, - errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { - return const Center(); - }, - ) - ], - ), - ] - ], - ), - ], - ), - ); - } -} - -class MarathonTimerCard extends StatelessWidget { - final int timeToMarathon; - final MarathonProvider provider; - - const MarathonTimerCard({ - Key? key, - required this.provider, - required this.timeToMarathon, - }) : super(key: key); - - @override - Widget build(BuildContext context) { - return Container( - width: double.infinity, - decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 14), - child: Column( - children: [ - Row( - children: [ - "${LocaleKeys.gameDate.tr()} ".toText16(color: MyColors.grey77Color), - DateUtil.getMonthDayYearDateFormatted(DateTime.parse(provider.marathonDetailModel.startTime!)).toText16(color: MyColors.darkTextColor, isBold: true), - ], - ), - Row( - children: [ - "${LocaleKeys.gameTime.tr()} ".toText16(color: MyColors.grey77Color), - DateUtil.formatDateToTimeLang(DateTime.parse(provider.marathonDetailModel.startTime!), AppState().isArabic(context)).toText16(color: MyColors.darkTextColor, isBold: true), - ], - ), - Lottie.asset(MyLottieConsts.hourGlassLottie, height: 200), - BuildCountdownTimer(timeToMarathon: timeToMarathon, provider: provider, screenFlag: 1), - ], - ), - ); - } -} - -class MarathonFooter extends StatelessWidget { - final MarathonProvider provider; - - const MarathonFooter({ - Key? key, - required this.provider, - }) : super(key: key); - - Widget buildNoteForDemo() { - return RichText( - text: TextSpan( - children: [ - TextSpan( - text: LocaleKeys.note.tr(), - style: const TextStyle(color: MyColors.darkTextColor, fontSize: 17, letterSpacing: -0.64, fontWeight: FontWeight.bold), - ), - TextSpan( - text: " " + LocaleKeys.demoMarathonNoteP1.tr(), - style: const TextStyle(color: MyColors.grey77Color, fontSize: 17, letterSpacing: -0.64, fontWeight: FontWeight.w500), - ), - TextSpan( - text: " " + LocaleKeys.demoMarathonNoteP2.tr(), - style: const TextStyle(color: MyColors.darkTextColor, fontSize: 17, fontWeight: FontWeight.bold), - ), - TextSpan( - text: " " + LocaleKeys.demoMarathonNoteP3.tr(), - style: const TextStyle(color: MyColors.grey77Color, fontSize: 17, letterSpacing: -0.64, fontWeight: FontWeight.w500), - ) - ], - ), - ).paddingOnly(right: 21, left: 21, top: 11, bottom: 0); - } - - @override - Widget build(BuildContext context) { - return !provider.itsMarathonTime - ? DefaultButton( - LocaleKeys.joinMarathon.tr(), - () async { - Utils.showLoading(context); - try { - provider.resetValues(); - await provider.connectSignalrAndJoinMarathon(context); - } catch (e, s) { - Utils.confirmDialog(context, e.toString()); - print(s); - } - Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.marathonScreen); - }, - ).insideContainer - : Container( - color: Colors.white, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - buildNoteForDemo(), - DefaultButton( - LocaleKeys.joinDemoMarathon.tr(), - () { - provider.connectSignalrAndJoinMarathon(context); - }, - color: MyColors.yellowColorII, - ).insideContainer, - ], - ), - ); - } -} diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index b629b36..a178710 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -4,6 +4,8 @@ import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; @@ -19,18 +21,30 @@ class MarathonProvider extends ChangeNotifier { int? selectedOptionIndex; int currentQuestionTime = 0; - - void onNewQuestionReceived(QuestionModel newQuestion) { - if (currentQuestionNumber > 0) { - swipeCardLeft(); + int totalSecondsToWaitForWinner = 30; + int totalQualifiers = 0; + + void onNewQuestionReceived(QuestionModel newQuestion, BuildContext context) { + if (currentQuestionNumber < marathonDetailModel.totalQuestions!) { + if (currentQuestionNumber == 0) { + if (Utils.isLoading) { + Utils.hideLoading(context); + } + startTimerForQuestion(context); + Navigator.pushNamed(context, AppRoutes.marathonScreen); + } + if (currentQuestionNumber > 0) { + swipeCardLeft(); + } + print("I received a new question and time is $currentQuestionTime and number is $currentQuestionNumber"); + selectedOptionIndex = null; + currentQuestionNumber++; + currentQuestion = newQuestion; + cardContentList.add(const CardContent()); + currentQuestionTime = newQuestion.questionTime!; + questionCardStatus = QuestionCardStatus.question; + notifyListeners(); } - selectedOptionIndex = null; - currentQuestionNumber++; - currentQuestion = newQuestion; - cardContentList.add(const CardContent()); - currentQuestionTime = newQuestion.questionTime!; - questionCardStatus = QuestionCardStatus.question; - notifyListeners(); } void addItemToList(CardContent value) { @@ -128,11 +142,11 @@ class MarathonProvider extends ChangeNotifier { } } - Timer timerU = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); + Timer timerForQuestion = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); - void startTimer(BuildContext context) { + void startTimerForQuestion(BuildContext context) { const Duration oneSec = Duration(seconds: 1); - timerU = Timer.periodic( + timerForQuestion = Timer.periodic( oneSec, (Timer timer) async { if (currentQuestionTime == 2) { @@ -140,19 +154,14 @@ class MarathonProvider extends ChangeNotifier { } if (currentQuestionTime == 0) { updateCardStatusToAnswer(); - // if (currentQuestionNumber == 9) { - // timer.cancel(); - // cancelTimer(); - // isMarathonCompleted = true; - // await Future.delayed(const Duration(seconds: 2)).whenComplete( - // () => Navigator.pushReplacementNamed(context, AppRoutes.marathonWinnerSelection), - // ); - // - // resetValues(); - // - // return; - // } - // timer.cancel(); + //todo: we will need to remove this -2 when API is all set + if (currentQuestionNumber == marathonDetailModel.totalQuestions! - 1) { + updateQuestionCardStatus(QuestionCardStatus.findingWinner); + timer.cancel(); + cancelTimer(); + notifyListeners(); + return; + } } else { currentQuestionTime--; } @@ -161,18 +170,39 @@ class MarathonProvider extends ChangeNotifier { ); } - void resetValues() { + Timer timerForWinnerSelection = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); + void startTimerForWinnerSelection() { + const Duration oneSec = Duration(seconds: 1); + timerForWinnerSelection = Timer.periodic( + oneSec, + (Timer timer) async { + + if (totalSecondsToWaitForWinner == 0) { + cancelTimer(); + updateQuestionCardStatus(QuestionCardStatus.winnerFound); + return; + } + totalSecondsToWaitForWinner--; + notifyListeners(); + }, + ); + } + + void resetValues() async { _currentQuestionNumber = 0; cardContentList.clear(); - timerU.cancel(); + timerForWinnerSelection.cancel(); + timerForQuestion.cancel(); _isMarathonCompleted = false; currentQuestionTime = 0; currentQuestion = QuestionModel(); + notifyListeners(); } void cancelTimer() { - timerU.cancel(); + timerForWinnerSelection.cancel(); + timerForQuestion.cancel(); notifyListeners(); } @@ -186,7 +216,15 @@ class MarathonProvider extends ChangeNotifier { }); } - Future connectSignalrAndJoinMarathon(BuildContext context) async { - await MarathonApiClient().buildHubConnection(context); + Future onJoinMarathonPressed(BuildContext context) async { + Utils.showLoading(context); + try { + resetValues(); + await MarathonApiClient().buildHubConnection(context); + } catch (e, s) { + Utils.hideLoading(context); + print("error in onJoinMarathonPressed: ${e.toString()}"); + Utils.confirmDialog(context, e.toString()); + } } } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 79d61fe..08ae2b2 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -2,7 +2,9 @@ import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; import 'package:lottie/lottie.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; @@ -10,8 +12,11 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_progress_container.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_qualifiers_container.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card_builder.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; @@ -20,179 +25,173 @@ import 'package:provider/provider.dart'; class MarathonScreen extends StatelessWidget { const MarathonScreen({Key? key}) : super(key: key); - @override - Widget build(BuildContext context) { - MarathonProvider provider = context.watch(); - return WillPopScope( - child: Scaffold( - appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), - body: SingleChildScrollView( - child: Column( - children: [ - 20.height, - MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), - QuestionCardBuilder( - onQuestion: (BuildContext context) => QuestionCard(provider: provider), - onCompleted: (BuildContext context) => CustomStatusWidget( - asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), - title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), - subTitle: LocaleKeys.allQuestionsCorrect.toText18(color: MyColors.darkTextColor), - ), - onCorrectAnswer: (BuildContext context) => CustomStatusWidget( - asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), - title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), - subTitle: LocaleKeys.yourAnswerCorrect.toText18(color: MyColors.darkTextColor), - ), - onWinner: (BuildContext context) => QuestionCard(provider: provider), - onWrongAnswer: (BuildContext context) => CustomStatusWidget( - asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), - title: const Text(""), - subTitle: LocaleKeys.wrongAnswer.tr().toText18(color: MyColors.darkTextColor), - ), - onSkippedAnswer: (BuildContext context) => CustomStatusWidget( - asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), - title: const Text(""), - subTitle: LocaleKeys.youMissedTheQuestion.tr().toText18(color: MyColors.darkTextColor), - ), - questionCardStatus: provider.questionCardStatus, - onFindingWinner: (BuildContext context) => CustomStatusWidget( - asset: Lottie.asset(MyLottieConsts.winnerLottie, height: 168), - title: LocaleKeys.fingersCrossed.tr().toText22(color: MyColors.greenColor), - subTitle: LocaleKeys.winnerSelectedRandomly.tr().toText18(color: MyColors.darkTextColor), - ), - ).paddingOnly(top: 12, left: 21, right: 21), - ], - ), - ), - ), - onWillPop: () { - provider.resetValues(); - return Future.value(true); - }, - ); - } -} - -class MarathonProgressContainer extends StatefulWidget { - final MarathonProvider provider; - - const MarathonProgressContainer({Key? key, required this.provider}) : super(key: key); - - @override - State createState() => _MarathonProgressContainerState(); -} - -class _MarathonProgressContainerState extends State { - @override - void initState() { - scheduleMicrotask(() { - widget.provider.startTimer(context); - }); - super.initState(); - } - - @override - void dispose() { - super.dispose(); + Widget getSuccessWidget({required int? gapType, required String? gapImage, required String? gapText}) { + if (gapType == 1) { + if (gapText == null) { + return Image.asset(MyLottieConsts.congratsGif, height: 200); + } + return gapText.toText18(color: MyColors.darkTextColor, isCentered: true); + } + if (gapType == 2) { + if (gapImage == null) { + return Image.asset(MyLottieConsts.congratsGif, height: 200); + } + return Image.network(gapImage, height: 200); + } + return Image.asset(MyLottieConsts.congratsGif, height: 200); } - @override - Widget build(BuildContext context) { + Widget getWinnerWidget(BuildContext context, {required MarathonProvider provider}) { + provider.startTimerForWinnerSelection(); return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 13), + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), child: Column( - mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Container( - decoration: BoxDecoration(color: MyColors.greenColor, borderRadius: BorderRadius.circular(5)), - padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), - child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}" - .toText12(color: MyColors.white), - ), - "${widget.provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), - "00:${widget.provider.currentQuestionTime < 10 ? "0${widget.provider.currentQuestionTime}" : widget.provider.currentQuestionTime}" - .toText18(color: widget.provider.currentQuestionTime < 5 ? MyColors.redColor : MyColors.black), - ], + SizedBox( + height: 200, + child: Stack( + children: [ + Lottie.asset(MyLottieConsts.celebrate1Lottie, height: 200), + Lottie.asset(MyLottieConsts.celebrate2Lottie, height: 200), + ], + ), ), - 12.height, - stepper(widget.provider.currentQuestionNumber), - 8.height, - Row( - children: [ - "${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(), - ], + 26.height, + SizedBox( + height: 50, + child: Stack( + children: [ + Align( + alignment: Alignment.center, + child: SvgPicture.asset("assets/images/winner_ribbon.svg", height: 50), + ), + Align( + alignment: Alignment.center, + child: LocaleKeys.winner.tr().toText32(color: MyColors.white, isBold: true).paddingOnly(top: 07), + ) + ], + ), ), + 12.height, + "Muhammad Shrouff".toText22(color: MyColors.grey3AColor), + "837436".toText22(color: MyColors.grey57Color), + 80.height, + if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + LocaleKeys.sponsoredBy.tr().toText14(color: MyColors.grey77Color), + (AppState().isArabic(context) ? provider.marathonDetailModel.sponsors!.first.nameEn ?? "" : provider.marathonDetailModel.sponsors!.first.nameAr ?? "").toText14( + color: MyColors.darkTextColor, + isBold: true, + ), + ], + ), + 5.height, + Image.network( + provider.marathonDetailModel.sponsors!.first.image!, + height: 40, + width: 150, + fit: BoxFit.fill, + errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + return const Center(); + }, + ) + ], ], ), - ); + ).paddingOnly(left: 21, right: 21); } - Widget stepper(int value) { - return SizedBox( - width: double.infinity, + Widget getNameContainer() { + return Container( + height: 50, + padding: const EdgeInsets.symmetric(horizontal: 20), + decoration: BoxDecoration( + color: MyColors.greenColor, + borderRadius: BorderRadius.circular(15), + boxShadow: [BoxShadow(color: const Color(0xff000000).withOpacity(.05), blurRadius: 26, offset: const Offset(0, -3))], + ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - for (int i = 0; i < 10; i++) - if (value <= i) roundContainer(MyColors.lightGreyDeColor, i != 0) else roundContainer(MyColors.greenColor, i != 0) + children: [ + "Muhammad Shrouff".toText17(isBold: true, color: MyColors.white), + "837436".toText17(isBold: true, color: MyColors.white), ], ), - ); + ).paddingOnly(left: 20, right: 20, top: 12, bottom: 20); } - Widget roundContainer(Color color, bool isNeedLeftBorder) { - if (isNeedLeftBorder) { - return Row( - children: [ - Divider(thickness: 6, color: color).expanded, - Container( - width: 10, - height: 10, - decoration: BoxDecoration(shape: BoxShape.circle, color: color), + @override + Widget build(BuildContext context) { + MarathonProvider provider = context.watch(); + return WillPopScope( + child: Scaffold( + appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), + body: SingleChildScrollView( + child: Column( + children: [ + 20.height, + if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ + const QualifiersContainer().paddingOnly(left: 21, right: 21), + ] else if (provider.questionCardStatus == QuestionCardStatus.winnerFound) + ...[] + else ...[ + MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), + ], + if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ + InkWell( + onTap: () { + provider.updateQuestionCardStatus(QuestionCardStatus.winnerFound); + }, + child: getNameContainer(), + ), + ], + if (provider.questionCardStatus == QuestionCardStatus.winnerFound) ...[ + getWinnerWidget(context, provider: provider), + ] else ...[ + QuestionCardBuilder( + onQuestion: (BuildContext context) => QuestionCard(provider: provider), + onCompleted: (BuildContext context) => CustomStatusWidget( + asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), + title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.allQuestionsCorrect.toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onCorrectAnswer: (BuildContext context) => CustomStatusWidget( + asset: getSuccessWidget(gapType: provider.currentQuestion.gapType, gapImage: provider.currentQuestion.gapImage, gapText: provider.currentQuestion.gapText), + title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.yourAnswerCorrect.toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onWinner: (BuildContext context) => QuestionCard(provider: provider), + onWrongAnswer: (BuildContext context) => CustomStatusWidget( + asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), + title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), + subTitle: LocaleKeys.wrongAnswer.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onSkippedAnswer: (BuildContext context) => CustomStatusWidget( + asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), + title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), + subTitle: LocaleKeys.youMissedTheQuestion.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onFindingWinner: (BuildContext context) => CustomStatusWidget( + asset: Lottie.asset(MyLottieConsts.winnerLottie, height: 168), + title: LocaleKeys.fingersCrossed.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.winnerSelectedRandomly.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + questionCardStatus: provider.questionCardStatus, + ).paddingOnly(top: 12, left: 21, right: 21), + ], + ], ), - ], - ).expanded; - } - - return Container( - width: 10, - height: 10, - decoration: BoxDecoration(shape: BoxShape.circle, color: color), + ), + ), + onWillPop: () { + provider.resetValues(); + return Future.value(true); + }, ); } } - -// InkWell( -// onTap: () { -// Navigator.pushReplacementNamed( -// context, -// AppRoutes.marathonWinnerSelection, -// ); -// }, -// child: CustomStatusWidget( -// asset: Lottie.asset( -// MyLottieConsts.allQuestions, -// height: 200, -// ), -// title: Text( -// LocaleKeys.congrats.tr(), -// style: const TextStyle( -// height: 23 / 24, -// color: MyColors.greenColor, -// fontSize: 27, -// letterSpacing: -1, -// fontWeight: FontWeight.w600, -// ), -// ), -// subTitle: Text( -// LocaleKeys.allQuestionsCorrect.tr(), -// textAlign: TextAlign.center, -// style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600, color: MyColors.darkTextColor, letterSpacing: -1.08), -// ), -// ).paddingOnly(top: 12, left: 21, right: 21), -// ) diff --git a/lib/ui/marathon/marathon_winner_selection.dart b/lib/ui/marathon/marathon_winner_selection.dart index 1f56801..6aeb3d2 100644 --- a/lib/ui/marathon/marathon_winner_selection.dart +++ b/lib/ui/marathon/marathon_winner_selection.dart @@ -1,10 +1,7 @@ -import 'dart:async'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:lottie/lottie.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -13,6 +10,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_qualifiers_container.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; @@ -28,7 +26,7 @@ class MarathonWinnerSelection extends StatelessWidget { child: Column( children: [ 20.height, - QualifiersContainer(provider: provider).paddingOnly(left: 21, right: 21), + const QualifiersContainer().paddingOnly(left: 21, right: 21), 12.height, InkWell( onTap: () { @@ -90,60 +88,3 @@ class MarathonWinnerSelection extends StatelessWidget { ); } } - -class QualifiersContainer extends StatefulWidget { - final MarathonProvider provider; - - const QualifiersContainer({Key? key, required this.provider}) : super(key: key); - - @override - State createState() => _QualifiersContainerState(); -} - -class _QualifiersContainerState extends State { - final int totalQuestions = 10; - - final int currentQuestion = 04; - - @override - void initState() { - scheduleMicrotask(() { - // widget.provider.startTimer(context); - }); - super.initState(); - } - - @override - void dispose() { - // widget.provider.cancelTimer(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return Container( - width: double.infinity, - decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.only(top: 14,left: 18,right: 14,bottom: 18), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.winnerSelection.tr().toText21(color: MyColors.grey3AColor), - // "00:${widget.provider.start < 10 ? "0${widget.provider.start}" : widget.provider.start}".toText18(color: MyColors.redColor), - ], - ), - 10.height, - Row( - children: [ - "18".toText30(color: MyColors.greenColor, isBold: true),2.width, - LocaleKeys.qualifiers.tr().toText16(color: MyColors.greenColor), - ], - ), - ], - ), - ); - } -} diff --git a/lib/ui/marathon/widgets/custom_status_widget.dart b/lib/ui/marathon/widgets/custom_status_widget.dart index 8287bb4..44b44aa 100644 --- a/lib/ui/marathon/widgets/custom_status_widget.dart +++ b/lib/ui/marathon/widgets/custom_status_widget.dart @@ -22,6 +22,7 @@ class CustomStatusWidget extends StatelessWidget { decoration: MyDecorations.shadowDecoration, padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), child: Column( + mainAxisAlignment: MainAxisAlignment.center, children: [ asset, 50.height, diff --git a/lib/ui/marathon/widgets/marathon_details_card.dart b/lib/ui/marathon/widgets/marathon_details_card.dart new file mode 100644 index 0000000..b74b78b --- /dev/null +++ b/lib/ui/marathon/widgets/marathon_details_card.dart @@ -0,0 +1,82 @@ + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/decorations_helper.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; + + + +class MarathonDetailsCard extends StatelessWidget { + final MarathonProvider provider; + + const MarathonDetailsCard({Key? key, required this.provider}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + decoration: MyDecorations.shadowDecoration, + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 14), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.contestTopicAbout.tr().toText16(color: MyColors.grey77Color), + "${AppState().isArabic(context) ? provider.marathonDetailModel.titleAr : provider.marathonDetailModel.titleEn}".toText20(color: MyColors.textMixColor, isBold: true), + Row( + children: [ + Flexible( + child: "${AppState().isArabic(context) ? provider.marathonDetailModel.descAr : provider.marathonDetailModel.descEn}".toText14(color: MyColors.grey77Color), + ) + ], + ), + if (provider.itsMarathonTime && provider.marathonDetailModel.sponsors != null) ...[ + 5.height, + provider.marathonDetailModel.sponsors?.first.sponsorPrizes != null + ? Row( + children: [ + "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), + "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr : provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr}" + .toText16(color: MyColors.greenColor, isBold: true), + ], + ) + : const SizedBox(), + Row( + children: [ + "${LocaleKeys.sponsoredBy.tr()} ".toText16(color: MyColors.grey77Color), + "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.nameAr : provider.marathonDetailModel.sponsors?.first.nameEn}" + .toText16(color: MyColors.darkTextColor, isBold: true), + ], + ), + 10.height, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.network( + provider.marathonDetailModel.sponsors!.first.image!, + height: 40, + width: 150, + fit: BoxFit.fill, + errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + return const Center(); + }, + ) + ], + ), + ] + ], + ), + ], + ), + ); + } +} + diff --git a/lib/ui/marathon/widgets/marathon_footer.dart b/lib/ui/marathon/widgets/marathon_footer.dart new file mode 100644 index 0000000..b5083c0 --- /dev/null +++ b/lib/ui/marathon/widgets/marathon_footer.dart @@ -0,0 +1,66 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; + +class MarathonFooter extends StatelessWidget { + final MarathonProvider provider; + + const MarathonFooter({ + Key? key, + required this.provider, + }) : super(key: key); + + Widget buildNoteForDemo() { + return RichText( + text: TextSpan( + children: [ + TextSpan( + text: LocaleKeys.note.tr(), + style: const TextStyle(color: MyColors.darkTextColor, fontSize: 17, letterSpacing: -0.64, fontWeight: FontWeight.bold), + ), + TextSpan( + text: " " + LocaleKeys.demoMarathonNoteP1.tr(), + style: const TextStyle(color: MyColors.grey77Color, fontSize: 17, letterSpacing: -0.64, fontWeight: FontWeight.w500), + ), + TextSpan( + text: " " + LocaleKeys.demoMarathonNoteP2.tr(), + style: const TextStyle(color: MyColors.darkTextColor, fontSize: 17, fontWeight: FontWeight.bold), + ), + TextSpan( + text: " " + LocaleKeys.demoMarathonNoteP3.tr(), + style: const TextStyle(color: MyColors.grey77Color, fontSize: 17, letterSpacing: -0.64, fontWeight: FontWeight.w500), + ) + ], + ), + ).paddingOnly(right: 21, left: 21, top: 11, bottom: 0); + } + + @override + Widget build(BuildContext context) { + return DefaultButton( + LocaleKeys.joinMarathon.tr(), + !provider.itsMarathonTime ? () => provider.onJoinMarathonPressed(context) : null, + ).insideContainer; + } +} + +//Container( +// color: Colors.white, +// child: Column( +// mainAxisSize: MainAxisSize.min, +// children: [ +// buildNoteForDemo(), +// DefaultButton( +// LocaleKeys.joinDemoMarathon.tr(), +// () { +// provider.connectSignalrAndJoinMarathon(context); +// }, +// color: MyColors.yellowColorII, +// ).insideContainer, +// ], +// ), +// ); diff --git a/lib/ui/marathon/widgets/marathon_progress_container.dart b/lib/ui/marathon/widgets/marathon_progress_container.dart new file mode 100644 index 0000000..fbf0428 --- /dev/null +++ b/lib/ui/marathon/widgets/marathon_progress_container.dart @@ -0,0 +1,98 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/decorations_helper.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/marathon/question_model.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; + +class MarathonProgressContainer extends StatefulWidget { + final MarathonProvider provider; + + const MarathonProgressContainer({Key? key, required this.provider}) : super(key: key); + + @override + State createState() => _MarathonProgressContainerState(); +} + +class _MarathonProgressContainerState extends State { + @override + void initState() { + widget.provider.startTimerForQuestion(context); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + decoration: MyDecorations.shadowDecoration, + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 13), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + decoration: BoxDecoration(color: MyColors.greenColor, borderRadius: BorderRadius.circular(5)), + padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), + child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}" + .toText12(color: MyColors.white), + ), + "${widget.provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), + "00:${widget.provider.currentQuestionTime < 10 ? "0${widget.provider.currentQuestionTime}" : widget.provider.currentQuestionTime}" + .toText18(color: widget.provider.currentQuestionTime < 5 ? MyColors.redColor : MyColors.black), + ], + ), + 12.height, + stepper(widget.provider.currentQuestionNumber, widget.provider.questionCardStatus), + 8.height, + Row( + children: [ + "${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(), + ], + ), + ], + ), + ); + } + + Widget stepper(int value, QuestionCardStatus status) { + print("Here Status: $status"); + return SizedBox( + width: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + for (int i = 0; i < 10; i++) + if (value <= i) roundContainer(MyColors.lightGreyDeColor, i != 0) else roundContainer(status == QuestionCardStatus.correctAnswer ? MyColors.greenColor : MyColors.redColor, i != 0) + ], + ), + ); + } + + Widget roundContainer(Color color, bool isNeedLeftBorder) { + if (isNeedLeftBorder) { + return Row( + children: [ + Divider(thickness: 6, color: color).expanded, + Container( + width: 10, + height: 10, + decoration: BoxDecoration(shape: BoxShape.circle, color: color), + ), + ], + ).expanded; + } + + return Container( + width: 10, + height: 10, + decoration: BoxDecoration(shape: BoxShape.circle, color: color), + ); + } +} diff --git a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart new file mode 100644 index 0000000..50a7e6d --- /dev/null +++ b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart @@ -0,0 +1,47 @@ +import 'dart:async'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/decorations_helper.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:provider/provider.dart'; + +class QualifiersContainer extends StatelessWidget { + + const QualifiersContainer({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + MarathonProvider provider = context.watch(); + return Container( + width: double.infinity, + decoration: MyDecorations.shadowDecoration, + padding: const EdgeInsets.only(top: 14, left: 18, right: 14, bottom: 18), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.winnerSelection.tr().toText21(color: MyColors.grey3AColor), + "00:${provider.totalSecondsToWaitForWinner < 10 ? "0${provider.totalSecondsToWaitForWinner}" : provider.totalSecondsToWaitForWinner}" + .toText18(color: MyColors.redColor), + ], + ), + 10.height, + Row( + children: [ + provider.totalQualifiers.toString().toText30(color: MyColors.greenColor, isBold: true), + 2.width, + LocaleKeys.qualifiers.tr().toText16(color: MyColors.greenColor), + ], + ), + ], + ), + ); + } +} diff --git a/lib/ui/marathon/widgets/marathon_timer_card.dart b/lib/ui/marathon/widgets/marathon_timer_card.dart new file mode 100644 index 0000000..e831738 --- /dev/null +++ b/lib/ui/marathon/widgets/marathon_timer_card.dart @@ -0,0 +1,51 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:lottie/lottie.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/date_uitl.dart'; +import 'package:mohem_flutter_app/classes/decorations_helper.dart'; +import 'package:mohem_flutter_app/classes/lottie_consts.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; + + +class MarathonTimerCard extends StatelessWidget { + final int timeToMarathon; + final MarathonProvider provider; + + const MarathonTimerCard({ + Key? key, + required this.provider, + required this.timeToMarathon, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + decoration: MyDecorations.shadowDecoration, + padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 14), + child: Column( + children: [ + Row( + children: [ + "${LocaleKeys.gameDate.tr()} ".toText16(color: MyColors.grey77Color), + DateUtil.getMonthDayYearDateFormatted(DateTime.parse(provider.marathonDetailModel.startTime!)).toText16(color: MyColors.darkTextColor, isBold: true), + ], + ), + Row( + children: [ + "${LocaleKeys.gameTime.tr()} ".toText16(color: MyColors.grey77Color), + DateUtil.formatDateToTimeLang(DateTime.parse(provider.marathonDetailModel.startTime!), AppState().isArabic(context)).toText16(color: MyColors.darkTextColor, isBold: true), + ], + ), + Lottie.asset(MyLottieConsts.hourGlassLottie, height: 200), + BuildCountdownTimer(timeToMarathon: timeToMarathon, provider: provider, screenFlag: 1), + ], + ), + ); + } +} From cecb2d59e9e795d79b4b9963caa9ac8b7d1307a4 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 1 Dec 2022 15:21:06 +0300 Subject: [PATCH 144/302] Chat Fixes & Chat Media Preview Api Implementation / On Msg Received Image --- lib/api/chat/chat_api_client.dart | 25 +--- lib/classes/colors.dart | 1 + lib/classes/consts.dart | 4 +- lib/provider/chat_provider_model.dart | 169 +++++++++-------------- lib/ui/chat/chat_bubble.dart | 55 +++++--- lib/ui/chat/chat_detailed_screen.dart | 13 +- lib/ui/chat/chat_full_image_preview.dart | 3 +- lib/ui/chat/chat_home_screen.dart | 127 +++++++++++++++++ pubspec.yaml | 3 + 9 files changed, 250 insertions(+), 150 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 41f941f..1f97b1f 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -28,9 +28,7 @@ class ChatApiClient { "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG", }, ); - user.UserAutoLoginModel userLoginResponse = user.userAutoLoginModelFromJson( - response.body, - ); + user.UserAutoLoginModel userLoginResponse = user.userAutoLoginModelFromJson(response.body); return userLoginResponse; } @@ -42,9 +40,7 @@ class ChatApiClient { return searchUserJsonModel(response.body); } - List searchUserJsonModel(String str) => List.from( - json.decode(str).map((x) => ChatUser.fromJson(x)), - ); + List searchUserJsonModel(String str) => List.from(json.decode(str).map((x) => ChatUser.fromJson(x))); Future getRecentChats() async { try { @@ -58,7 +54,6 @@ class ChatApiClient { } catch (e) { e as APIException; if (e.message == "api_common_unauthorized") { - logger.d("Token Generated On APIIIIII"); user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); if (userLoginResponse.response != null) { AppState().setchatUserDetails = userLoginResponse; @@ -98,9 +93,7 @@ class ChatApiClient { AppState().setchatUserDetails = userLoginResponse; getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); } else { - Utils.showToast( - userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", - ); + Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); } } throw e; @@ -108,13 +101,7 @@ class ChatApiClient { } Future favUser({required int userID, required int targetUserID}) async { - Response response = await ApiClient().postJsonForResponse( - "${ApiConsts.chatFavUser}addFavUser", - { - "targetUserId": targetUserID, - "userId": userID, - }, - token: AppState().chatDetails!.response!.token); + Response response = await ApiClient().postJsonForResponse("${ApiConsts.chatFavUser}addFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token); fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); return favoriteChatUser; } @@ -137,9 +124,7 @@ class ChatApiClient { AppState().setchatUserDetails = userLoginResponse; unFavUser(userID: userID, targetUserID: targetUserID); } else { - Utils.showToast( - userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", - ); + Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); } } throw e; diff --git a/lib/classes/colors.dart b/lib/classes/colors.dart index 10681be..4394279 100644 --- a/lib/classes/colors.dart +++ b/lib/classes/colors.dart @@ -62,4 +62,5 @@ class MyColors { static const Color grey9DColor = Color(0xff9D9D9D); static const Color darkDigitColor = Color(0xff2D2F39); static const Color grey71Color = Color(0xff717171); + static const Color darkGrey3BColor = Color(0xff3B3B3B); } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 779cdec..13c4258 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,8 +2,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 95a990f..f3821f3 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -5,20 +5,15 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; -import 'package:logging/logging.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; -import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; -import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; -import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as login; import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/image_picker.dart'; -import 'package:signalr_netcore/signalr_client.dart'; import 'package:uuid/uuid.dart'; class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { @@ -92,12 +87,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (isNewChat) userChatHistory = []; if (!loadMore) paginationVal = 0; isChatScreenActive = true; - Response response = await ChatApiClient().getSingleUserChatHistory( - senderUID: senderUID, - receiverUID: receiverUID, - loadMore: loadMore, - paginationVal: paginationVal, - ); + Response response = await ChatApiClient().getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); if (response.statusCode == 204) { if (isNewChat) { userChatHistory = []; @@ -107,25 +97,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } else { if (loadMore) { - List temp = getSingleUserChatModel( - response.body, - ).reversed.toList(); - userChatHistory.addAll( - temp, - ); + List temp = getSingleUserChatModel(response.body).reversed.toList(); + userChatHistory.addAll(temp); } else { - userChatHistory = getSingleUserChatModel( - response.body, - ).reversed.toList(); + userChatHistory = getSingleUserChatModel(response.body).reversed.toList(); } } isLoading = false; notifyListeners(); - markRead( - userChatHistory, - receiverUID, - ); - + markRead(userChatHistory, receiverUID); generateConvId(); } @@ -139,13 +119,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { for (SingleUserChatModel element in data!) { if (element.isSeen != null) { if (!element.isSeen!) { + print("Found Un Read"); + logger.d(jsonEncode(element)); dynamic data = [ - { - "userChatHistoryId": element.userChatHistoryId, - "TargetUserId": element.targetUserId, - "isDelivered": true, - "isSeen": true, - } + {"userChatHistoryId": element.userChatHistoryId, "TargetUserId": element.targetUserId, "isDelivered": true, "isSeen": true} ]; updateUserChatHistoryStatusAsync(data); } @@ -161,17 +138,22 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void updateUserChatHistoryStatusAsync(List data) { - hubConnection.invoke( - "UpdateUserChatHistoryStatusAsync", - args: [data], - ); + try { + hubConnection.invoke("UpdateUserChatHistoryStatusAsync", args: [data]); + } catch (e) { + throw e; + } } - List getSingleUserChatModel(String str) => List.from( - json.decode(str).map( - (x) => SingleUserChatModel.fromJson(x), - ), - ); + void updateUserChatHistoryOnMsg(List data) { + try { + hubConnection.invoke("UpdateUserChatHistoryStatusAsync", args: [data]); + } catch (e) { + throw e; + } + } + + List getSingleUserChatModel(String str) => List.from(json.decode(str).map((x) => SingleUserChatModel.fromJson(x))); Future uploadAttachments(String userId, File file) async { dynamic result; @@ -191,15 +173,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void updateUserChatStatus(List? args) { dynamic items = args!.toList(); - for (dynamic cItem in items[0]) { + for (var cItem in items[0]) { for (SingleUserChatModel chat in userChatHistory) { - if (chat.userChatHistoryId.toString() == cItem["userChatHistoryId"].toString()) { + if (cItem["contantNo"].toString() == chat.contantNo.toString()) { chat.isSeen = cItem["isSeen"]; chat.isDelivered = cItem["isDelivered"]; - notifyListeners(); } } } + notifyListeners(); } void onChatSeen(List? args) { @@ -308,14 +290,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { userChatHistory.insert(0, data.first); var list = [ - { - "userChatHistoryId": data.first.userChatHistoryId, - "TargetUserId": data.first.targetUserId, - "isDelivered": true, - "isSeen": isChatScreenActive ? true : false, - } + {"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive ? true : false} ]; - updateUserChatHistoryStatusAsync(list); + updateUserChatHistoryOnMsg(list); notifyListeners(); } @@ -412,34 +389,34 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Uint8List? image, required bool isImageLoaded}) async { Uuid uuid = const Uuid(); + var contentNo = uuid.v4(); var msg = message.text; SingleUserChatModel data = SingleUserChatModel( - chatEventId: chatEventId, - chatSource: 1, - contant: msg, - contantNo: uuid.v4(), - conversationId: chatCID, - createdDate: DateTime.now(), - currentUserId: AppState().chatDetails!.response!.id, - currentUserName: AppState().chatDetails!.response!.userName, - targetUserId: targetUserId, - targetUserName: targetUserName, - isReplied: false, - fileTypeId: fileTypeId, - userChatReplyResponse: isReply ? UserChatReplyResponse.fromJson(repliedMsg.first.toJson()) : null, - fileTypeResponse: isAttachment - ? FileTypeResponse( - fileTypeId: fileTypeId, - fileTypeName: getFileType(getFileExtension(selectedFile.path).toString()), - fileKind: getFileExtension(selectedFile.path), - fileName: selectedFile.path.split("/").last, - fileTypeDescription: getFileTypeDescription(getFileExtension(selectedFile.path).toString()), - ) - : null, - image: image, - isImageLoaded: isImageLoaded, - ); + chatEventId: chatEventId, + chatSource: 1, + contant: msg, + contantNo: contentNo, + conversationId: chatCID, + createdDate: DateTime.now(), + currentUserId: AppState().chatDetails!.response!.id, + currentUserName: AppState().chatDetails!.response!.userName, + targetUserId: targetUserId, + targetUserName: targetUserName, + isReplied: false, + fileTypeId: fileTypeId, + userChatReplyResponse: isReply ? UserChatReplyResponse.fromJson(repliedMsg.first.toJson()) : null, + fileTypeResponse: isAttachment + ? FileTypeResponse( + fileTypeId: fileTypeId, + fileTypeName: getFileType(getFileExtension(selectedFile.path).toString()), + fileKind: getFileExtension(selectedFile.path), + fileName: selectedFile.path.split("/").last, + fileTypeDescription: getFileTypeDescription(getFileExtension(selectedFile.path).toString()), + ) + : null, + image: image, + isImageLoaded: isImageLoaded); userChatHistory.insert(0, data); isFileSelected = false; isMsgReply = false; @@ -448,7 +425,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); String chatData = - '{"contant":"$msg","contantNo":"${uuid.v4()}","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"$chatCID"}'; + '{"contant":"$msg","contantNo":"$contentNo","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"$chatCID"}'; await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); } @@ -456,11 +433,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { searchedChats!.add( - ChatUser( - id: targetUserId, - userName: targetUserName, - unreadMessageCount: 0 - ), + ChatUser(id: targetUserId, userName: targetUserName, unreadMessageCount: 0), ); notifyListeners(); } @@ -693,17 +666,21 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // } void msgScroll() { - scrollController.animateTo( - scrollController.position.minScrollExtent - 100, - duration: const Duration(milliseconds: 500), - curve: Curves.easeIn, - ); - } - - // Future getDownLoadFile(String fileName) async { - // var data = await ChatApiClient().downloadURL(fileName: "data"); - // Image.memory(data); - // } + // scrollController.animateTo( + // // index: 150, + // duration: Duration(seconds: 2), + // curve: Curves.easeInOutCubic); + // scrollController.animateTo( + // scrollController.position.minScrollExtent - 100, + // duration: const Duration(milliseconds: 500), + // curve: Curves.easeIn, + // ); + } + +// Future getDownLoadFile(String fileName) async { +// var data = await ChatApiClient().downloadURL(fileName: "data"); +// Image.memory(data); +// } // void getUserChatHistoryNotDeliveredAsync({required int userId}) async { // try { @@ -713,12 +690,4 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // } // } - - - - - - - - } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 62156c8..8995da1 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -74,23 +74,41 @@ class ChatBubble extends StatelessWidget { if (cItem.userChatReplyResponse != null && cItem.userChatReplyResponse!.fileTypeId == 12 || cItem.userChatReplyResponse!.fileTypeId == 3 || cItem.userChatReplyResponse!.fileTypeId == 4) + // Container( + // padding: EdgeInsets.all(0), // Border width + // decoration: BoxDecoration(color: Colors.red, borderRadius: const BorderRadius.all(Radius.circular(8))), + // child: ClipRRect( + // borderRadius: const BorderRadius.all( + // Radius.circular(8), + // ), + // child: SizedBox.fromSize( + // size: Size.fromRadius(8), // Image radius + // child: showImage( + // isReplyPreview: true, + // fileName: cItem.userChatReplyResponse!.contant!, + // fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg"), + // ), + // ), + // ), ClipRRect( - borderRadius: BorderRadius.circular( - 8, + borderRadius: BorderRadius.circular(8.0), + child: SizedBox( + height: 32, + width: 32, + child: showImage( + isReplyPreview: true, + fileName: cItem.userChatReplyResponse!.contant!, + fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg") + .paddingOnly(left: 10, right: 10, bottom: 16, top: 16), ), - child: showImage( - isReplyPreview: true, - fileName: cItem.userChatReplyResponse!.contant!, - fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg") - .paddingOnly(left: 10, right: 10, bottom: 16, top: 16), - ) + ), ], ), ), ).paddingOnly(right: 5, bottom: 7), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).paddingOnly(right: 5).onPress(() { - showDialog(context: context, builder: (index) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!)); + showDialog(context: context, builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!)); }), cItem.contant!.toText12(), Align( @@ -110,7 +128,7 @@ class ChatBubble extends StatelessWidget { ).paddingOnly(top: 11, left: 13, right: 7, bottom: 5).objectContainerView(disablePadding: true).paddingOnly(left: MediaQuery.of(context).size.width * 0.3); } - Widget receiptUser(context) { + Widget receiptUser(BuildContext context) { return Container( padding: const EdgeInsets.only(top: 11, left: 13, right: 7, bottom: 5), decoration: BoxDecoration( @@ -153,27 +171,27 @@ class ChatBubble extends StatelessWidget { cItem.userChatReplyResponse!.fileTypeId == 4) ClipRRect( borderRadius: BorderRadius.circular(8.0), - child: showImage( + child: SizedBox( + height: 32, + width: 32, + child: showImage( isReplyPreview: true, fileName: cItem.userChatReplyResponse!.contant!, - fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg") - .paddingOnly(left: 10, right: 10, bottom: 16, top: 16), - ) + fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg")), + ).paddingOnly(left: 10, right: 10, bottom: 16, top: 16) ], ), ), ).paddingOnly(right: 5, bottom: 7), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription ?? "image/jpg").paddingOnly(right: 5).onPress(() { - showDialog(context: context, builder: (index) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!)); + showDialog(context: context, builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!)); }) else (cItem.contant! ?? "").toText12(color: Colors.white), Align( alignment: Alignment.centerRight, - child: dateTime.toText10( - color: Colors.white.withOpacity(.71), - ), + child: dateTime.toText10(color: Colors.white.withOpacity(.71)), ), ], ), @@ -196,7 +214,6 @@ class ChatBubble extends StatelessWidget { if (snapshot.data == null) { return SizedBox(); } else { - //data = image; cItem.image = snapshot.data; cItem.isImageLoaded = true; return Image.memory( diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 643cc19..1d220bc 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -221,14 +221,11 @@ class _ChatDetailScreenState extends State { Widget showReplyImage(List data) { if (data.first.isImageLoaded! && data.first.image != null) { - return ClipRRect( - borderRadius: BorderRadius.circular(10.0), - child: Image.memory( - data.first.image!, - height: 43, - width: 43, - fit: BoxFit.cover, - ), + return Container( + width: 43, + height: 43, + decoration: BoxDecoration( + border: Border.all(color: MyColors.darkGrey3BColor, width: 1), borderRadius: BorderRadius.circular(10.0), image: DecorationImage(image: MemoryImage(data.first.image!), fit: BoxFit.cover)), ); } else { return const SizedBox(); diff --git a/lib/ui/chat/chat_full_image_preview.dart b/lib/ui/chat/chat_full_image_preview.dart index 2eaa09d..26364c5 100644 --- a/lib/ui/chat/chat_full_image_preview.dart +++ b/lib/ui/chat/chat_full_image_preview.dart @@ -25,7 +25,8 @@ class ChatImagePreviewScreen extends StatelessWidget { Image.memory( img, fit: BoxFit.cover, - + height: 400, + width: double.infinity, ).paddingAll(10), const Positioned( right: 0, diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 9072b33..cd2245d 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -1,3 +1,4 @@ +import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -210,6 +211,9 @@ class _ChatHomeScreenState extends State { ), ), onPressed: () async { + // String plainText = 'Muhamad.Alam@cloudsolutions.com.sa'; + // String key = "PeShVmYp"; + // passEncrypt(plainText, "PeShVmYp"); showMyBottomSheet( context, callBackFunc: () {}, @@ -237,4 +241,127 @@ class _ChatHomeScreenState extends State { ), ); } + // + // void passEncrypt(String text, String pass) async { + // var salt = randomUint8List(8); + // var keyndIV = deriveKeyAndIV(pass, salt); + // var key = encrypt.Key(keyndIV.item1); + // var iv = encrypt.IV(keyndIV.item2); + // var encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: "PKCS7")); + // var encrypted = encrypter.encrypt(text, iv: iv); + // Uint8List encryptedBytesWithSalt = Uint8List.fromList(createUint8ListFromString("Salted__") + salt + encrypted.bytes); + // var resulttt = base64.encode(encryptedBytesWithSalt); + // print("Enc : " + resulttt); + // + // decryptAESCryptoJS(resulttt, pass); + // } + // + // Uint8List randomUint8List(int length) { + // assert(length > 0); + // var random = Random(); + // var ret = Uint8List(length); + // for (var i = 0; i < length; i++) { + // ret[i] = random.nextInt(256); + // } + // return ret; + // } + // + // void decryptAESCryptoJS(String encrypted, String passphrase) { + // try { + // Uint8List encryptedBytesWithSalt = base64.decode(encrypted); + // Uint8List encryptedBytes = encryptedBytesWithSalt.sublist(16, encryptedBytesWithSalt.length); + // var salt = encryptedBytesWithSalt.sublist(8, 16); + // var keyndIV = deriveKeyAndIV(passphrase, salt); + // var key = encrypt.Key(keyndIV.item1); + // var iv = encrypt.IV(keyndIV.item2); + // var encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: "PKCS7")); + // var decrypted = encrypter.decrypt64(base64.encode(encryptedBytes), iv: iv); + // print("Dec : " + decrypted); + // // return decrypted; + // } catch (error) { + // throw error; + // } + // } + + void enc(String input) { + var ekey = "PeShVmYp"; + var eIV = "j70IbWYn"; + List eByt = utf8.encode(ekey); + List eIvByt = utf8.encode(eIV); + List iByt = utf8.encode(input); + + + + } + + // ///Accepts encrypted data and decrypt it. Returns plain text + // String decryptWithAES(String key, Encrypted encryptedData) { + // var cipherKey = encrypt.Key.fromUtf8(key); + // var encryptService = Encrypter(AES(cipherKey, mode: AESMode.cbc,padding: null)); + // var initVector = IV.fromUtf8(key.substring(0, 16)); + // return encryptService.decrypt(encryptedData, iv: initVector); + // } + // + // ///Encrypts the given plainText using the key. Returns encrypted data + // Encrypted encryptWithAES(String key, String plainText) { + // var cipherKey = encrypt.Key.fromUtf8(key); + // var encryptService = Encrypter(AES(cipherKey, mode: AESMode.cbc,padding: null)); + // var initVector = IV.fromUtf8("j70IbWYn"); + // Encrypted encryptedData = encryptService.encrypt(plainText, iv: initVector); + // print(encryptedData.base64); + // return encryptedData; + // } + // + // Tuple2 deriveKeyAndIV(String passphrase, Uint8List salt) { + // var password = createUint8ListFromString(passphrase); + // Uint8List concatenatedHashes = Uint8List(0); + // Uint8List currentHash = Uint8List(0); + // bool enoughBytesForKey = false; + // Uint8List preHash = Uint8List(0); + // + // while (!enoughBytesForKey) { + // int preHashLength = currentHash.length + password.length + salt.length; + // if (currentHash.length > 0) + // preHash = Uint8List.fromList(currentHash + password + salt); + // else + // preHash = Uint8List.fromList(password + salt); + // + // currentHash = preHash; + // concatenatedHashes = Uint8List.fromList(concatenatedHashes + currentHash); + // if (concatenatedHashes.length >= 48) enoughBytesForKey = true; + // } + // + // var keyBtyes = concatenatedHashes.sublist(0, 32); + // var ivBtyes = concatenatedHashes.sublist(32, 48); + // return new Tuple2(keyBtyes, ivBtyes); + // } + // + // Uint8List createUint8ListFromString(String s) { + // var ret = new Uint8List(s.length); + // for (var i = 0; i < s.length; i++) { + // ret[i] = s.codeUnitAt(i); + // } + // return ret; + // } + // + // Uint8List genRandomWithNonZero(int seedLength) { + // var random = Random.secure(); + // const int randomMax = 245; + // Uint8List uint8list = Uint8List(seedLength); + // for (int i = 0; i < seedLength; i++) { + // uint8list[i] = random.nextInt(randomMax) + 1; + // } + // return uint8list; + // } + // + // + // + // void test(String text, String kk) { + // Uint8List key = Uint8List.fromList(utf8.encode(kk)); + // PaddedBlockCipher cipher = exp.PaddedBlockCipherImpl(exp.PKCS7Padding(), exp.ECBBlockCipher(exp.AESEngine())); + // cipher.init(true, PaddedBlockCipherParameters(KeyParameter(key), null)); + // var byte = Uint8List.fromList(utf8.encode(text)); + // var data = cipher.process(byte); + // print(data); + // } } diff --git a/pubspec.yaml b/pubspec.yaml index 0f1a7b1..a2efb36 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -94,6 +94,9 @@ dependencies: camera: ^0.10.0+4 + #Encryption + cryptography: ^2.0.5 + cryptography_flutter: ^2.0.2 video_player: ^2.4.7 From c7dca3c3774f643a6fdcbe4c0cec77d0785d757e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 1 Dec 2022 15:35:04 +0300 Subject: [PATCH 145/302] Jira fixes for announcements & attachments --- lib/classes/date_uitl.dart | 2 +- lib/ui/misc/request_submit_screen.dart | 32 ++++++++++++------- .../screens/announcements/announcements.dart | 2 +- lib/ui/work_list/work_list_screen.dart | 2 +- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/lib/classes/date_uitl.dart b/lib/classes/date_uitl.dart index f8d1c02..93a7e3f 100644 --- a/lib/classes/date_uitl.dart +++ b/lib/classes/date_uitl.dart @@ -20,7 +20,7 @@ class DateUtil { } static DateTime convertSimpleStringDateToDate(String date) { - return DateFormat("MM/dd/yyyy hh:mm:ss a").parse(date); + return DateFormat("MM/dd/yyyy hh:mm:ss aaa").parse(date); } static DateTime convertSimpleStringDateToDateddMMyyyy(String date) { diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index f5a2d1e..86263bd 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -22,6 +22,7 @@ import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/button/simple_button.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; +import 'package:mohem_flutter_app/widgets/image_picker.dart'; import 'package:mohem_flutter_app/widgets/input_widget.dart'; class RequestSubmitScreenParams { @@ -48,6 +49,7 @@ class _RequestSubmitScreenState extends State { List approverList = []; List attachmentFiles = []; + List attachments = []; @override void initState() { @@ -72,16 +74,16 @@ class _RequestSubmitScreenState extends State { Utils.showLoading(context); List> list = []; if (attachmentFiles.isNotEmpty) { - attachmentFiles.asMap().forEach((index, value) async { - String type = value.path.split('.').last; - String name = value.path.split('/').last; - List fileContent = await value.readAsBytes(); - String encodedFile = base64Encode(fileContent); + attachments.asMap().forEach((index, value) async { + String type = attachmentFiles[index].path.split('.').last; + String name = attachmentFiles[index].path.split('/').last; + // List fileContent = await value.readAsBytes(); + // String encodedFile = base64Encode(fileContent); list.add(AttachmentModel( attachmentID: index, pFILECONTENTTYPE: type, pFILENAME: name, - pFILEDATA: encodedFile, + pFILEDATA: value, pTRANSACTIONID: params!.transactionId, ).toJson()); }); @@ -261,12 +263,18 @@ class _RequestSubmitScreenState extends State { title.toText16().expanded, 6.width, SimpleButton(LocaleKeys.add.tr(), () async { - FilePickerResult? result = await FilePicker.platform.pickFiles(allowMultiple: true); - if (result != null) { - attachmentFiles = attachmentFiles + result.paths.map((path) => File(path!)).toList(); - attachmentFiles = attachmentFiles.toSet().toList(); - setState(() {}); - } + ImageOptions.showImageOptionsNew(context, false, (String image, File file) { + setState(() { + attachmentFiles.add(file); + attachments.add(image); + Navigator.of(context).pop(); + }); + }); + // if (result != null) { + // attachmentFiles = attachmentFiles + result.paths.map((path) => File(path!)).toList(); + // attachmentFiles = attachmentFiles.toSet().toList(); + // setState(() {}); + // } }, fontSize: 14), ], ), diff --git a/lib/ui/screens/announcements/announcements.dart b/lib/ui/screens/announcements/announcements.dart index d43c12c..941ff65 100644 --- a/lib/ui/screens/announcements/announcements.dart +++ b/lib/ui/screens/announcements/announcements.dart @@ -95,7 +95,7 @@ class _AnnouncementsState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - (AppState().isArabic(context) ? _foundAnnouncements[index].titleAR! : getAnnouncementsObject[index].titleEN!).toText13(), + (AppState().isArabic(context) ? _foundAnnouncements[index].titleAR! : _foundAnnouncements[index].titleEN!).toText13(), 8.height, _foundAnnouncements[index].created!.toText10(color: MyColors.grey98Color) ], diff --git a/lib/ui/work_list/work_list_screen.dart b/lib/ui/work_list/work_list_screen.dart index f9f8d91..da1b60f 100644 --- a/lib/ui/work_list/work_list_screen.dart +++ b/lib/ui/work_list/work_list_screen.dart @@ -528,7 +528,7 @@ class _WorkListScreenState extends State { 10.height, Row( children: [ - DateUtil.formatDateToDate(DateUtil.convertSimpleStringDateToDate(workData.bEGINDATE!), false).toText10(color: MyColors.lightTextColor).expanded, + DateUtil.formatDateToDate(DateUtil.convertSimpleStringDateToDateddMMyyyy(workData.bEGINDATE!), false).toText10(color: MyColors.lightTextColor).expanded, RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.darkIconColor)), ], ), From c9dd403b238d8d5274d0d4a78eac70602ce95394 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 1 Dec 2022 16:36:31 +0300 Subject: [PATCH 146/302] subordinate leave fix --- lib/ui/my_team/subordinate_leave.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ui/my_team/subordinate_leave.dart b/lib/ui/my_team/subordinate_leave.dart index f08193c..e2fb999 100644 --- a/lib/ui/my_team/subordinate_leave.dart +++ b/lib/ui/my_team/subordinate_leave.dart @@ -99,7 +99,7 @@ class _SubordinateLeaveState extends State { itemBuilder: (BuildContext context, int index) { var diffDays = DateUtil.convertStringToDate(getSubordinatesLeavesTotalList[index].dATEEND!) .difference(DateUtil.convertStringToDate(getSubordinatesLeavesTotalList[index].dATESTART!)) - .inDays; + .inDays + 1; return Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ From f6f801f9cff59303cc5675677fa5a7710adc5e4a Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 4 Dec 2022 16:15:47 +0300 Subject: [PATCH 147/302] Chat Fixes & User Chat Counter --- lib/classes/consts.dart | 4 +- lib/classes/encryption.dart | 188 ++++++++++++++++++ lib/provider/chat_provider_model.dart | 17 +- lib/provider/dashboard_provider_model.dart | 20 +- lib/ui/chat/chat_bubble.dart | 32 ++- lib/ui/chat/chat_full_image_preview.dart | 57 +++--- lib/ui/chat/chat_home_screen.dart | 142 +------------ lib/ui/landing/dashboard_screen.dart | 11 + .../itg/its_add_screen_video_image.dart | 37 ++-- pubspec.yaml | 5 - 10 files changed, 304 insertions(+), 209 deletions(-) create mode 100644 lib/classes/encryption.dart diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 13c4258..841f29c 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,7 +3,7 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -12,8 +12,6 @@ class ApiConsts { static String user = baseUrlServices + "api/User/"; static String cocRest = baseUrlServices + "COCWS.svc/REST/"; - // todo @aamir move api end point last repo to concerned method. - //Chat static String chatServerBaseUrl = "https://apiderichat.hmg.com/"; static String chatServerBaseApiUrl = chatServerBaseUrl + "api/"; diff --git a/lib/classes/encryption.dart b/lib/classes/encryption.dart new file mode 100644 index 0000000..67466fe --- /dev/null +++ b/lib/classes/encryption.dart @@ -0,0 +1,188 @@ +// import 'dart:convert'; +// +// import 'package:encrypt/encrypt.dart'; +// import 'package:crypto/crypto.dart'; +// +// class Encryption { +// static final Encryption instance = Encryption._(); +// +// late IV _iv; +// late Encrypter _encrypter; +// +// Encryption._() { +// const mykey = 'PeShVmYp'; +// const myiv = 'j70IbWYn'; +// var keyUtf8 = utf8.encode(mykey); +// var ivUtf8 = utf8.encode(myiv); +// var key = sha256.convert(keyUtf8).toString().substring(0, 32); +// var iv = sha256.convert(ivUtf8).toString().substring(0, 16); +// _iv = IV.fromUtf8(iv); +// +// _encrypter = Encrypter(AES(Key.fromUtf8(key), mode: AESMode.cbc)); +// } +// +// String encrypt(String value) { +// return _encrypter.encrypt(value, iv: _iv).base64; +// } +// +// String decrypt(String base64value) { +// var encrypted = Encrypted.fromBase64(base64value); +// return _encrypter.decrypt(encrypted, iv: _iv); +// } +// +// // +// // void passEncrypt(String text, String pass) async { +// // var salt = randomUint8List(8); +// // var keyndIV = deriveKeyAndIV(pass, salt); +// // var key = encrypt.Key(keyndIV.item1); +// // var iv = encrypt.IV(keyndIV.item2); +// // var encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: "PKCS7")); +// // var encrypted = encrypter.encrypt(text, iv: iv); +// // Uint8List encryptedBytesWithSalt = Uint8List.fromList(createUint8ListFromString("Salted__") + salt + encrypted.bytes); +// // var resulttt = base64.encode(encryptedBytesWithSalt); +// // print("Enc : " + resulttt); +// // +// // decryptAESCryptoJS(resulttt, pass); +// // } +// // +// // Uint8List randomUint8List(int length) { +// // assert(length > 0); +// // var random = Random(); +// // var ret = Uint8List(length); +// // for (var i = 0; i < length; i++) { +// // ret[i] = random.nextInt(256); +// // } +// // return ret; +// // } +// // +// // void decryptAESCryptoJS(String encrypted, String passphrase) { +// // try { +// // Uint8List encryptedBytesWithSalt = base64.decode(encrypted); +// // Uint8List encryptedBytes = encryptedBytesWithSalt.sublist(16, encryptedBytesWithSalt.length); +// // var salt = encryptedBytesWithSalt.sublist(8, 16); +// // var keyndIV = deriveKeyAndIV(passphrase, salt); +// // var key = encrypt.Key(keyndIV.item1); +// // var iv = encrypt.IV(keyndIV.item2); +// // var encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: "PKCS7")); +// // var decrypted = encrypter.decrypt64(base64.encode(encryptedBytes), iv: iv); +// // print("Dec : " + decrypted); +// // // return decrypted; +// // } catch (error) { +// // throw error; +// // } +// // } +// // +// // Future enc(String input) async { +// // var ekey = "PeShVmYpPeShVmYp"; +// // var eIV = "j70IbWYnj70IbWYn"; +// // +// // var abc = Encryption.instance.encrypt(input); +// // // +// // // var inputByt = utf8.encode(input); +// // // final encrypted = encrypter.encrypt(plainText); +// // // final decrypted = encrypter.decrypt(encrypted); +// // // +// // // print(decrypted); // Lorem ipsum dolor sit amet, consectetur adipiscing elit +// // // print(encrypted.base64); // R4PxiU3h8YoIRqVowBXm36ZcCeNeZ4s1OvVBTfFlZRdmohQqOpPQqD1YecJeZMAop/hZ4OxqgC1WtwvX/hP9mw== +// // // /// +// // +// // var key = encrypt.Key.fromUtf8(ekey.substring(0, 8)); +// // var iv = encrypt.IV.fromLength(8); +// // var encrypter = Encrypter(AES(key)); +// // var encrypted = encrypter.encrypt(input, iv: iv); +// // var decrypted = encrypter.decrypt(encrypted, iv: iv); +// // print("====== ORI =========="); +// // print("e4PTDencHsiLJv0XcbT2I4tafb7dqJP9c72PEnhp1Uv6U2GZ/gODtA=="); +// // print("====== ENC =========="); +// // print(encrypted.base64); +// // print("====== DEC =========="); +// // print(decrypted); +// // print("====== B64 =========="); +// // String bs64 = base64.encode(utf8.encode(input)); +// // print(bs64); +// // +// // // try { +// // // var cipher = _cipher; +// // // var secretBox = await cipher.encrypt( +// // // iByt, +// // // secretKey: SecretKeyData(eByt), +// // // nonce: eIvByt, +// // // ); +// // // print(utf8.decode(secretBox.cipherText)); +// // // } catch (error) { +// // // print(error); +// // // return; +// // // } +// // } +// // ///Accepts encrypted data and decrypt it. Returns plain text +// // String decryptWithAES(String key, Encrypted encryptedData) { +// // var cipherKey = encrypt.Key.fromUtf8(key); +// // var encryptService = Encrypter(AES(cipherKey, mode: AESMode.cbc,padding: null)); +// // var initVector = IV.fromUtf8(key.substring(0, 16)); +// // return encryptService.decrypt(encryptedData, iv: initVector); +// // } +// // +// // ///Encrypts the given plainText using the key. Returns encrypted data +// // Encrypted encryptWithAES(String key, String plainText) { +// // var cipherKey = encrypt.Key.fromUtf8(key); +// // var encryptService = Encrypter(AES(cipherKey, mode: AESMode.cbc,padding: null)); +// // var initVector = IV.fromUtf8("j70IbWYn"); +// // Encrypted encryptedData = encryptService.encrypt(plainText, iv: initVector); +// // print(encryptedData.base64); +// // return encryptedData; +// // } +// // +// // Tuple2 deriveKeyAndIV(String passphrase, Uint8List salt) { +// // var password = createUint8ListFromString(passphrase); +// // Uint8List concatenatedHashes = Uint8List(0); +// // Uint8List currentHash = Uint8List(0); +// // bool enoughBytesForKey = false; +// // Uint8List preHash = Uint8List(0); +// // +// // while (!enoughBytesForKey) { +// // int preHashLength = currentHash.length + password.length + salt.length; +// // if (currentHash.length > 0) +// // preHash = Uint8List.fromList(currentHash + password + salt); +// // else +// // preHash = Uint8List.fromList(password + salt); +// // +// // currentHash = preHash; +// // concatenatedHashes = Uint8List.fromList(concatenatedHashes + currentHash); +// // if (concatenatedHashes.length >= 48) enoughBytesForKey = true; +// // } +// // +// // var keyBtyes = concatenatedHashes.sublist(0, 32); +// // var ivBtyes = concatenatedHashes.sublist(32, 48); +// // return new Tuple2(keyBtyes, ivBtyes); +// // } +// // +// // Uint8List createUint8ListFromString(String s) { +// // var ret = new Uint8List(s.length); +// // for (var i = 0; i < s.length; i++) { +// // ret[i] = s.codeUnitAt(i); +// // } +// // return ret; +// // } +// // +// // Uint8List genRandomWithNonZero(int seedLength) { +// // var random = Random.secure(); +// // const int randomMax = 245; +// // Uint8List uint8list = Uint8List(seedLength); +// // for (int i = 0; i < seedLength; i++) { +// // uint8list[i] = random.nextInt(randomMax) + 1; +// // } +// // return uint8list; +// // } +// // +// // +// // +// // void test(String text, String kk) { +// // Uint8List key = Uint8List.fromList(utf8.encode(kk)); +// // PaddedBlockCipher cipher = exp.PaddedBlockCipherImpl(exp.PKCS7Padding(), exp.ECBBlockCipher(exp.AESEngine())); +// // cipher.init(true, PaddedBlockCipherParameters(KeyParameter(key), null)); +// // var byte = Uint8List.fromList(utf8.encode(text)); +// // var data = cipher.process(byte); +// // print(data); +// // } +// +// } diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index f3821f3..886951c 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -120,7 +120,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (element.isSeen != null) { if (!element.isSeen!) { print("Found Un Read"); - logger.d(jsonEncode(element)); + element.isSeen = true; dynamic data = [ {"userChatHistoryId": element.userChatHistoryId, "TargetUserId": element.targetUserId, "isDelivered": true, "isSeen": true} ]; @@ -131,9 +131,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { for (ChatUser element in searchedChats!) { if (element.id == receiverID) { element.unreadMessageCount = 0; - notifyListeners(); + // notifyListeners(); } } + notifyListeners(); } } @@ -223,7 +224,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void chatNotDelivered(List? args) { dynamic items = args!.toList(); - logger.d(items); for (dynamic item in items[0]) { searchedChats!.forEach( (ChatUser element) { @@ -288,8 +288,16 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } userChatHistory.insert(0, data.first); + if (searchedChats != null) { + for (ChatUser user in searchedChats!) { + if (user.id == data.first.currentUserId) { + var tempCount = user.unreadMessageCount ?? 0; + user.unreadMessageCount = tempCount + 1; + } + } + } - var list = [ + List list = [ {"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive ? true : false} ]; updateUserChatHistoryOnMsg(list); @@ -624,7 +632,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void clearSelections() { - print("Hereee i am "); searchedChats = pChatHistory; search.clear(); isChatScreenActive = false; diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index 59b62b6..461196f 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -307,13 +307,21 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future getHubConnection() async { HubConnection hub; - HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); - hub = HubConnectionBuilder() - .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) - .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); - isChatHubLoding = false; - return hub; + try { + HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); + hub = HubConnectionBuilder() + .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) + .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); + isChatHubLoding = false; + return hub; + } catch (e) { + getUserAutoLoginToken().whenComplete(() { + getHubConnection(); + }); + throw e; + } } + void notify() { notifyListeners(); } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 8995da1..ec772f6 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -28,6 +28,7 @@ class ChatBubble extends StatelessWidget { String? fileTypeDescription; bool isDelivered = false; String userName = ''; + late Offset screenOffset; void makeAssign() { isCurrentUser = cItem.currentUserId == AppState().chatDetails!.response!.id ? true : false; @@ -41,6 +42,8 @@ class ChatBubble extends StatelessWidget { @override Widget build(BuildContext context) { + Size windowSize = MediaQuery.of(context).size; + screenOffset = Offset(windowSize.width / 2, windowSize.height / 2); makeAssign(); return isCurrentUser ? currentUser(context) : receiptUser(context); } @@ -108,7 +111,11 @@ class ChatBubble extends StatelessWidget { ).paddingOnly(right: 5, bottom: 7), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).paddingOnly(right: 5).onPress(() { - showDialog(context: context, builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!)); + showDialog( + context: context, + anchorPoint: screenOffset, + builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!), + ); }), cItem.contant!.toText12(), Align( @@ -172,23 +179,28 @@ class ChatBubble extends StatelessWidget { ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SizedBox( - height: 32, - width: 32, - child: showImage( - isReplyPreview: true, - fileName: cItem.userChatReplyResponse!.contant!, - fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg")), + height: 32, + width: 32, + child: showImage( + isReplyPreview: true, + fileName: cItem.userChatReplyResponse!.contant!, + fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg"), + ), ).paddingOnly(left: 10, right: 10, bottom: 16, top: 16) ], ), ), ).paddingOnly(right: 5, bottom: 7), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) - showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription ?? "image/jpg").paddingOnly(right: 5).onPress(() { - showDialog(context: context, builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!)); + showImage(isReplyPreview: false, fileName: cItem.contant ?? "", fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription ?? "image/jpg").paddingOnly(right: 5).onPress(() { + showDialog( + context: context, + anchorPoint: screenOffset, + builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant ?? "", img: cItem.image!), + ); }) else - (cItem.contant! ?? "").toText12(color: Colors.white), + (cItem.contant ?? "").toText12(color: Colors.white), Align( alignment: Alignment.centerRight, child: dateTime.toText10(color: Colors.white.withOpacity(.71)), diff --git a/lib/ui/chat/chat_full_image_preview.dart b/lib/ui/chat/chat_full_image_preview.dart index 26364c5..c731c25 100644 --- a/lib/ui/chat/chat_full_image_preview.dart +++ b/lib/ui/chat/chat_full_image_preview.dart @@ -12,29 +12,40 @@ class ChatImagePreviewScreen extends StatelessWidget { @override Widget build(BuildContext context) { - return GestureDetector( - onTap: () { - Navigator.of(context).pop(); - }, - child: Dialog( - backgroundColor: Colors.transparent, - insetPadding: const EdgeInsets.all(10), - child: Stack( - alignment: Alignment.center, - children: [ - Image.memory( - img, - fit: BoxFit.cover, - height: 400, - width: double.infinity, - ).paddingAll(10), - const Positioned( - right: 0, - top: 0, - child: Icon(Icons.cancel, color: MyColors.redA3Color, size: 35), - ) - ], - ), + return Dialog( + backgroundColor: Colors.transparent, + insetPadding: const EdgeInsets.all(10), + child: Stack( + alignment: Alignment.center, + fit: StackFit.loose, + children: [ + Image.memory( + img, + fit: BoxFit.cover, + height: 400, + width: double.infinity, + ).paddingAll(15), + Positioned( + right: 0, + top: 0, + child: Container( + width: 30, + height: 30, + alignment: Alignment.center, + padding: EdgeInsets.zero, + margin: EdgeInsets.zero, + constraints: const BoxConstraints(), + color: MyColors.white, + child: const Icon( + Icons.cancel, + color: MyColors.redA3Color, + size: 30, + ), + ).onPress(() { + Navigator.of(context).pop(); + }).circle(35), + ) + ], ), ); } diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index cd2245d..e2f2dc2 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -63,7 +63,7 @@ class _ChatHomeScreenState extends State { hintText: LocaleKeys.searchfromchat.tr(), hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic, fontWeight: FontWeight.w500, fontSize: 12), filled: true, - fillColor: const Color(0xFFF7F7F7), + fillColor: MyColors.greyF7Color, suffixIconConstraints: const BoxConstraints(), suffixIcon: m.search.text.isNotEmpty ? IconButton( @@ -83,7 +83,6 @@ class _ChatHomeScreenState extends State { shrinkWrap: true, physics: const ClampingScrollPhysics(), itemBuilder: (BuildContext context, int index) { - // todo @aamir, remove list tile, make a custom ui instead return SizedBox( height: 55, child: Row( @@ -103,11 +102,8 @@ class _ChatHomeScreenState extends State { height: 10, decoration: BoxDecoration( color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), ), - ), + ).circle(10), ) ], ), @@ -211,9 +207,6 @@ class _ChatHomeScreenState extends State { ), ), onPressed: () async { - // String plainText = 'Muhamad.Alam@cloudsolutions.com.sa'; - // String key = "PeShVmYp"; - // passEncrypt(plainText, "PeShVmYp"); showMyBottomSheet( context, callBackFunc: () {}, @@ -231,137 +224,10 @@ class _ChatHomeScreenState extends State { OutlineInputBorder fieldBorder({required double radius, required int color}) { return OutlineInputBorder( - borderRadius: BorderRadius.circular( - radius, - ), + borderRadius: BorderRadius.circular(radius), borderSide: BorderSide( - color: Color( - color, - ), + color: Color(color), ), ); } - // - // void passEncrypt(String text, String pass) async { - // var salt = randomUint8List(8); - // var keyndIV = deriveKeyAndIV(pass, salt); - // var key = encrypt.Key(keyndIV.item1); - // var iv = encrypt.IV(keyndIV.item2); - // var encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: "PKCS7")); - // var encrypted = encrypter.encrypt(text, iv: iv); - // Uint8List encryptedBytesWithSalt = Uint8List.fromList(createUint8ListFromString("Salted__") + salt + encrypted.bytes); - // var resulttt = base64.encode(encryptedBytesWithSalt); - // print("Enc : " + resulttt); - // - // decryptAESCryptoJS(resulttt, pass); - // } - // - // Uint8List randomUint8List(int length) { - // assert(length > 0); - // var random = Random(); - // var ret = Uint8List(length); - // for (var i = 0; i < length; i++) { - // ret[i] = random.nextInt(256); - // } - // return ret; - // } - // - // void decryptAESCryptoJS(String encrypted, String passphrase) { - // try { - // Uint8List encryptedBytesWithSalt = base64.decode(encrypted); - // Uint8List encryptedBytes = encryptedBytesWithSalt.sublist(16, encryptedBytesWithSalt.length); - // var salt = encryptedBytesWithSalt.sublist(8, 16); - // var keyndIV = deriveKeyAndIV(passphrase, salt); - // var key = encrypt.Key(keyndIV.item1); - // var iv = encrypt.IV(keyndIV.item2); - // var encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: "PKCS7")); - // var decrypted = encrypter.decrypt64(base64.encode(encryptedBytes), iv: iv); - // print("Dec : " + decrypted); - // // return decrypted; - // } catch (error) { - // throw error; - // } - // } - - void enc(String input) { - var ekey = "PeShVmYp"; - var eIV = "j70IbWYn"; - List eByt = utf8.encode(ekey); - List eIvByt = utf8.encode(eIV); - List iByt = utf8.encode(input); - - - - } - - // ///Accepts encrypted data and decrypt it. Returns plain text - // String decryptWithAES(String key, Encrypted encryptedData) { - // var cipherKey = encrypt.Key.fromUtf8(key); - // var encryptService = Encrypter(AES(cipherKey, mode: AESMode.cbc,padding: null)); - // var initVector = IV.fromUtf8(key.substring(0, 16)); - // return encryptService.decrypt(encryptedData, iv: initVector); - // } - // - // ///Encrypts the given plainText using the key. Returns encrypted data - // Encrypted encryptWithAES(String key, String plainText) { - // var cipherKey = encrypt.Key.fromUtf8(key); - // var encryptService = Encrypter(AES(cipherKey, mode: AESMode.cbc,padding: null)); - // var initVector = IV.fromUtf8("j70IbWYn"); - // Encrypted encryptedData = encryptService.encrypt(plainText, iv: initVector); - // print(encryptedData.base64); - // return encryptedData; - // } - // - // Tuple2 deriveKeyAndIV(String passphrase, Uint8List salt) { - // var password = createUint8ListFromString(passphrase); - // Uint8List concatenatedHashes = Uint8List(0); - // Uint8List currentHash = Uint8List(0); - // bool enoughBytesForKey = false; - // Uint8List preHash = Uint8List(0); - // - // while (!enoughBytesForKey) { - // int preHashLength = currentHash.length + password.length + salt.length; - // if (currentHash.length > 0) - // preHash = Uint8List.fromList(currentHash + password + salt); - // else - // preHash = Uint8List.fromList(password + salt); - // - // currentHash = preHash; - // concatenatedHashes = Uint8List.fromList(concatenatedHashes + currentHash); - // if (concatenatedHashes.length >= 48) enoughBytesForKey = true; - // } - // - // var keyBtyes = concatenatedHashes.sublist(0, 32); - // var ivBtyes = concatenatedHashes.sublist(32, 48); - // return new Tuple2(keyBtyes, ivBtyes); - // } - // - // Uint8List createUint8ListFromString(String s) { - // var ret = new Uint8List(s.length); - // for (var i = 0; i < s.length; i++) { - // ret[i] = s.codeUnitAt(i); - // } - // return ret; - // } - // - // Uint8List genRandomWithNonZero(int seedLength) { - // var random = Random.secure(); - // const int randomMax = 245; - // Uint8List uint8list = Uint8List(seedLength); - // for (int i = 0; i < seedLength; i++) { - // uint8list[i] = random.nextInt(randomMax) + 1; - // } - // return uint8list; - // } - // - // - // - // void test(String text, String kk) { - // Uint8List key = Uint8List.fromList(utf8.encode(kk)); - // PaddedBlockCipher cipher = exp.PaddedBlockCipherImpl(exp.PKCS7Padding(), exp.ECBBlockCipher(exp.AESEngine())); - // cipher.init(true, PaddedBlockCipherParameters(KeyParameter(key), null)); - // var byte = Uint8List.fromList(utf8.encode(text)); - // var data = cipher.process(byte); - // print(data); - // } } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 7cf28cf..b449bd1 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -6,6 +6,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; @@ -63,6 +64,14 @@ class _DashboardScreenState extends State { void buildHubConnection() async { hubConnection = await data.getHubConnection(); await hubConnection.start(); + hubConnection.onreconnecting(({Exception? error}) { + print("============== Reconnecting ======================"); + if (hubConnection.state != HubConnectionState.Connected) { + data.getUserAutoLoginToken().whenComplete(() { + buildHubConnection(); + }); + } + }); } @override @@ -106,9 +115,11 @@ class _DashboardScreenState extends State { // onPressed: () { // data.getITGNotification().then((val) { // if (val!.result!.data != null) { + // print("-------------------- Survey ----------------------------"); // if (val.result!.data!.notificationType == "Survey") { // Navigator.pushNamed(context, AppRoutes.survey, arguments: val.result!.data); // } else { + // print("------------------------------------------- Ads --------------------"); // DashboardApiClient().getAdvertisementDetail(val.result!.data!.notificationMasterId ?? "").then( // (value) { // if (value!.mohemmItgResponseItem!.statusCode == 200) { diff --git a/lib/ui/landing/itg/its_add_screen_video_image.dart b/lib/ui/landing/itg/its_add_screen_video_image.dart index a71a71b..bcb9ed4 100644 --- a/lib/ui/landing/itg/its_add_screen_video_image.dart +++ b/lib/ui/landing/itg/its_add_screen_video_image.dart @@ -69,7 +69,7 @@ class _ITGAdsScreenState extends State { await controller.setLooping(false); return controller; } catch (e) { - return new VideoPlayerController.asset("dataSource"); + return VideoPlayerController.asset("dataSource"); } } @@ -94,29 +94,28 @@ class _ITGAdsScreenState extends State { if (advertisementData != null) { checkFileType(); } - double height = MediaQuery.of(context).size.height * .25; + // double height = MediaQuery.of(context).size.height * .25; return Scaffold( - body: Column( + body: Stack( children: [ if (isVideo) - SizedBox( - height: MediaQuery.of(context).size.height * .3, - child: FutureBuilder( - future: _futureController, - builder: (BuildContext context, AsyncSnapshot snapshot) { - if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) { - _controller = snapshot.data as VideoPlayerController; - return AspectRatio( + FutureBuilder( + future: _futureController, + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.done && snapshot.data != null) { + _controller = snapshot.data as VideoPlayerController; + return Positioned.fill( + child: AspectRatio( aspectRatio: _controller.value.aspectRatio, child: VideoPlayer(_controller), - ); - } else { - return const Center( - child: CircularProgressIndicator(), - ); - } - }, - ), + ), + ); + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, ), if (isImage) Image.file(imageFile), if (skip) diff --git a/pubspec.yaml b/pubspec.yaml index a2efb36..f17ce5f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -94,11 +94,6 @@ dependencies: camera: ^0.10.0+4 - #Encryption - cryptography: ^2.0.5 - cryptography_flutter: ^2.0.2 - - video_player: ^2.4.7 just_audio: ^0.9.30 From a08f1c6d77a92be0e0ed198e0c78a807c783b523 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 4 Dec 2022 16:53:11 +0300 Subject: [PATCH 148/302] Chat Fixes & User Chat Counter --- lib/provider/chat_provider_model.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 886951c..b48d845 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -36,7 +36,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void registerEvents() { hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - // hubConnection.on("OnSeenChatUserAsync", onChatSeen); + hubConnection.on("OnSeenChatUserAsync", onChatSeen); //hubConnection.on("OnUserTypingAsync", onUserTyping); hubConnection.on("OnUserCountAsync", userCountAsync); hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); @@ -119,12 +119,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { for (SingleUserChatModel element in data!) { if (element.isSeen != null) { if (!element.isSeen!) { - print("Found Un Read"); element.isSeen = true; dynamic data = [ - {"userChatHistoryId": element.userChatHistoryId, "TargetUserId": element.targetUserId, "isDelivered": true, "isSeen": true} + {"userChatHistoryId": element.userChatHistoryId, "TargetUserId": element.currentUserId, "isDelivered": true, "isSeen": true} ]; updateUserChatHistoryStatusAsync(data); + notifyListeners(); } } } @@ -288,7 +288,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } userChatHistory.insert(0, data.first); - if (searchedChats != null) { + + if (searchedChats != null && !isChatScreenActive) { for (ChatUser user in searchedChats!) { if (user.id == data.first.currentUserId) { var tempCount = user.unreadMessageCount ?? 0; From 3e666eb6be1efb8ccd14c6bc29945d89dcd34ed3 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 5 Dec 2022 11:30:10 +0300 Subject: [PATCH 149/302] Chat Fixes & User Chat Counter --- lib/api/chat/chat_api_client.dart | 11 +- lib/classes/encryption.dart | 216 +++--------------- lib/models/chat/chat_user_image_model.dart | 33 +++ .../chat/get_search_user_chat_model.dart | 38 +-- lib/provider/chat_provider_model.dart | 35 ++- lib/ui/chat/chat_detailed_screen.dart | 3 +- lib/ui/chat/chat_home.dart | 2 + lib/ui/chat/chat_home_screen.dart | 33 ++- lib/ui/chat/favorite_users_screen.dart | 31 ++- lib/widgets/app_bar_widget.dart | 13 +- pubspec.yaml | 2 + 11 files changed, 183 insertions(+), 234 deletions(-) create mode 100644 lib/models/chat/chat_user_image_model.dart diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 1f97b1f..bea5b7c 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -9,6 +9,7 @@ import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as user; import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; @@ -152,16 +153,12 @@ class ChatApiClient { return data; } - Future getUsersImages({required List encryptedEmails}) async { + Future> getUsersImages({required List encryptedEmails}) async { Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatUserImages}images", - { - "encryptedEmails": ["/g8Rc+s6eEOdci41PwJuV5dX+gXe51G9OTHzb9ahcVlHCmVvNhxReirudF79+hdxVSkCnQ6wC5DBFV8xnJlC74X6157PxF7mNYrAYuHRgp4="], - "fromClient": true - }, + {"encryptedEmails": encryptedEmails, "fromClient": false}, token: AppState().chatDetails!.response!.token, ); - logger.d(response.body); - // Uint8List data = Uint8List.fromList(response.body); + return chatUserImageModelFromJson(response.body); } } diff --git a/lib/classes/encryption.dart b/lib/classes/encryption.dart index 67466fe..f26c92b 100644 --- a/lib/classes/encryption.dart +++ b/lib/classes/encryption.dart @@ -1,188 +1,28 @@ -// import 'dart:convert'; -// -// import 'package:encrypt/encrypt.dart'; -// import 'package:crypto/crypto.dart'; -// -// class Encryption { -// static final Encryption instance = Encryption._(); -// -// late IV _iv; -// late Encrypter _encrypter; -// -// Encryption._() { -// const mykey = 'PeShVmYp'; -// const myiv = 'j70IbWYn'; -// var keyUtf8 = utf8.encode(mykey); -// var ivUtf8 = utf8.encode(myiv); -// var key = sha256.convert(keyUtf8).toString().substring(0, 32); -// var iv = sha256.convert(ivUtf8).toString().substring(0, 16); -// _iv = IV.fromUtf8(iv); -// -// _encrypter = Encrypter(AES(Key.fromUtf8(key), mode: AESMode.cbc)); -// } -// -// String encrypt(String value) { -// return _encrypter.encrypt(value, iv: _iv).base64; -// } -// -// String decrypt(String base64value) { -// var encrypted = Encrypted.fromBase64(base64value); -// return _encrypter.decrypt(encrypted, iv: _iv); -// } -// -// // -// // void passEncrypt(String text, String pass) async { -// // var salt = randomUint8List(8); -// // var keyndIV = deriveKeyAndIV(pass, salt); -// // var key = encrypt.Key(keyndIV.item1); -// // var iv = encrypt.IV(keyndIV.item2); -// // var encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: "PKCS7")); -// // var encrypted = encrypter.encrypt(text, iv: iv); -// // Uint8List encryptedBytesWithSalt = Uint8List.fromList(createUint8ListFromString("Salted__") + salt + encrypted.bytes); -// // var resulttt = base64.encode(encryptedBytesWithSalt); -// // print("Enc : " + resulttt); -// // -// // decryptAESCryptoJS(resulttt, pass); -// // } -// // -// // Uint8List randomUint8List(int length) { -// // assert(length > 0); -// // var random = Random(); -// // var ret = Uint8List(length); -// // for (var i = 0; i < length; i++) { -// // ret[i] = random.nextInt(256); -// // } -// // return ret; -// // } -// // -// // void decryptAESCryptoJS(String encrypted, String passphrase) { -// // try { -// // Uint8List encryptedBytesWithSalt = base64.decode(encrypted); -// // Uint8List encryptedBytes = encryptedBytesWithSalt.sublist(16, encryptedBytesWithSalt.length); -// // var salt = encryptedBytesWithSalt.sublist(8, 16); -// // var keyndIV = deriveKeyAndIV(passphrase, salt); -// // var key = encrypt.Key(keyndIV.item1); -// // var iv = encrypt.IV(keyndIV.item2); -// // var encrypter = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc, padding: "PKCS7")); -// // var decrypted = encrypter.decrypt64(base64.encode(encryptedBytes), iv: iv); -// // print("Dec : " + decrypted); -// // // return decrypted; -// // } catch (error) { -// // throw error; -// // } -// // } -// // -// // Future enc(String input) async { -// // var ekey = "PeShVmYpPeShVmYp"; -// // var eIV = "j70IbWYnj70IbWYn"; -// // -// // var abc = Encryption.instance.encrypt(input); -// // // -// // // var inputByt = utf8.encode(input); -// // // final encrypted = encrypter.encrypt(plainText); -// // // final decrypted = encrypter.decrypt(encrypted); -// // // -// // // print(decrypted); // Lorem ipsum dolor sit amet, consectetur adipiscing elit -// // // print(encrypted.base64); // R4PxiU3h8YoIRqVowBXm36ZcCeNeZ4s1OvVBTfFlZRdmohQqOpPQqD1YecJeZMAop/hZ4OxqgC1WtwvX/hP9mw== -// // // /// -// // -// // var key = encrypt.Key.fromUtf8(ekey.substring(0, 8)); -// // var iv = encrypt.IV.fromLength(8); -// // var encrypter = Encrypter(AES(key)); -// // var encrypted = encrypter.encrypt(input, iv: iv); -// // var decrypted = encrypter.decrypt(encrypted, iv: iv); -// // print("====== ORI =========="); -// // print("e4PTDencHsiLJv0XcbT2I4tafb7dqJP9c72PEnhp1Uv6U2GZ/gODtA=="); -// // print("====== ENC =========="); -// // print(encrypted.base64); -// // print("====== DEC =========="); -// // print(decrypted); -// // print("====== B64 =========="); -// // String bs64 = base64.encode(utf8.encode(input)); -// // print(bs64); -// // -// // // try { -// // // var cipher = _cipher; -// // // var secretBox = await cipher.encrypt( -// // // iByt, -// // // secretKey: SecretKeyData(eByt), -// // // nonce: eIvByt, -// // // ); -// // // print(utf8.decode(secretBox.cipherText)); -// // // } catch (error) { -// // // print(error); -// // // return; -// // // } -// // } -// // ///Accepts encrypted data and decrypt it. Returns plain text -// // String decryptWithAES(String key, Encrypted encryptedData) { -// // var cipherKey = encrypt.Key.fromUtf8(key); -// // var encryptService = Encrypter(AES(cipherKey, mode: AESMode.cbc,padding: null)); -// // var initVector = IV.fromUtf8(key.substring(0, 16)); -// // return encryptService.decrypt(encryptedData, iv: initVector); -// // } -// // -// // ///Encrypts the given plainText using the key. Returns encrypted data -// // Encrypted encryptWithAES(String key, String plainText) { -// // var cipherKey = encrypt.Key.fromUtf8(key); -// // var encryptService = Encrypter(AES(cipherKey, mode: AESMode.cbc,padding: null)); -// // var initVector = IV.fromUtf8("j70IbWYn"); -// // Encrypted encryptedData = encryptService.encrypt(plainText, iv: initVector); -// // print(encryptedData.base64); -// // return encryptedData; -// // } -// // -// // Tuple2 deriveKeyAndIV(String passphrase, Uint8List salt) { -// // var password = createUint8ListFromString(passphrase); -// // Uint8List concatenatedHashes = Uint8List(0); -// // Uint8List currentHash = Uint8List(0); -// // bool enoughBytesForKey = false; -// // Uint8List preHash = Uint8List(0); -// // -// // while (!enoughBytesForKey) { -// // int preHashLength = currentHash.length + password.length + salt.length; -// // if (currentHash.length > 0) -// // preHash = Uint8List.fromList(currentHash + password + salt); -// // else -// // preHash = Uint8List.fromList(password + salt); -// // -// // currentHash = preHash; -// // concatenatedHashes = Uint8List.fromList(concatenatedHashes + currentHash); -// // if (concatenatedHashes.length >= 48) enoughBytesForKey = true; -// // } -// // -// // var keyBtyes = concatenatedHashes.sublist(0, 32); -// // var ivBtyes = concatenatedHashes.sublist(32, 48); -// // return new Tuple2(keyBtyes, ivBtyes); -// // } -// // -// // Uint8List createUint8ListFromString(String s) { -// // var ret = new Uint8List(s.length); -// // for (var i = 0; i < s.length; i++) { -// // ret[i] = s.codeUnitAt(i); -// // } -// // return ret; -// // } -// // -// // Uint8List genRandomWithNonZero(int seedLength) { -// // var random = Random.secure(); -// // const int randomMax = 245; -// // Uint8List uint8list = Uint8List(seedLength); -// // for (int i = 0; i < seedLength; i++) { -// // uint8list[i] = random.nextInt(randomMax) + 1; -// // } -// // return uint8list; -// // } -// // -// // -// // -// // void test(String text, String kk) { -// // Uint8List key = Uint8List.fromList(utf8.encode(kk)); -// // PaddedBlockCipher cipher = exp.PaddedBlockCipherImpl(exp.PKCS7Padding(), exp.ECBBlockCipher(exp.AESEngine())); -// // cipher.init(true, PaddedBlockCipherParameters(KeyParameter(key), null)); -// // var byte = Uint8List.fromList(utf8.encode(text)); -// // var data = cipher.process(byte); -// // print(data); -// // } -// -// } +import 'dart:convert'; + +import 'package:flutter/services.dart'; + +class Encryption { + static final Encryption _instance = Encryption._internal(); + static const MethodChannel _channel = MethodChannel('flutter_des'); + static const key = "PeShVmYp"; + static const iv = "j70IbWYn"; + + Encryption._internal(); + + factory Encryption() => _instance; + + Future encrypt({required String val}) async { + Uint8List? crypt = await _channel.invokeMethod('encrypt', [val, key, iv]); + String data = base64Encode(crypt!.toList()); + print("Base64Enc: " + data); + return data; + } + + Future decrypt({required String encodedVal}) async { + var deco = base64Decode(encodedVal); + String? decCrypt = await _channel.invokeMethod('decrypt', [deco, key, iv]); + print("Base64ToStringDec: " + decCrypt!); + return decCrypt!; + } +} diff --git a/lib/models/chat/chat_user_image_model.dart b/lib/models/chat/chat_user_image_model.dart new file mode 100644 index 0000000..cdee33d --- /dev/null +++ b/lib/models/chat/chat_user_image_model.dart @@ -0,0 +1,33 @@ +// To parse this JSON data, do +// +// final chatUserImageModel = chatUserImageModelFromJson(jsonString); + +import 'dart:convert'; + +List chatUserImageModelFromJson(String str) => List.from(json.decode(str).map((x) => ChatUserImageModel.fromJson(x))); + +String chatUserImageModelToJson(List data) => json.encode(List.from(data.map((x) => x.toJson()))); + +class ChatUserImageModel { + ChatUserImageModel({ + this.email, + this.profilePicture, + this.mobileNumber, + }); + + String? email; + String? profilePicture; + String? mobileNumber; + + factory ChatUserImageModel.fromJson(Map json) => ChatUserImageModel( + email: json["email"] == null ? null : json["email"], + profilePicture: json["profilePicture"] == null ? null : json["profilePicture"], + mobileNumber: json["mobileNumber"] == null ? null : json["mobileNumber"], + ); + + Map toJson() => { + "email": email == null ? null : email, + "profilePicture": profilePicture == null ? null : profilePicture, + "mobileNumber": mobileNumber == null ? null : mobileNumber, + }; +} diff --git a/lib/models/chat/get_search_user_chat_model.dart b/lib/models/chat/get_search_user_chat_model.dart index 31d1085..fe87061 100644 --- a/lib/models/chat/get_search_user_chat_model.dart +++ b/lib/models/chat/get_search_user_chat_model.dart @@ -19,21 +19,23 @@ class ChatUserModel { } class ChatUser { - ChatUser( - {this.id, - this.userName, - this.email, - this.phone, - this.title, - this.userStatus, - this.image, - this.unreadMessageCount, - this.userAction, - this.isPin, - this.isFav, - this.isAdmin, - this.isTyping, - this.isLoadingCounter}); + ChatUser({ + this.id, + this.userName, + this.email, + this.phone, + this.title, + this.userStatus, + this.image, + this.unreadMessageCount, + this.userAction, + this.isPin, + this.isFav, + this.isAdmin, + this.isTyping, + this.isImageLoaded, + this.isImageLoading, + }); int? id; String? userName; @@ -48,7 +50,8 @@ class ChatUser { bool? isFav; bool? isAdmin; bool? isTyping; - bool? isLoadingCounter; + bool? isImageLoaded; + bool? isImageLoading; factory ChatUser.fromJson(Map json) => ChatUser( id: json["id"] == null ? null : json["id"], @@ -64,7 +67,8 @@ class ChatUser { isFav: json["isFav"] == null ? null : json["isFav"], isAdmin: json["isAdmin"] == null ? null : json["isAdmin"], isTyping: false, - isLoadingCounter: true, + isImageLoaded: false, + isImageLoading: true, ); Map toJson() => { diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index b48d845..c56241f 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -7,8 +7,10 @@ import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/encryption.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; @@ -75,6 +77,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ), ); notifyListeners(); + getUserImages(); } Future invokeUserChatHistoryNotDeliveredAsync({required int userId}) async { @@ -105,7 +108,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } isLoading = false; notifyListeners(); - markRead(userChatHistory, receiverUID); + // markRead(userChatHistory, receiverUID); generateConvId(); } @@ -231,7 +234,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { int? val = element.unreadMessageCount ?? 0; element.unreadMessageCount = val! + 1; } - element.isLoadingCounter = false; }, ); } @@ -698,4 +700,33 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // } // } + void getUserImages() async { + List emails = []; + for (ChatUser element in searchedChats!) { + var encMail = await Encryption().encrypt(val: element.email!); + emails.add(encMail); + } + List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); + for (ChatUser user in searchedChats!) { + for (ChatUserImageModel uImage in chatImages) { + if (user.email == uImage.email) { + user.image = uImage.profilePicture ?? ""; + user.isImageLoading = false; + user.isImageLoaded = true; + notifyListeners(); + } + } + } + + for (ChatUser favUser in favUsersList) { + for (ChatUserImageModel uImage in chatImages) { + if (favUser.email == uImage.email) { + favUser.image = uImage.profilePicture ?? ""; + favUser.isImageLoading = false; + favUser.isImageLoaded = true; + notifyListeners(); + } + } + } + } } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 1d220bc..6f9e4cf 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -68,6 +68,7 @@ class _ChatDetailScreenState extends State { isNewChat: userDetails["isNewChat"], ); } + print("Img: "+ userDetails["targetUser"].image); return Scaffold( backgroundColor: MyColors.backgroundColor, @@ -75,7 +76,7 @@ class _ChatDetailScreenState extends State { context, title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, showHomeButton: false, - image: userDetails["targetUser"].image, + image: userDetails["targetUser"].image.isEmpty ? null : userDetails["targetUser"].image, actions: [ SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() { // makeCall(callType: "AUDIO", con: hubConnection); diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 3bf8cda..1ae3252 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -27,6 +27,8 @@ class _ChatHomeState extends State { void initState() { super.initState(); data = Provider.of(context, listen: false); + data.registerEvents(); + data.getUserRecentChats(); } @override diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index e2f2dc2..5ccc6ad 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -1,10 +1,14 @@ import 'dart:convert'; +import 'dart:typed_data'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_des/flutter_des.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/encryption.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; @@ -12,6 +16,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; +import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; @@ -26,11 +31,8 @@ class _ChatHomeScreenState extends State { @override void initState() { - // TODO: implement initState super.initState(); data = Provider.of(context, listen: false); - data.registerEvents(); - data.getUserRecentChats(); } @override @@ -89,11 +91,26 @@ class _ChatHomeScreenState extends State { children: [ Stack( children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), + if (m.searchedChats![index].isImageLoading!) + const SizedBox( + height: 48, + width: 48, + child: Center(child: CircularProgressIndicator()), + ), + if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image != null && m.searchedChats![index].image.isNotEmpty) + CircularAvatar( + radius: 20, + height: 48, + width: 48, + url: m.searchedChats![index].image, + isImageBase64: true, + ), + if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isEmpty) + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), Positioned( right: 5, bottom: 1, diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 6bc0040..8bfcc4a 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -9,6 +9,7 @@ import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; @@ -36,11 +37,26 @@ class ChatFavoriteUsersScreen extends StatelessWidget { children: [ Stack( children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), + if (m.favUsersList![index].isImageLoading!) + const SizedBox( + height: 48, + width: 48, + child: Center(child: CircularProgressIndicator()), + ), + if (m.favUsersList![index].isImageLoaded! && m.favUsersList![index].image != null && m.favUsersList![index].image.isNotEmpty) + CircularAvatar( + radius: 20, + height: 48, + width: 48, + url: m.favUsersList![index].image, + isImageBase64: true, + ), + if (!m.favUsersList![index].isImageLoading! && m.favUsersList![index].isImageLoaded! && m.favUsersList![index].image.isEmpty) + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), Positioned( right: 5, bottom: 1, @@ -49,11 +65,8 @@ class ChatFavoriteUsersScreen extends StatelessWidget { height: 10, decoration: BoxDecoration( color: m.favUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), ), - ), + ).circle(10), ) ], ), diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index c2129c1..9cd7e27 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -5,6 +5,7 @@ import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; AppBar AppBarWidget(BuildContext context, {required String title, bool showHomeButton = true, bool showNotificationButton = false, bool showMemberButton = false, String? image, List? actions}) { @@ -25,12 +26,20 @@ AppBar AppBarWidget(BuildContext context, ), 4.width, if (image != null) + CircularAvatar( + url: image, + height: 40, + width: 40, + isImageBase64: true, + ), + if (image == null) SvgPicture.asset( - image, + "assets/images/user.svg", height: 40, width: 40, ), if (image != null) 14.width, + if (image == null) 14.width, title.toText24(color: MyColors.darkTextColor, isBold: true).expanded, ], ), @@ -59,7 +68,7 @@ AppBar AppBarWidget(BuildContext context, }, icon: const Icon(Icons.people, color: MyColors.textMixColor), ), - ...actions??[] + ...actions ?? [] ], ); } diff --git a/pubspec.yaml b/pubspec.yaml index f17ce5f..4fc00c8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -93,6 +93,8 @@ dependencies: flutter_webrtc: ^0.9.16 camera: ^0.10.0+4 + #Encryption + flutter_des: ^2.1.0 video_player: ^2.4.7 just_audio: ^0.9.30 From ef5136ebfa465d3b7d3ce64059da7cfda473334a Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Mon, 5 Dec 2022 11:37:50 +0300 Subject: [PATCH 150/302] worklist animation & loader --- lib/classes/consts.dart | 4 +- .../add_leave_balance_screen.dart | 27 +- lib/ui/misc/request_submit_screen.dart | 4 +- .../dynamic_screens/dynamic_input_screen.dart | 6 +- lib/ui/work_list/worklist_detail_screen.dart | 334 +++++++++--------- lib/widgets/app_bar_widget.dart | 4 +- 6 files changed, 200 insertions(+), 179 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 13c4258..57e92ec 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,8 +2,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index 85337aa..d1b7d77 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -109,17 +109,16 @@ class _AddLeaveBalanceScreenState extends State { } } } - await LeaveBalanceApiClient() - .validateAbsenceTransaction( - selectedAbsenceType!.dESCFLEXCONTEXTCODE!, - "HR_LOA_SS", - selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, - selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", - DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), - DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), - -999, - dffDataMap, - comments: comment); + await LeaveBalanceApiClient().validateAbsenceTransaction( + selectedAbsenceType!.dESCFLEXCONTEXTCODE!, + "HR_LOA_SS", + selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, + selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", + DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), + DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), + -999, + dffDataMap, + comments: comment); SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( selectedAbsenceType!.dESCFLEXCONTEXTCODE!, @@ -134,8 +133,10 @@ class _AddLeaveBalanceScreenState extends State { Utils.hideLoading(context); - await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance")); - Utils.showLoading(context); + var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance")); + if (res != null && res == true) { + Utils.showLoading(context); + } await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); Utils.hideLoading(context); } catch (ex) { diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index f5a2d1e..a4ffdcb 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -68,7 +68,7 @@ class _RequestSubmitScreenState extends State { } void submitRequest() async { - try { + try { Utils.showLoading(context); List> list = []; if (attachmentFiles.isNotEmpty) { @@ -129,7 +129,7 @@ class _RequestSubmitScreenState extends State { params!.pItemId, params!.transactionId, ); - }else if (params!.approvalFlag == 'endEmployment') { + } else if (params!.approvalFlag == 'endEmployment') { await TerminationDffApiClient().startTermApprovalProcess( "SUBMIT", comments.text, diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index ad7ad50..72aa190 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -96,9 +96,11 @@ class _DynamicInputScreenState extends State { SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp ?? ''); Utils.hideLoading(context); - await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); - Utils.showLoading(context); + if (res != null && res == true) { + Utils.showLoading(context); + } await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); Utils.hideLoading(context); } catch (ex) { diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 824edc3..5d6727c 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -191,169 +191,187 @@ class _WorkListDetailScreenState extends State { return Scaffold( appBar: AppBarWidget(context, title: LocaleKeys.details.tr()), backgroundColor: Colors.white, - body: Stack( - children: [ - Column( - children: [ - Container( - padding: const EdgeInsets.only(left: 21, right: 21, top: 16, bottom: 16), - decoration: const BoxDecoration( - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular(25), - bottomRight: Radius.circular(25), - ), - gradient: LinearGradient( - transform: GradientRotation(.83), - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, - ], - ), - ), - child: Row( - children: [ - myTab(LocaleKeys.info.tr(), 0), - (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") ? myTab(LocaleKeys.details.tr(), 1) : myTab(LocaleKeys.request.tr(), 1), - myTab(LocaleKeys.actions.tr(), 2), - myTab(LocaleKeys.attachments.tr(), 3), - ], - ), - ), - if ((workListData?.sUBJECT ?? "").isNotEmpty) workListData!.sUBJECT!.toText14().paddingOnly(top: 20, right: 21, left: 21), - PageView( - controller: controller, - onPageChanged: (pageIndex) { - setState(() { - tabIndex = pageIndex; - }); - }, - children: [ - InfoFragment( - poHeaderList: getPoNotificationBody?.pOHeader ?? [], - workListData: workListData, - itemCreationHeader: getItemCreationNtfBody?.itemCreationHeader ?? [], - getStampMsNotifications: getStampMsNotifications, - getStampNsNotifications: getStampNsNotifications, - getEitCollectionNotificationBodyList: getEitCollectionNotificationBodyList, - getPhonesNotificationBodyList: getPhonesNotificationBodyList, - getBasicDetNtfBodyList: getBasicDetNtfBodyList, - getAbsenceCollectionNotificationBodyList: getAbsenceCollectionNotificationBodyList, - getContactNotificationBodyList: getContactNotificationBodyList, - getPrNotificationBodyList: getPrNotificationBody, - ), - (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") - ? DetailFragment(workListData, memberInformationListModel) - : RequestFragment( - moNotificationBodyList: getMoNotificationBodyList, - poLinesList: getPoNotificationBody?.pOLines ?? [], - itemCreationLines: getItemCreationNtfBody?.itemCreationLines ?? [], - prLinesList: getPrNotificationBody?.pRLines ?? [], - ), - isActionHistoryLoaded - ? actionHistoryList.isEmpty - ? Utils.getNoDataWidget(context) - : ActionsFragment( - workListData!.nOTIFICATIONID, - actionHistoryList, - voidCallback: reloadWorkList, - ) - : showLoadingAnimation(), - isAttachmentLoaded - ? getAttachmentList.isEmpty - ? Utils.getNoDataWidget(context) - : AttachmentsFragment(getAttachmentList) - : showLoadingAnimation(), - ], - ).expanded, - if (isApproveAvailable || isRejectAvailable || isCloseAvailable) + body: AnimatedSwitcher( + duration: const Duration(milliseconds: 500), + switchInCurve: Curves.easeInToLinear, + transitionBuilder: (Widget child, Animation animation) { + Animation custom = Tween( + begin: const Offset(1.0, 0.0), + end: Offset.zero, + ).animate(animation); + return ClipRect( + child: SlideTransition( + position: custom, + child: child, + // textDirection: TextDirection.ltr, + ), + ); + }, + child: Stack( + key: ValueKey(AppState().workListIndex ?? 0), + children: [ + Column( + children: [ Container( - padding: const EdgeInsets.only(top: 14, bottom: 14, left: 21, right: 21), + padding: const EdgeInsets.only(left: 21, right: 21, top: 16, bottom: 16), decoration: const BoxDecoration( - color: Colors.white, - border: Border( - top: BorderSide(color: MyColors.lightGreyEFColor, width: 1.0), + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(25), + bottomRight: Radius.circular(25), + ), + gradient: LinearGradient( + transform: GradientRotation(.83), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], ), ), child: Row( children: [ - if (isRejectAvailable) - DefaultButton( - LocaleKeys.reject.tr(), - () => performAction("REJECTED"), - colors: const [Color(0xffE47A7E), Color(0xffDE6D71)], - ).expanded, - if (isApproveAvailable && isRejectAvailable) 8.width, - if (isApproveAvailable) - DefaultButton( - LocaleKeys.approve.tr(), - () => performAction("APPROVED"), - colors: const [Color(0xff28C884), Color(0xff1BB271)], - ).expanded, - if (isCloseAvailable) - DefaultButton( - LocaleKeys.ok.tr(), - () => performAction("CLOSE"), - colors: const [Color(0xff32D892), Color(0xff1AB170)], - ).expanded, - 8.width, - Container( - height: 43, - width: 43, - decoration: const BoxDecoration( - shape: BoxShape.circle, - color: MyColors.lightGreyE6Color, - ), - child: Icon(showFabOptions ? Icons.more_vert_rounded : Icons.more_horiz_rounded, color: MyColors.darkIconColor), - ).onPress(() { - setState(() { - showFabOptions = true; - }); - }) + myTab(LocaleKeys.info.tr(), 0), + (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") ? myTab(LocaleKeys.details.tr(), 1) : myTab(LocaleKeys.request.tr(), 1), + myTab(LocaleKeys.actions.tr(), 2), + myTab(LocaleKeys.attachments.tr(), 3), ], ), - ) - ], - ), - IgnorePointer( - ignoring: !showFabOptions, - child: AnimatedOpacity( - opacity: showFabOptions ? 1 : 0, - duration: const Duration(milliseconds: 250), - child: Container( - padding: const EdgeInsets.only(left: 21, right: 21, bottom: 75 - 12), - width: double.infinity, - height: double.infinity, - color: Colors.white.withOpacity(.67), - alignment: Alignment.bottomRight, - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.end, + ), + if ((workListData?.sUBJECT ?? "").isNotEmpty) workListData!.sUBJECT!.toText14().paddingOnly(top: 20, right: 21, left: 21), + PageView( + controller: controller, + onPageChanged: (int pageIndex) { + setState(() { + tabIndex = pageIndex; + }); + }, children: [ - myFab(LocaleKeys.skip.tr(), "assets/images/skip.svg").onPress(() { - if (AppState().workList!.length - 1 > AppState().workListIndex!) { - AppState().setWorkListIndex = AppState().workListIndex! + 1; - workListData = null; - showFabOptions = false; - tabIndex = 0; - getDataFromState(); - } else if (AppState().workList!.length - 1 == AppState().workListIndex!) { - Navigator.pop(context); - } - }), - 12.height, - ...viewApiButtonsList(notificationButtonsList), + InfoFragment( + poHeaderList: getPoNotificationBody?.pOHeader ?? [], + workListData: workListData, + itemCreationHeader: getItemCreationNtfBody?.itemCreationHeader ?? [], + getStampMsNotifications: getStampMsNotifications, + getStampNsNotifications: getStampNsNotifications, + getEitCollectionNotificationBodyList: getEitCollectionNotificationBodyList, + getPhonesNotificationBodyList: getPhonesNotificationBodyList, + getBasicDetNtfBodyList: getBasicDetNtfBodyList, + getAbsenceCollectionNotificationBodyList: getAbsenceCollectionNotificationBodyList, + getContactNotificationBodyList: getContactNotificationBodyList, + getPrNotificationBodyList: getPrNotificationBody, + ), + (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") + ? DetailFragment(workListData, memberInformationListModel) + : RequestFragment( + moNotificationBodyList: getMoNotificationBodyList, + poLinesList: getPoNotificationBody?.pOLines ?? [], + itemCreationLines: getItemCreationNtfBody?.itemCreationLines ?? [], + prLinesList: getPrNotificationBody?.pRLines ?? [], + ), + isActionHistoryLoaded + ? actionHistoryList.isEmpty + ? Utils.getNoDataWidget(context) + : ActionsFragment( + workListData!.nOTIFICATIONID, + actionHistoryList, + voidCallback: reloadWorkList, + ) + : showLoadingAnimation(), + isAttachmentLoaded + ? getAttachmentList.isEmpty + ? Utils.getNoDataWidget(context) + : AttachmentsFragment(getAttachmentList) + : showLoadingAnimation(), ], + ).expanded, + if (isApproveAvailable || isRejectAvailable || isCloseAvailable) + Container( + padding: const EdgeInsets.only(top: 14, bottom: 14, left: 21, right: 21), + decoration: const BoxDecoration( + color: Colors.white, + border: Border( + top: BorderSide(color: MyColors.lightGreyEFColor, width: 1.0), + ), + ), + child: Row( + children: [ + if (isRejectAvailable) + DefaultButton( + LocaleKeys.reject.tr(), + () => performAction("REJECTED"), + colors: const [Color(0xffE47A7E), Color(0xffDE6D71)], + ).expanded, + if (isApproveAvailable && isRejectAvailable) 8.width, + if (isApproveAvailable) + DefaultButton( + LocaleKeys.approve.tr(), + () => performAction("APPROVED"), + colors: const [Color(0xff28C884), Color(0xff1BB271)], + ).expanded, + if (isCloseAvailable) + DefaultButton( + LocaleKeys.ok.tr(), + () => performAction("CLOSE"), + colors: const [Color(0xff32D892), Color(0xff1AB170)], + ).expanded, + 8.width, + Container( + height: 43, + width: 43, + decoration: const BoxDecoration( + shape: BoxShape.circle, + color: MyColors.lightGreyE6Color, + ), + child: Icon(showFabOptions ? Icons.more_vert_rounded : Icons.more_horiz_rounded, color: MyColors.darkIconColor), + ).onPress(() { + setState(() { + showFabOptions = true; + }); + }) + ], + ), + ) + ], + ), + IgnorePointer( + ignoring: !showFabOptions, + child: AnimatedOpacity( + opacity: showFabOptions ? 1 : 0, + duration: const Duration(milliseconds: 250), + child: Container( + padding: const EdgeInsets.only(left: 21, right: 21, bottom: 75 - 12), + width: double.infinity, + height: double.infinity, + color: Colors.white.withOpacity(.67), + alignment: Alignment.bottomRight, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + myFab(LocaleKeys.skip.tr(), "assets/images/skip.svg").onPress(() { + if (AppState().workList!.length - 1 > AppState().workListIndex!) { + AppState().setWorkListIndex = AppState().workListIndex! + 1; + workListData = null; + showFabOptions = false; + tabIndex = 0; + getDataFromState(); + } else if (AppState().workList!.length - 1 == AppState().workListIndex!) { + Navigator.pop(context); + } + }), + 12.height, + ...viewApiButtonsList(notificationButtonsList), + ], + ), ), - ), - ).onPress(() { - setState(() { - showFabOptions = false; - }); - }), - ), - ], + ).onPress(() { + setState(() { + showFabOptions = false; + }); + }), + ), + ], + ), ), floatingActionButton: (!isApproveAvailable && !isRejectAvailable && !isCloseAvailable) ? Container( @@ -546,7 +564,7 @@ class _WorkListDetailScreenState extends State { Future performNetworkCall(BuildContext context, {String? email, String? userId}) async { showDialog( context: context, - builder: (cxt) => ConfirmDialog( + builder: (BuildContext cxt) => ConfirmDialog( message: LocaleKeys.wantToReject.tr(), okTitle: LocaleKeys.reject.tr(), onTap: () async { @@ -629,12 +647,12 @@ class _WorkListDetailScreenState extends State { print(actionMode); showDialog( context: context, - builder: (cxt) => AcceptRejectInputDialog( + builder: (BuildContext cxt) => AcceptRejectInputDialog( message: title != null ? null : LocaleKeys.requestedItems.tr(), title: title, notificationGetRespond: notificationNoteInput, actionMode: actionMode, - onTap: (note) { + onTap: (String note) { Map payload = { "P_ACTION_MODE": actionMode, "P_APPROVER_INDEX": null, @@ -915,9 +933,9 @@ class _WorkListDetailScreenState extends State { apiCallCount++; notificationButtonsList = await WorkListApiClient().getNotificationButtons(workListData!.nOTIFICATIONID!); if (notificationButtonsList.isNotEmpty) { - isCloseAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "CLOSE"); - isApproveAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "APPROVED"); - isRejectAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "REJECTED"); + isCloseAvailable = notificationButtonsList.any((GetNotificationButtonsList element) => element.bUTTONACTION == "CLOSE"); + isApproveAvailable = notificationButtonsList.any((GetNotificationButtonsList element) => element.bUTTONACTION == "APPROVED"); + isRejectAvailable = notificationButtonsList.any((GetNotificationButtonsList element) => element.bUTTONACTION == "REJECTED"); } apiCallCount--; if (apiCallCount == 0) { diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index c2129c1..fa59d3a 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -20,7 +20,7 @@ AppBar AppBarWidget(BuildContext context, children: [ GestureDetector( behavior: HitTestBehavior.opaque, - onTap: Feedback.wrapForTap(() => Navigator.maybePop(context), context), + onTap: Feedback.wrapForTap(() => Navigator.maybePop(context, true), context), child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), ), 4.width, @@ -59,7 +59,7 @@ AppBar AppBarWidget(BuildContext context, }, icon: const Icon(Icons.people, color: MyColors.textMixColor), ), - ...actions??[] + ...actions ?? [] ], ); } From 13a7f60d675c94527ca9d24488389ad74823fe9d Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 5 Dec 2022 11:59:23 +0300 Subject: [PATCH 151/302] Chat Fixes & User Chat Counter --- lib/classes/encryption.dart | 16 +++++++--------- lib/provider/chat_provider_model.dart | 4 +--- lib/ui/chat/chat_detailed_screen.dart | 1 - lib/ui/chat/chat_home.dart | 4 +++- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/lib/classes/encryption.dart b/lib/classes/encryption.dart index f26c92b..a4ab6be 100644 --- a/lib/classes/encryption.dart +++ b/lib/classes/encryption.dart @@ -2,27 +2,25 @@ import 'dart:convert'; import 'package:flutter/services.dart'; -class Encryption { - static final Encryption _instance = Encryption._internal(); +class EmailImageEncryption { + static final EmailImageEncryption _instance = EmailImageEncryption._internal(); static const MethodChannel _channel = MethodChannel('flutter_des'); static const key = "PeShVmYp"; static const iv = "j70IbWYn"; - Encryption._internal(); + EmailImageEncryption._internal(); - factory Encryption() => _instance; + factory EmailImageEncryption() => _instance; Future encrypt({required String val}) async { Uint8List? crypt = await _channel.invokeMethod('encrypt', [val, key, iv]); - String data = base64Encode(crypt!.toList()); - print("Base64Enc: " + data); - return data; + String enc = base64Encode(crypt!.toList()); + return enc; } Future decrypt({required String encodedVal}) async { - var deco = base64Decode(encodedVal); + Uint8List deco = base64Decode(encodedVal); String? decCrypt = await _channel.invokeMethod('decrypt', [deco, key, iv]); - print("Base64ToStringDec: " + decCrypt!); return decCrypt!; } } diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index c56241f..535dc2e 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -460,7 +460,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { print("Normal Attachment Msg"); Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); - logger.d(value); String? ext = getFileExtension(selectedFile.path); Utils.hideLoading(context); sendChatToServer( @@ -703,8 +702,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void getUserImages() async { List emails = []; for (ChatUser element in searchedChats!) { - var encMail = await Encryption().encrypt(val: element.email!); - emails.add(encMail); + emails.add(await EmailImageEncryption().encrypt(val: element.email!)); } List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); for (ChatUser user in searchedChats!) { diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 6f9e4cf..345884f 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -68,7 +68,6 @@ class _ChatDetailScreenState extends State { isNewChat: userDetails["isNewChat"], ); } - print("Img: "+ userDetails["targetUser"].image); return Scaffold( backgroundColor: MyColors.backgroundColor, diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 1ae3252..0438dc6 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -28,7 +28,9 @@ class _ChatHomeState extends State { super.initState(); data = Provider.of(context, listen: false); data.registerEvents(); - data.getUserRecentChats(); + if (data.searchedChats == null || data.searchedChats!.isEmpty) { + data.getUserRecentChats(); + } } @override From 6a3c6a25d0c9fd7d833e220846ab308b2575137f Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 5 Dec 2022 12:40:56 +0300 Subject: [PATCH 152/302] Chat Fixes & User Chat Counter --- lib/provider/chat_provider_model.dart | 15 +++++++++------ lib/ui/chat/chat_home_screen.dart | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 535dc2e..fd908a1 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -38,10 +38,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void registerEvents() { hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - hubConnection.on("OnSeenChatUserAsync", onChatSeen); + // hubConnection.on("OnSeenChatUserAsync", onChatSeen); //hubConnection.on("OnUserTypingAsync", onUserTyping); hubConnection.on("OnUserCountAsync", userCountAsync); - hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); + // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); } @@ -108,7 +108,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } isLoading = false; notifyListeners(); - // markRead(userChatHistory, receiverUID); + markRead(userChatHistory, receiverUID); generateConvId(); } @@ -124,7 +124,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (!element.isSeen!) { element.isSeen = true; dynamic data = [ - {"userChatHistoryId": element.userChatHistoryId, "TargetUserId": element.currentUserId, "isDelivered": true, "isSeen": true} + { + "userChatHistoryId": element.userChatHistoryId, + "TargetUserId": element.currentUserId == receiverID ? element.currentUserId : element.targetUserId, + "isDelivered": true, + "isSeen": true, + } ]; updateUserChatHistoryStatusAsync(data); notifyListeners(); @@ -190,8 +195,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void onChatSeen(List? args) { dynamic items = args!.toList(); - logger.d("---------------------------------Chat Seen -------------------------------------"); - logger.d(items); // for (var user in searchedChats!) { // if (user.id == items.first["id"]) { // user.userStatus = items.first["userStatus"]; diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 5ccc6ad..73c084a 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -84,6 +84,7 @@ class _ChatHomeScreenState extends State { itemCount: m.searchedChats!.length, shrinkWrap: true, physics: const ClampingScrollPhysics(), + padding: EdgeInsets.only(bottom: 80.0), itemBuilder: (BuildContext context, int index) { return SizedBox( height: 55, @@ -189,14 +190,13 @@ class _ChatHomeScreenState extends State { AppRoutes.chatDetailed, arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, ).then((Object? value) { - // m.GetUserChatHistoryNotDeliveredAsync(userId: int.parse(AppState().chatDetails!.response!.id.toString())); m.clearSelections(); m.notifyListeners(); }); }); }, separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), - ).paddingOnly(bottom: 70).expanded, + ).expanded, ], ).paddingOnly(left: 21, right: 21); }, From fb97319164d030fee3b52146e9fc315a1f4f1d30 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 5 Dec 2022 14:36:57 +0300 Subject: [PATCH 153/302] Chat Fixes & User Chat Counter --- lib/provider/chat_provider_model.dart | 46 +-------------------------- lib/ui/landing/dashboard_screen.dart | 4 +-- 2 files changed, 3 insertions(+), 47 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index fd908a1..385c64a 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -660,48 +660,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sFileType = ""; } - // void scrollListener() { - // _firstAutoscrollExecuted = true; - // if (scrollController.hasClients && scrollController.position.pixels == scrollController.position.maxScrollExtent) { - // _shouldAutoscroll = true; - // } else { - // _shouldAutoscroll = false; - // } - // } - // - // void scrollToBottom() { - // scrollController.animateTo( - // scrollController.position.maxScrollExtent + 100, - // duration: const Duration(milliseconds: 500), - // curve: Curves.easeIn, - // ); - // } - - void msgScroll() { - // scrollController.animateTo( - // // index: 150, - // duration: Duration(seconds: 2), - // curve: Curves.easeInOutCubic); - // scrollController.animateTo( - // scrollController.position.minScrollExtent - 100, - // duration: const Duration(milliseconds: 500), - // curve: Curves.easeIn, - // ); - } - -// Future getDownLoadFile(String fileName) async { -// var data = await ChatApiClient().downloadURL(fileName: "data"); -// Image.memory(data); -// } - -// void getUserChatHistoryNotDeliveredAsync({required int userId}) async { -// try { -// await hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [userId]); -// } finally { -// hubConnection.off("GetUserChatHistoryNotDeliveredAsync", method: chatNotDelivered); -// } -// } - void getUserImages() async { List emails = []; for (ChatUser element in searchedChats!) { @@ -714,20 +672,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { user.image = uImage.profilePicture ?? ""; user.isImageLoading = false; user.isImageLoaded = true; - notifyListeners(); } } } - for (ChatUser favUser in favUsersList) { for (ChatUserImageModel uImage in chatImages) { if (favUser.email == uImage.email) { favUser.image = uImage.profilePicture ?? ""; favUser.isImageLoading = false; favUser.isImageLoaded = true; - notifyListeners(); } } } + notifyListeners(); } } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index b449bd1..954b647 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -66,11 +66,11 @@ class _DashboardScreenState extends State { await hubConnection.start(); hubConnection.onreconnecting(({Exception? error}) { print("============== Reconnecting ======================"); - if (hubConnection.state != HubConnectionState.Connected) { + //if (hubConnection.state != HubConnectionState.Connected) { data.getUserAutoLoginToken().whenComplete(() { buildHubConnection(); }); - } + //} }); } From 0db4a5a7cd3b88863e58c8d6c000b19bcc430d54 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 5 Dec 2022 14:38:57 +0300 Subject: [PATCH 154/302] Chat Fixes & User Chat Counter --- lib/ui/landing/dashboard_screen.dart | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 954b647..e1250b4 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -66,11 +66,10 @@ class _DashboardScreenState extends State { await hubConnection.start(); hubConnection.onreconnecting(({Exception? error}) { print("============== Reconnecting ======================"); - //if (hubConnection.state != HubConnectionState.Connected) { - data.getUserAutoLoginToken().whenComplete(() { - buildHubConnection(); - }); - //} + data.getUserAutoLoginToken().whenComplete(() { + buildHubConnection(); + data.notifyListeners(); + }); }); } From 9d0bf4fe7e24e4e19d355c6f0092aa0846496b09 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Mon, 5 Dec 2022 15:30:57 +0300 Subject: [PATCH 155/302] fix issues --- lib/api/dashboard_api_client.dart | 5 ++- lib/api/leave_balance_api_client.dart | 35 +++++++++++++++---- lib/classes/consts.dart | 4 +-- .../add_leave_balance_screen.dart | 29 +++++++++++---- .../leave_balance/leave_balance_screen.dart | 31 ++++++++++++---- lib/ui/misc/request_submit_screen.dart | 15 ++++++++ .../dynamic_screens/dynamic_input_screen.dart | 4 ++- .../services_menu_list_screen.dart | 2 +- lib/ui/my_team/create_request.dart | 2 +- lib/widgets/balances_dashboard_widget.dart | 15 +++++++- 10 files changed, 115 insertions(+), 27 deletions(-) diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index 9747e5c..c8fb015 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -65,10 +65,13 @@ class DashboardApiClient { }, url, postParams); } - Future> getAccrualBalances(String effectiveDate) async { + Future> getAccrualBalances(String effectiveDate, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ACCRUAL_BALANCES"; Map postParams = {"P_EFFECTIVE_DATE": effectiveDate}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.getAccrualBalancesList ?? []; diff --git a/lib/api/leave_balance_api_client.dart b/lib/api/leave_balance_api_client.dart index cd577ba..bb3f129 100644 --- a/lib/api/leave_balance_api_client.dart +++ b/lib/api/leave_balance_api_client.dart @@ -17,27 +17,33 @@ class LeaveBalanceApiClient { factory LeaveBalanceApiClient() => _instance; - Future> getAbsenceTransactions(int pSelectedResopID) async { + Future> getAbsenceTransactions(int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceTransactionList ?? []; }, url, postParams); } - Future> getAbsenceAttendanceTypes() async { + Future> getAbsenceAttendanceTypes({String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_ATTENDANCE_TYPES"; Map postParams = {}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceAttendanceTypesList ?? []; }, url, postParams); } - Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID) async { + Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}CALCULATE_ABSENCE_DURATION"; Map postParams = { "P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID, @@ -49,16 +55,22 @@ class LeaveBalanceApiClient { "P_TIME_START": null, }; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.calculateAbsenceDuration!; }, url, postParams); } - Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID) async { + Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_DFF_STRUCTURE"; Map postParams = {"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceDffStructureList ?? []; @@ -67,7 +79,7 @@ class LeaveBalanceApiClient { Future validateAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = ""}) async { + {String comments = "", String? empID}) async { String url = "${ApiConsts.erpRest}VALIDATE_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -86,6 +98,9 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; @@ -94,7 +109,7 @@ class LeaveBalanceApiClient { Future submitAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = ""}) async { + {String comments = "", String? empID}) async { String url = "${ApiConsts.erpRest}SUBMIT_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -113,6 +128,9 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.sumbitAbsenceTransactionList!; @@ -129,7 +147,7 @@ class LeaveBalanceApiClient { }, url, postParams); } - Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID) async { + Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}START_ABSENCE_APPROVAL_PROCESS"; Map postParams = { "P_TRANSACTION_ID": pTransactionID, @@ -138,6 +156,9 @@ class LeaveBalanceApiClient { "P_MENU_TYPE": "E", }; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.startAbsenceApprovalProccess!; diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c5788f9..ede22e3 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -1,7 +1,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + //static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index 85337aa..b2b2843 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -24,7 +25,8 @@ import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; class AddLeaveBalanceScreen extends StatefulWidget { - AddLeaveBalanceScreen({Key? key}) : super(key: key); + final String selectedEmp; + AddLeaveBalanceScreen({this.selectedEmp ='',Key? key}) : super(key: key); @override _AddLeaveBalanceScreenState createState() { @@ -43,6 +45,8 @@ class _AddLeaveBalanceScreenState extends State { String comment = ""; ReplacementList? selectedReplacementEmployee; + dynamic dynamicParams; + String selectedEmp =""; DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); @override @@ -54,7 +58,7 @@ class _AddLeaveBalanceScreenState extends State { void getAbsenceAttendanceTypes() async { try { Utils.showLoading(context); - absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(); + absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(empID: selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -67,7 +71,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); getabsenceDffStructureList.clear(); - getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999); + getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999, empID: selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -80,7 +84,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); CalculateAbsenceDuration duration = await LeaveBalanceApiClient() - .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999); + .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999, empID: selectedEmp); totalDays = duration.pABSENCEDAYS?.toInt(); Utils.hideLoading(context); @@ -119,7 +123,7 @@ class _AddLeaveBalanceScreenState extends State { DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), -999, dffDataMap, - comments: comment); + comments: comment,empID: selectedEmp ); SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( selectedAbsenceType!.dESCFLEXCONTEXTCODE!, @@ -130,7 +134,8 @@ class _AddLeaveBalanceScreenState extends State { DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), -999, dffDataMap, - comments: comment); + comments: comment, + empID: selectedEmp); Utils.hideLoading(context); @@ -151,6 +156,18 @@ class _AddLeaveBalanceScreenState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + getAbsenceAttendanceTypes(); + + } + } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 548ca99..1218914 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -1,6 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -8,12 +9,14 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart'; +import 'package:mohem_flutter_app/ui/my_attendance/services_menu_list_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/balances_dashboard_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; class LeaveBalance extends StatefulWidget { - LeaveBalance({Key? key}) : super(key: key); + final String selectedEmp; + LeaveBalance({this.selectedEmp ='', Key? key}) : super(key: key); @override _LeaveBalanceState createState() { @@ -25,12 +28,13 @@ class _LeaveBalanceState extends State { List? absenceTransList; DateTime accrualDateTime = DateTime.now(); - + dynamic dynamicParams; + String selectedEmp =""; @override void initState() { super.initState(); - getAbsenceTransactions(); + } @override @@ -39,9 +43,9 @@ class _LeaveBalanceState extends State { } void getAbsenceTransactions() async { - try { + try { Utils.showLoading(context); - absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999); + absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999, empID: selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -52,6 +56,19 @@ class _LeaveBalanceState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + getAbsenceTransactions(); + // setState(() {}); + + } + } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( @@ -62,7 +79,7 @@ class _LeaveBalanceState extends State { physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ - BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true), + BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true,), 12.height, absenceTransList == null ? const SizedBox() @@ -111,7 +128,7 @@ class _LeaveBalanceState extends State { ), child: const Icon(Icons.add, color: Colors.white, size: 30), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.addLeaveBalance); + Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: selectedEmp ??''); }), ); } diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index f5a2d1e..a12bedb 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -8,6 +8,7 @@ import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/api/termination_dff_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -48,6 +49,8 @@ class _RequestSubmitScreenState extends State { List approverList = []; List attachmentFiles = []; + dynamic dynamicParams; + String selectedEmp =""; @override void initState() { @@ -121,6 +124,7 @@ class _RequestSubmitScreenState extends State { params!.transactionId, comments.text, -999, + empID: selectedEmp ); } else if (params!.approvalFlag == 'eit') { await MyAttendanceApiClient().startEitApprovalProcess( @@ -155,6 +159,17 @@ class _RequestSubmitScreenState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + submitRequest(); + } + } if (params == null) { params = ModalRoute.of(context)!.settings.arguments as RequestSubmitScreenParams; getApproverList(); diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index ad7ad50..6f02be4 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -595,7 +595,9 @@ class _DynamicInputScreenState extends State { ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ if (model.rEADONLY != "Y") - for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem( + padding: EdgeInsets.all(10), + child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), ], onSelected: (int popipIndex) async { ESERVICESDV eservicesdv = ESERVICESDV( diff --git a/lib/ui/my_attendance/services_menu_list_screen.dart b/lib/ui/my_attendance/services_menu_list_screen.dart index cd76132..7a61029 100644 --- a/lib/ui/my_attendance/services_menu_list_screen.dart +++ b/lib/ui/my_attendance/services_menu_list_screen.dart @@ -54,7 +54,7 @@ class ServicesMenuListScreen extends StatelessWidget { } return; } else if (servicesMenuData.list[index].requestType == "ABSENCE") { - Navigator.pushNamed(context, AppRoutes.leaveBalance); + Navigator.pushNamed(context, AppRoutes.leaveBalance, arguments: servicesMenuData?.selectedEmp ??''); return; } if (servicesMenuData.list[index].requestType == "EIT") { diff --git a/lib/ui/my_team/create_request.dart b/lib/ui/my_team/create_request.dart index 53205c9..1637586 100644 --- a/lib/ui/my_team/create_request.dart +++ b/lib/ui/my_team/create_request.dart @@ -69,7 +69,7 @@ class _CreateRequestState extends State { if (menu.menuEntry.menuEntryType == "FUNCTION") { if (menu.menuEntry.requestType == "EIT") { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!)); + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); } else {} } else { Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(menu.menuEntry.prompt!, menu.menuEntiesList, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index e546acf..e640ff4 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -45,6 +45,8 @@ class _BalancesDashboardWidgetState extends State { late DateTime accrualDateTime; GetAccrualBalancesList? leaveBalanceAccrual; List? ticketBalanceAccrualList; + dynamic dynamicParams; + String selectedEmp =""; @override void initState() { @@ -60,7 +62,7 @@ class _BalancesDashboardWidgetState extends State { void changeAccrualDate() async { try { Utils.showLoading(context); - List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime)); + List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime),empID: selectedEmp); if (accrualList.isNotEmpty) { if (widget.isLeaveBalance) { leaveBalanceAccrual = accrualList[0]; @@ -86,6 +88,17 @@ class _BalancesDashboardWidgetState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + changeAccrualDate(); + } + } if (leaveBalanceAccrual == null && widget.isLeaveBalance) { leaveBalanceAccrual = Provider.of(context, listen: false).leaveBalanceAccrual; chartModelList = [ From 96e52abbb9f40aaa4525ecdd358c2a5b7f95d459 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 5 Dec 2022 15:57:02 +0300 Subject: [PATCH 156/302] Committing before reverting from SignalR to Apis --- assets/langs/ar-SA.json | 6 +- assets/langs/en-US.json | 8 +- assets/lottie/marathon_waiting.json | 1 + lib/api/marathon/marathon_api_client.dart | 228 +++++++++++------- lib/classes/consts.dart | 16 +- lib/classes/lottie_consts.dart | 2 +- lib/config/routes.dart | 9 +- lib/generated/locale_keys.g.dart | 3 + lib/main.dart | 4 +- lib/models/marathon/marathon_model.dart | 8 +- lib/ui/marathon/marathon_intro_screen.dart | 6 +- lib/ui/marathon/marathon_provider.dart | 216 +++++++++++++---- .../marathon_sponsor_video_screen.dart | 91 +++++++ lib/ui/marathon/marathon_waiting_screen.dart | 62 +++++ .../marathon/marathon_winner_selection.dart | 2 +- .../widgets/marathon_progress_container.dart | 63 +++-- .../marathon_qualifiers_container.dart | 25 +- lib/ui/marathon/widgets/question_card.dart | 19 +- lib/widgets/app_bar_widget.dart | 17 +- 19 files changed, 579 insertions(+), 207 deletions(-) create mode 100644 assets/lottie/marathon_waiting.json create mode 100644 lib/ui/marathon/marathon_sponsor_video_screen.dart create mode 100644 lib/ui/marathon/marathon_waiting_screen.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index b5fd9ce..4e1d930 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -505,6 +505,8 @@ "youMissedTheQuestion": "نفد منك الوقت. أنت خارج اللعبة. لكن يمكنك الاستمرار وكمشاهد.", "wrongAnswer": "إجابتك غير صحيحة. أنت خارج اللعبة. لكن يمكنك الاستمرار وكمشاهد.", "oops": "أوه!!!", - "winner": "الفائز" - + "winner": "الفائز", + "youWantToLeaveMarathon": "هل أنت متأكد أنك تريد العودة؟ سوف تخرج من المسابقة.", + "ourSponsor": "راعينا:", + "startingIn": "يبدأ في" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 3ddc9f7..1b0d468 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -499,13 +499,15 @@ "codeExpire": "The verification code has been expired", "allQuestionsCorrect": "You have answered all questions correct", "typeheretoreply": "Type here to reply", - "favorite" : "My Favorites", + "favorite": "My Favorites", "searchfromchat": "Search from chat", "yourAnswerCorrect": "Your answer is correct", "youMissedTheQuestion": "You ran out of time. You are out of the game. But you can continue and as a viewer.", "wrongAnswer": "Your answer is Incorrect. You are out of the game. But you can continue and as a viewer.", "oops": "Ooopsss!!!!", - "winner": "WINNER" - + "winner": "WINNER", + "youWantToLeaveMarathon": "Are you sure you want to go back? You will be out of the contest.", + "ourSponsor": "Our Sponsor:", + "startingIn": "Starting in" } \ No newline at end of file diff --git a/assets/lottie/marathon_waiting.json b/assets/lottie/marathon_waiting.json new file mode 100644 index 0000000..83e4756 --- /dev/null +++ b/assets/lottie/marathon_waiting.json @@ -0,0 +1 @@ +{"nm":"Loading_003","mn":"","layers":[{"ty":0,"nm":"2","mn":"","sr":1,"st":0,"op":600.000024438501,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[250,250,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"w":500,"h":500,"refId":"comp_0","ind":0},{"ty":0,"nm":"1","mn":"","sr":1,"st":0,"op":600.000024438501,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[250,250,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":60,"ix":11},"r":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-31],"t":4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-31],"t":207.000008431283}],"ix":10}},"ef":[],"w":500,"h":500,"refId":"comp_1","ind":1}],"ddd":0,"h":500,"w":500,"meta":{"a":"","k":"","d":"","g":"@lottiefiles/toolkit-js 0.17.4","tc":"#ffffff"},"v":"5.2.1","fr":29.9700012207031,"op":202.000008227629,"ip":9.00000036657752,"assets":[{"nm":"","mn":"","layers":[{"ty":4,"nm":"Layer 3 Outlines 3","mn":"","sr":1,"st":5.00000020365417,"op":605.000024642155,"ip":-19.0000007738859,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":1,"ao":0,"ks":{"a":{"a":0,"k":[186.018,192.618,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[97.292,100.917,100],"t":4},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[104.224,99.892,100],"t":108},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[97.292,100.917,100],"t":209.000008512745}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[252.209,249.449,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[310.866],"t":4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-49],"t":209.000008512745}],"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[51.471,-19.6],[51.29,75.368],[-11.48,42.136],[-85.813,28.535],[-16.737,-1.394],[-18.031,-37.988],[22.567,-60.623]],"o":[[-20.195,7.689],[-24.566,-36.096],[23.791,-87.319],[15.938,-5.3],[41.874,3.489],[28.123,59.252],[-20.321,54.592]],"v":[[18.613,169.26],[-146.062,126.343],[-172.423,1.333],[1.405,-192.793],[62.244,-200.318],[155.78,-124.529],[159.191,64.737]]},"ix":2}},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"np":0,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.098,0.1137,0.1451],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100.261,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[184.153,201.962],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":0},{"ty":4,"nm":"Layer 5 Outlines 3","mn":"","sr":1,"st":5.00000020365417,"op":605.000024642155,"ip":-19.0000007738859,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":2,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[216.251,216.449,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[252.209,249.449,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[119.432,0],[0,-119.541],[-119.432,0],[0,119.542]],"o":[[-119.432,0],[0,119.542],[119.432,0],[0,-119.541]],"v":[[0,-216.449],[-216.25,0],[0,216.449],[216.251,0]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gf","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[65.201,-74.966],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.16862745098039217,0.7215686274509804,0.6588235294117647,0.455,0.13725490196078433,0.615686274509804,0.5607843137254902,0.999,0.11372549019607843,0.5725490196078431,0.6666666666666666],"ix":9}},"t":1,"a":{"a":0,"k":0},"s":{"a":0,"k":[-130.068,76.804],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[216.251,216.449],"ix":2},"r":{"a":0,"k":-149.651,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1}],"id":"comp_0","fr":30},{"nm":"","mn":"","layers":[{"ty":4,"nm":"Layer 3 Outlines 3","mn":"","sr":1,"st":5.00000020365417,"op":605.000024642155,"ip":-19.0000007738859,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":1,"ao":0,"ks":{"a":{"a":0,"k":[186.018,192.618,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[97.292,100.917,100],"t":4},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[104.224,99.892,100],"t":108},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[97.292,100.917,100],"t":209.000008512745}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[252.209,249.449,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-49],"t":4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[310.866],"t":209.000008512745}],"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[51.471,-19.6],[51.29,75.368],[-11.48,42.136],[-85.813,28.535],[-16.737,-1.394],[-18.031,-37.988],[22.567,-60.623]],"o":[[-20.195,7.689],[-24.566,-36.096],[23.791,-87.319],[15.938,-5.3],[41.874,3.489],[28.123,59.252],[-20.321,54.592]],"v":[[18.613,169.26],[-146.062,126.343],[-172.423,1.333],[1.405,-192.793],[62.244,-200.318],[155.78,-124.529],[159.191,64.737]]},"ix":2}},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"np":0,"it":[{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.098,0.1137,0.1451],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100.261,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[184.153,201.962],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":0},{"ty":4,"nm":"Layer 5 Outlines 3","mn":"","sr":1,"st":5.00000020365417,"op":605.000024642155,"ip":-19.0000007738859,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":2,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[216.251,216.449,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[252.209,249.449,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":1,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[119.432,0],[0,-119.541],[-119.432,0],[0,119.542]],"o":[[-119.432,0],[0,119.542],[119.432,0],[0,-119.541]],"v":[[0,-216.449],[-216.25,0],[0,216.449],[216.251,0]]},"ix":2}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gf","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[65.201,-74.966],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.07058823529411765,0.3411764705882353,0.396078431372549,0.424,0.07058823529411765,0.3411764705882353,0.396078431372549,1,0.07058823529411765,0.3411764705882353,0.396078431372549],"ix":9}},"t":1,"a":{"a":0,"k":0},"s":{"a":0,"k":[-130.068,76.804],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[216.251,216.449],"ix":2},"r":{"a":0,"k":-149.651,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1}],"id":"comp_1","fr":30}]} \ No newline at end of file diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index b17683a..1d9eb81 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -1,22 +1,19 @@ import 'dart:convert'; -import 'package:flutter/material.dart'; import 'package:http/http.dart'; import 'package:logger/logger.dart' as L; -import 'package:logging/logging.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_generic_model.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; -import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; -import 'package:provider/provider.dart'; -import 'package:signalr_netcore/http_connection_options.dart'; import 'package:signalr_netcore/hub_connection.dart'; -import 'package:signalr_netcore/hub_connection_builder.dart'; class MarathonApiClient { + late HubConnection hubConnection; + L.Logger logger = L.Logger(); + Future getMarathonToken() async { String employeeUserName = AppState().getUserName ?? ""; String employeeSession = AppState().postParamsObject?.pSessionId.toString() ?? ""; @@ -55,11 +52,9 @@ class MarathonApiClient { AppState().setMarathonProjectId = marathonModel.data[0]["id"] ?? ""; return marathonModel.data[0]["id"] ?? ""; } else { - //TODO : DO ERROR HANDLING HERE return ""; } } else { - //TODO : DO ERROR HANDLING HERE return ""; } } @@ -80,99 +75,146 @@ class MarathonApiClient { return marathonDetailModel; } - late HubConnection hubConnection; - L.Logger logger = L.Logger(); + Future joinMarathonAsParticipant() async { + Map jsonObject = { + "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER ?? "", + "employeeName": AppState().memberInformationList!.eMPLOYEENAME ?? "", + "marathonId": AppState().getMarathonProjectId!, + }; - Future buildHubConnection(BuildContext context) async { - HttpConnectionOptions httpOptions = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); - hubConnection = HubConnectionBuilder() - .withUrl( - ApiConsts.marathonHubConnectionUrl + "?employeeNumber=${AppState().memberInformationList!.eMPLOYEENUMBER ?? ""}&employeeName=${AppState().memberInformationList!.eMPLOYEENAME ?? ""}", - options: httpOptions, - ) - .withAutomaticReconnect( - retryDelays: [2000, 5000, 10000, 20000], - ) - .configureLogging( - Logger("Logging"), - ) - .build(); - hubConnection.onclose( - ({Exception? error}) { - logger.i("onclose"); - }, - ); - hubConnection.onreconnecting( - ({Exception? error}) { - logger.i("onreconnecting"); - }, - ); - hubConnection.onreconnected( - ({String? connectionId}) { - logger.i("onreconnected"); - }, - ); - if (hubConnection.state != HubConnectionState.Connected) { - await hubConnection.start(); - logger.i("Started HubConnection"); - - await hubConnection.invoke( - "AddParticipant", - args: [ - { - "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER ?? "", - "employeeName": AppState().memberInformationList!.eMPLOYEENAME ?? "", - "marathonId": AppState().getMarathonProjectId, - } - ], - ).catchError((e) { - logger.i("Error in AddParticipant: $e"); - }); - - context.read().addItemToList(ApiConsts.dummyQuestion); - - await hubConnection.invoke( - "SendQuestionToParticipant", - args: [ - { - "marathonId": "${AppState().getMarathonProjectId}", - } - ], - ).catchError((e) { - logger.i("Error in SendQuestionToParticipant: $e"); - }); - - try { - hubConnection.on("OnSendQuestionToParticipant", (List? arguments) { - onSendQuestionToParticipant(arguments, context); - }); - } catch (e, s) { - logger.i("Error in OnSendQuestionToParticipant"); - } + Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonJoinParticipantUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); + + var json = jsonDecode(response.body); + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - try { - hubConnection.on("OnParticipantJoin", (List? arguments) { - onParticipantJoin(arguments, context); - }); - } catch (e, s) { - logger.i("Error in OnParticipantJoin"); + if (marathonModel.statusCode == 200) { + if (marathonModel.data != null && marathonModel.isSuccessful == true) { + logger.i("message: ${marathonModel.data}"); + return true; + } else { + return false; } + } else { + return false; } } - Future onSendQuestionToParticipant(List? arguments, BuildContext context) async { - logger.i("onSendQuestionToParticipant arguments: $arguments"); + Future getNextQuestion({required String? selectedOptionId, required String? questionId, required String marathonId}) async { + Map jsonObject = { + "selectedOptionId": selectedOptionId, + "questionId": questionId, + "marathonId": marathonId, + }; + + Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonNextQuestionUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); + + var json = jsonDecode(response.body); + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - if (arguments != null) { - Map data = arguments.first! as Map; - var json = data["data"]; - QuestionModel newQuestion = QuestionModel.fromJson(json); - context.read().onNewQuestionReceived(newQuestion, context); + if (marathonModel.statusCode == 200) { + if (marathonModel.data != null && marathonModel.isSuccessful == true) { + logger.i("message: ${marathonModel.data}"); + return null; + } else { + return null; + } + } else { + return null; } } - Future onParticipantJoin(List? arguments, BuildContext context) async { - logger.i("OnParticipantJoin arguments: $arguments"); - context.watch().totalMarathoners++; - } +// Future buildHubConnection(BuildContext context, String prizeId) async { +// HttpConnectionOptions httpOptions = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); +// hubConnection = HubConnectionBuilder() +// .withUrl( +// ApiConsts.marathonHubConnectionUrl + "?employeeNumber=${AppState().memberInformationList!.eMPLOYEENUMBER ?? ""}&employeeName=${AppState().memberInformationList!.eMPLOYEENAME ?? ""}", +// options: httpOptions, +// ) +// .withAutomaticReconnect( +// retryDelays: [2000, 5000, 10000, 20000], +// ) +// .configureLogging( +// Logger("Logging"), +// ) +// .build(); +// hubConnection.onclose( +// ({Exception? error}) { +// logger.i("onclose"); +// }, +// ); +// hubConnection.onreconnecting( +// ({Exception? error}) { +// logger.i("onreconnecting"); +// }, +// ); +// hubConnection.onreconnected( +// ({String? connectionId}) { +// logger.i("onreconnected"); +// }, +// ); +// if (hubConnection.state != HubConnectionState.Connected) { +// await hubConnection.start(); +// logger.i("Started HubConnection"); +// +// await hubConnection.invoke( +// "AddParticipant", +// args: [ +// { +// "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER ?? "", +// "employeeName": AppState().memberInformationList!.eMPLOYEENAME ?? "", +// "marathonId": AppState().getMarathonProjectId, +// "prizeId": "8577B2E8-5DD7-43F0-10DD-08DACB0AC064", +// } +// ], +// ).catchError((e) { +// logger.i("Error in AddParticipant: $e"); +// }); +// +// context.read().addItemToList(ApiConsts.dummyQuestion); +// +// await hubConnection.invoke( +// "SendQuestionToParticipant", +// args: [ +// { +// "marathonId": "${AppState().getMarathonProjectId}", +// } +// ], +// ).catchError((e) { +// Utils.confirmDialog(context, e.toString()); +// logger.i("Error in SendQuestionToParticipant: $e"); +// }); +// +// try { +// hubConnection.on("OnSendQuestionToParticipant", (List? arguments) { +// onSendQuestionToParticipant(arguments, context); +// }); +// } catch (e, s) { +// logger.i("Error in OnSendQuestionToParticipant"); +// } +// +// try { +// hubConnection.on("OnParticipantJoin", (List? arguments) { +// onParticipantJoin(arguments, context); +// }); +// } catch (e, s) { +// logger.i("Error in OnParticipantJoin"); +// } +// } +// } +// +// Future onSendQuestionToParticipant(List? arguments, BuildContext context) async { +// logger.i("onSendQuestionToParticipant arguments: $arguments"); +// +// if (arguments != null) { +// Map data = arguments.first! as Map; +// var json = data["data"]; +// QuestionModel newQuestion = QuestionModel.fromJson(json); +// AppRoutes.navigatorKey.currentContext!.read().onNewQuestionReceived(newQuestion); +// } +// } +// +// Future onParticipantJoin(List? arguments, BuildContext context) async { +// logger.i("OnParticipantJoin arguments: $arguments"); +// context.watch().totalMarathoners++; +// } } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index fb7079f..f53c02f 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -28,11 +28,17 @@ class ApiConsts { static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; //Brain Marathon Constants - static String marathonBaseUrl = "https://18.188.181.12/service/"; - static String marathonParticipantLoginUrl = marathonBaseUrl + "api/auth/participantlogin"; - static String marathonProjectGetUrl = marathonBaseUrl + "api/Project/Project_Get"; - static String marathonUpcomingUrl = marathonBaseUrl + "api/marathon/upcoming/"; - static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; + static String marathonBaseUrl = "https://18.188.181.12/service/api/"; + static String marathonHubConnectionUrl = "https://18.188.181.12/service/MarathonBroadCast"; + static String marathonParticipantLoginUrl = marathonBaseUrl + "auth/participantlogin"; + static String marathonProjectGetUrl = marathonBaseUrl + "Project/Project_Get"; + static String marathonUpcomingUrl = marathonBaseUrl + "marathon/upcoming/"; + + static String marathonJoinParticipantUrl = marathonBaseUrl + "participant/participant_join"; + static String marathonNextQuestionUrl = marathonBaseUrl + "question/next"; + static String marathonSubmitAnswerUrl = marathonBaseUrl + "question/submit"; + static String marathonQualifiersUrl = marathonBaseUrl + "winner/getWinner/"; + static String marathonSelectedWinner = marathonBaseUrl + "winner/getSelectedWinner/"; //DummyCards for the UI diff --git a/lib/classes/lottie_consts.dart b/lib/classes/lottie_consts.dart index d7d38bc..7846f6c 100644 --- a/lib/classes/lottie_consts.dart +++ b/lib/classes/lottie_consts.dart @@ -4,7 +4,7 @@ class MyLottieConsts { static const String celebrate2Lottie = "assets/lottie/celebrate2.json"; static const String winnerLottie = "assets/lottie/winner3.json"; static const String allQuestions = "assets/lottie/all_questions.json"; + static const String marathonWaiting = "assets/lottie/marathon_waiting.json"; static const String wrongAnswerGif = "assets/images/wrong_answer.gif"; static const String congratsGif = "assets/images/congrats.gif"; - } diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 7cf8a35..d1b6b08 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -9,7 +9,6 @@ import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/ui/landing/itg/its_add_screen_video_image.dart'; import 'package:mohem_flutter_app/ui/landing/itg/survey_screen.dart'; -import 'package:mohem_flutter_app/ui/landing/today_attendance_screen.dart'; import 'package:mohem_flutter_app/ui/landing/today_attendance_screen2.dart'; import 'package:mohem_flutter_app/ui/leave_balance/add_leave_balance_screen.dart'; import 'package:mohem_flutter_app/ui/leave_balance/leave_balance_screen.dart'; @@ -21,6 +20,8 @@ import 'package:mohem_flutter_app/ui/login/verify_last_login_screen.dart'; import 'package:mohem_flutter_app/ui/login/verify_login_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_intro_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_screen.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_sponsor_video_screen.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_waiting_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_winner_selection.dart'; import 'package:mohem_flutter_app/ui/marathon/winner_screen.dart'; import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; @@ -73,6 +74,8 @@ import 'package:mohem_flutter_app/ui/work_list/worklist_detail_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/worklist_settings.dart'; class AppRoutes { + static GlobalKey navigatorKey = GlobalKey(); + static const String splash = "/splash"; static const String registerSelection = "/registerSelection"; static const String loginVerifyAccount = "/loginVerifyAccount"; @@ -185,6 +188,8 @@ class AppRoutes { static const String marathonScreen = "/marathonScreen"; static const String marathonWinnerSelection = "/marathonWinnerSelection"; static const String marathonWinnerScreen = "/marathonWinnerScreen"; + static const String marathonSponsorVideoScreen = "/marathonSponsorVideoScreen"; + static const String marathonWaitingScreen = "/marathonWaitingScreen"; static final Map routes = { login: (BuildContext context) => LoginScreen(), @@ -293,5 +298,7 @@ class AppRoutes { marathonScreen: (BuildContext context) => MarathonScreen(), marathonWinnerSelection: (BuildContext context) => MarathonWinnerSelection(), marathonWinnerScreen: (BuildContext context) => WinnerScreen(), + marathonSponsorVideoScreen: (BuildContext context) => const SponsorVideoScreen(), + marathonWaitingScreen: (BuildContext context) => const MarathonWaitingScreen(), }; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 08f8ad4..2229b3b 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -492,5 +492,8 @@ abstract class LocaleKeys { static const wrongAnswer = 'wrongAnswer'; static const oops = 'oops'; static const winner = 'winner'; + static const youWantToLeaveMarathon = 'youWantToLeaveMarathon'; + static const ourSponsor = 'ourSponsor'; + static const startingIn = 'startingIn'; } diff --git a/lib/main.dart b/lib/main.dart index 4d686b8..4709be1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,11 +3,11 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; -import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/codegen_loader.g.dart'; import 'package:mohem_flutter_app/models/post_params_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/eit_provider_model.dart'; import 'package:mohem_flutter_app/theme/app_theme.dart'; @@ -92,6 +92,7 @@ class MyApp extends StatelessWidget { MonthYearPickerLocalizations.delegate, ); return MaterialApp( + navigatorKey: AppRoutes.navigatorKey, builder: (BuildContext context, Widget? child) { return MediaQuery( data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), @@ -249,3 +250,4 @@ class MyApp extends StatelessWidget { // }); // } // } + diff --git a/lib/models/marathon/marathon_model.dart b/lib/models/marathon/marathon_model.dart index b32530c..6fd1f5c 100644 --- a/lib/models/marathon/marathon_model.dart +++ b/lib/models/marathon/marathon_model.dart @@ -126,10 +126,10 @@ class Projects { class Sponsors { String? id; String? nameEn; - Null? nameAr; + String? nameAr; String? image; - Null? video; - Null? logo; + String? video; + String? logo; List? sponsorPrizes; Sponsors( @@ -186,7 +186,7 @@ class SponsorPrizes { } Map toJson() { - Map data = new Map(); + Map data = {}; data['id'] = id; data['marathonPrizeEn'] = marathonPrizeEn; data['marathonPrizeAr'] = marathonPrizeAr; diff --git a/lib/ui/marathon/marathon_intro_screen.dart b/lib/ui/marathon/marathon_intro_screen.dart index ef29809..f47b47e 100644 --- a/lib/ui/marathon/marathon_intro_screen.dart +++ b/lib/ui/marathon/marathon_intro_screen.dart @@ -25,7 +25,10 @@ class MarathonIntroScreen extends StatelessWidget { children: [ MarathonDetailsCard(provider: provider), 10.height, - MarathonTimerCard(provider: provider, timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch,), + MarathonTimerCard( + provider: provider, + timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, + ), ], ).expanded, 1.divider, @@ -35,4 +38,3 @@ class MarathonIntroScreen extends StatelessWidget { ); } } - diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index a178710..46149a4 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; @@ -9,63 +10,25 @@ import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; +import 'package:video_player/video_player.dart'; class MarathonProvider extends ChangeNotifier { + // VARIABLES + final AppinioSwiperController swiperController = AppinioSwiperController(); MarathonDetailModel marathonDetailModel = MarathonDetailModel(); List cardContentList = []; QuestionModel currentQuestion = QuestionModel(); - + List answerStatusesList = []; QuestionCardStatus questionCardStatus = QuestionCardStatus.question; int? selectedOptionIndex; int currentQuestionTime = 0; int totalSecondsToWaitForWinner = 30; + int totalSecondsToWaitForMarathon = 20; int totalQualifiers = 0; - void onNewQuestionReceived(QuestionModel newQuestion, BuildContext context) { - if (currentQuestionNumber < marathonDetailModel.totalQuestions!) { - if (currentQuestionNumber == 0) { - if (Utils.isLoading) { - Utils.hideLoading(context); - } - startTimerForQuestion(context); - Navigator.pushNamed(context, AppRoutes.marathonScreen); - } - if (currentQuestionNumber > 0) { - swipeCardLeft(); - } - print("I received a new question and time is $currentQuestionTime and number is $currentQuestionNumber"); - selectedOptionIndex = null; - currentQuestionNumber++; - currentQuestion = newQuestion; - cardContentList.add(const CardContent()); - currentQuestionTime = newQuestion.questionTime!; - questionCardStatus = QuestionCardStatus.question; - notifyListeners(); - } - } - - void addItemToList(CardContent value) { - cardContentList.add(value); - notifyListeners(); - } - - void updateCurrentQuestionOptionStatus(QuestionsOptionStatus status, int index) { - for (int i = 0; i < currentQuestion.questionOptions!.length; i++) { - currentQuestion.questionOptions![i].optionStatus = QuestionsOptionStatus.unSelected; - } - currentQuestion.questionOptions![index].optionStatus = status; - selectedOptionIndex = index; - notifyListeners(); - } - - void updateQuestionCardStatus(QuestionCardStatus status) { - questionCardStatus = status; - notifyListeners(); - } - bool _isLoading = false; bool get isLoading => _isLoading; @@ -93,6 +56,13 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } + bool isUserOutOfGame = false; + + set updateIsUserOutOfGame(bool value) { + isUserOutOfGame = value; + notifyListeners(); + } + int _currentQuestionNumber = 0; int get currentQuestionNumber => _currentQuestionNumber; @@ -111,8 +81,120 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } - void swipeCardLeft() { - swiperController.swipeLeft(); + //VIDEO PLAYER + + late VideoPlayerController videoController; + + Future initializeVideoPlayer() async { + // videoController = VideoPlayerController.network(marathonDetailModel.sponsors!.first.video!)..initialize(); + videoController = VideoPlayerController.network("http://clips.vorwaerts-gmbh.de/VfE_html5.mp4"); + await videoController.initialize(); + await videoController.play(); + await videoController.setVolume(1.0); + await videoController.setLooping(false); + totalSponsorVideoSeconds = videoController.value.duration.inSeconds; + notifyListeners(); + } + + void disposeVideoPlayer() { + videoController.dispose(); + notifyListeners(); + } + + int totalSponsorVideoSeconds = 0; + Timer timerForSponsorVideo = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); + + void startTimerForSponsorVideo() { + const Duration oneSec = Duration(seconds: 1); + timerForSponsorVideo = Timer.periodic( + oneSec, + (Timer timer) async { + if (totalSponsorVideoSeconds == 0) { + timer.cancel(); + notifyListeners(); + return; + } else { + totalSponsorVideoSeconds--; + } + + notifyListeners(); + }, + ); + } + + // FUNCTIONS + + Timer timerToWaitForMarathon = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); + + void startTimerToMarathon(BuildContext context) { + const Duration oneSec = Duration(seconds: 1); + timerToWaitForMarathon = Timer.periodic( + oneSec, + (Timer timer) async { + if (totalSecondsToWaitForMarathon == 0) { + } else { + totalSecondsToWaitForMarathon--; + } + notifyListeners(); + }, + ); + } + + void populateQuestionStatusesList() { + if (marathonDetailModel.totalQuestions != null) { + for (int i = 0; i < marathonDetailModel.totalQuestions! - 1; i++) { + answerStatusesList.add(QuestionCardStatus.question); + } + notifyListeners(); + } + } + + void updateAnswerStatusesList(QuestionCardStatus status) { + answerStatusesList[currentQuestionNumber - 1] = status; + notifyListeners(); + } + + void onNewQuestionReceived(QuestionModel newQuestion) { + if (currentQuestionNumber < marathonDetailModel.totalQuestions!) { + if (currentQuestionNumber == 0) { + if (Utils.isLoading) { + Utils.hideLoading(AppRoutes.navigatorKey.currentContext!); + } + startTimerForQuestion(AppRoutes.navigatorKey.currentContext!); + Navigator.pushReplacementNamed(AppRoutes.navigatorKey.currentContext!, AppRoutes.marathonScreen); + } + if (currentQuestionNumber > 0) { + swipeCardLeft(); + } + selectedOptionIndex = null; + currentQuestionNumber++; + currentQuestion = newQuestion; + cardContentList.add(const CardContent()); + currentQuestionTime = newQuestion.questionTime!; + questionCardStatus = QuestionCardStatus.question; + notifyListeners(); + } + } + + void addItemToList(CardContent value) { + cardContentList.add(value); + notifyListeners(); + } + + void updateCurrentQuestionOptionStatus(QuestionsOptionStatus status, int index) { + for (int i = 0; i < currentQuestion.questionOptions!.length; i++) { + currentQuestion.questionOptions![i].optionStatus = QuestionsOptionStatus.unSelected; + } + currentQuestion.questionOptions![index].optionStatus = status; + selectedOptionIndex = index; + notifyListeners(); + } + + void updateQuestionCardStatus(QuestionCardStatus status) { + if (status == QuestionCardStatus.wrongAnswer || status == QuestionCardStatus.skippedAnswer) { + updateIsUserOutOfGame = true; + } + questionCardStatus = status; notifyListeners(); } @@ -134,11 +216,14 @@ class MarathonProvider extends ChangeNotifier { if (selectedOptionIndex != null) { if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) { updateQuestionCardStatus(QuestionCardStatus.correctAnswer); + updateAnswerStatusesList(QuestionCardStatus.correctAnswer); } else { updateQuestionCardStatus(QuestionCardStatus.wrongAnswer); + updateAnswerStatusesList(QuestionCardStatus.wrongAnswer); } } else { updateQuestionCardStatus(QuestionCardStatus.skippedAnswer); + updateAnswerStatusesList(QuestionCardStatus.skippedAnswer); } } @@ -153,7 +238,10 @@ class MarathonProvider extends ChangeNotifier { getCorrectAnswerAndUpdateAnswerColor(); } if (currentQuestionTime == 0) { + // we can enable this check if we do not want to show the user QuestionGapImages + // if (!isUserOutOfGame) { updateCardStatusToAnswer(); + // } //todo: we will need to remove this -2 when API is all set if (currentQuestionNumber == marathonDetailModel.totalQuestions! - 1) { updateQuestionCardStatus(QuestionCardStatus.findingWinner); @@ -171,23 +259,30 @@ class MarathonProvider extends ChangeNotifier { } Timer timerForWinnerSelection = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); + void startTimerForWinnerSelection() { const Duration oneSec = Duration(seconds: 1); timerForWinnerSelection = Timer.periodic( oneSec, (Timer timer) async { - if (totalSecondsToWaitForWinner == 0) { - cancelTimer(); + timer.cancel(); updateQuestionCardStatus(QuestionCardStatus.winnerFound); return; + } else { + totalSecondsToWaitForWinner--; } - totalSecondsToWaitForWinner--; + notifyListeners(); }, ); } + void swipeCardLeft() { + swiperController.swipeLeft(); + notifyListeners(); + } + void resetValues() async { _currentQuestionNumber = 0; cardContentList.clear(); @@ -201,7 +296,6 @@ class MarathonProvider extends ChangeNotifier { } void cancelTimer() { - timerForWinnerSelection.cancel(); timerForQuestion.cancel(); notifyListeners(); } @@ -211,20 +305,36 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); await MarathonApiClient().getMarathonToken().whenComplete(() async { marathonDetailModel = await MarathonApiClient().getMarathonDetails(); + populateQuestionStatusesList(); isLoading = false; notifyListeners(); }); } - Future onJoinMarathonPressed(BuildContext context) async { + Future buildConnectionWithSignalR(BuildContext context) async { Utils.showLoading(context); try { resetValues(); - await MarathonApiClient().buildHubConnection(context); - } catch (e, s) { + // await MarathonApiClient().buildHubConnection(context, marathonDetailModel.sponsors!.first.sponsorPrizes!.first.id!); + } catch (e) { + if (kDebugMode) { + print("error in buildConnectionWithSignalR: ${e.toString()}"); + } Utils.hideLoading(context); - print("error in onJoinMarathonPressed: ${e.toString()}"); Utils.confirmDialog(context, e.toString()); } } + + Future onJoinMarathonPressed(BuildContext context) async { + //TODO: here we need to put a check to make sure we should not display sponsor when remaining time to marathon is less than 30 seconds plus video duration e.g. 30 seconds + video duration time + // if (marathonDetailModel.sponsors!.first.video != null && marathonDetailModel.sponsors!.first.video != "") { + if (false) { + await initializeVideoPlayer().then((_) { + startTimerForSponsorVideo(); + Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); + }); + } else { + Navigator.pushReplacementNamed(context, AppRoutes.marathonWaitingScreen); + } + } } diff --git a/lib/ui/marathon/marathon_sponsor_video_screen.dart b/lib/ui/marathon/marathon_sponsor_video_screen.dart new file mode 100644 index 0000000..c81f59b --- /dev/null +++ b/lib/ui/marathon/marathon_sponsor_video_screen.dart @@ -0,0 +1,91 @@ +import 'dart:async'; +import 'dart:ui' as ui; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:provider/provider.dart'; +import 'package:video_player/video_player.dart'; + +class SponsorVideoScreen extends StatelessWidget { + const SponsorVideoScreen({Key? key}) : super(key: key); + + Future onSponsorVideoClosed(BuildContext context) async { + Navigator.pop(context); + } + + @override + Widget build(BuildContext context) { + MarathonProvider provider = context.watch(); + return WillPopScope( + onWillPop: () { + provider.videoController.dispose(); + return Future.value(true); + }, + child: Scaffold( + backgroundColor: MyColors.black, + body: SafeArea( + child: Stack( + children: [ + Align( + child: provider.videoController.value.isInitialized + ? AspectRatio( + aspectRatio: provider.videoController.value.aspectRatio, + child: VideoPlayer(provider.videoController), + ) + : Container(color: Colors.white), + ), + Align( + alignment: Alignment.topRight, + child: Container( + decoration: BoxDecoration( + color: MyColors.white, + shape: provider.totalSponsorVideoSeconds == 0 ? BoxShape.circle : BoxShape.rectangle, + borderRadius: provider.totalSponsorVideoSeconds == 0 ? null : BorderRadius.circular(15), + ), + padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), + child: provider.totalSponsorVideoSeconds == 0 + ? InkWell( + onTap: () { + Navigator.pop(context); + provider.videoController.dispose(); + provider.buildConnectionWithSignalR(AppRoutes.navigatorKey.currentState!.overlay!.context); + }, + child: const Icon(Icons.close, size: 12), + ) + : Directionality( + textDirection: ui.TextDirection.ltr, + child: ("${LocaleKeys.ourSponsor.tr()} ${provider.totalSponsorVideoSeconds < 10 ? "0" : ""}${provider.totalSponsorVideoSeconds}").toText12(color: MyColors.darkTextColor), + ), + ), + ).paddingOnly(top: 20, right: 18), + Align( + alignment: Alignment.topLeft, + child: InkWell( + onTap: () { + Navigator.pop(context); + provider.videoController.dispose(); + provider.buildConnectionWithSignalR(AppRoutes.navigatorKey.currentState!.overlay!.context); + }, + child: Container( + decoration: BoxDecoration(color: MyColors.white, borderRadius: BorderRadius.circular(15)), + padding: const EdgeInsets.symmetric(vertical: 3, horizontal: 6), + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: LocaleKeys.skip.tr().toText11(color: MyColors.darkTextColor), + ), + ), + ), + ).paddingOnly(top: 20, left: 18), + ], + ), + ), + ), + ); + } +} diff --git a/lib/ui/marathon/marathon_waiting_screen.dart b/lib/ui/marathon/marathon_waiting_screen.dart new file mode 100644 index 0000000..9f52bf6 --- /dev/null +++ b/lib/ui/marathon/marathon_waiting_screen.dart @@ -0,0 +1,62 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:lottie/lottie.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/decorations_helper.dart'; +import 'package:mohem_flutter_app/classes/lottie_consts.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:provider/provider.dart'; + +class MarathonWaitingScreen extends StatelessWidget { + const MarathonWaitingScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + MarathonProvider provider = context.watch(); + return Scaffold( + appBar: AppBarWidget( + context, + title: LocaleKeys.brainMarathon.tr(), + onHomeTapped: () { + Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); + }, + onBackTapped: () { + Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); + }, + ), + body: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: double.infinity, + margin: const EdgeInsets.all(21), + decoration: MyDecorations.shadowDecoration, + child: Stack( + children: [ + Align( + child: Lottie.asset(MyLottieConsts.marathonWaiting, height: 200), + ), + Align( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + LocaleKeys.startingIn.tr().toText16(), + "00:${provider.currentQuestionTime < 10 ? "0${provider.currentQuestionTime}" : provider.currentQuestionTime}" + .toText18(color: provider.currentQuestionTime < 5 ? MyColors.redColor : MyColors.black), + ], + ), + ), + ], + ), + ).expanded, + ], + ), + ); + } +} diff --git a/lib/ui/marathon/marathon_winner_selection.dart b/lib/ui/marathon/marathon_winner_selection.dart index 6aeb3d2..ed49f04 100644 --- a/lib/ui/marathon/marathon_winner_selection.dart +++ b/lib/ui/marathon/marathon_winner_selection.dart @@ -26,7 +26,7 @@ class MarathonWinnerSelection extends StatelessWidget { child: Column( children: [ 20.height, - const QualifiersContainer().paddingOnly(left: 21, right: 21), + QualifiersContainer(provider: provider,).paddingOnly(left: 21, right: 21), 12.height, InkWell( onTap: () { diff --git a/lib/ui/marathon/widgets/marathon_progress_container.dart b/lib/ui/marathon/widgets/marathon_progress_container.dart index fbf0428..4f76301 100644 --- a/lib/ui/marathon/widgets/marathon_progress_container.dart +++ b/lib/ui/marathon/widgets/marathon_progress_container.dart @@ -9,22 +9,11 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; -class MarathonProgressContainer extends StatefulWidget { +class MarathonProgressContainer extends StatelessWidget { final MarathonProvider provider; const MarathonProgressContainer({Key? key, required this.provider}) : super(key: key); - @override - State createState() => _MarathonProgressContainerState(); -} - -class _MarathonProgressContainerState extends State { - @override - void initState() { - widget.provider.startTimerForQuestion(context); - super.initState(); - } - @override Widget build(BuildContext context) { return Container( @@ -40,20 +29,19 @@ class _MarathonProgressContainerState extends State { Container( decoration: BoxDecoration(color: MyColors.greenColor, borderRadius: BorderRadius.circular(5)), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), - child: "${widget.provider.currentQuestionNumber.toString()} / ${widget.provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}" - .toText12(color: MyColors.white), + child: "${provider.currentQuestionNumber.toString()} / ${provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}".toText12(color: MyColors.white), ), - "${widget.provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), - "00:${widget.provider.currentQuestionTime < 10 ? "0${widget.provider.currentQuestionTime}" : widget.provider.currentQuestionTime}" - .toText18(color: widget.provider.currentQuestionTime < 5 ? MyColors.redColor : MyColors.black), + "${provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), + "00:${provider.currentQuestionTime < 10 ? "0${provider.currentQuestionTime}" : provider.currentQuestionTime}" + .toText18(color: provider.currentQuestionTime < 5 ? MyColors.redColor : MyColors.black), ], ), 12.height, - stepper(widget.provider.currentQuestionNumber, widget.provider.questionCardStatus), + stepper(provider.currentQuestionNumber, provider.answerStatusesList, provider.marathonDetailModel.totalQuestions!, provider.isUserOutOfGame), 8.height, Row( children: [ - "${((widget.provider.currentQuestionNumber / widget.provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(), + "${((provider.currentQuestionNumber / provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(), ], ), ], @@ -61,15 +49,42 @@ class _MarathonProgressContainerState extends State { ); } - Widget stepper(int value, QuestionCardStatus status) { - print("Here Status: $status"); + Color getStepColor(QuestionCardStatus status, bool isOutOfGame) { + if (isOutOfGame) { + return MyColors.redColor; + } + switch (status) { + case QuestionCardStatus.question: + return MyColors.yellowColorII; + case QuestionCardStatus.wrongAnswer: + return MyColors.redColor; + case QuestionCardStatus.correctAnswer: + return MyColors.greenColor; + case QuestionCardStatus.skippedAnswer: + return MyColors.redColor; + case QuestionCardStatus.completed: + return MyColors.lightGreyDeColor; + case QuestionCardStatus.findingWinner: + return MyColors.lightGreyDeColor; + case QuestionCardStatus.winnerFound: + return MyColors.lightGreyDeColor; + } + } + + Widget stepper(int value, List statusesList, int totalQuestions, bool isOutOfGame) { return SizedBox( width: double.infinity, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - for (int i = 0; i < 10; i++) - if (value <= i) roundContainer(MyColors.lightGreyDeColor, i != 0) else roundContainer(status == QuestionCardStatus.correctAnswer ? MyColors.greenColor : MyColors.redColor, i != 0) + children: [ + for (int i = 0; i < totalQuestions - 1; i++) + if (value <= i) + roundContainer(MyColors.lightGreyDeColor, i != 0) + else + roundContainer( + getStepColor(statusesList[i], isOutOfGame), + i != 0, + ) ], ), ); diff --git a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart index 50a7e6d..0308027 100644 --- a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart +++ b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart @@ -1,5 +1,3 @@ -import 'dart:async'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; @@ -8,15 +6,25 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; -import 'package:provider/provider.dart'; -class QualifiersContainer extends StatelessWidget { +class QualifiersContainer extends StatefulWidget { + final MarathonProvider provider; + + const QualifiersContainer({Key? key, required this.provider}) : super(key: key); - const QualifiersContainer({Key? key}) : super(key: key); + @override + State createState() => _QualifiersContainerState(); +} + +class _QualifiersContainerState extends State { + @override + void initState() { + widget.provider.startTimerForWinnerSelection(); + super.initState(); + } @override Widget build(BuildContext context) { - MarathonProvider provider = context.watch(); return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, @@ -28,14 +36,13 @@ class QualifiersContainer extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.winnerSelection.tr().toText21(color: MyColors.grey3AColor), - "00:${provider.totalSecondsToWaitForWinner < 10 ? "0${provider.totalSecondsToWaitForWinner}" : provider.totalSecondsToWaitForWinner}" - .toText18(color: MyColors.redColor), + "00:${widget.provider.totalSecondsToWaitForWinner < 10 ? "0${widget.provider.totalSecondsToWaitForWinner}" : widget.provider.totalSecondsToWaitForWinner}".toText18(color: MyColors.redColor), ], ), 10.height, Row( children: [ - provider.totalQualifiers.toString().toText30(color: MyColors.greenColor, isBold: true), + widget.provider.totalQualifiers.toString().toText30(color: MyColors.greenColor, isBold: true), 2.width, LocaleKeys.qualifiers.tr().toText16(color: MyColors.greenColor), ], diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index af538f8..4009983 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -145,21 +145,32 @@ class AnswerTileForText extends StatelessWidget { const AnswerTileForText({Key? key, required this.index, required this.onAnswerTapped}) : super(key: key); + Color getAnswerTextColor(QuestionsOptionStatus status) { + switch (status) { + case QuestionsOptionStatus.correct: + return MyColors.white; + case QuestionsOptionStatus.wrong: + return MyColors.white; + case QuestionsOptionStatus.selected: + return MyColors.white; + case QuestionsOptionStatus.unSelected: + return MyColors.darkTextColor; + } + } + @override Widget build(BuildContext context) { MarathonProvider provider = context.watch(); return InkWell( onTap: () { - onAnswerTapped(); + provider.isUserOutOfGame ? null : onAnswerTapped() ; }, child: Container( alignment: Alignment.centerLeft, decoration: MyDecorations.getAnswersContainerColor(provider.currentQuestion.questionOptions![index].optionStatus!), child: Center( child: (AppState().isArabic(context) ? provider.currentQuestion.questionOptions![index].titleAr! : provider.currentQuestion.questionOptions![index].titleEn!) - .toText16( - color: provider.currentQuestion.questionOptions![index].optionStatus == QuestionsOptionStatus.unSelected ? MyColors.darkTextColor : MyColors.white, - ) + .toText16(color: provider.isUserOutOfGame ? MyColors.darkTextColor : getAnswerTextColor(provider.currentQuestion.questionOptions![index].optionStatus!)) .paddingOnly(top: 17, bottom: 17), ), ), diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index c2129c1..6842dde 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -7,7 +7,14 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; AppBar AppBarWidget(BuildContext context, - {required String title, bool showHomeButton = true, bool showNotificationButton = false, bool showMemberButton = false, String? image, List? actions}) { + {required String title, + bool showHomeButton = true, + bool showNotificationButton = false, + bool showMemberButton = false, + String? image, + List? actions, + void Function()? onHomeTapped, + void Function()? onBackTapped}) { return AppBar( leadingWidth: 0, // leading: GestureDetector( @@ -20,7 +27,9 @@ AppBar AppBarWidget(BuildContext context, children: [ GestureDetector( behavior: HitTestBehavior.opaque, - onTap: Feedback.wrapForTap(() => Navigator.maybePop(context), context), + onTap: Feedback.wrapForTap(() { + (onBackTapped == null ? Navigator.maybePop(context) : onBackTapped()); + }, context), child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), ), 4.width, @@ -41,7 +50,7 @@ AppBar AppBarWidget(BuildContext context, if (showHomeButton) IconButton( onPressed: () { - Navigator.popUntil(context, ModalRoute.withName(AppRoutes.dashboard)); + onHomeTapped == null ? Navigator.popUntil(context, ModalRoute.withName(AppRoutes.dashboard)) : onHomeTapped(); }, icon: const Icon(Icons.home, color: MyColors.darkIconColor), ), @@ -59,7 +68,7 @@ AppBar AppBarWidget(BuildContext context, }, icon: const Icon(Icons.people, color: MyColors.textMixColor), ), - ...actions??[] + ...actions ?? [] ], ); } From 3e1b24eb006f4e304faabda636edc4f169aa6b0b Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 5 Dec 2022 15:57:39 +0300 Subject: [PATCH 157/302] Committing before reverting from SignalR to Apis --- lib/ui/marathon/marathon_screen.dart | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 08ae2b2..1feee8e 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -8,6 +8,7 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; @@ -42,7 +43,6 @@ class MarathonScreen extends StatelessWidget { } Widget getWinnerWidget(BuildContext context, {required MarathonProvider provider}) { - provider.startTimerForWinnerSelection(); return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, @@ -106,7 +106,7 @@ class MarathonScreen extends StatelessWidget { ).paddingOnly(left: 21, right: 21); } - Widget getNameContainer() { + Widget getNameContainer(BuildContext context) { return Container( height: 50, padding: const EdgeInsets.symmetric(horizontal: 20), @@ -118,8 +118,9 @@ class MarathonScreen extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Muhammad Shrouff".toText17(isBold: true, color: MyColors.white), - "837436".toText17(isBold: true, color: MyColors.white), + (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn! : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr!) + .toText17(isBold: true, color: MyColors.white), + AppState().memberInformationList!.eMPLOYEENUMBER!.toText17(isBold: true, color: MyColors.white), ], ), ).paddingOnly(left: 20, right: 20, top: 12, bottom: 20); @@ -128,27 +129,27 @@ class MarathonScreen extends StatelessWidget { @override Widget build(BuildContext context) { MarathonProvider provider = context.watch(); + return WillPopScope( child: Scaffold( - appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), + appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr(), onHomeTapped: () { + Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); + }, onBackTapped: () { + Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); + }), body: SingleChildScrollView( child: Column( children: [ 20.height, if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ - const QualifiersContainer().paddingOnly(left: 21, right: 21), + QualifiersContainer(provider: provider).paddingOnly(left: 21, right: 21), ] else if (provider.questionCardStatus == QuestionCardStatus.winnerFound) ...[] else ...[ MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), ], if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ - InkWell( - onTap: () { - provider.updateQuestionCardStatus(QuestionCardStatus.winnerFound); - }, - child: getNameContainer(), - ), + getNameContainer(context), ], if (provider.questionCardStatus == QuestionCardStatus.winnerFound) ...[ getWinnerWidget(context, provider: provider), From 0f13ab65d67473fe808482bde87c105c1b65175d Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 5 Dec 2022 16:02:21 +0300 Subject: [PATCH 158/302] Chat Fixes & User Chat Counter --- lib/provider/dashboard_provider_model.dart | 26 +++---- lib/ui/chat/chat_detailed_screen.dart | 2 +- lib/ui/chat/chat_full_image_preview.dart | 6 +- lib/ui/chat/chat_home_screen.dart | 9 ++- lib/ui/chat/favorite_users_screen.dart | 5 +- lib/widgets/app_bar_widget.dart | 7 -- .../shimmer/dashboard_shimmer_widget.dart | 76 ++++++++++--------- 7 files changed, 64 insertions(+), 67 deletions(-) diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index 461196f..5d6a53e 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -307,19 +307,19 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future getHubConnection() async { HubConnection hub; - try { - HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); - hub = HubConnectionBuilder() - .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) - .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); - isChatHubLoding = false; - return hub; - } catch (e) { - getUserAutoLoginToken().whenComplete(() { - getHubConnection(); - }); - throw e; - } + // try { + HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); + hub = HubConnectionBuilder() + .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) + .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); + isChatHubLoding = false; + return hub; + // } catch (e) { + // getUserAutoLoginToken().whenComplete(() { + // getHubConnection(); + // }); + // throw e; + // } } void notify() { diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 345884f..905bffa 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -90,7 +90,7 @@ class _ChatDetailScreenState extends State { body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { return (m.isLoading - ? ChatHomeShimmer() + ? ChatHomeShimmer(isDetailedScreen: true,) : Column( children: [ SmartRefresher( diff --git a/lib/ui/chat/chat_full_image_preview.dart b/lib/ui/chat/chat_full_image_preview.dart index c731c25..6c8073f 100644 --- a/lib/ui/chat/chat_full_image_preview.dart +++ b/lib/ui/chat/chat_full_image_preview.dart @@ -21,9 +21,9 @@ class ChatImagePreviewScreen extends StatelessWidget { children: [ Image.memory( img, - fit: BoxFit.cover, - height: 400, - width: double.infinity, + fit: BoxFit.fill, + height:500, + width: 500, ).paddingAll(15), Positioned( right: 0, diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 73c084a..641c13d 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -21,6 +21,8 @@ import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart' import 'package:provider/provider.dart'; class ChatHomeScreen extends StatefulWidget { + const ChatHomeScreen({Key? key}) : super(key: key); + @override State createState() => _ChatHomeScreenState(); } @@ -48,7 +50,7 @@ class _ChatHomeScreenState extends State { body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { return m.isLoading - ? ChatHomeShimmer() + ? ChatHomeShimmer(isDetailedScreen: false,) : Column( children: [ TextField( @@ -84,7 +86,7 @@ class _ChatHomeScreenState extends State { itemCount: m.searchedChats!.length, shrinkWrap: true, physics: const ClampingScrollPhysics(), - padding: EdgeInsets.only(bottom: 80.0), + padding: const EdgeInsets.only(bottom: 80.0), itemBuilder: (BuildContext context, int index) { return SizedBox( height: 55, @@ -96,8 +98,7 @@ class _ChatHomeScreenState extends State { const SizedBox( height: 48, width: 48, - child: Center(child: CircularProgressIndicator()), - ), + ).toShimmer().circle(30), if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image != null && m.searchedChats![index].image.isNotEmpty) CircularAvatar( radius: 20, diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 8bfcc4a..6034151 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -23,7 +23,7 @@ class ChatFavoriteUsersScreen extends StatelessWidget { body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { if (m.isLoading) { - return ChatHomeShimmer(); + return ChatHomeShimmer(isDetailedScreen: false,); } else { return m.favUsersList != null && m.favUsersList.isNotEmpty ? ListView.separated( @@ -41,8 +41,7 @@ class ChatFavoriteUsersScreen extends StatelessWidget { const SizedBox( height: 48, width: 48, - child: Center(child: CircularProgressIndicator()), - ), + ).toShimmer().circle(30), if (m.favUsersList![index].isImageLoaded! && m.favUsersList![index].image != null && m.favUsersList![index].image.isNotEmpty) CircularAvatar( radius: 20, diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index d18d7e6..29c94d2 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -32,14 +32,7 @@ AppBar AppBarWidget(BuildContext context, width: 40, isImageBase64: true, ), - if (image == null) - SvgPicture.asset( - "assets/images/user.svg", - height: 40, - width: 40, - ), if (image != null) 14.width, - if (image == null) 14.width, title.toText24(color: MyColors.darkTextColor, isBold: true).expanded, ], ), diff --git a/lib/widgets/shimmer/dashboard_shimmer_widget.dart b/lib/widgets/shimmer/dashboard_shimmer_widget.dart index 6fe5a03..fc243f0 100644 --- a/lib/widgets/shimmer/dashboard_shimmer_widget.dart +++ b/lib/widgets/shimmer/dashboard_shimmer_widget.dart @@ -188,7 +188,6 @@ class ServicesMenuShimmer extends StatelessWidget { } } - class MarathonBannerShimmer extends StatelessWidget { const MarathonBannerShimmer({Key? key}) : super(key: key); @@ -236,6 +235,11 @@ class MarathonBannerShimmer extends StatelessWidget { } class ChatHomeShimmer extends StatelessWidget { + bool isDetailedScreen; + + ChatHomeShimmer({Key? key, required this.isDetailedScreen}) : super(key: key); + + @override @override Widget build(BuildContext context) { return Container( @@ -254,42 +258,42 @@ class ChatHomeShimmer extends StatelessWidget { child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( - width: 48.0, - height: 48.0, - decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(40))), - ), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 8.0), - ), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: double.infinity, - height: 8.0, - color: Colors.white, - ), - const Padding( - padding: EdgeInsets.symmetric(vertical: 2.0), - ), - Container( - width: double.infinity, - height: 8.0, - color: Colors.white, - ), - const Padding( - padding: EdgeInsets.symmetric(vertical: 2.0), - ), - Container( - width: 40.0, - height: 8.0, - color: Colors.white, - ), - ], + if (!isDetailedScreen) + Container( + width: 48.0, + height: 48.0, + decoration: const BoxDecoration(color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(40))), + ), + if (!isDetailedScreen) + const Padding( + padding: EdgeInsets.symmetric(horizontal: 8.0), ), - ) + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: double.infinity, + height: 8.0, + color: Colors.white, + ), + const Padding( + padding: EdgeInsets.symmetric(vertical: 2.0), + ), + Container( + width: double.infinity, + height: 8.0, + color: Colors.white, + ), + const Padding( + padding: EdgeInsets.symmetric(vertical: 2.0), + ), + Container( + width: 40.0, + height: 8.0, + color: Colors.white, + ), + ], + ).expanded ], ), ), From 4e961082075831cabb218eebad7aa75569e83372 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 5 Dec 2022 16:03:46 +0300 Subject: [PATCH 159/302] Chat Fixes & User Chat Counter --- lib/ui/landing/dashboard_screen.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index e1250b4..8c1bdfe 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -65,10 +65,9 @@ class _DashboardScreenState extends State { hubConnection = await data.getHubConnection(); await hubConnection.start(); hubConnection.onreconnecting(({Exception? error}) { - print("============== Reconnecting ======================"); + print("============== Reconnecting Hub ======================"); data.getUserAutoLoginToken().whenComplete(() { buildHubConnection(); - data.notifyListeners(); }); }); } From e505a9fa8c8ea6da51800ca0d545e91facc6480f Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 5 Dec 2022 16:25:55 +0300 Subject: [PATCH 160/302] fixes --- lib/classes/date_uitl.dart | 2 +- lib/ui/work_list/worklist_detail_screen.dart | 44 ++++++++++---------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/lib/classes/date_uitl.dart b/lib/classes/date_uitl.dart index ae80080..a1e52d9 100644 --- a/lib/classes/date_uitl.dart +++ b/lib/classes/date_uitl.dart @@ -40,7 +40,7 @@ class DateUtil { } static DateTime convertSimpleStringDateToDate(String date) { - return DateFormat("MM/dd/yyyy hh:mm:ss aaa").parse(date); + return DateFormat("MM/dd/yyyy hh:mm:ss").parse(date); } static DateTime convertSimpleStringDateToDateddMMyyyy(String date) { diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 824edc3..f87db2a 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -146,7 +146,9 @@ class _WorkListDetailScreenState extends State { getPRNotification(); } - controller.jumpToPage(0); + if(controller.hasClients) { + controller.jumpToPage(0); + } // List dataToFetch = await Future.wait([ // @@ -214,9 +216,9 @@ class _WorkListDetailScreenState extends State { ), child: Row( children: [ - myTab(LocaleKeys.info.tr(), 0), - (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") ? myTab(LocaleKeys.details.tr(), 1) : myTab(LocaleKeys.request.tr(), 1), - myTab(LocaleKeys.actions.tr(), 2), + (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") ? myTab(LocaleKeys.details.tr(), 0) : myTab(LocaleKeys.request.tr(), 0), + myTab(LocaleKeys.actions.tr(), 1), + myTab(LocaleKeys.info.tr(), 2), myTab(LocaleKeys.attachments.tr(), 3), ], ), @@ -230,6 +232,23 @@ class _WorkListDetailScreenState extends State { }); }, children: [ + (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") + ? DetailFragment(workListData, memberInformationListModel) + : RequestFragment( + moNotificationBodyList: getMoNotificationBodyList, + poLinesList: getPoNotificationBody?.pOLines ?? [], + itemCreationLines: getItemCreationNtfBody?.itemCreationLines ?? [], + prLinesList: getPrNotificationBody?.pRLines ?? [], + ), + isActionHistoryLoaded + ? actionHistoryList.isEmpty + ? Utils.getNoDataWidget(context) + : ActionsFragment( + workListData!.nOTIFICATIONID, + actionHistoryList, + voidCallback: reloadWorkList, + ) + : showLoadingAnimation(), InfoFragment( poHeaderList: getPoNotificationBody?.pOHeader ?? [], workListData: workListData, @@ -243,23 +262,6 @@ class _WorkListDetailScreenState extends State { getContactNotificationBodyList: getContactNotificationBodyList, getPrNotificationBodyList: getPrNotificationBody, ), - (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") - ? DetailFragment(workListData, memberInformationListModel) - : RequestFragment( - moNotificationBodyList: getMoNotificationBodyList, - poLinesList: getPoNotificationBody?.pOLines ?? [], - itemCreationLines: getItemCreationNtfBody?.itemCreationLines ?? [], - prLinesList: getPrNotificationBody?.pRLines ?? [], - ), - isActionHistoryLoaded - ? actionHistoryList.isEmpty - ? Utils.getNoDataWidget(context) - : ActionsFragment( - workListData!.nOTIFICATIONID, - actionHistoryList, - voidCallback: reloadWorkList, - ) - : showLoadingAnimation(), isAttachmentLoaded ? getAttachmentList.isEmpty ? Utils.getNoDataWidget(context) From 62acd531b044cbf8b007fe61714242268156db39 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 6 Dec 2022 09:37:29 +0300 Subject: [PATCH 161/302] fixes --- .../items_for_sale_api_client.dart | 35 ++++++++++++++++++ lib/ui/work_list/worklist_detail_screen.dart | 37 ++++++++++--------- lib/widgets/app_bar_widget.dart | 2 +- 3 files changed, 55 insertions(+), 19 deletions(-) diff --git a/lib/api/items_for_sale/items_for_sale_api_client.dart b/lib/api/items_for_sale/items_for_sale_api_client.dart index 436ae6e..eae6ffb 100644 --- a/lib/api/items_for_sale/items_for_sale_api_client.dart +++ b/lib/api/items_for_sale/items_for_sale_api_client.dart @@ -66,6 +66,41 @@ class ItemsForSaleApiClient { }, url, postParams); } + Future updateItemsForSale(int itemSaleID) async { + List getItemsForSaleList = []; + + String url = "${ApiConsts.cocRest}Mohemm_ITG_UpdateItemForSale"; + + // request.fields['itemSaleID'] = itemSaleID.toString(); + // request.fields['Channel'] = "31"; + // request.fields['isActive'] = "false"; + // request.fields['LogInToken'] = loginTokenID!; + // request.fields['Token'] = tokenID!; + // request.fields['MobileNo'] = empMobNum!; + // request.fields['EmployeeNumber'] = empNum!; + // request.fields['employeeNumber'] = empNum; + + Map postParams = { + "EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, + "employeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, + "MobileNo": AppState().memberInformationList?.eMPLOYEEMOBILENUMBER, + "itemSaleID": itemSaleID.toString(), + "Channel": "31", + "isActive": "false", + "Token": AppState().postParamsObject?.tokenID + }; + + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((response) { + var body = json.decode(response['Mohemm_ITG_ResponseItem']); + + // body['result']['data'].forEach((v) { + // getItemsForSaleList.add(new GetItemsForSaleList.fromJson(v)); + // }); + return getItemsForSaleList; + }, url, postParams); + } + Future> getEmployeePostedAds() async { List employeePostedAdsList = []; diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 96bd09f..3f5655e 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -146,7 +146,7 @@ class _WorkListDetailScreenState extends State { getPRNotification(); } - if(controller.hasClients) { + if (controller.hasClients) { controller.jumpToPage(0); } @@ -210,6 +210,7 @@ class _WorkListDetailScreenState extends State { ); }, child: Stack( + key: ValueKey(AppState().workListIndex ?? 0), children: [ Column( children: [ @@ -251,19 +252,19 @@ class _WorkListDetailScreenState extends State { (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") ? DetailFragment(workListData, memberInformationListModel) : RequestFragment( - moNotificationBodyList: getMoNotificationBodyList, - poLinesList: getPoNotificationBody?.pOLines ?? [], - itemCreationLines: getItemCreationNtfBody?.itemCreationLines ?? [], - prLinesList: getPrNotificationBody?.pRLines ?? [], - ), + moNotificationBodyList: getMoNotificationBodyList, + poLinesList: getPoNotificationBody?.pOLines ?? [], + itemCreationLines: getItemCreationNtfBody?.itemCreationLines ?? [], + prLinesList: getPrNotificationBody?.pRLines ?? [], + ), isActionHistoryLoaded ? actionHistoryList.isEmpty - ? Utils.getNoDataWidget(context) - : ActionsFragment( - workListData!.nOTIFICATIONID, - actionHistoryList, - voidCallback: reloadWorkList, - ) + ? Utils.getNoDataWidget(context) + : ActionsFragment( + workListData!.nOTIFICATIONID, + actionHistoryList, + voidCallback: reloadWorkList, + ) : showLoadingAnimation(), InfoFragment( poHeaderList: getPoNotificationBody?.pOHeader ?? [], @@ -565,7 +566,7 @@ class _WorkListDetailScreenState extends State { Future performNetworkCall(BuildContext context, {String? email, String? userId}) async { showDialog( context: context, - builder: (BuildContext cxt) => ConfirmDialog( + builder: (cxt) => ConfirmDialog( message: LocaleKeys.wantToReject.tr(), okTitle: LocaleKeys.reject.tr(), onTap: () async { @@ -648,12 +649,12 @@ class _WorkListDetailScreenState extends State { print(actionMode); showDialog( context: context, - builder: (BuildContext cxt) => AcceptRejectInputDialog( + builder: (cxt) => AcceptRejectInputDialog( message: title != null ? null : LocaleKeys.requestedItems.tr(), title: title, notificationGetRespond: notificationNoteInput, actionMode: actionMode, - onTap: (String note) { + onTap: (note) { Map payload = { "P_ACTION_MODE": actionMode, "P_APPROVER_INDEX": null, @@ -934,9 +935,9 @@ class _WorkListDetailScreenState extends State { apiCallCount++; notificationButtonsList = await WorkListApiClient().getNotificationButtons(workListData!.nOTIFICATIONID!); if (notificationButtonsList.isNotEmpty) { - isCloseAvailable = notificationButtonsList.any((GetNotificationButtonsList element) => element.bUTTONACTION == "CLOSE"); - isApproveAvailable = notificationButtonsList.any((GetNotificationButtonsList element) => element.bUTTONACTION == "APPROVED"); - isRejectAvailable = notificationButtonsList.any((GetNotificationButtonsList element) => element.bUTTONACTION == "REJECTED"); + isCloseAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "CLOSE"); + isApproveAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "APPROVED"); + isRejectAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "REJECTED"); } apiCallCount--; if (apiCallCount == 0) { diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index fa59d3a..38cf570 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -20,7 +20,7 @@ AppBar AppBarWidget(BuildContext context, children: [ GestureDetector( behavior: HitTestBehavior.opaque, - onTap: Feedback.wrapForTap(() => Navigator.maybePop(context, true), context), + onTap: Feedback.wrapForTap(() => Navigator.maybePop(context), context), child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), ), 4.width, From 8d5cc7ed23e5e0e01f32a397ddbbc8fdd22adc9d Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 6 Dec 2022 09:40:50 +0300 Subject: [PATCH 162/302] Chat Fixes & User Chat Counter --- lib/provider/chat_provider_model.dart | 51 ++++++++++++++++++++++ lib/provider/dashboard_provider_model.dart | 34 --------------- lib/ui/chat/chat_detailed_screen.dart | 6 ++- lib/ui/chat/chat_full_image_preview.dart | 4 +- lib/ui/landing/dashboard_screen.dart | 24 +++++----- 5 files changed, 66 insertions(+), 53 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 385c64a..b045bbb 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -7,15 +7,19 @@ import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/encryption.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; +import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as userLoginToken; import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/image_picker.dart'; +import 'package:signalr_netcore/hub_connection.dart'; +import 'package:signalr_netcore/signalr_client.dart'; import 'package:uuid/uuid.dart'; class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { @@ -35,6 +39,41 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List favUsersList = []; int paginationVal = 0; + Future getUserAutoLoginToken() async { + userLoginToken.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); + if (userLoginResponse.response != null) { + AppState().setchatUserDetails = userLoginResponse; + } else { + Utils.showToast( + userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", + ); + } + } + + Future buildHubConnection() async { + hubConnection = await getHubConnection(); + await hubConnection.start()!.then((value) { + print('-----------------------Hub Started For Chat------------------'); + }); + } + + Future getHubConnection() async { + HubConnection hub; + // try { + HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); + hub = HubConnectionBuilder() + .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) + .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); + // isChatHubLoding = false; + return hub; + // } catch (e) { + // getUserAutoLoginToken().whenComplete(() { + // getHubConnection(); + // }); + // throw e; + // } + } + void registerEvents() { hubConnection.on("OnUpdateUserStatusAsync", changeStatus); hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); @@ -47,6 +86,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void getUserRecentChats() async { + if (hubConnection.state != HubConnectionState.Connected) { + getUserAutoLoginToken().whenComplete(() async { + await buildHubConnection(); + getUserRecentChats(); + }); + return; + } ChatUserModel recentChat = await ChatApiClient().getRecentChats(); ChatUserModel favUList = await ChatApiClient().getFavUsers(); @@ -686,4 +732,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } notifyListeners(); } + + ///getUserAutoLoginToken().whenComplete(() { +// buildHubConnection(); +// print("After Reconnect State: " + hubConnection.state.toString()); +// }); } diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index 5d6a53e..48531b7 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -1,17 +1,13 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/api/offers_and_discounts_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; -import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/chat_count_conversation_model.dart'; -import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart'; import 'package:mohem_flutter_app/models/dashboard/drawer_menu_item_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; @@ -25,7 +21,6 @@ import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; -import 'package:signalr_netcore/signalr_client.dart'; /// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool // ignore: prefer_mixin @@ -42,7 +37,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { //Chat bool isChatCounterLoding = true; - bool isChatHubLoding = true; int chatUConvCounter = 0; //Misssing Swipe @@ -103,7 +97,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { leaveBalanceAccrual = null; isChatCounterLoding = true; - isChatHubLoding = true; chatUConvCounter = 0; ticketBalance = 0; @@ -294,33 +287,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } - Future getUserAutoLoginToken() async { - UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); - if (userLoginResponse.response != null) { - AppState().setchatUserDetails = userLoginResponse; - } else { - Utils.showToast( - userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", - ); - } - } - - Future getHubConnection() async { - HubConnection hub; - // try { - HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); - hub = HubConnectionBuilder() - .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) - .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); - isChatHubLoding = false; - return hub; - // } catch (e) { - // getUserAutoLoginToken().whenComplete(() { - // getHubConnection(); - // }); - // throw e; - // } - } void notify() { notifyListeners(); diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 905bffa..f027915 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -75,7 +75,7 @@ class _ChatDetailScreenState extends State { context, title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, showHomeButton: false, - image: userDetails["targetUser"].image.isEmpty ? null : userDetails["targetUser"].image, + image: userDetails["targetUser"].image == null || userDetails["targetUser"].image.isEmpty ? null : userDetails["targetUser"].image, actions: [ SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() { // makeCall(callType: "AUDIO", con: hubConnection); @@ -90,7 +90,9 @@ class _ChatDetailScreenState extends State { body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { return (m.isLoading - ? ChatHomeShimmer(isDetailedScreen: true,) + ? ChatHomeShimmer( + isDetailedScreen: true, + ) : Column( children: [ SmartRefresher( diff --git a/lib/ui/chat/chat_full_image_preview.dart b/lib/ui/chat/chat_full_image_preview.dart index 6c8073f..32e2760 100644 --- a/lib/ui/chat/chat_full_image_preview.dart +++ b/lib/ui/chat/chat_full_image_preview.dart @@ -18,12 +18,10 @@ class ChatImagePreviewScreen extends StatelessWidget { child: Stack( alignment: Alignment.center, fit: StackFit.loose, - children: [ + children: [ Image.memory( img, fit: BoxFit.fill, - height:500, - width: 500, ).paddingAll(15), Positioned( right: 0, diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 8c1bdfe..f15b36e 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -16,6 +16,7 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; import 'package:mohem_flutter_app/ui/landing/widget/menus_widget.dart'; @@ -44,6 +45,7 @@ class DashboardScreen extends StatefulWidget { class _DashboardScreenState extends State { late DashboardProviderModel data; late MarathonProvider marathonProvider; + late ChatProviderModel cProvider; final GlobalKey _scaffoldState = GlobalKey(); final RefreshController _refreshController = RefreshController(initialRefresh: false); @@ -56,22 +58,12 @@ class _DashboardScreenState extends State { scheduleMicrotask(() { data = Provider.of(context, listen: false); marathonProvider = Provider.of(context, listen: false); + cProvider = Provider.of(context, listen: false); _bHubCon(); _onRefresh(); }); } - void buildHubConnection() async { - hubConnection = await data.getHubConnection(); - await hubConnection.start(); - hubConnection.onreconnecting(({Exception? error}) { - print("============== Reconnecting Hub ======================"); - data.getUserAutoLoginToken().whenComplete(() { - buildHubConnection(); - }); - }); - } - @override void dispose() { super.dispose(); @@ -79,8 +71,8 @@ class _DashboardScreenState extends State { } void _bHubCon() { - data.getUserAutoLoginToken().whenComplete(() { - buildHubConnection(); + cProvider.getUserAutoLoginToken().whenComplete(() { + cProvider.buildHubConnection(); }); } @@ -187,7 +179,11 @@ class _DashboardScreenState extends State { "assets/images/announcements.svg", matchTextDirection: true, ).onPress(() async { - await Navigator.pushNamed(context, AppRoutes.announcements); + /// await Navigator.pushNamed(context, AppRoutes.announcements); + hubConnection.stop().then((value) { + print("----------- Stoppped ----------"); + print(hubConnection.state); + }); }) ], ).paddingOnly(left: 21, right: 21, top: 48, bottom: 7), From abc586b81e7cb9a1917e55dbea5cce8599761346 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 6 Dec 2022 09:41:10 +0300 Subject: [PATCH 163/302] Chat Fixes & User Chat Counter --- lib/ui/landing/dashboard_screen.dart | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index f15b36e..8c1291a 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -179,11 +179,7 @@ class _DashboardScreenState extends State { "assets/images/announcements.svg", matchTextDirection: true, ).onPress(() async { - /// await Navigator.pushNamed(context, AppRoutes.announcements); - hubConnection.stop().then((value) { - print("----------- Stoppped ----------"); - print(hubConnection.state); - }); + await Navigator.pushNamed(context, AppRoutes.announcements); }) ], ).paddingOnly(left: 21, right: 21, top: 48, bottom: 7), From 31fba1f8e64550d0066df341cfecabc74c15468c Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Tue, 6 Dec 2022 09:58:55 +0300 Subject: [PATCH 164/302] worklist animation fix --- lib/ui/work_list/itg_detail_screen.dart | 291 ++++++++++--------- lib/ui/work_list/worklist_detail_screen.dart | 7 +- lib/widgets/app_bar_widget.dart | 2 +- 3 files changed, 164 insertions(+), 136 deletions(-) diff --git a/lib/ui/work_list/itg_detail_screen.dart b/lib/ui/work_list/itg_detail_screen.dart index cf33648..e123d22 100644 --- a/lib/ui/work_list/itg_detail_screen.dart +++ b/lib/ui/work_list/itg_detail_screen.dart @@ -35,6 +35,7 @@ class ItgDetailScreen extends StatefulWidget { class _ItgDetailScreenState extends State { int tabIndex = 0; + int animationIndex = 0; PageController controller = PageController(); bool showFabOptions = false; @@ -82,6 +83,7 @@ class _ItgDetailScreenState extends State { void getDataFromState() { if (requestDetails == null) { + animationIndex = animationIndex + 1; requestDetails = AppState().requestAllList![AppState().itgWorkListIndex!]; // ModalRoute.of(context)!.settings.arguments as WorkListResponseModel; providerData.itgFormsModel!.totalCount = providerData.itgFormsModel!.totalCount! - 1; getItgData(); @@ -95,151 +97,170 @@ class _ItgDetailScreenState extends State { return Scaffold( appBar: AppBarWidget(context, title: LocaleKeys.details.tr()), backgroundColor: Colors.white, - body: Stack( - children: [ - Column( - children: [ - Container( - padding: const EdgeInsets.only(left: 21, right: 21, top: 16, bottom: 16), - decoration: const BoxDecoration( - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular(25), - bottomRight: Radius.circular(25), + body: AnimatedSwitcher( + duration: const Duration(milliseconds: 500), + switchInCurve: Curves.easeInToLinear, + transitionBuilder: (Widget child, Animation animation) { + Animation custom = Tween( + begin: const Offset(1.0, 0.0), + end: Offset.zero, + ).animate(animation); + return ClipRect( + child: SlideTransition( + position: custom, + child: child, + // textDirection: TextDirection.ltr, + ), + ); + }, + child: Stack( + key: ValueKey(animationIndex), + children: [ + Column( + children: [ + Container( + padding: const EdgeInsets.only(left: 21, right: 21, top: 16, bottom: 16), + decoration: const BoxDecoration( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(25), + bottomRight: Radius.circular(25), + ), + gradient: LinearGradient( + transform: GradientRotation(.83), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], + ), ), - gradient: LinearGradient( - transform: GradientRotation(.83), - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, + child: Row( + children: [ + myTab(LocaleKeys.requestDetails.tr(), 0), + myTab(LocaleKeys.approvalLevel.tr(), 1), + myTab(LocaleKeys.requesterDetails.tr(), 2), ], ), ), - child: Row( + PageView( + controller: controller, + onPageChanged: (pageIndex) { + setState(() { + tabIndex = pageIndex; + }); + }, children: [ - myTab(LocaleKeys.requestDetails.tr(), 0), - myTab(LocaleKeys.approvalLevel.tr(), 1), - myTab(LocaleKeys.requesterDetails.tr(), 2), + RequestDetailFragment(fields: itgRequest?.fieldGoups?[1].fields ?? []), + ApprovalLevelfragment( + wFHistory: itgRequest?.wFHistory ?? [], + voidCallback: reloadITG, + ), + RequestDetailFragment(fields: itgRequest?.fieldGoups?[0].fields ?? []), ], - ), - ), - PageView( - controller: controller, - onPageChanged: (pageIndex) { - setState(() { - tabIndex = pageIndex; - }); - }, - children: [ - RequestDetailFragment(fields: itgRequest?.fieldGoups?[1].fields ?? []), - ApprovalLevelfragment( - wFHistory: itgRequest?.wFHistory ?? [], - voidCallback: reloadITG, - ), - RequestDetailFragment(fields: itgRequest?.fieldGoups?[0].fields ?? []), - ], - ).expanded, - if (isApproveAvailable || isRejectAvailable || isCloseAvailable) - Container( - padding: const EdgeInsets.only(top: 14, bottom: 14, left: 21, right: 21), - decoration: const BoxDecoration( - color: Colors.white, - border: Border( - top: BorderSide( - color: MyColors.lightGreyEFColor, - width: 1.0, + ).expanded, + if (isApproveAvailable || isRejectAvailable || isCloseAvailable) + Container( + padding: const EdgeInsets.only(top: 14, bottom: 14, left: 21, right: 21), + decoration: const BoxDecoration( + color: Colors.white, + border: Border( + top: BorderSide( + color: MyColors.lightGreyEFColor, + width: 1.0, + ), ), ), - ), - child: Row( + child: Row( + children: [ + if (isRejectAvailable) + DefaultButton( + LocaleKeys.reject.tr(), + () => performAction("REJECTED"), + colors: const [ + Color(0xffE47A7E), + Color(0xffDE6D71), + ], + ).expanded, + if (isApproveAvailable && isRejectAvailable) 8.width, + if (isApproveAvailable) + DefaultButton( + LocaleKeys.approve.tr(), + () => performAction("APPROVED"), + colors: const [ + Color(0xff28C884), + Color(0xff1BB271), + ], + ).expanded, + if (isCloseAvailable) + DefaultButton( + LocaleKeys.ok.tr(), + () => performAction("CLOSE"), + colors: const [ + Color(0xff32D892), + Color(0xff1AB170), + ], + ).expanded, + 8.width, + Container( + height: 43, + width: 43, + decoration: const BoxDecoration( + shape: BoxShape.circle, + color: MyColors.lightGreyE6Color, + ), + child: Icon(showFabOptions ? Icons.more_vert_rounded : Icons.more_horiz_rounded, color: MyColors.darkIconColor), + ).onPress(() { + setState(() { + showFabOptions = true; + }); + }) + ], + ), + ) + ], + ), + IgnorePointer( + ignoring: !showFabOptions, + child: AnimatedOpacity( + opacity: showFabOptions ? 1 : 0, + duration: const Duration(milliseconds: 250), + child: Container( + padding: const EdgeInsets.only(left: 21, right: 21, bottom: 75 - 12), + width: double.infinity, + height: double.infinity, + color: Colors.white.withOpacity(.67), + alignment: Alignment.bottomRight, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.end, children: [ - if (isRejectAvailable) - DefaultButton( - LocaleKeys.reject.tr(), - () => performAction("REJECTED"), - colors: const [ - Color(0xffE47A7E), - Color(0xffDE6D71), - ], - ).expanded, - if (isApproveAvailable && isRejectAvailable) 8.width, - if (isApproveAvailable) - DefaultButton( - LocaleKeys.approve.tr(), - () => performAction("APPROVED"), - colors: const [ - Color(0xff28C884), - Color(0xff1BB271), - ], - ).expanded, - if (isCloseAvailable) - DefaultButton( - LocaleKeys.ok.tr(), - () => performAction("CLOSE"), - colors: const [ - Color(0xff32D892), - Color(0xff1AB170), - ], - ).expanded, - 8.width, - Container( - height: 43, - width: 43, - decoration: const BoxDecoration( - shape: BoxShape.circle, - color: MyColors.lightGreyE6Color, - ), - child: Icon(showFabOptions ? Icons.more_vert_rounded : Icons.more_horiz_rounded, color: MyColors.darkIconColor), - ).onPress(() { - setState(() { - showFabOptions = true; - }); - }) + myFab(LocaleKeys.skip.tr(), "assets/images/skip.svg").onPress(() { + if (AppState().requestAllList!.length - 1 > AppState().itgWorkListIndex!) { + animationIndex = animationIndex + 1; + AppState().itgWorkListIndex = AppState().itgWorkListIndex! + 1; + requestDetails = null; + itgRequest = null; + tabIndex = 0; + showFabOptions = false; + getDataFromState(); + } else if (AppState().requestAllList!.length - 1 == AppState().itgWorkListIndex!) { + Navigator.pop(context); + } + }), + 12.height, + ...viewApiButtonsList(allowedActionList), ], ), - ) - ], - ), - IgnorePointer( - ignoring: !showFabOptions, - child: AnimatedOpacity( - opacity: showFabOptions ? 1 : 0, - duration: const Duration(milliseconds: 250), - child: Container( - padding: const EdgeInsets.only(left: 21, right: 21, bottom: 75 - 12), - width: double.infinity, - height: double.infinity, - color: Colors.white.withOpacity(.67), - alignment: Alignment.bottomRight, - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - myFab(LocaleKeys.skip.tr(), "assets/images/skip.svg").onPress(() { - if (AppState().requestAllList!.length - 1 > AppState().itgWorkListIndex!) { - AppState().itgWorkListIndex = AppState().itgWorkListIndex! + 1; - requestDetails = null; - itgRequest = null; - tabIndex = 0; - showFabOptions = false; - getDataFromState(); - } else if (AppState().requestAllList!.length - 1 == AppState().itgWorkListIndex!) { - Navigator.pop(context); - } - }), - 12.height, - ...viewApiButtonsList(allowedActionList), - ], ), - ), - ).onPress(() { - setState(() { - showFabOptions = false; - }); - }), - ), - ], + ).onPress(() { + setState(() { + showFabOptions = false; + }); + }), + ), + ], + ), ), floatingActionButton: (!isApproveAvailable && !isRejectAvailable && !isCloseAvailable) ? Container( @@ -514,6 +535,7 @@ class _ItgDetailScreenState extends State { Utils.hideLoading(context); Utils.showToast(LocaleKeys.yourChangeHasBeenSavedSuccessfully.tr()); // Navigator.pop(context, "delegate_reload"); + animationIndex=animationIndex+1; AppState().requestAllList!.removeAt(AppState().itgWorkListIndex!); if (AppState().requestAllList!.isEmpty) { Navigator.pop(context, "delegate_reload"); @@ -534,9 +556,11 @@ class _ItgDetailScreenState extends State { void performDataCorrectionORReportGeneratedAction(String requestType, int taskId, int itemId, String employeeNumber) async { try { Utils.showLoading(context); + animationIndex = animationIndex + 1; ITGRequest? itgRequest = await WorkListApiClient().grantITGRequest(requestType, taskId, itemId, employeeNumber, "", ""); Utils.hideLoading(context); Utils.showToast(LocaleKeys.yourChangeHasBeenSavedSuccessfully.tr()); + AppState().requestAllList!.removeAt(AppState().itgWorkListIndex!); if (AppState().requestAllList!.isEmpty) { Navigator.pop(context, "delegate_reload"); @@ -555,6 +579,7 @@ class _ItgDetailScreenState extends State { } void reloadITG() { + animationIndex = animationIndex + 1; AppState().requestAllList!.removeAt(AppState().itgWorkListIndex!); if (AppState().requestAllList!.isEmpty) { Navigator.pop(context, "delegate_reload"); diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 5d6727c..9ae62fd 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -55,6 +55,7 @@ class WorkListDetailScreen extends StatefulWidget { class _WorkListDetailScreenState extends State { int tabIndex = 0; + int animationIndex = 0; PageController controller = PageController(); bool showFabOptions = false; @@ -187,7 +188,6 @@ class _WorkListDetailScreenState extends State { @override Widget build(BuildContext context) { getDataFromState(); - return Scaffold( appBar: AppBarWidget(context, title: LocaleKeys.details.tr()), backgroundColor: Colors.white, @@ -208,7 +208,7 @@ class _WorkListDetailScreenState extends State { ); }, child: Stack( - key: ValueKey(AppState().workListIndex ?? 0), + key: ValueKey(animationIndex), children: [ Column( children: [ @@ -350,6 +350,7 @@ class _WorkListDetailScreenState extends State { children: [ myFab(LocaleKeys.skip.tr(), "assets/images/skip.svg").onPress(() { if (AppState().workList!.length - 1 > AppState().workListIndex!) { + animationIndex = animationIndex + 1; AppState().setWorkListIndex = AppState().workListIndex! + 1; workListData = null; showFabOptions = false; @@ -685,6 +686,7 @@ class _WorkListDetailScreenState extends State { GenericResponseModel model = await WorkListApiClient().postNotificationActions(payload); Utils.hideLoading(context); Utils.showToast(LocaleKeys.yourChangeHasBeenSavedSuccessfully.tr()); + animationIndex=animationIndex+1; AppState().workList!.removeAt(AppState().workListIndex!); if (AppState().workList!.isEmpty) { Navigator.pop(context, "delegate_reload"); @@ -703,6 +705,7 @@ class _WorkListDetailScreenState extends State { } void reloadWorkList() { + animationIndex = animationIndex + 1; AppState().workList!.removeAt(AppState().workListIndex!); if (AppState().workList!.isEmpty) { Navigator.pop(context, "delegate_reload"); diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index fa59d3a..38cf570 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -20,7 +20,7 @@ AppBar AppBarWidget(BuildContext context, children: [ GestureDetector( behavior: HitTestBehavior.opaque, - onTap: Feedback.wrapForTap(() => Navigator.maybePop(context, true), context), + onTap: Feedback.wrapForTap(() => Navigator.maybePop(context), context), child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), ), 4.width, From 581e6de8976d902f8aed4e2ec2d2ceedb2151164 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Tue, 6 Dec 2022 09:59:30 +0300 Subject: [PATCH 165/302] fix issues --- .../dynamic_screens/dynamic_listview_screen.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index 5c4053c..a670cbb 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -102,8 +102,8 @@ class _DynamicListViewScreenState extends State { itemBuilder: (cxt, int parentIndex) => getEITTransactionList![parentIndex].collectionTransaction!.isEmpty ? const SizedBox() : GridView( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.9 / 0.75), - padding: const EdgeInsets.all(12.0), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.0 / 0.75), + padding: const EdgeInsets.only(left: 12,right: 21,top: 12), shrinkWrap: true, primary: false, physics: const ScrollPhysics(), From f3ffdc0088ef5b0483ec802dcce59c7ec6f6a8a9 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 6 Dec 2022 10:48:27 +0300 Subject: [PATCH 166/302] marathon URL update --- lib/classes/consts.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index fb506a9..944a29b 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -26,7 +26,7 @@ class ApiConsts { static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; //Brain Marathon Constants - static String marathonBaseUrl = "https://18.188.181.12/service/"; + static String marathonBaseUrl = "https://marathoon.com/service/"; static String marathonParticipantLoginUrl = marathonBaseUrl + "api/auth/participantlogin"; static String marathonProjectGetUrl = marathonBaseUrl + "api/Project/Project_Get"; static String marathonUpcomingUrl = marathonBaseUrl + "api/marathon/upcoming/"; From ff7eb2ad6db95da7dda5e0b7063d91bcfea751c0 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 6 Dec 2022 10:51:55 +0300 Subject: [PATCH 167/302] Chat Fixes & User Chat Counter --- lib/ui/chat/chat_home.dart | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 0438dc6..df03ba7 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -8,8 +8,10 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/chat_home_screen.dart'; import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; +import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; +import 'package:signalr_netcore/signalr_client.dart'; class ChatHome extends StatefulWidget { const ChatHome({Key? key}) : super(key: key); @@ -28,6 +30,13 @@ class _ChatHomeState extends State { super.initState(); data = Provider.of(context, listen: false); data.registerEvents(); + if (hubConnection.state != HubConnectionState.Connected) { + data.getUserAutoLoginToken().whenComplete(() async { + await data.buildHubConnection(); + data.getUserRecentChats(); + }); + return; + } if (data.searchedChats == null || data.searchedChats!.isEmpty) { data.getUserRecentChats(); } From e94a8d9a5e86e291132df140d09c40be9d5c702b Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 6 Dec 2022 10:57:56 +0300 Subject: [PATCH 168/302] Hub Connection Fix --- lib/provider/chat_provider_model.dart | 26 ++++++++++++-------------- lib/ui/chat/chat_home.dart | 2 +- lib/ui/landing/dashboard_screen.dart | 4 ++-- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index b045bbb..0b522db 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -51,10 +51,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future buildHubConnection() async { - hubConnection = await getHubConnection(); - await hubConnection.start()!.then((value) { - print('-----------------------Hub Started For Chat------------------'); - }); + chatHubConnection = await getHubConnection(); + await chatHubConnection.start(); } Future getHubConnection() async { @@ -75,18 +73,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void registerEvents() { - hubConnection.on("OnUpdateUserStatusAsync", changeStatus); - hubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); + chatHubConnection.on("OnUpdateUserStatusAsync", changeStatus); + chatHubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); // hubConnection.on("OnSeenChatUserAsync", onChatSeen); //hubConnection.on("OnUserTypingAsync", onUserTyping); - hubConnection.on("OnUserCountAsync", userCountAsync); + chatHubConnection.on("OnUserCountAsync", userCountAsync); // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); - hubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); - hubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); + chatHubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); + chatHubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); } void getUserRecentChats() async { - if (hubConnection.state != HubConnectionState.Connected) { + if (chatHubConnection.state != HubConnectionState.Connected) { getUserAutoLoginToken().whenComplete(() async { await buildHubConnection(); getUserRecentChats(); @@ -127,7 +125,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future invokeUserChatHistoryNotDeliveredAsync({required int userId}) async { - await hubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [userId]); + await chatHubConnection.invoke("GetUserChatHistoryNotDeliveredAsync", args: [userId]); return ""; } @@ -194,7 +192,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void updateUserChatHistoryStatusAsync(List data) { try { - hubConnection.invoke("UpdateUserChatHistoryStatusAsync", args: [data]); + chatHubConnection.invoke("UpdateUserChatHistoryStatusAsync", args: [data]); } catch (e) { throw e; } @@ -202,7 +200,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void updateUserChatHistoryOnMsg(List data) { try { - hubConnection.invoke("UpdateUserChatHistoryStatusAsync", args: [data]); + chatHubConnection.invoke("UpdateUserChatHistoryStatusAsync", args: [data]); } catch (e) { throw e; } @@ -486,7 +484,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String chatData = '{"contant":"$msg","contantNo":"$contentNo","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"$chatCID"}'; - await hubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); + await chatHubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); } void sendChatMessage(int targetUserId, String targetUserName, BuildContext context) async { diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index df03ba7..4e218e3 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -30,7 +30,7 @@ class _ChatHomeState extends State { super.initState(); data = Provider.of(context, listen: false); data.registerEvents(); - if (hubConnection.state != HubConnectionState.Connected) { + if (chatHubConnection.state != HubConnectionState.Connected) { data.getUserAutoLoginToken().whenComplete(() async { await data.buildHubConnection(); data.getUserRecentChats(); diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 8c1291a..f06a405 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -31,7 +31,7 @@ import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:signalr_netcore/signalr_client.dart'; -late HubConnection hubConnection; +late HubConnection chatHubConnection; class DashboardScreen extends StatefulWidget { DashboardScreen({Key? key}) : super(key: key); @@ -67,7 +67,7 @@ class _DashboardScreenState extends State { @override void dispose() { super.dispose(); - hubConnection.stop(); + chatHubConnection.stop(); } void _bHubCon() { From a949f15023cf047b16dc4e666411ee293f4dbb58 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 6 Dec 2022 11:04:13 +0300 Subject: [PATCH 169/302] fixes --- lib/ui/work_list/worklist_fragments/detail_fragment.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ui/work_list/worklist_fragments/detail_fragment.dart b/lib/ui/work_list/worklist_fragments/detail_fragment.dart index 43b5d7d..03e2272 100644 --- a/lib/ui/work_list/worklist_fragments/detail_fragment.dart +++ b/lib/ui/work_list/worklist_fragments/detail_fragment.dart @@ -46,6 +46,7 @@ class _DetailFragmentState extends State { ], ).objectContainerView(), 12.height, + widget.memberInformationListModel != null ? Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, @@ -69,7 +70,7 @@ class _DetailFragmentState extends State { isItLast: true, ), ], - ).objectContainerView(), + ).objectContainerView() : Container(), ], ).paddingAll(21), ); From 915a7d208f1342c56672afc6e00fb859589ea2c4 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 6 Dec 2022 13:17:16 +0300 Subject: [PATCH 170/302] Jira translation fix --- lib/ui/landing/widget/app_drawer.dart | 44 +++++++++++++-------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/lib/ui/landing/widget/app_drawer.dart b/lib/ui/landing/widget/app_drawer.dart index ac70035..4160fde 100644 --- a/lib/ui/landing/widget/app_drawer.dart +++ b/lib/ui/landing/widget/app_drawer.dart @@ -69,28 +69,28 @@ class _AppDrawerState extends State { ).expanded ], ).paddingOnly(left: 14, right: 14, top: 21, bottom: 21), - Row( - children: [ - Row( - children: [ - LocaleKeys.english.tr().toText14(color: AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { - context.setLocale(const Locale("en", "US")); - postLanguageChange(context); - }), - Container( - width: 1, - color: MyColors.darkWhiteColor, - height: 16, - margin: const EdgeInsets.only(left: 10, right: 10), - ), - LocaleKeys.arabic.tr().toText14(color: !AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { - context.setLocale(const Locale("ar", "SA")); - postLanguageChange(context); - }), - ], - ), - ], - ).paddingOnly(left: 14, right: 14, bottom: 14), + // Row( + // children: [ + // Row( + // children: [ + // LocaleKeys.english.tr().toText14(color: AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { + // context.setLocale(const Locale("en", "US")); + // postLanguageChange(context); + // }), + // Container( + // width: 1, + // color: MyColors.darkWhiteColor, + // height: 16, + // margin: const EdgeInsets.only(left: 10, right: 10), + // ), + // LocaleKeys.arabic.tr().toText14(color: !AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { + // context.setLocale(const Locale("ar", "SA")); + // postLanguageChange(context); + // }), + // ], + // ), + // ], + // ).paddingOnly(left: 14, right: 14, bottom: 14), const Divider( height: 1, thickness: 1, From c500da9a188c3a1a436b4cd1381a8e2c50b68adf Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Tue, 6 Dec 2022 14:12:01 +0300 Subject: [PATCH 171/302] bug fix --- lib/api/my_attendance_api_client.dart | 4 +- lib/classes/utils.dart | 11 +++-- .../dynamic_screens/dynamic_input_screen.dart | 46 +++++++++++++++++-- lib/ui/profile/personal_info.dart | 2 +- 4 files changed, 53 insertions(+), 10 deletions(-) diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart index 9bb16a8..5833413 100644 --- a/lib/api/my_attendance_api_client.dart +++ b/lib/api/my_attendance_api_client.dart @@ -70,7 +70,7 @@ class MyAttendanceApiClient { }, url, postParams); } - Future getDefaultValue(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list, String? empID) async { + Future getDefaultValue(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_DEFAULT_VALUE"; Map postParams = { "P_SELECTED_RESP_ID": -999, @@ -82,7 +82,7 @@ class MyAttendanceApiClient { "GetValueSetValuesTBL": list, }; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { + if (empID != null && empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 7e7e83c..33d9830 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -9,6 +9,7 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -20,6 +21,7 @@ import 'package:mohem_flutter_app/widgets/loading_dialog.dart'; import 'package:nfc_manager/nfc_manager.dart'; import 'package:nfc_manager/platform_tags.dart'; import 'package:shared_preferences/shared_preferences.dart'; + // ignore_for_file: avoid_annotating_with_dynamic class Utils { @@ -289,7 +291,7 @@ class Utils { String formattedDate; if (date.isNotEmpty) { formattedDate = date.split('T')[0]; - if(!formattedDate.contains("00:00:00")) { + if (!formattedDate.contains("00:00:00")) { formattedDate = formattedDate + ' 00:00:00'; } } else { @@ -298,6 +300,10 @@ class Utils { return formattedDate; } + static String formatDateDefault(String date) { + return DateFormat('yyyy-MM-dd').format(DateFormat('dd-MMM-yyyy').parseLoose(date)); + } + static Future selectDate(BuildContext context, DateTime selectedDate) async { if (!Platform.isIOS) { await showCupertinoModalPopup( @@ -326,8 +332,7 @@ class Utils { return selectedDate; } - static void readNFc({required Function(String) onRead}) { - + static void readNFc({required Function(String) onRead}) { NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async { print(tag.data); var f; diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index ad7ad50..1c86eb8 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -50,6 +50,18 @@ class _DynamicInputScreenState extends State { descFlexConTextTitle = genericResponseModel!.pDESCFLEXCONTEXTNAME ?? ""; getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); + if (dynamicParams!.collectionNotificationList != null && dynamicParams!.collectionNotificationList!.isNotEmpty) { + getEitDffStructureList!.forEach((element) { + dynamicParams!.collectionNotificationList!.forEach((element2) { + if (element.sEGMENTNAME == element2.segmentName) { + element.fieldAnswer = element2.varchar2Value; + element.eSERVICESDV ??= ESERVICESDV(); + element.eSERVICESDV!.pIDCOLUMNNAME = element2.varchar2Value; + } + }); + }); + } + Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -114,15 +126,22 @@ class _DynamicInputScreenState extends State { try { Utils.showLoading(context); for (int i = 0; i < (structureList.cHILDSEGMENTSVSSplited?.length ?? 0); i++) { + List> values = []; String segmentId = structureList.cHILDSEGMENTSVSSplited![i]; if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!; List filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; - List> values = filteredList + + if (filteredList.isEmpty && structureList.cHILDSEGMENTSVSSplited!.isNotEmpty) { + segmentId = structureList.cHILDSEGMENTSVSSplited![0]; + filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; + } + values = filteredList .map((e) => GetSetValuesRequestModel( sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) .toJson()) .toList(); + List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values, empID: dynamicParams!.selectedEmp ?? '', parentValue: structureList.eSERVICESDV!.pVALUECOLUMNNAME); List abc = genericResponseModel?.getEITDFFStructureList ?? []; @@ -162,9 +181,28 @@ class _DynamicInputScreenState extends State { List> getSetList = getDefaultValuesIonicLogic(parent); if (getSetList.isNotEmpty) { - ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, getSetList, dynamicParams!.selectedEmp); + ESERVICESDV defaultValue = + await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, getSetList, empID: dynamicParams!.selectedEmp); int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); getEitDffStructureList![index].eSERVICESDV = defaultValue; + GetEITDFFStructureList defaultValueCheck = getEitDffStructureList!.where((GetEITDFFStructureList element) => element.sEGMENTNAME == segmentId).toList().first; + + if (defaultValueCheck.cHILDSEGMENTSDVSplited!.isNotEmpty && defaultValueCheck.rEADONLY == 'Y') { + getDefaultValues(defaultValueCheck); + Utils.hideLoading(context); + + // GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); + // List> getSetList = getDefaultValuesIonicLogic(parent); + // ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, defaultValueCheck.dESCFLEXCONTEXTCODE!, defaultValueCheck.dESCFLEXNAME!, getSetList); + // int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + // getEitDffStructureList![index].eSERVICESDV = defaultValue; + } else if (defaultValueCheck.cHILDSEGMENTSVSSplited!.isNotEmpty && defaultValueCheck.rEADONLY == 'Y') { + calGetValueSetValues(defaultValueCheck); + Utils.hideLoading(context); + } + } else if (values.isNotEmpty) { + ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); + int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); } } await Future.delayed(const Duration(seconds: 1)); @@ -305,7 +343,7 @@ class _DynamicInputScreenState extends State { idColName = val; if (getEitDffStructureList![j].fORMATTYPE == "X") { - idColName = Utils.formatDateNew(idColName!); + idColName = Utils.formatDateDefault(idColName!); // commenting to test // DateTime date = DateFormat('yyyy-MM-dd').parse(idColName!); // idColName = DateFormat('yyyy-MM-dd HH:mm:ss').format(date); @@ -324,7 +362,7 @@ class _DynamicInputScreenState extends State { if (getEitDffStructureList![j].rEADONLY != "Y") { var data = getEitDffStructureList![j].eSERVICESDV; - // let x = document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLSelectElement; + //let x = document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLSelectElement; String? text = data?.pIDCOLUMNNAME; //x.options[x.selectedIndex] ? x.options[x.selectedIndex].text : ""; String? val = data?.pVALUECOLUMNNAME; //x.options[x.selectedIndex] ? x.options[x.selectedIndex].value : null; if ((val ?? "").isEmpty && parentsList[i].isRequired == "REQUIRED") { diff --git a/lib/ui/profile/personal_info.dart b/lib/ui/profile/personal_info.dart index b715cdc..79d0995 100644 --- a/lib/ui/profile/personal_info.dart +++ b/lib/ui/profile/personal_info.dart @@ -43,7 +43,7 @@ class PersonalInfo extends StatelessWidget { LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.pAYROLLNAME ?? "").toText16(), ], - ).objectContainerView(center: false).paddingAll(21), + ).objectContainerView().paddingAll(21), ), ); } From 323741ad069a2eeda7156d78c6ff58f66088ad2f Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 6 Dec 2022 16:08:35 +0300 Subject: [PATCH 172/302] no message --- lib/api/dashboard_api_client.dart | 5 +- lib/api/leave_balance_api_client.dart | 35 +++----------- .../add_leave_balance_screen.dart | 48 ++++++------------- .../leave_balance/leave_balance_screen.dart | 31 +++--------- lib/ui/misc/request_submit_screen.dart | 18 ------- .../dynamic_screens/dynamic_input_screen.dart | 4 +- .../dynamic_listview_screen.dart | 4 +- .../services_menu_list_screen.dart | 2 +- lib/ui/my_team/create_request.dart | 2 +- lib/widgets/balances_dashboard_widget.dart | 15 +----- 10 files changed, 36 insertions(+), 128 deletions(-) diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index 3eab65b..e30af91 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -65,13 +65,10 @@ class DashboardApiClient { }, url, postParams); } - Future> getAccrualBalances(String effectiveDate, {String? empID}) async { + Future> getAccrualBalances(String effectiveDate) async { String url = "${ApiConsts.erpRest}GET_ACCRUAL_BALANCES"; Map postParams = {"P_EFFECTIVE_DATE": effectiveDate}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.getAccrualBalancesList ?? []; diff --git a/lib/api/leave_balance_api_client.dart b/lib/api/leave_balance_api_client.dart index bb3f129..cd577ba 100644 --- a/lib/api/leave_balance_api_client.dart +++ b/lib/api/leave_balance_api_client.dart @@ -17,33 +17,27 @@ class LeaveBalanceApiClient { factory LeaveBalanceApiClient() => _instance; - Future> getAbsenceTransactions(int pSelectedResopID, {String? empID}) async { + Future> getAbsenceTransactions(int pSelectedResopID) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceTransactionList ?? []; }, url, postParams); } - Future> getAbsenceAttendanceTypes({String? empID}) async { + Future> getAbsenceAttendanceTypes() async { String url = "${ApiConsts.erpRest}GET_ABSENCE_ATTENDANCE_TYPES"; Map postParams = {}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceAttendanceTypesList ?? []; }, url, postParams); } - Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID, {String? empID}) async { + Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID) async { String url = "${ApiConsts.erpRest}CALCULATE_ABSENCE_DURATION"; Map postParams = { "P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID, @@ -55,22 +49,16 @@ class LeaveBalanceApiClient { "P_TIME_START": null, }; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.calculateAbsenceDuration!; }, url, postParams); } - Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID, {String? empID}) async { + Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_DFF_STRUCTURE"; Map postParams = {"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceDffStructureList ?? []; @@ -79,7 +67,7 @@ class LeaveBalanceApiClient { Future validateAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = "", String? empID}) async { + {String comments = ""}) async { String url = "${ApiConsts.erpRest}VALIDATE_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -98,9 +86,6 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; @@ -109,7 +94,7 @@ class LeaveBalanceApiClient { Future submitAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = "", String? empID}) async { + {String comments = ""}) async { String url = "${ApiConsts.erpRest}SUBMIT_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -128,9 +113,6 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.sumbitAbsenceTransactionList!; @@ -147,7 +129,7 @@ class LeaveBalanceApiClient { }, url, postParams); } - Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID, {String? empID}) async { + Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID) async { String url = "${ApiConsts.erpRest}START_ABSENCE_APPROVAL_PROCESS"; Map postParams = { "P_TRANSACTION_ID": pTransactionID, @@ -156,9 +138,6 @@ class LeaveBalanceApiClient { "P_MENU_TYPE": "E", }; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.startAbsenceApprovalProccess!; diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index c879f9c..d1b7d77 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -4,7 +4,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -25,8 +24,7 @@ import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; class AddLeaveBalanceScreen extends StatefulWidget { - final String selectedEmp; - AddLeaveBalanceScreen({this.selectedEmp ='',Key? key}) : super(key: key); + AddLeaveBalanceScreen({Key? key}) : super(key: key); @override _AddLeaveBalanceScreenState createState() { @@ -45,8 +43,6 @@ class _AddLeaveBalanceScreenState extends State { String comment = ""; ReplacementList? selectedReplacementEmployee; - dynamic dynamicParams; - String selectedEmp =""; DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); @override @@ -58,7 +54,7 @@ class _AddLeaveBalanceScreenState extends State { void getAbsenceAttendanceTypes() async { try { Utils.showLoading(context); - absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(empID: selectedEmp); + absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -71,7 +67,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); getabsenceDffStructureList.clear(); - getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999, empID: selectedEmp); + getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -84,7 +80,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); CalculateAbsenceDuration duration = await LeaveBalanceApiClient() - .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999, empID: selectedEmp); + .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999); totalDays = duration.pABSENCEDAYS?.toInt(); Utils.hideLoading(context); @@ -113,17 +109,16 @@ class _AddLeaveBalanceScreenState extends State { } } } - await LeaveBalanceApiClient() - .validateAbsenceTransaction( - selectedAbsenceType!.dESCFLEXCONTEXTCODE!, - "HR_LOA_SS", - selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, - selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", - DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), - DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), - -999, - dffDataMap, - comments: comment,empID: selectedEmp ); + await LeaveBalanceApiClient().validateAbsenceTransaction( + selectedAbsenceType!.dESCFLEXCONTEXTCODE!, + "HR_LOA_SS", + selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, + selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", + DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), + DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), + -999, + dffDataMap, + comments: comment); SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( selectedAbsenceType!.dESCFLEXCONTEXTCODE!, @@ -134,8 +129,7 @@ class _AddLeaveBalanceScreenState extends State { DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), -999, dffDataMap, - comments: comment, - empID: selectedEmp); + comments: comment); Utils.hideLoading(context); @@ -158,18 +152,6 @@ class _AddLeaveBalanceScreenState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; - if (dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; - getAbsenceAttendanceTypes(); - - } - } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 1218914..548ca99 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -1,7 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -9,14 +8,12 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart'; -import 'package:mohem_flutter_app/ui/my_attendance/services_menu_list_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/balances_dashboard_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; class LeaveBalance extends StatefulWidget { - final String selectedEmp; - LeaveBalance({this.selectedEmp ='', Key? key}) : super(key: key); + LeaveBalance({Key? key}) : super(key: key); @override _LeaveBalanceState createState() { @@ -28,13 +25,12 @@ class _LeaveBalanceState extends State { List? absenceTransList; DateTime accrualDateTime = DateTime.now(); - dynamic dynamicParams; - String selectedEmp =""; + @override void initState() { super.initState(); - + getAbsenceTransactions(); } @override @@ -43,9 +39,9 @@ class _LeaveBalanceState extends State { } void getAbsenceTransactions() async { - try { + try { Utils.showLoading(context); - absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999, empID: selectedEmp); + absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -56,19 +52,6 @@ class _LeaveBalanceState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; - if (dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; - getAbsenceTransactions(); - // setState(() {}); - - } - } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( @@ -79,7 +62,7 @@ class _LeaveBalanceState extends State { physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ - BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true,), + BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true), 12.height, absenceTransList == null ? const SizedBox() @@ -128,7 +111,7 @@ class _LeaveBalanceState extends State { ), child: const Icon(Icons.add, color: Colors.white, size: 30), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: selectedEmp ??''); + Navigator.pushNamed(context, AppRoutes.addLeaveBalance); }), ); } diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index 84adf9f..f05bacb 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -8,7 +8,6 @@ import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/api/termination_dff_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -50,13 +49,8 @@ class _RequestSubmitScreenState extends State { List approverList = []; List attachmentFiles = []; - - dynamic dynamicParams; - String selectedEmp =""; - List attachments = []; - @override void initState() { super.initState(); @@ -129,7 +123,6 @@ class _RequestSubmitScreenState extends State { params!.transactionId, comments.text, -999, - empID: selectedEmp ); } else if (params!.approvalFlag == 'eit') { await MyAttendanceApiClient().startEitApprovalProcess( @@ -164,17 +157,6 @@ class _RequestSubmitScreenState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; - if (dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; - submitRequest(); - } - } if (params == null) { params = ModalRoute.of(context)!.settings.arguments as RequestSubmitScreenParams; getApproverList(); diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index e914c70..08d2be7 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -635,9 +635,7 @@ class _DynamicInputScreenState extends State { ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ if (model.rEADONLY != "Y") - for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem( - padding: EdgeInsets.all(10), - child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), ], onSelected: (int popipIndex) async { ESERVICESDV eservicesdv = ESERVICESDV( diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index a670cbb..5c4053c 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -102,8 +102,8 @@ class _DynamicListViewScreenState extends State { itemBuilder: (cxt, int parentIndex) => getEITTransactionList![parentIndex].collectionTransaction!.isEmpty ? const SizedBox() : GridView( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.0 / 0.75), - padding: const EdgeInsets.only(left: 12,right: 21,top: 12), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.9 / 0.75), + padding: const EdgeInsets.all(12.0), shrinkWrap: true, primary: false, physics: const ScrollPhysics(), diff --git a/lib/ui/my_attendance/services_menu_list_screen.dart b/lib/ui/my_attendance/services_menu_list_screen.dart index 7a61029..cd76132 100644 --- a/lib/ui/my_attendance/services_menu_list_screen.dart +++ b/lib/ui/my_attendance/services_menu_list_screen.dart @@ -54,7 +54,7 @@ class ServicesMenuListScreen extends StatelessWidget { } return; } else if (servicesMenuData.list[index].requestType == "ABSENCE") { - Navigator.pushNamed(context, AppRoutes.leaveBalance, arguments: servicesMenuData?.selectedEmp ??''); + Navigator.pushNamed(context, AppRoutes.leaveBalance); return; } if (servicesMenuData.list[index].requestType == "EIT") { diff --git a/lib/ui/my_team/create_request.dart b/lib/ui/my_team/create_request.dart index 1637586..53205c9 100644 --- a/lib/ui/my_team/create_request.dart +++ b/lib/ui/my_team/create_request.dart @@ -69,7 +69,7 @@ class _CreateRequestState extends State { if (menu.menuEntry.menuEntryType == "FUNCTION") { if (menu.menuEntry.requestType == "EIT") { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!)); } else {} } else { Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(menu.menuEntry.prompt!, menu.menuEntiesList, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index e640ff4..e546acf 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -45,8 +45,6 @@ class _BalancesDashboardWidgetState extends State { late DateTime accrualDateTime; GetAccrualBalancesList? leaveBalanceAccrual; List? ticketBalanceAccrualList; - dynamic dynamicParams; - String selectedEmp =""; @override void initState() { @@ -62,7 +60,7 @@ class _BalancesDashboardWidgetState extends State { void changeAccrualDate() async { try { Utils.showLoading(context); - List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime),empID: selectedEmp); + List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime)); if (accrualList.isNotEmpty) { if (widget.isLeaveBalance) { leaveBalanceAccrual = accrualList[0]; @@ -88,17 +86,6 @@ class _BalancesDashboardWidgetState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; - if (dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; - changeAccrualDate(); - } - } if (leaveBalanceAccrual == null && widget.isLeaveBalance) { leaveBalanceAccrual = Provider.of(context, listen: false).leaveBalanceAccrual; chartModelList = [ From d80f93a6dcf1f8c4e8ba68f68dc3c95e3cc34525 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 6 Dec 2022 16:08:43 +0300 Subject: [PATCH 173/302] Revert "no message" This reverts commit 323741ad069a2eeda7156d78c6ff58f66088ad2f. --- lib/api/dashboard_api_client.dart | 5 +- lib/api/leave_balance_api_client.dart | 35 +++++++++++--- .../add_leave_balance_screen.dart | 48 +++++++++++++------ .../leave_balance/leave_balance_screen.dart | 31 +++++++++--- lib/ui/misc/request_submit_screen.dart | 18 +++++++ .../dynamic_screens/dynamic_input_screen.dart | 4 +- .../dynamic_listview_screen.dart | 4 +- .../services_menu_list_screen.dart | 2 +- lib/ui/my_team/create_request.dart | 2 +- lib/widgets/balances_dashboard_widget.dart | 15 +++++- 10 files changed, 128 insertions(+), 36 deletions(-) diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index e30af91..3eab65b 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -65,10 +65,13 @@ class DashboardApiClient { }, url, postParams); } - Future> getAccrualBalances(String effectiveDate) async { + Future> getAccrualBalances(String effectiveDate, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ACCRUAL_BALANCES"; Map postParams = {"P_EFFECTIVE_DATE": effectiveDate}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.getAccrualBalancesList ?? []; diff --git a/lib/api/leave_balance_api_client.dart b/lib/api/leave_balance_api_client.dart index cd577ba..bb3f129 100644 --- a/lib/api/leave_balance_api_client.dart +++ b/lib/api/leave_balance_api_client.dart @@ -17,27 +17,33 @@ class LeaveBalanceApiClient { factory LeaveBalanceApiClient() => _instance; - Future> getAbsenceTransactions(int pSelectedResopID) async { + Future> getAbsenceTransactions(int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceTransactionList ?? []; }, url, postParams); } - Future> getAbsenceAttendanceTypes() async { + Future> getAbsenceAttendanceTypes({String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_ATTENDANCE_TYPES"; Map postParams = {}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceAttendanceTypesList ?? []; }, url, postParams); } - Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID) async { + Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}CALCULATE_ABSENCE_DURATION"; Map postParams = { "P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID, @@ -49,16 +55,22 @@ class LeaveBalanceApiClient { "P_TIME_START": null, }; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.calculateAbsenceDuration!; }, url, postParams); } - Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID) async { + Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_DFF_STRUCTURE"; Map postParams = {"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceDffStructureList ?? []; @@ -67,7 +79,7 @@ class LeaveBalanceApiClient { Future validateAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = ""}) async { + {String comments = "", String? empID}) async { String url = "${ApiConsts.erpRest}VALIDATE_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -86,6 +98,9 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; @@ -94,7 +109,7 @@ class LeaveBalanceApiClient { Future submitAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = ""}) async { + {String comments = "", String? empID}) async { String url = "${ApiConsts.erpRest}SUBMIT_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -113,6 +128,9 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.sumbitAbsenceTransactionList!; @@ -129,7 +147,7 @@ class LeaveBalanceApiClient { }, url, postParams); } - Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID) async { + Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}START_ABSENCE_APPROVAL_PROCESS"; Map postParams = { "P_TRANSACTION_ID": pTransactionID, @@ -138,6 +156,9 @@ class LeaveBalanceApiClient { "P_MENU_TYPE": "E", }; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.startAbsenceApprovalProccess!; diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index d1b7d77..c879f9c 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -24,7 +25,8 @@ import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; class AddLeaveBalanceScreen extends StatefulWidget { - AddLeaveBalanceScreen({Key? key}) : super(key: key); + final String selectedEmp; + AddLeaveBalanceScreen({this.selectedEmp ='',Key? key}) : super(key: key); @override _AddLeaveBalanceScreenState createState() { @@ -43,6 +45,8 @@ class _AddLeaveBalanceScreenState extends State { String comment = ""; ReplacementList? selectedReplacementEmployee; + dynamic dynamicParams; + String selectedEmp =""; DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); @override @@ -54,7 +58,7 @@ class _AddLeaveBalanceScreenState extends State { void getAbsenceAttendanceTypes() async { try { Utils.showLoading(context); - absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(); + absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(empID: selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -67,7 +71,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); getabsenceDffStructureList.clear(); - getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999); + getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999, empID: selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -80,7 +84,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); CalculateAbsenceDuration duration = await LeaveBalanceApiClient() - .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999); + .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999, empID: selectedEmp); totalDays = duration.pABSENCEDAYS?.toInt(); Utils.hideLoading(context); @@ -109,16 +113,17 @@ class _AddLeaveBalanceScreenState extends State { } } } - await LeaveBalanceApiClient().validateAbsenceTransaction( - selectedAbsenceType!.dESCFLEXCONTEXTCODE!, - "HR_LOA_SS", - selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, - selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", - DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), - DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), - -999, - dffDataMap, - comments: comment); + await LeaveBalanceApiClient() + .validateAbsenceTransaction( + selectedAbsenceType!.dESCFLEXCONTEXTCODE!, + "HR_LOA_SS", + selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, + selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", + DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), + DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), + -999, + dffDataMap, + comments: comment,empID: selectedEmp ); SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( selectedAbsenceType!.dESCFLEXCONTEXTCODE!, @@ -129,7 +134,8 @@ class _AddLeaveBalanceScreenState extends State { DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), -999, dffDataMap, - comments: comment); + comments: comment, + empID: selectedEmp); Utils.hideLoading(context); @@ -152,6 +158,18 @@ class _AddLeaveBalanceScreenState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + getAbsenceAttendanceTypes(); + + } + } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 548ca99..1218914 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -1,6 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -8,12 +9,14 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart'; +import 'package:mohem_flutter_app/ui/my_attendance/services_menu_list_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/balances_dashboard_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; class LeaveBalance extends StatefulWidget { - LeaveBalance({Key? key}) : super(key: key); + final String selectedEmp; + LeaveBalance({this.selectedEmp ='', Key? key}) : super(key: key); @override _LeaveBalanceState createState() { @@ -25,12 +28,13 @@ class _LeaveBalanceState extends State { List? absenceTransList; DateTime accrualDateTime = DateTime.now(); - + dynamic dynamicParams; + String selectedEmp =""; @override void initState() { super.initState(); - getAbsenceTransactions(); + } @override @@ -39,9 +43,9 @@ class _LeaveBalanceState extends State { } void getAbsenceTransactions() async { - try { + try { Utils.showLoading(context); - absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999); + absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999, empID: selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -52,6 +56,19 @@ class _LeaveBalanceState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + getAbsenceTransactions(); + // setState(() {}); + + } + } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( @@ -62,7 +79,7 @@ class _LeaveBalanceState extends State { physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ - BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true), + BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true,), 12.height, absenceTransList == null ? const SizedBox() @@ -111,7 +128,7 @@ class _LeaveBalanceState extends State { ), child: const Icon(Icons.add, color: Colors.white, size: 30), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.addLeaveBalance); + Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: selectedEmp ??''); }), ); } diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index f05bacb..84adf9f 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -8,6 +8,7 @@ import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/api/termination_dff_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -49,8 +50,13 @@ class _RequestSubmitScreenState extends State { List approverList = []; List attachmentFiles = []; + + dynamic dynamicParams; + String selectedEmp =""; + List attachments = []; + @override void initState() { super.initState(); @@ -123,6 +129,7 @@ class _RequestSubmitScreenState extends State { params!.transactionId, comments.text, -999, + empID: selectedEmp ); } else if (params!.approvalFlag == 'eit') { await MyAttendanceApiClient().startEitApprovalProcess( @@ -157,6 +164,17 @@ class _RequestSubmitScreenState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + submitRequest(); + } + } if (params == null) { params = ModalRoute.of(context)!.settings.arguments as RequestSubmitScreenParams; getApproverList(); diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 08d2be7..e914c70 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -635,7 +635,9 @@ class _DynamicInputScreenState extends State { ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ if (model.rEADONLY != "Y") - for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem( + padding: EdgeInsets.all(10), + child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), ], onSelected: (int popipIndex) async { ESERVICESDV eservicesdv = ESERVICESDV( diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index 5c4053c..a670cbb 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -102,8 +102,8 @@ class _DynamicListViewScreenState extends State { itemBuilder: (cxt, int parentIndex) => getEITTransactionList![parentIndex].collectionTransaction!.isEmpty ? const SizedBox() : GridView( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.9 / 0.75), - padding: const EdgeInsets.all(12.0), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.0 / 0.75), + padding: const EdgeInsets.only(left: 12,right: 21,top: 12), shrinkWrap: true, primary: false, physics: const ScrollPhysics(), diff --git a/lib/ui/my_attendance/services_menu_list_screen.dart b/lib/ui/my_attendance/services_menu_list_screen.dart index cd76132..7a61029 100644 --- a/lib/ui/my_attendance/services_menu_list_screen.dart +++ b/lib/ui/my_attendance/services_menu_list_screen.dart @@ -54,7 +54,7 @@ class ServicesMenuListScreen extends StatelessWidget { } return; } else if (servicesMenuData.list[index].requestType == "ABSENCE") { - Navigator.pushNamed(context, AppRoutes.leaveBalance); + Navigator.pushNamed(context, AppRoutes.leaveBalance, arguments: servicesMenuData?.selectedEmp ??''); return; } if (servicesMenuData.list[index].requestType == "EIT") { diff --git a/lib/ui/my_team/create_request.dart b/lib/ui/my_team/create_request.dart index 53205c9..1637586 100644 --- a/lib/ui/my_team/create_request.dart +++ b/lib/ui/my_team/create_request.dart @@ -69,7 +69,7 @@ class _CreateRequestState extends State { if (menu.menuEntry.menuEntryType == "FUNCTION") { if (menu.menuEntry.requestType == "EIT") { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!)); + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); } else {} } else { Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(menu.menuEntry.prompt!, menu.menuEntiesList, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index e546acf..e640ff4 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -45,6 +45,8 @@ class _BalancesDashboardWidgetState extends State { late DateTime accrualDateTime; GetAccrualBalancesList? leaveBalanceAccrual; List? ticketBalanceAccrualList; + dynamic dynamicParams; + String selectedEmp =""; @override void initState() { @@ -60,7 +62,7 @@ class _BalancesDashboardWidgetState extends State { void changeAccrualDate() async { try { Utils.showLoading(context); - List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime)); + List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime),empID: selectedEmp); if (accrualList.isNotEmpty) { if (widget.isLeaveBalance) { leaveBalanceAccrual = accrualList[0]; @@ -86,6 +88,17 @@ class _BalancesDashboardWidgetState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + changeAccrualDate(); + } + } if (leaveBalanceAccrual == null && widget.isLeaveBalance) { leaveBalanceAccrual = Provider.of(context, listen: false).leaveBalanceAccrual; chartModelList = [ From 6463dfc4245cd305fd11e5aa51a4b339fa9ac6c8 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 6 Dec 2022 16:09:49 +0300 Subject: [PATCH 174/302] Reverting fatima changes --- lib/api/dashboard_api_client.dart | 5 +- lib/api/leave_balance_api_client.dart | 35 +++----------- .../add_leave_balance_screen.dart | 48 ++++++------------- .../leave_balance/leave_balance_screen.dart | 31 +++--------- lib/ui/misc/request_submit_screen.dart | 18 ------- .../dynamic_screens/dynamic_input_screen.dart | 4 +- .../dynamic_listview_screen.dart | 4 +- .../services_menu_list_screen.dart | 2 +- lib/ui/my_team/create_request.dart | 2 +- lib/widgets/balances_dashboard_widget.dart | 15 +----- 10 files changed, 36 insertions(+), 128 deletions(-) diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index 3eab65b..e30af91 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -65,13 +65,10 @@ class DashboardApiClient { }, url, postParams); } - Future> getAccrualBalances(String effectiveDate, {String? empID}) async { + Future> getAccrualBalances(String effectiveDate) async { String url = "${ApiConsts.erpRest}GET_ACCRUAL_BALANCES"; Map postParams = {"P_EFFECTIVE_DATE": effectiveDate}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.getAccrualBalancesList ?? []; diff --git a/lib/api/leave_balance_api_client.dart b/lib/api/leave_balance_api_client.dart index bb3f129..cd577ba 100644 --- a/lib/api/leave_balance_api_client.dart +++ b/lib/api/leave_balance_api_client.dart @@ -17,33 +17,27 @@ class LeaveBalanceApiClient { factory LeaveBalanceApiClient() => _instance; - Future> getAbsenceTransactions(int pSelectedResopID, {String? empID}) async { + Future> getAbsenceTransactions(int pSelectedResopID) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceTransactionList ?? []; }, url, postParams); } - Future> getAbsenceAttendanceTypes({String? empID}) async { + Future> getAbsenceAttendanceTypes() async { String url = "${ApiConsts.erpRest}GET_ABSENCE_ATTENDANCE_TYPES"; Map postParams = {}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceAttendanceTypesList ?? []; }, url, postParams); } - Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID, {String? empID}) async { + Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID) async { String url = "${ApiConsts.erpRest}CALCULATE_ABSENCE_DURATION"; Map postParams = { "P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID, @@ -55,22 +49,16 @@ class LeaveBalanceApiClient { "P_TIME_START": null, }; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.calculateAbsenceDuration!; }, url, postParams); } - Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID, {String? empID}) async { + Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_DFF_STRUCTURE"; Map postParams = {"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceDffStructureList ?? []; @@ -79,7 +67,7 @@ class LeaveBalanceApiClient { Future validateAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = "", String? empID}) async { + {String comments = ""}) async { String url = "${ApiConsts.erpRest}VALIDATE_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -98,9 +86,6 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; @@ -109,7 +94,7 @@ class LeaveBalanceApiClient { Future submitAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = "", String? empID}) async { + {String comments = ""}) async { String url = "${ApiConsts.erpRest}SUBMIT_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -128,9 +113,6 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.sumbitAbsenceTransactionList!; @@ -147,7 +129,7 @@ class LeaveBalanceApiClient { }, url, postParams); } - Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID, {String? empID}) async { + Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID) async { String url = "${ApiConsts.erpRest}START_ABSENCE_APPROVAL_PROCESS"; Map postParams = { "P_TRANSACTION_ID": pTransactionID, @@ -156,9 +138,6 @@ class LeaveBalanceApiClient { "P_MENU_TYPE": "E", }; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.startAbsenceApprovalProccess!; diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index c879f9c..d1b7d77 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -4,7 +4,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -25,8 +24,7 @@ import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; class AddLeaveBalanceScreen extends StatefulWidget { - final String selectedEmp; - AddLeaveBalanceScreen({this.selectedEmp ='',Key? key}) : super(key: key); + AddLeaveBalanceScreen({Key? key}) : super(key: key); @override _AddLeaveBalanceScreenState createState() { @@ -45,8 +43,6 @@ class _AddLeaveBalanceScreenState extends State { String comment = ""; ReplacementList? selectedReplacementEmployee; - dynamic dynamicParams; - String selectedEmp =""; DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); @override @@ -58,7 +54,7 @@ class _AddLeaveBalanceScreenState extends State { void getAbsenceAttendanceTypes() async { try { Utils.showLoading(context); - absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(empID: selectedEmp); + absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -71,7 +67,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); getabsenceDffStructureList.clear(); - getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999, empID: selectedEmp); + getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -84,7 +80,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); CalculateAbsenceDuration duration = await LeaveBalanceApiClient() - .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999, empID: selectedEmp); + .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999); totalDays = duration.pABSENCEDAYS?.toInt(); Utils.hideLoading(context); @@ -113,17 +109,16 @@ class _AddLeaveBalanceScreenState extends State { } } } - await LeaveBalanceApiClient() - .validateAbsenceTransaction( - selectedAbsenceType!.dESCFLEXCONTEXTCODE!, - "HR_LOA_SS", - selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, - selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", - DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), - DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), - -999, - dffDataMap, - comments: comment,empID: selectedEmp ); + await LeaveBalanceApiClient().validateAbsenceTransaction( + selectedAbsenceType!.dESCFLEXCONTEXTCODE!, + "HR_LOA_SS", + selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, + selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", + DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), + DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), + -999, + dffDataMap, + comments: comment); SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( selectedAbsenceType!.dESCFLEXCONTEXTCODE!, @@ -134,8 +129,7 @@ class _AddLeaveBalanceScreenState extends State { DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), -999, dffDataMap, - comments: comment, - empID: selectedEmp); + comments: comment); Utils.hideLoading(context); @@ -158,18 +152,6 @@ class _AddLeaveBalanceScreenState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; - if (dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; - getAbsenceAttendanceTypes(); - - } - } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 1218914..548ca99 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -1,7 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -9,14 +8,12 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/leave_balance/get_absence_transaction_list_model.dart'; -import 'package:mohem_flutter_app/ui/my_attendance/services_menu_list_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/balances_dashboard_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; class LeaveBalance extends StatefulWidget { - final String selectedEmp; - LeaveBalance({this.selectedEmp ='', Key? key}) : super(key: key); + LeaveBalance({Key? key}) : super(key: key); @override _LeaveBalanceState createState() { @@ -28,13 +25,12 @@ class _LeaveBalanceState extends State { List? absenceTransList; DateTime accrualDateTime = DateTime.now(); - dynamic dynamicParams; - String selectedEmp =""; + @override void initState() { super.initState(); - + getAbsenceTransactions(); } @override @@ -43,9 +39,9 @@ class _LeaveBalanceState extends State { } void getAbsenceTransactions() async { - try { + try { Utils.showLoading(context); - absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999, empID: selectedEmp); + absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -56,19 +52,6 @@ class _LeaveBalanceState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; - if (dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; - getAbsenceTransactions(); - // setState(() {}); - - } - } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( @@ -79,7 +62,7 @@ class _LeaveBalanceState extends State { physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ - BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true,), + BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true), 12.height, absenceTransList == null ? const SizedBox() @@ -128,7 +111,7 @@ class _LeaveBalanceState extends State { ), child: const Icon(Icons.add, color: Colors.white, size: 30), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: selectedEmp ??''); + Navigator.pushNamed(context, AppRoutes.addLeaveBalance); }), ); } diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index 84adf9f..f05bacb 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -8,7 +8,6 @@ import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/api/termination_dff_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -50,13 +49,8 @@ class _RequestSubmitScreenState extends State { List approverList = []; List attachmentFiles = []; - - dynamic dynamicParams; - String selectedEmp =""; - List attachments = []; - @override void initState() { super.initState(); @@ -129,7 +123,6 @@ class _RequestSubmitScreenState extends State { params!.transactionId, comments.text, -999, - empID: selectedEmp ); } else if (params!.approvalFlag == 'eit') { await MyAttendanceApiClient().startEitApprovalProcess( @@ -164,17 +157,6 @@ class _RequestSubmitScreenState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; - if (dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; - submitRequest(); - } - } if (params == null) { params = ModalRoute.of(context)!.settings.arguments as RequestSubmitScreenParams; getApproverList(); diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index e914c70..08d2be7 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -635,9 +635,7 @@ class _DynamicInputScreenState extends State { ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ if (model.rEADONLY != "Y") - for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem( - padding: EdgeInsets.all(10), - child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), ], onSelected: (int popipIndex) async { ESERVICESDV eservicesdv = ESERVICESDV( diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index a670cbb..5c4053c 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -102,8 +102,8 @@ class _DynamicListViewScreenState extends State { itemBuilder: (cxt, int parentIndex) => getEITTransactionList![parentIndex].collectionTransaction!.isEmpty ? const SizedBox() : GridView( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.0 / 0.75), - padding: const EdgeInsets.only(left: 12,right: 21,top: 12), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.9 / 0.75), + padding: const EdgeInsets.all(12.0), shrinkWrap: true, primary: false, physics: const ScrollPhysics(), diff --git a/lib/ui/my_attendance/services_menu_list_screen.dart b/lib/ui/my_attendance/services_menu_list_screen.dart index 7a61029..cd76132 100644 --- a/lib/ui/my_attendance/services_menu_list_screen.dart +++ b/lib/ui/my_attendance/services_menu_list_screen.dart @@ -54,7 +54,7 @@ class ServicesMenuListScreen extends StatelessWidget { } return; } else if (servicesMenuData.list[index].requestType == "ABSENCE") { - Navigator.pushNamed(context, AppRoutes.leaveBalance, arguments: servicesMenuData?.selectedEmp ??''); + Navigator.pushNamed(context, AppRoutes.leaveBalance); return; } if (servicesMenuData.list[index].requestType == "EIT") { diff --git a/lib/ui/my_team/create_request.dart b/lib/ui/my_team/create_request.dart index 1637586..53205c9 100644 --- a/lib/ui/my_team/create_request.dart +++ b/lib/ui/my_team/create_request.dart @@ -69,7 +69,7 @@ class _CreateRequestState extends State { if (menu.menuEntry.menuEntryType == "FUNCTION") { if (menu.menuEntry.requestType == "EIT") { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!)); } else {} } else { Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(menu.menuEntry.prompt!, menu.menuEntiesList, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index e640ff4..e546acf 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -45,8 +45,6 @@ class _BalancesDashboardWidgetState extends State { late DateTime accrualDateTime; GetAccrualBalancesList? leaveBalanceAccrual; List? ticketBalanceAccrualList; - dynamic dynamicParams; - String selectedEmp =""; @override void initState() { @@ -62,7 +60,7 @@ class _BalancesDashboardWidgetState extends State { void changeAccrualDate() async { try { Utils.showLoading(context); - List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime),empID: selectedEmp); + List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime)); if (accrualList.isNotEmpty) { if (widget.isLeaveBalance) { leaveBalanceAccrual = accrualList[0]; @@ -88,17 +86,6 @@ class _BalancesDashboardWidgetState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; - if (dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; - changeAccrualDate(); - } - } if (leaveBalanceAccrual == null && widget.isLeaveBalance) { leaveBalanceAccrual = Provider.of(context, listen: false).leaveBalanceAccrual; chartModelList = [ From 603ff1b19fbc0e08fd469f45c872f256320a650c Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 6 Dec 2022 16:18:31 +0300 Subject: [PATCH 175/302] Committing after API replacement from SignalR => InProgress --- assets/langs/ar-SA.json | 3 +- assets/langs/en-US.json | 3 +- lib/api/marathon/marathon_api_client.dart | 46 +++- lib/classes/consts.dart | 6 +- lib/generated/locale_keys.g.dart | 1 + lib/models/marathon/question_model.dart | 4 + lib/ui/landing/dashboard_screen.dart | 10 +- lib/ui/marathon/marathon_provider.dart | 215 +++++++++++------- lib/ui/marathon/marathon_screen.dart | 86 +++---- lib/ui/marathon/marathon_waiting_screen.dart | 4 +- lib/ui/marathon/widgets/marathon_banner.dart | 6 +- .../widgets/marathon_progress_container.dart | 6 +- 12 files changed, 238 insertions(+), 152 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 4e1d930..c4d6d65 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -508,5 +508,6 @@ "winner": "الفائز", "youWantToLeaveMarathon": "هل أنت متأكد أنك تريد العودة؟ سوف تخرج من المسابقة.", "ourSponsor": "راعينا:", - "startingIn": "يبدأ في" + "startingIn": "يبدأ في", + "youAreOutOfContest": "أنت خارج المسابقة." } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 1b0d468..48a1db5 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -508,6 +508,7 @@ "winner": "WINNER", "youWantToLeaveMarathon": "Are you sure you want to go back? You will be out of the contest.", "ourSponsor": "Our Sponsor:", - "startingIn": "Starting in" + "startingIn": "Starting in", + "youAreOutOfContest": "You are out of the contest." } \ No newline at end of file diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 1d9eb81..132ec30 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -65,9 +65,14 @@ class MarathonApiClient { Response response = await ApiClient().getJsonForResponse(ApiConsts.marathonUpcomingUrl + payrollString, token: AppState().getMarathonToken ?? await getMarathonToken()); var json = jsonDecode(response.body); + logger.i("json in getMarathonDetails: $json"); MarathonGenericModel marathonGenericModel = MarathonGenericModel.fromJson(json); + if (marathonGenericModel.data == null) { + return MarathonDetailModel(); + } + MarathonDetailModel marathonDetailModel = MarathonDetailModel.fromJson(marathonGenericModel.data); AppState().setMarathonProjectId = marathonDetailModel.id!; @@ -85,11 +90,17 @@ class MarathonApiClient { Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonJoinParticipantUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); var json = jsonDecode(response.body); + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); + if (marathonModel.statusCode == 208) { + // means participant is already in the marathon i.e already joined + return true; + } + if (marathonModel.statusCode == 200) { if (marathonModel.data != null && marathonModel.isSuccessful == true) { - logger.i("message: ${marathonModel.data}"); + logger.i("joinMarathonAsParticipant: ${marathonModel.data}"); return true; } else { return false; @@ -99,9 +110,8 @@ class MarathonApiClient { } } - Future getNextQuestion({required String? selectedOptionId, required String? questionId, required String marathonId}) async { + Future getNextQuestion({required String? questionId, required String marathonId}) async { Map jsonObject = { - "selectedOptionId": selectedOptionId, "questionId": questionId, "marathonId": marathonId, }; @@ -109,20 +119,34 @@ class MarathonApiClient { Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonNextQuestionUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); var json = jsonDecode(response.body); - MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - if (marathonModel.statusCode == 200) { - if (marathonModel.data != null && marathonModel.isSuccessful == true) { - logger.i("message: ${marathonModel.data}"); - return null; - } else { - return null; - } + var data = json["data"]; + + if (data != null) { + QuestionModel newQuestion = QuestionModel.fromJson(data); + return newQuestion; } else { return null; } } + Future submitSelectedOption({required String? selectedAnswerId}) async { + Map jsonObject = {"selectedOptionId": selectedAnswerId}; + + Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonSubmitAnswerUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); + + var json = jsonDecode(response.body); + logger.i("json: $json"); + + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); + + if (marathonModel.isSuccessful == null) { + return false; + } + + return marathonModel.isSuccessful!; + } + // Future buildHubConnection(BuildContext context, String prizeId) async { // HttpConnectionOptions httpOptions = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); // hubConnection = HubConnectionBuilder() diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index f53c02f..bb38ca2 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -28,15 +28,15 @@ class ApiConsts { static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; //Brain Marathon Constants - static String marathonBaseUrl = "https://18.188.181.12/service/api/"; - static String marathonHubConnectionUrl = "https://18.188.181.12/service/MarathonBroadCast"; + static String marathonBaseUrl = "https://marathoon.com/service/api/"; + // static String marathonHubConnectionUrl = "https://18.188.181.12/service/MarathonBroadCast"; static String marathonParticipantLoginUrl = marathonBaseUrl + "auth/participantlogin"; static String marathonProjectGetUrl = marathonBaseUrl + "Project/Project_Get"; static String marathonUpcomingUrl = marathonBaseUrl + "marathon/upcoming/"; static String marathonJoinParticipantUrl = marathonBaseUrl + "participant/participant_join"; static String marathonNextQuestionUrl = marathonBaseUrl + "question/next"; - static String marathonSubmitAnswerUrl = marathonBaseUrl + "question/submit"; + static String marathonSubmitAnswerUrl = marathonBaseUrl + "question/submitquestion"; static String marathonQualifiersUrl = marathonBaseUrl + "winner/getWinner/"; static String marathonSelectedWinner = marathonBaseUrl + "winner/getSelectedWinner/"; diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 2229b3b..1d28232 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -495,5 +495,6 @@ abstract class LocaleKeys { static const youWantToLeaveMarathon = 'youWantToLeaveMarathon'; static const ourSponsor = 'ourSponsor'; static const startingIn = 'startingIn'; + static const youAreOutOfContest = 'youAreOutOfContest'; } diff --git a/lib/models/marathon/question_model.dart b/lib/models/marathon/question_model.dart index 0bb42cd..4501947 100644 --- a/lib/models/marathon/question_model.dart +++ b/lib/models/marathon/question_model.dart @@ -14,6 +14,7 @@ class QuestionModel { String? gapText; String? gapImage; int? questOptionsLimit; + int? remainingParticipantCount; List? questionOptions; QuestionModel({ @@ -28,6 +29,7 @@ class QuestionModel { String? gapText, String? gapImage, int? questOptionsLimit, + int? remainingParticipantCount, List? questionOptions, }); @@ -43,6 +45,7 @@ class QuestionModel { gapText = json['gapText']; gapImage = json['gapImage']; questOptionsLimit = json['questOptionsLimit']; + remainingParticipantCount = json['remainingParticipantCount']; if (json['questionOptions'] != null) { questionOptions = []; json['questionOptions'].forEach((v) { @@ -64,6 +67,7 @@ class QuestionModel { data['gapText'] = gapText; data['gapImage'] = gapImage; data['questOptionsLimit'] = questOptionsLimit; + data['remainingParticipantCount'] = remainingParticipantCount; if (questionOptions != null) { data['questionOptions'] = questionOptions!.map((v) => v.toJson()).toList(); } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 48270d7..9bd5bbb 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -1,15 +1,12 @@ import 'dart:async'; -import 'dart:convert'; import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -18,7 +15,6 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; -import 'package:mohem_flutter_app/ui/landing/itg/its_add_screen_video_image.dart'; import 'package:mohem_flutter_app/ui/landing/widget/app_drawer.dart'; import 'package:mohem_flutter_app/ui/landing/widget/menus_widget.dart'; import 'package:mohem_flutter_app/ui/landing/widget/services_widget.dart'; @@ -321,9 +317,11 @@ class _DashboardScreenState extends State { ), ], ).paddingOnly(left: 21, right: 21, top: 7), - context.watch().isLoading ? MarathonBannerShimmer().paddingAll(20) : MarathonBanner().paddingAll(20), + context.watch().isLoading + ? const MarathonBannerShimmer().paddingAll(20) + : MarathonBanner(isMarathonUpcoming: context.watch().isUpComingMarathon).paddingAll(20), ServicesWidget(), - // 8.height, + 8.height, Container( width: double.infinity, padding: const EdgeInsets.only(top: 31), diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 46149a4..1cf8efd 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -13,7 +13,7 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:video_player/video_player.dart'; class MarathonProvider extends ChangeNotifier { - // VARIABLES + //****************VARIABLES********** final AppinioSwiperController swiperController = AppinioSwiperController(); @@ -24,9 +24,7 @@ class MarathonProvider extends ChangeNotifier { QuestionCardStatus questionCardStatus = QuestionCardStatus.question; int? selectedOptionIndex; - int currentQuestionTime = 0; - int totalSecondsToWaitForWinner = 30; - int totalSecondsToWaitForMarathon = 20; + String? selectedOptionId; int totalQualifiers = 0; bool _isLoading = false; @@ -38,6 +36,15 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } + bool _isUpComingMarathon = true; + + bool get isUpComingMarathon => _isUpComingMarathon; + + set isUpComingMarathon(bool value) { + _isUpComingMarathon = value; + notifyListeners(); + } + bool _itsMarathonTime = false; bool get itsMarathonTime => _itsMarathonTime; @@ -72,7 +79,7 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } - int _totalMarathoners = 23; + int _totalMarathoners = 0; int get totalMarathoners => _totalMarathoners; @@ -81,7 +88,7 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } - //VIDEO PLAYER + //****************SPONSOR VIDEO PLAYER********** late VideoPlayerController videoController; @@ -101,6 +108,8 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } + //****************TIMERS********** + int totalSponsorVideoSeconds = 0; Timer timerForSponsorVideo = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); @@ -122,8 +131,7 @@ class MarathonProvider extends ChangeNotifier { ); } - // FUNCTIONS - + int totalSecondsToWaitForMarathon = 20; Timer timerToWaitForMarathon = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); void startTimerToMarathon(BuildContext context) { @@ -140,42 +148,123 @@ class MarathonProvider extends ChangeNotifier { ); } - void populateQuestionStatusesList() { - if (marathonDetailModel.totalQuestions != null) { - for (int i = 0; i < marathonDetailModel.totalQuestions! - 1; i++) { - answerStatusesList.add(QuestionCardStatus.question); - } - notifyListeners(); - } + int totalCurrentQuestionTime = 0; + int currentGapTime = 0; + Timer timerForQuestion = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); + + void startTimerForQuestion() { + const Duration oneSec = Duration(seconds: 1); + timerForQuestion = Timer.periodic( + oneSec, + (Timer timer) async { + // This 2 is just to show the color of answer tile for 2 seconds and then update card status + if (totalCurrentQuestionTime - currentGapTime == currentQuestion.questionTime! - 2) { + getCorrectAnswerAndUpdateAnswerColor(); + } + + if (totalCurrentQuestionTime == currentGapTime) { + updateCardStatusToAnswer(); + + await callSubmitOptionApi().then((bool value) async { + if (value) { + await callNextQuestionApi(); + } + }); + } + + if (totalCurrentQuestionTime == 0) { + updateCardData(); + if (currentQuestionNumber == marathonDetailModel.totalQuestions! - 1) { + updateQuestionCardStatus(QuestionCardStatus.findingWinner); + timer.cancel(); + cancelTimer(); + notifyListeners(); + } + return; + } else { + totalCurrentQuestionTime--; + } + + notifyListeners(); + }, + ); } - void updateAnswerStatusesList(QuestionCardStatus status) { - answerStatusesList[currentQuestionNumber - 1] = status; - notifyListeners(); + int totalSecondsToWaitForWinner = 30; + Timer timerForWinnerSelection = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); + + void startTimerForWinnerSelection() { + const Duration oneSec = Duration(seconds: 1); + timerForWinnerSelection = Timer.periodic( + oneSec, + (Timer timer) async { + if (totalSecondsToWaitForWinner == 0) { + timer.cancel(); + updateQuestionCardStatus(QuestionCardStatus.winnerFound); + return; + } else { + totalSecondsToWaitForWinner--; + } + + notifyListeners(); + }, + ); + } + + //****************FUNCTIONS********* + + Future callSubmitOptionApi() async { + return await MarathonApiClient().submitSelectedOption(selectedAnswerId: selectedOptionId); } - void onNewQuestionReceived(QuestionModel newQuestion) { + // TODO: here I need to add a logic where I should call this function for Api but for the 1st question it should behave differently + // TODO: Verify the callings!!! + Future callNextQuestionApi() async { if (currentQuestionNumber < marathonDetailModel.totalQuestions!) { if (currentQuestionNumber == 0) { + currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: null, marathonId: marathonDetailModel.id!))!; if (Utils.isLoading) { Utils.hideLoading(AppRoutes.navigatorKey.currentContext!); } - startTimerForQuestion(AppRoutes.navigatorKey.currentContext!); + startTimerForQuestion(); + updateCardData(); + Navigator.pushReplacementNamed(AppRoutes.navigatorKey.currentContext!, AppRoutes.marathonScreen); + } else { + currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: currentQuestion.id, marathonId: marathonDetailModel.id!))!; } - if (currentQuestionNumber > 0) { - swipeCardLeft(); + notifyListeners(); + } + } + + void updateCardData() { + if (currentQuestionNumber > 0) { + print("swiped it away!!"); + swipeCardLeft(); + } + selectedOptionIndex = null; + currentQuestionNumber++; + cardContentList.add(const CardContent()); + totalCurrentQuestionTime = currentQuestion.questionTime! + currentQuestion.nextQuestGap!; + currentGapTime = currentQuestion.nextQuestGap!; + totalMarathoners = currentQuestion.remainingParticipantCount!; + questionCardStatus = QuestionCardStatus.question; + } + + void populateQuestionStatusesList() { + if (marathonDetailModel.totalQuestions != null) { + for (int i = 0; i < marathonDetailModel.totalQuestions! - 1; i++) { + answerStatusesList.add(QuestionCardStatus.question); } - selectedOptionIndex = null; - currentQuestionNumber++; - currentQuestion = newQuestion; - cardContentList.add(const CardContent()); - currentQuestionTime = newQuestion.questionTime!; - questionCardStatus = QuestionCardStatus.question; notifyListeners(); } } + void updateAnswerStatusesList(QuestionCardStatus status) { + answerStatusesList[currentQuestionNumber - 1] = status; + notifyListeners(); + } + void addItemToList(CardContent value) { cardContentList.add(value); notifyListeners(); @@ -227,57 +316,6 @@ class MarathonProvider extends ChangeNotifier { } } - Timer timerForQuestion = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); - - void startTimerForQuestion(BuildContext context) { - const Duration oneSec = Duration(seconds: 1); - timerForQuestion = Timer.periodic( - oneSec, - (Timer timer) async { - if (currentQuestionTime == 2) { - getCorrectAnswerAndUpdateAnswerColor(); - } - if (currentQuestionTime == 0) { - // we can enable this check if we do not want to show the user QuestionGapImages - // if (!isUserOutOfGame) { - updateCardStatusToAnswer(); - // } - //todo: we will need to remove this -2 when API is all set - if (currentQuestionNumber == marathonDetailModel.totalQuestions! - 1) { - updateQuestionCardStatus(QuestionCardStatus.findingWinner); - timer.cancel(); - cancelTimer(); - notifyListeners(); - return; - } - } else { - currentQuestionTime--; - } - notifyListeners(); - }, - ); - } - - Timer timerForWinnerSelection = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); - - void startTimerForWinnerSelection() { - const Duration oneSec = Duration(seconds: 1); - timerForWinnerSelection = Timer.periodic( - oneSec, - (Timer timer) async { - if (totalSecondsToWaitForWinner == 0) { - timer.cancel(); - updateQuestionCardStatus(QuestionCardStatus.winnerFound); - return; - } else { - totalSecondsToWaitForWinner--; - } - - notifyListeners(); - }, - ); - } - void swipeCardLeft() { swiperController.swipeLeft(); notifyListeners(); @@ -289,7 +327,7 @@ class MarathonProvider extends ChangeNotifier { timerForWinnerSelection.cancel(); timerForQuestion.cancel(); _isMarathonCompleted = false; - currentQuestionTime = 0; + totalCurrentQuestionTime = 0; currentQuestion = QuestionModel(); notifyListeners(); @@ -305,6 +343,11 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); await MarathonApiClient().getMarathonToken().whenComplete(() async { marathonDetailModel = await MarathonApiClient().getMarathonDetails(); + if (marathonDetailModel.id == null) { + isUpComingMarathon = false; + notifyListeners(); + return; + } populateQuestionStatusesList(); isLoading = false; notifyListeners(); @@ -334,7 +377,17 @@ class MarathonProvider extends ChangeNotifier { Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); }); } else { - Navigator.pushReplacementNamed(context, AppRoutes.marathonWaitingScreen); + try { + Utils.showLoading(context); + bool isJoined = await MarathonApiClient().joinMarathonAsParticipant(); + if (isJoined) { + print("joined"); + callNextQuestionApi(); + } + } catch (e, s) { + Utils.hideLoading(context); + Utils.confirmDialog(context, e.toString()); + } } } } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 1feee8e..e14f8c9 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -83,8 +83,8 @@ class MarathonScreen extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - LocaleKeys.sponsoredBy.tr().toText14(color: MyColors.grey77Color), - (AppState().isArabic(context) ? provider.marathonDetailModel.sponsors!.first.nameEn ?? "" : provider.marathonDetailModel.sponsors!.first.nameAr ?? "").toText14( + "${LocaleKeys.sponsoredBy.tr()} ".toText14(color: MyColors.grey77Color), + (AppState().isArabic(context) ? provider.marathonDetailModel.sponsors!.first.nameAr ?? "" : provider.marathonDetailModel.sponsors!.first.nameEn ?? "").toText14( color: MyColors.darkTextColor, isBold: true, ), @@ -103,7 +103,7 @@ class MarathonScreen extends StatelessWidget { ], ], ), - ).paddingOnly(left: 21, right: 21); + ); } Widget getNameContainer(BuildContext context) { @@ -129,14 +129,18 @@ class MarathonScreen extends StatelessWidget { @override Widget build(BuildContext context) { MarathonProvider provider = context.watch(); - return WillPopScope( child: Scaffold( - appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr(), onHomeTapped: () { - Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); - }, onBackTapped: () { - Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); - }), + appBar: AppBarWidget( + context, + title: LocaleKeys.brainMarathon.tr(), + onHomeTapped: () { + Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); + }, + onBackTapped: () { + Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); + }, + ), body: SingleChildScrollView( child: Column( children: [ @@ -151,40 +155,36 @@ class MarathonScreen extends StatelessWidget { if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ getNameContainer(context), ], - if (provider.questionCardStatus == QuestionCardStatus.winnerFound) ...[ - getWinnerWidget(context, provider: provider), - ] else ...[ - QuestionCardBuilder( - onQuestion: (BuildContext context) => QuestionCard(provider: provider), - onCompleted: (BuildContext context) => CustomStatusWidget( - asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), - title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), - subTitle: LocaleKeys.allQuestionsCorrect.toText18(color: MyColors.darkTextColor, isCentered: true), - ), - onCorrectAnswer: (BuildContext context) => CustomStatusWidget( - asset: getSuccessWidget(gapType: provider.currentQuestion.gapType, gapImage: provider.currentQuestion.gapImage, gapText: provider.currentQuestion.gapText), - title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), - subTitle: LocaleKeys.yourAnswerCorrect.toText18(color: MyColors.darkTextColor, isCentered: true), - ), - onWinner: (BuildContext context) => QuestionCard(provider: provider), - onWrongAnswer: (BuildContext context) => CustomStatusWidget( - asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), - title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), - subTitle: LocaleKeys.wrongAnswer.tr().toText18(color: MyColors.darkTextColor, isCentered: true), - ), - onSkippedAnswer: (BuildContext context) => CustomStatusWidget( - asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), - title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), - subTitle: LocaleKeys.youMissedTheQuestion.tr().toText18(color: MyColors.darkTextColor, isCentered: true), - ), - onFindingWinner: (BuildContext context) => CustomStatusWidget( - asset: Lottie.asset(MyLottieConsts.winnerLottie, height: 168), - title: LocaleKeys.fingersCrossed.tr().toText22(color: MyColors.greenColor), - subTitle: LocaleKeys.winnerSelectedRandomly.tr().toText18(color: MyColors.darkTextColor, isCentered: true), - ), - questionCardStatus: provider.questionCardStatus, - ).paddingOnly(top: 12, left: 21, right: 21), - ], + QuestionCardBuilder( + onQuestion: (BuildContext context) => QuestionCard(provider: provider), + onCompleted: (BuildContext context) => CustomStatusWidget( + asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), + title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.allQuestionsCorrect.toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onCorrectAnswer: (BuildContext context) => CustomStatusWidget( + asset: getSuccessWidget(gapType: provider.currentQuestion.gapType, gapImage: provider.currentQuestion.gapImage, gapText: provider.currentQuestion.gapText), + title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.yourAnswerCorrect.toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onWinner: (BuildContext context) => getWinnerWidget(context, provider: provider), + onWrongAnswer: (BuildContext context) => CustomStatusWidget( + asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), + title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), + subTitle: LocaleKeys.wrongAnswer.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onSkippedAnswer: (BuildContext context) => CustomStatusWidget( + asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), + title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), + subTitle: LocaleKeys.youMissedTheQuestion.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onFindingWinner: (BuildContext context) => CustomStatusWidget( + asset: Lottie.asset(MyLottieConsts.winnerLottie, height: 168), + title: LocaleKeys.fingersCrossed.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.winnerSelectedRandomly.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + questionCardStatus: provider.questionCardStatus, + ).paddingOnly(top: 12, left: 21, right: 21), ], ), ), diff --git a/lib/ui/marathon/marathon_waiting_screen.dart b/lib/ui/marathon/marathon_waiting_screen.dart index 9f52bf6..27f0c08 100644 --- a/lib/ui/marathon/marathon_waiting_screen.dart +++ b/lib/ui/marathon/marathon_waiting_screen.dart @@ -47,8 +47,8 @@ class MarathonWaitingScreen extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ LocaleKeys.startingIn.tr().toText16(), - "00:${provider.currentQuestionTime < 10 ? "0${provider.currentQuestionTime}" : provider.currentQuestionTime}" - .toText18(color: provider.currentQuestionTime < 5 ? MyColors.redColor : MyColors.black), + "00:${provider.totalSecondsToWaitForMarathon < 10 ? "0${provider.totalSecondsToWaitForMarathon}" : provider.totalSecondsToWaitForMarathon}" + .toText18(color: provider.totalSecondsToWaitForMarathon < 5 ? MyColors.redColor : MyColors.black), ], ), ), diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index e711319..d805362 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -16,7 +16,9 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; import 'package:provider/provider.dart'; class MarathonBanner extends StatelessWidget { - const MarathonBanner({Key? key}) : super(key: key); + final bool isMarathonUpcoming; + + const MarathonBanner({Key? key, required this.isMarathonUpcoming}) : super(key: key); @override Widget build(BuildContext context) { @@ -76,7 +78,7 @@ class MarathonBanner extends StatelessWidget { height: double.infinity, ), ), - Expanded( + Expanded( flex: AppState().isArabic(context) ? 4 : 5, child: SizedBox( width: double.infinity, diff --git a/lib/ui/marathon/widgets/marathon_progress_container.dart b/lib/ui/marathon/widgets/marathon_progress_container.dart index 4f76301..c0dae6c 100644 --- a/lib/ui/marathon/widgets/marathon_progress_container.dart +++ b/lib/ui/marathon/widgets/marathon_progress_container.dart @@ -32,8 +32,10 @@ class MarathonProgressContainer extends StatelessWidget { child: "${provider.currentQuestionNumber.toString()} / ${provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}".toText12(color: MyColors.white), ), "${provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), - "00:${provider.currentQuestionTime < 10 ? "0${provider.currentQuestionTime}" : provider.currentQuestionTime}" - .toText18(color: provider.currentQuestionTime < 5 ? MyColors.redColor : MyColors.black), + provider.questionCardStatus == QuestionCardStatus.question + ? "00:${(provider.totalCurrentQuestionTime - provider.currentGapTime) < 10 ? "0${provider.totalCurrentQuestionTime - provider.currentGapTime}" : provider.totalCurrentQuestionTime - provider.currentGapTime}" + .toText18(color: provider.totalCurrentQuestionTime - provider.currentGapTime < 5 ? MyColors.redColor : MyColors.black) + : const SizedBox(), ], ), 12.height, From 677a0ca275d49bdb945446a0af87e744f097fb42 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 6 Dec 2022 16:22:00 +0300 Subject: [PATCH 176/302] Committing after API replacement from SignalR => InProgress --- lib/classes/consts.dart | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 6f222a7..12d4b35 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,7 +3,7 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -23,7 +23,8 @@ class ApiConsts { static String chatSingleUserHistoryUrl = chatServerBaseApiUrl + "UserChatHistory/"; static String chatMediaImageUploadUrl = chatServerBaseApiUrl + "shared/"; static String chatFavUser = chatServerBaseApiUrl + "FavUser/"; - static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; + static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; + //Brain Marathon Constants static String marathonBaseUrl = "https://marathoon.com/service/"; @@ -31,20 +32,6 @@ class ApiConsts { static String marathonProjectGetUrl = marathonBaseUrl + "api/Project/Project_Get"; static String marathonUpcomingUrl = marathonBaseUrl + "api/marathon/upcoming/"; static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; - - //DummyCards for the UI - - static CardContent dummyQuestion = const CardContent(); - - static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; - - //Brain Marathon Constants - static String marathonBaseUrl = "https://marathoon.com/service/api/"; - // static String marathonHubConnectionUrl = "https://18.188.181.12/service/MarathonBroadCast"; - static String marathonParticipantLoginUrl = marathonBaseUrl + "auth/participantlogin"; - static String marathonProjectGetUrl = marathonBaseUrl + "Project/Project_Get"; - static String marathonUpcomingUrl = marathonBaseUrl + "marathon/upcoming/"; - static String marathonJoinParticipantUrl = marathonBaseUrl + "participant/participant_join"; static String marathonNextQuestionUrl = marathonBaseUrl + "question/next"; static String marathonSubmitAnswerUrl = marathonBaseUrl + "question/submitquestion"; From ead2dcb6310f75bcbe291457ec3b8feb99114b79 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 6 Dec 2022 16:24:01 +0300 Subject: [PATCH 177/302] Committing after API replacement from SignalR => InProgress --- lib/classes/consts.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 12d4b35..f6089c7 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -34,7 +34,7 @@ class ApiConsts { static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; static String marathonJoinParticipantUrl = marathonBaseUrl + "participant/participant_join"; static String marathonNextQuestionUrl = marathonBaseUrl + "question/next"; - static String marathonSubmitAnswerUrl = marathonBaseUrl + "question/submitquestion"; + static String marathonSubmitAnswerUrl = marathonBaseUrl + "question/submit"; static String marathonQualifiersUrl = marathonBaseUrl + "winner/getWinner/"; static String marathonSelectedWinner = marathonBaseUrl + "winner/getSelectedWinner/"; From 4e4e393f3d3c43220e973ab03f2b17877e912d77 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 6 Dec 2022 16:59:08 +0300 Subject: [PATCH 178/302] updated endpoints --- lib/classes/consts.dart | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index f6089c7..1230c8b 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,8 +2,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -27,11 +27,10 @@ class ApiConsts { //Brain Marathon Constants - static String marathonBaseUrl = "https://marathoon.com/service/"; - static String marathonParticipantLoginUrl = marathonBaseUrl + "api/auth/participantlogin"; - static String marathonProjectGetUrl = marathonBaseUrl + "api/Project/Project_Get"; - static String marathonUpcomingUrl = marathonBaseUrl + "api/marathon/upcoming/"; - static String marathonHubConnectionUrl = marathonBaseUrl + "MarathonBroadCast"; + static String marathonBaseUrl = "https://marathoon.com/service/api/"; + static String marathonParticipantLoginUrl = marathonBaseUrl + "auth/participantlogin"; + static String marathonProjectGetUrl = marathonBaseUrl + "Project/Project_Get"; + static String marathonUpcomingUrl = marathonBaseUrl + "marathon/upcoming/"; static String marathonJoinParticipantUrl = marathonBaseUrl + "participant/participant_join"; static String marathonNextQuestionUrl = marathonBaseUrl + "question/next"; static String marathonSubmitAnswerUrl = marathonBaseUrl + "question/submit"; From 7f043e60481dc084abfab3545f0266e1e3fadb8e Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 7 Dec 2022 08:28:40 +0300 Subject: [PATCH 179/302] Chat Tune Added --- assets/audio/pulse_tone_android.mp3 | Bin 0 -> 35442 bytes assets/audio/pulse_tune_ios.caf | Bin 0 -> 124746 bytes lib/provider/chat_provider_model.dart | 37 +++++++++++++++++++++++--- 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 assets/audio/pulse_tone_android.mp3 create mode 100644 assets/audio/pulse_tune_ios.caf diff --git a/assets/audio/pulse_tone_android.mp3 b/assets/audio/pulse_tone_android.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a4e2bdea33cdd63dfa6f35f661b589e21507c827 GIT binary patch literal 35442 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 literal 0 HcmV?d00001 diff --git a/assets/audio/pulse_tune_ios.caf b/assets/audio/pulse_tune_ios.caf new file mode 100644 index 0000000000000000000000000000000000000000..c613dd12a92c6c737421f56d3cbbf87582f21aeb GIT binary patch literal 124746 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 literal 0 HcmV?d00001 diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 0b522db..0f20372 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -5,6 +5,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; +import 'package:just_audio/just_audio.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; @@ -53,6 +54,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future buildHubConnection() async { chatHubConnection = await getHubConnection(); await chatHubConnection.start(); + print("Startedddddddd"); + chatHubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); } Future getHubConnection() async { @@ -74,7 +77,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void registerEvents() { chatHubConnection.on("OnUpdateUserStatusAsync", changeStatus); - chatHubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); + // chatHubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); // hubConnection.on("OnSeenChatUserAsync", onChatSeen); //hubConnection.on("OnUserTypingAsync", onUserTyping); chatHubConnection.on("OnUserCountAsync", userCountAsync); @@ -134,6 +137,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (isNewChat) userChatHistory = []; if (!loadMore) paginationVal = 0; isChatScreenActive = true; + // if (chatHubConnection.state != HubConnectionState.Connected) { + // getUserAutoLoginToken().whenComplete(() async { + // await buildHubConnection(); + // getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore); + // }); + // return; + // } Response response = await ChatApiClient().getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); if (response.statusCode == 204) { if (isNewChat) { @@ -335,13 +345,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } - + setMsgTune(); userChatHistory.insert(0, data.first); if (searchedChats != null && !isChatScreenActive) { for (ChatUser user in searchedChats!) { if (user.id == data.first.currentUserId) { - var tempCount = user.unreadMessageCount ?? 0; + int tempCount = user.unreadMessageCount ?? 0; user.unreadMessageCount = tempCount + 1; } } @@ -351,6 +361,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { {"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive ? true : false} ]; updateUserChatHistoryOnMsg(list); + notifyListeners(); } @@ -731,6 +742,26 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } + void setMsgTune() async { + AudioPlayer player = AudioPlayer(); + await player.setVolume(1.0); + String audioAsset = ""; + if (Platform.isAndroid) { + audioAsset = "assets/audio/pulse_tone_android.mp3"; + } else { + audioAsset = "assets/audio/pulse_tune_ios.caf"; + } + try { + await player.setAsset(audioAsset); + await player.load(); + player.play(); + } catch (e) { + print("Error: $e"); + } + } + + Future playSuccessSound() async {} + ///getUserAutoLoginToken().whenComplete(() { // buildHubConnection(); // print("After Reconnect State: " + hubConnection.state.toString()); From fe6e63dadb3e1c6c8b08e35a936533554664e2ca Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 7 Dec 2022 08:29:30 +0300 Subject: [PATCH 180/302] Chat Tune Added --- lib/provider/chat_provider_model.dart | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 0f20372..51244c3 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -759,11 +759,5 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { print("Error: $e"); } } - - Future playSuccessSound() async {} - - ///getUserAutoLoginToken().whenComplete(() { -// buildHubConnection(); -// print("After Reconnect State: " + hubConnection.state.toString()); -// }); + } From 6a7a24349fa96f0970e9f89d5581886dc65e9e87 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 7 Dec 2022 09:40:30 +0300 Subject: [PATCH 181/302] Chat Tune Added --- lib/classes/consts.dart | 4 +-- lib/provider/chat_provider_model.dart | 52 +++++++++++++-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 1230c8b..7509e7f 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,8 +2,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 51244c3..af565f7 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -462,30 +462,31 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { var msg = message.text; SingleUserChatModel data = SingleUserChatModel( - chatEventId: chatEventId, - chatSource: 1, - contant: msg, - contantNo: contentNo, - conversationId: chatCID, - createdDate: DateTime.now(), - currentUserId: AppState().chatDetails!.response!.id, - currentUserName: AppState().chatDetails!.response!.userName, - targetUserId: targetUserId, - targetUserName: targetUserName, - isReplied: false, - fileTypeId: fileTypeId, - userChatReplyResponse: isReply ? UserChatReplyResponse.fromJson(repliedMsg.first.toJson()) : null, - fileTypeResponse: isAttachment - ? FileTypeResponse( - fileTypeId: fileTypeId, - fileTypeName: getFileType(getFileExtension(selectedFile.path).toString()), - fileKind: getFileExtension(selectedFile.path), - fileName: selectedFile.path.split("/").last, - fileTypeDescription: getFileTypeDescription(getFileExtension(selectedFile.path).toString()), - ) - : null, - image: image, - isImageLoaded: isImageLoaded); + chatEventId: chatEventId, + chatSource: 1, + contant: msg, + contantNo: contentNo, + conversationId: chatCID, + createdDate: DateTime.now(), + currentUserId: AppState().chatDetails!.response!.id, + currentUserName: AppState().chatDetails!.response!.userName, + targetUserId: targetUserId, + targetUserName: targetUserName, + isReplied: false, + fileTypeId: fileTypeId, + userChatReplyResponse: isReply ? UserChatReplyResponse.fromJson(repliedMsg.first.toJson()) : null, + fileTypeResponse: isAttachment + ? FileTypeResponse( + fileTypeId: fileTypeId, + fileTypeName: getFileType(getFileExtension(selectedFile.path).toString()), + fileKind: getFileExtension(selectedFile.path), + fileName: selectedFile.path.split("/").last, + fileTypeDescription: getFileTypeDescription(getFileExtension(selectedFile.path).toString()), + ) + : null, + image: image, + isImageLoaded: isImageLoaded, + ); userChatHistory.insert(0, data); isFileSelected = false; isMsgReply = false; @@ -502,7 +503,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { searchedChats!.add( - ChatUser(id: targetUserId, userName: targetUserName, unreadMessageCount: 0), + ChatUser(id: targetUserId, userName: targetUserName, unreadMessageCount: 0, isImageLoading: false, image: null, isImageLoaded: false), ); notifyListeners(); } @@ -759,5 +760,4 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { print("Error: $e"); } } - } From 6efc07fcab7b0aaab426b4d8325043b300fd4ff1 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 7 Dec 2022 09:49:40 +0300 Subject: [PATCH 182/302] Jira fixes --- lib/classes/consts.dart | 4 ++-- lib/classes/utils.dart | 5 +++++ .../fragments/add_details_fragment.dart | 1 + .../screens/items_for_sale/items_for_sale_home.dart | 3 +++ .../dynamic_forms/dynamic_textfield_widget.dart | 12 ++++++++++-- lib/widgets/item_detail_view_widget.dart | 4 ++-- 6 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 1230c8b..119e418 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,8 +2,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 33d9830..3b30d05 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -86,6 +86,11 @@ class Utils { return prefs.getString(key) ?? ""; } + static Future removeStringFromPrefs(String key) async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + return prefs.remove(key); + } + static Future saveStringFromPrefs(String key, String value) async { SharedPreferences prefs = await SharedPreferences.getInstance(); return await prefs.setString(key, value); diff --git a/lib/ui/screens/items_for_sale/fragments/add_details_fragment.dart b/lib/ui/screens/items_for_sale/fragments/add_details_fragment.dart index f0f2c62..9b82d9d 100644 --- a/lib/ui/screens/items_for_sale/fragments/add_details_fragment.dart +++ b/lib/ui/screens/items_for_sale/fragments/add_details_fragment.dart @@ -127,6 +127,7 @@ class _AddItemDetailsFragmentState extends State { isPopup: false, lines: 1, isInputTypeNum: true, + isInputTypeNumSigned: false, isReadOnly: false, onChange: (String value) { itemPrice = num.parse(value); diff --git a/lib/ui/screens/items_for_sale/items_for_sale_home.dart b/lib/ui/screens/items_for_sale/items_for_sale_home.dart index 437b400..443c8ba 100644 --- a/lib/ui/screens/items_for_sale/items_for_sale_home.dart +++ b/lib/ui/screens/items_for_sale/items_for_sale_home.dart @@ -1,6 +1,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; @@ -74,6 +76,7 @@ class _ItemsForSaleState extends State { child: const Icon(Icons.add, color: Colors.white, size: 30), ).onPress( () { + Utils.removeStringFromPrefs(SharedPrefsConsts.editItemForSale); Navigator.pushNamed(context, AppRoutes.addNewItemForSale); }, ), diff --git a/lib/widgets/dynamic_forms/dynamic_textfield_widget.dart b/lib/widgets/dynamic_forms/dynamic_textfield_widget.dart index 91e0ce1..299ef7a 100644 --- a/lib/widgets/dynamic_forms/dynamic_textfield_widget.dart +++ b/lib/widgets/dynamic_forms/dynamic_textfield_widget.dart @@ -4,6 +4,7 @@ import 'package:mohem_flutter_app/classes/colors.dart'; class DynamicTextFieldWidget extends StatelessWidget { final String labelText; final String hintText; + // final TextEditingController controller; final VoidCallback? onTap; final IconData? suffixIconData; @@ -13,6 +14,7 @@ class DynamicTextFieldWidget extends StatelessWidget { final bool isPopup; final int? lines; final bool isInputTypeNum; + final bool isInputTypeNumSigned; final bool isObscureText; final bool isBackgroundEnable; final void Function(String)? onChange; @@ -28,6 +30,7 @@ class DynamicTextFieldWidget extends StatelessWidget { this.inputAction, this.onChange, this.isInputTypeNum = false, + this.isInputTypeNumSigned = true, this.isBackgroundEnable = false}); @override @@ -63,8 +66,13 @@ class DynamicTextFieldWidget extends StatelessWidget { ), TextField( enabled: isEnable, - scrollPadding: EdgeInsets.zero, readOnly: isReadOnly, - keyboardType: isInputTypeNum ? const TextInputType.numberWithOptions(signed: true) : TextInputType.text, + scrollPadding: EdgeInsets.zero, + readOnly: isReadOnly, + keyboardType: (isInputTypeNum) + ? isInputTypeNumSigned + ? const TextInputType.numberWithOptions(signed: true) + : TextInputType.number + : TextInputType.text, textInputAction: TextInputAction.done, //controller: controller, maxLines: lines, diff --git a/lib/widgets/item_detail_view_widget.dart b/lib/widgets/item_detail_view_widget.dart index 5148389..ccdedea 100644 --- a/lib/widgets/item_detail_view_widget.dart +++ b/lib/widgets/item_detail_view_widget.dart @@ -37,9 +37,9 @@ class ItemDetailViewCol extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "$title:".toText12(isBold: true, color: const Color(0xff2BB8A6)), + "$title:".toText12(isBold: true, color: const Color(0xff2BB8A6), maxLine: 2), 4.width, - (value.isEmpty ? "--" : value).toText12(color: MyColors.normalTextColor), + (value.isEmpty ? "--" : value).toText12(color: MyColors.normalTextColor, maxLine: 2), ], ); } From 70ffb8afd801fdce3142dd36857d06cc6a5113b6 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 7 Dec 2022 10:40:31 +0300 Subject: [PATCH 183/302] Fixes --- lib/provider/chat_provider_model.dart | 2 +- lib/ui/chat/chat_home.dart | 1 + lib/ui/chat/chat_home_screen.dart | 10 ++++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index af565f7..e6985b8 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -503,7 +503,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { searchedChats!.add( - ChatUser(id: targetUserId, userName: targetUserName, unreadMessageCount: 0, isImageLoading: false, image: null, isImageLoaded: false), + ChatUser(id: targetUserId, userName: targetUserName, unreadMessageCount: 0, isImageLoading: false, image: "", isImageLoaded: true), ); notifyListeners(); } diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 4e218e3..0a8cb42 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -85,6 +85,7 @@ class _ChatHomeState extends State { onPageChanged: (int pageIndex) { setState(() { tabIndex = pageIndex; + }); }, children: [ diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 641c13d..73868c7 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -50,7 +50,9 @@ class _ChatHomeScreenState extends State { body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { return m.isLoading - ? ChatHomeShimmer(isDetailedScreen: false,) + ? ChatHomeShimmer( + isDetailedScreen: false, + ) : Column( children: [ TextField( @@ -86,7 +88,7 @@ class _ChatHomeScreenState extends State { itemCount: m.searchedChats!.length, shrinkWrap: true, physics: const ClampingScrollPhysics(), - padding: const EdgeInsets.only(bottom: 80.0), + padding: const EdgeInsets.only(bottom: 80.0), itemBuilder: (BuildContext context, int index) { return SizedBox( height: 55, @@ -99,7 +101,7 @@ class _ChatHomeScreenState extends State { height: 48, width: 48, ).toShimmer().circle(30), - if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image != null && m.searchedChats![index].image.isNotEmpty) + if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isNotEmpty) CircularAvatar( radius: 20, height: 48, @@ -197,7 +199,7 @@ class _ChatHomeScreenState extends State { }); }, separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), - ).expanded, + ), ], ).paddingOnly(left: 21, right: 21); }, From c51af6522cc2707f05f3a799005a197a756ebf6c Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Wed, 7 Dec 2022 10:55:42 +0300 Subject: [PATCH 184/302] fix issues --- assets/langs/ar-SA.json | 3 +++ assets/langs/en-US.json | 3 +++ lib/classes/consts.dart | 4 ++-- lib/generated/codegen_loader.g.dart | 16 ++++++++++++-- lib/generated/locale_keys.g.dart | 3 +++ .../add_leave_balance_screen.dart | 10 ++++----- lib/ui/misc/request_submit_screen.dart | 22 +++++++++---------- lib/ui/profile/contact_details.dart | 12 +++++----- 8 files changed, 47 insertions(+), 26 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 59c0814..65f81ea 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -424,6 +424,9 @@ "typeCurrentPasswordBelow": "اكتب كلمة المرور الحاليه", "currentPassword": "كلمة المرور الحاليه", "concurrentReports": "التقارير المتزامنه", + "EnterNewAddressMoved" : "أدخل عنوان جديد إذا كنت قد انتقلت", + "CorrectAddress": "تصحيح أو تعديل هذا العنوان", + "SelectChangeWantToMake": " حدد نوع التغيير الذي تريد القيام به.", "profile": { "reset_password": { "label": "Reset Password", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index b0ab50e..647a956 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -424,6 +424,9 @@ "typeCurrentPasswordBelow": "Type Your Current password below", "currentPassword": "Current password", "concurrentReports": "Concurrent Reports", + "EnterNewAddressMoved" : "Enter a new address if you have moved", + "CorrectAddress": "Correct or amend this address", + "SelectChangeWantToMake": "Select the type of change you want to make", "profile": { "reset_password": { "label": "Reset Password", diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 944a29b..45bfcf9 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,8 +2,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index a54ff37..95f1d94 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -440,6 +440,9 @@ class CodegenLoader extends AssetLoader{ "typeCurrentPasswordBelow": "اكتب كلمة المرور الحاليه", "currentPassword": "كلمة المرور الحاليه", "concurrentReports": "التقارير المتزامنه", + "EnterNewAddressMoved": "أدخل عنوان جديد إذا كنت قد انتقلت", + "CorrectAddress": "تصحيح أو تعديل هذا العنوان", + "SelectChangeWantToMake": " حدد نوع التغيير الذي تريد القيام به.", "profile": { "reset_password": { "label": "Reset Password", @@ -516,7 +519,10 @@ class CodegenLoader extends AssetLoader{ "codeExpire": "انتهت صلاحية رمز التحقق", "typeheretoreply": "اكتب هنا للرد", "favorite": "مفضلتي", - "searchfromchat": "البحث من الدردشة" + "searchfromchat": "البحث من الدردشة", + "yourAnswerCorrect": "إجابتك صحيحة", + "youMissedTheQuestion": "فاتك !! أنت خارج اللعبة. لكن يمكنك المتابعة.", + "wrongAnswer": "إجابة خاطئة! أنت خارج اللعبة. لكن يمكنك المتابعة." }; static const Map en_US = { "mohemm": "Mohemm", @@ -944,6 +950,9 @@ static const Map en_US = { "typeCurrentPasswordBelow": "Type Your Current password below", "currentPassword": "Current password", "concurrentReports": "Concurrent Reports", + "EnterNewAddressMoved": "Enter a new address if you have moved", + "CorrectAddress": "Correct or amend this address", + "SelectChangeWantToMake": "Select the type of change you want to make", "profile": { "reset_password": { "label": "Reset Password", @@ -1020,7 +1029,10 @@ static const Map en_US = { "allQuestionsCorrect": "You have answered all questions correct", "typeheretoreply": "Type here to reply", "favorite": "My Favorites", - "searchfromchat": "Search from chat" + "searchfromchat": "Search from chat", + "yourAnswerCorrect": "Your answer is correct", + "youMissedTheQuestion": "You Missed !! You are out of the game. But you can follow up.", + "wrongAnswer": "Wrong Answer! You are out of the game. But you can follow up." }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 2f7efcc..9b9d1c3 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -425,6 +425,9 @@ abstract class LocaleKeys { static const typeCurrentPasswordBelow = 'typeCurrentPasswordBelow'; static const currentPassword = 'currentPassword'; static const concurrentReports = 'concurrentReports'; + static const EnterNewAddressMoved = 'EnterNewAddressMoved'; + static const CorrectAddress = 'CorrectAddress'; + static const SelectChangeWantToMake = 'SelectChangeWantToMake'; static const profile_reset_password_label = 'profile.reset_password.label'; static const profile_reset_password_username = 'profile.reset_password.username'; static const profile_reset_password_password = 'profile.reset_password.password'; diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index c879f9c..4b4d73f 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -96,7 +96,7 @@ class _AddLeaveBalanceScreenState extends State { } void validateAbsenceTransaction() async { - try { + // try { Utils.showLoading(context); Map dffDataMap = {}; for (int i = 1; i <= 20; i++) { @@ -145,10 +145,10 @@ class _AddLeaveBalanceScreenState extends State { } await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); Utils.hideLoading(context); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } } @override diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index 84adf9f..51a2440 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -164,17 +164,17 @@ class _RequestSubmitScreenState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; - if (dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; - submitRequest(); - } - } + // if (dynamicParams == null) { + // dynamicParams = ModalRoute + // .of(context)! + // .settings + // .arguments; + // if (dynamicParams.isNotEmpty) { + // AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + // selectedEmp =dynamicParams; + // submitRequest(); + // } + // } if (params == null) { params = ModalRoute.of(context)!.settings.arguments as RequestSubmitScreenParams; getApproverList(); diff --git a/lib/ui/profile/contact_details.dart b/lib/ui/profile/contact_details.dart index 95c867a..8bfe7f6 100644 --- a/lib/ui/profile/contact_details.dart +++ b/lib/ui/profile/contact_details.dart @@ -155,13 +155,13 @@ class _ContactDetailsState extends State { void addUpdateAddress() { Widget cancelButton = TextButton( - child: Text("Cancel"), + child: Text(LocaleKeys.cancel.tr()), onPressed: () { Navigator.pop(context); }, ); Widget continueButton = TextButton( - child: Text("Next"), + child: Text(LocaleKeys.next.tr()), onPressed: () { continueDynamicForms(); }, @@ -169,7 +169,7 @@ class _ContactDetailsState extends State { StatefulBuilder alert = StatefulBuilder(builder: (context, setState) { return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10.0))), - title: Text("Confirm"), + title: Text(LocaleKeys.confirm.tr()), content: Builder(builder: (context) { // Get available height and width of the build area of this widget. Make a choice depending on the size. var height = MediaQuery.of(context).size.height * .5; @@ -177,14 +177,14 @@ class _ContactDetailsState extends State { height: height, child: Column(children: [ Text( - "Select the type of change you want to make.", + LocaleKeys.SelectChangeWantToMake.tr(), style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), Divider(), Column( children: [ ListTile( - title: Text("Correct or amend this address"), + title: Text(LocaleKeys.CorrectAddress.tr()), leading: Radio( value: 1, groupValue: correctOrNew, @@ -197,7 +197,7 @@ class _ContactDetailsState extends State { ), ), ListTile( - title: Text("Enter a new address if you have moved"), + title: Text(LocaleKeys.EnterNewAddressMoved.tr()), leading: Radio( value: 2, groupValue: correctOrNew, From 0f7afa911a625d46ef565bf0f81c4723a2bc377c Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 7 Dec 2022 11:30:18 +0300 Subject: [PATCH 185/302] Fixes --- lib/provider/chat_provider_model.dart | 13 +- lib/ui/chat/chat_home.dart | 2 +- lib/ui/chat/chat_home_screen.dart | 247 ++++++++++++++------------ 3 files changed, 149 insertions(+), 113 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index e6985b8..0401400 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -124,7 +124,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ), ); notifyListeners(); - getUserImages(); + if (searchedChats!.isNotEmpty) { + getUserImages(); + } } Future invokeUserChatHistoryNotDeliveredAsync({required int userId}) async { @@ -345,6 +347,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } + dynamic contain = searchedChats!.where((ChatUser element) => element.id == data.first.currentUserId); + if (contain.isEmpty) { + print("Contain Was Emptyyyy"); + searchedChats!.add( + ChatUser(id: data.first.currentUserId, userName: data.first.currentUserName, unreadMessageCount: 0, isImageLoading: false, image: "", isImageLoaded: true), + ); + notifyListeners(); + } setMsgTune(); userChatHistory.insert(0, data.first); @@ -740,6 +750,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } + notifyListeners(); } diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 0a8cb42..76aa027 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -85,7 +85,7 @@ class _ChatHomeState extends State { onPageChanged: (int pageIndex) { setState(() { tabIndex = pageIndex; - + }); }, children: [ diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 73868c7..610b501 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -19,6 +19,7 @@ import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_s import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; +import 'package:pull_to_refresh/pull_to_refresh.dart'; class ChatHomeScreen extends StatefulWidget { const ChatHomeScreen({Key? key}) : super(key: key); @@ -31,6 +32,16 @@ class _ChatHomeScreenState extends State { TextEditingController search = TextEditingController(); late ChatProviderModel data; + final RefreshController _rc = RefreshController(initialRefresh: false); + + void getMoreChat() async { + data.getUserRecentChats(); + await Future.delayed( + const Duration(milliseconds: 1000), + ); + _rc.loadComplete(); + } + @override void initState() { super.initState(); @@ -84,122 +95,136 @@ class _ChatHomeScreenState extends State { ), ).paddingOnly(top: 20, bottom: 14), if (m.searchedChats != null) - ListView.separated( - itemCount: m.searchedChats!.length, - shrinkWrap: true, - physics: const ClampingScrollPhysics(), - padding: const EdgeInsets.only(bottom: 80.0), - itemBuilder: (BuildContext context, int index) { - return SizedBox( - height: 55, - child: Row( - children: [ - Stack( - children: [ - if (m.searchedChats![index].isImageLoading!) - const SizedBox( - height: 48, - width: 48, - ).toShimmer().circle(30), - if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isNotEmpty) - CircularAvatar( - radius: 20, - height: 48, - width: 48, - url: m.searchedChats![index].image, - isImageBase64: true, - ), - if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isEmpty) - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - ), - ).circle(10), - ) - ], - ), - Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), - ], - ).expanded, - SizedBox( - width: 60, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.max, + SmartRefresher( + enablePullDown: true, + enablePullUp: false, + onRefresh: (){ + getMoreChat(); + }, + header: const MaterialClassicHeader( + color: MyColors.gradiantEndColor, + ), + controller: _rc, + reverse: false, + child: ListView.separated( + itemCount: m.searchedChats!.length, + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + padding: const EdgeInsets.only(bottom: 80.0), + itemBuilder: (BuildContext context, int index) { + return SizedBox( + height: 55, + child: Row( + children: [ + Stack( children: [ - if (m.searchedChats![index].unreadMessageCount! > 0) - Container( - alignment: Alignment.center, - width: 18, - height: 18, - decoration: const BoxDecoration( - color: MyColors.redColor, - borderRadius: BorderRadius.all( - Radius.circular(20), - ), + if (m.searchedChats![index].isImageLoading!) + const SizedBox( + height: 48, + width: 48, + ).toShimmer().circle(30), + if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isNotEmpty) + CircularAvatar( + radius: 20, + height: 48, + width: 48, + url: m.searchedChats![index].image, + isImageBase64: true, + ), + if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isEmpty) + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, ), - child: (m.searchedChats![index].unreadMessageCount!.toString()) - .toText10( - color: MyColors.white, - ) - .center, - ).paddingOnly(right: 10).center, - Icon( - m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, - color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, - ).onPress( - () { - if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { - m.favoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.searchedChats![index].id!, - ); - } else if (m.searchedChats![index].isFav == true) { - m.unFavoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.searchedChats![index].id!, - ); - } else { - m.favoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.searchedChats![index].id!, - ); - } - }, - ).center + ).circle(10), + ) + ], + ).onPress(() { + print(jsonEncode(m.searchedChats![index])); + }), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), ], + ).expanded, + SizedBox( + width: 60, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + if (m.searchedChats![index].unreadMessageCount! > 0) + Container( + alignment: Alignment.center, + width: 18, + height: 18, + decoration: const BoxDecoration( + color: MyColors.redColor, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: (m.searchedChats![index].unreadMessageCount!.toString()) + .toText10( + color: MyColors.white, + ) + .center, + ).paddingOnly(right: 10).center, + Icon( + m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, + color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, + ).onPress( + () { + if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { + m.favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); + } else if (m.searchedChats![index].isFav == true) { + m.unFavoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); + } else { + m.favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); + } + }, + ).center + ], + ), ), - ), - ], - ), - ).onPress(() { - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, - ).then((Object? value) { - m.clearSelections(); - m.notifyListeners(); + ], + ), + ).onPress(() { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, + ).then((Object? value) { + m.clearSelections(); + m.notifyListeners(); + }); }); - }); - }, - separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), - ), + }, + separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), + ), + ).expanded, ], ).paddingOnly(left: 21, right: 21); }, From 616e35f2d396ae2ced2fb0f2d65ba87dbefe213f Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 7 Dec 2022 11:30:48 +0300 Subject: [PATCH 186/302] Fixes --- lib/ui/chat/chat_home_screen.dart | 243 ++++++++++++++---------------- 1 file changed, 112 insertions(+), 131 deletions(-) diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 610b501..9d905eb 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -34,13 +34,6 @@ class _ChatHomeScreenState extends State { final RefreshController _rc = RefreshController(initialRefresh: false); - void getMoreChat() async { - data.getUserRecentChats(); - await Future.delayed( - const Duration(milliseconds: 1000), - ); - _rc.loadComplete(); - } @override void initState() { @@ -95,135 +88,123 @@ class _ChatHomeScreenState extends State { ), ).paddingOnly(top: 20, bottom: 14), if (m.searchedChats != null) - SmartRefresher( - enablePullDown: true, - enablePullUp: false, - onRefresh: (){ - getMoreChat(); - }, - header: const MaterialClassicHeader( - color: MyColors.gradiantEndColor, - ), - controller: _rc, - reverse: false, - child: ListView.separated( - itemCount: m.searchedChats!.length, - shrinkWrap: true, - physics: const ClampingScrollPhysics(), - padding: const EdgeInsets.only(bottom: 80.0), - itemBuilder: (BuildContext context, int index) { - return SizedBox( - height: 55, - child: Row( - children: [ - Stack( - children: [ - if (m.searchedChats![index].isImageLoading!) - const SizedBox( - height: 48, - width: 48, - ).toShimmer().circle(30), - if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isNotEmpty) - CircularAvatar( - radius: 20, - height: 48, - width: 48, - url: m.searchedChats![index].image, - isImageBase64: true, - ), - if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isEmpty) - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, + ListView.separated( + itemCount: m.searchedChats!.length, + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + padding: const EdgeInsets.only(bottom: 80.0), + itemBuilder: (BuildContext context, int index) { + return SizedBox( + height: 55, + child: Row( + children: [ + Stack( + children: [ + if (m.searchedChats![index].isImageLoading!) + const SizedBox( + height: 48, + width: 48, + ).toShimmer().circle(30), + if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isNotEmpty) + CircularAvatar( + radius: 20, + height: 48, + width: 48, + url: m.searchedChats![index].image, + isImageBase64: true, + ), + if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isEmpty) + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.searchedChats![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + ).circle(10), + ) + ], + ).onPress(() { + print(jsonEncode(m.searchedChats![index])); + }), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), + ], + ).expanded, + SizedBox( + width: 60, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + if (m.searchedChats![index].unreadMessageCount! > 0) + Container( + alignment: Alignment.center, + width: 18, + height: 18, + decoration: const BoxDecoration( + color: MyColors.redColor, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), ), - ).circle(10), - ) - ], - ).onPress(() { - print(jsonEncode(m.searchedChats![index])); - }), - Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), + child: (m.searchedChats![index].unreadMessageCount!.toString()) + .toText10( + color: MyColors.white, + ) + .center, + ).paddingOnly(right: 10).center, + Icon( + m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, + color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, + ).onPress( + () { + if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { + m.favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); + } else if (m.searchedChats![index].isFav == true) { + m.unFavoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); + } else { + m.favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: m.searchedChats![index].id!, + ); + } + }, + ).center ], - ).expanded, - SizedBox( - width: 60, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.end, - mainAxisSize: MainAxisSize.max, - children: [ - if (m.searchedChats![index].unreadMessageCount! > 0) - Container( - alignment: Alignment.center, - width: 18, - height: 18, - decoration: const BoxDecoration( - color: MyColors.redColor, - borderRadius: BorderRadius.all( - Radius.circular(20), - ), - ), - child: (m.searchedChats![index].unreadMessageCount!.toString()) - .toText10( - color: MyColors.white, - ) - .center, - ).paddingOnly(right: 10).center, - Icon( - m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, - color: m.searchedChats![index].isFav != null && m.searchedChats![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, - ).onPress( - () { - if (m.searchedChats![index].isFav == null || m.searchedChats![index].isFav == false) { - m.favoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.searchedChats![index].id!, - ); - } else if (m.searchedChats![index].isFav == true) { - m.unFavoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.searchedChats![index].id!, - ); - } else { - m.favoriteUser( - userID: AppState().chatDetails!.response!.id!, - targetUserID: m.searchedChats![index].id!, - ); - } - }, - ).center - ], - ), ), - ], - ), - ).onPress(() { - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, - ).then((Object? value) { - m.clearSelections(); - m.notifyListeners(); - }); + ), + ], + ), + ).onPress(() { + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, + ).then((Object? value) { + m.clearSelections(); + m.notifyListeners(); }); - }, - separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), - ), + }); + }, + separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), ).expanded, ], ).paddingOnly(left: 21, right: 21); From 6d026a37bacbad251bc659012328df9325ea5a3c Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 7 Dec 2022 11:38:13 +0300 Subject: [PATCH 187/302] Chat Fixes --- lib/provider/chat_provider_model.dart | 2 +- lib/ui/chat/chat_home_screen.dart | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 0401400..b6583de 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -349,12 +349,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } dynamic contain = searchedChats!.where((ChatUser element) => element.id == data.first.currentUserId); if (contain.isEmpty) { - print("Contain Was Emptyyyy"); searchedChats!.add( ChatUser(id: data.first.currentUserId, userName: data.first.currentUserName, unreadMessageCount: 0, isImageLoading: false, image: "", isImageLoaded: true), ); notifyListeners(); } + setMsgTune(); userChatHistory.insert(0, data.first); diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 9d905eb..36bfe3e 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -54,9 +54,7 @@ class _ChatHomeScreenState extends State { body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { return m.isLoading - ? ChatHomeShimmer( - isDetailedScreen: false, - ) + ? ChatHomeShimmer(isDetailedScreen: false,) : Column( children: [ TextField( From 80c97b0a65d1e3cae050d79f175205b32e9e3cb8 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 7 Dec 2022 11:48:21 +0300 Subject: [PATCH 188/302] Chat Fixes --- lib/ui/chat/chat_detailed_screen.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index f027915..64c222e 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -165,6 +165,7 @@ class _ChatDetailScreenState extends State { ), if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") SizedBox(height: 200, width: double.infinity, child: Image.file(m.selectedFile, fit: BoxFit.cover)).paddingOnly(left: 21, right: 21, top: 21), + const Divider(height: 1,color: MyColors.lightGreyEFColor,), TextField( controller: m.message, decoration: InputDecoration( From fb0dff48bca114b96728e05889d508585901d2ff Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 7 Dec 2022 11:48:47 +0300 Subject: [PATCH 189/302] Chat Fixes --- lib/ui/chat/chat_detailed_screen.dart | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 64c222e..f4ad2ab 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -16,13 +16,11 @@ import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.da import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; -import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:signalr_netcore/signalr_client.dart'; -import 'package:sizer/sizer.dart'; import 'package:swipe_to/swipe_to.dart'; class ChatDetailScreen extends StatefulWidget { @@ -165,7 +163,10 @@ class _ChatDetailScreenState extends State { ), if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") SizedBox(height: 200, width: double.infinity, child: Image.file(m.selectedFile, fit: BoxFit.cover)).paddingOnly(left: 21, right: 21, top: 21), - const Divider(height: 1,color: MyColors.lightGreyEFColor,), + const Divider( + height: 1, + color: MyColors.lightGreyEFColor, + ), TextField( controller: m.message, decoration: InputDecoration( From ae64001e63644a380d17e770f26cfb0332054ac3 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 7 Dec 2022 11:52:42 +0300 Subject: [PATCH 190/302] Chat Fixes --- lib/ui/chat/chat_detailed_screen.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index f4ad2ab..2ab5fd8 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -32,9 +32,9 @@ class ChatDetailScreen extends StatefulWidget { } class _ChatDetailScreenState extends State { + final RefreshController _rc = RefreshController(initialRefresh: false); dynamic userDetails; late ChatProviderModel data; - final RefreshController _rc = RefreshController(initialRefresh: false); void getMoreChat() async { if (userDetails != null) { From 8433d594a28924a406342033a1db18f78882e4c7 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 7 Dec 2022 15:47:33 +0300 Subject: [PATCH 191/302] Chat Sort On Messages, Scroll Fix, Search Improved --- lib/provider/chat_provider_model.dart | 22 +++++++++++-------- lib/ui/chat/chat_bubble.dart | 3 +-- lib/ui/chat/chat_home_screen.dart | 1 - lib/ui/chat/favorite_users_screen.dart | 7 ++++-- .../search_employee_bottom_sheet.dart | 6 ++--- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index b6583de..5fb4cbf 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -325,8 +325,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future onMsgReceived(List? parameters) async { - List data = []; - List temp = []; + List data = [], temp = []; for (dynamic msg in parameters!) { data = getSingleUserChatModel(jsonEncode(msg)); temp = getSingleUserChatModel(jsonEncode(msg)); @@ -349,10 +348,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } dynamic contain = searchedChats!.where((ChatUser element) => element.id == data.first.currentUserId); if (contain.isEmpty) { - searchedChats!.add( - ChatUser(id: data.first.currentUserId, userName: data.first.currentUserName, unreadMessageCount: 0, isImageLoading: false, image: "", isImageLoaded: true), - ); - notifyListeners(); + searchedChats!.add(ChatUser(id: data.first.currentUserId, userName: data.first.currentUserName, unreadMessageCount: 0, isImageLoading: false, image: "", isImageLoaded: true, userStatus: 1)); } setMsgTune(); @@ -365,16 +361,24 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { user.unreadMessageCount = tempCount + 1; } } + sort(); } List list = [ {"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive ? true : false} ]; updateUserChatHistoryOnMsg(list); - notifyListeners(); } + void sort() { + searchedChats!.sort( + (ChatUser a, ChatUser b) => b.unreadMessageCount!.compareTo( + a.unreadMessageCount!, + ), + ); + } + void onUserTyping(List? parameters) { for (ChatUser user in searchedChats!) { if (user.id == parameters![1] && parameters[0] == true) { @@ -468,9 +472,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Uint8List? image, required bool isImageLoaded}) async { Uuid uuid = const Uuid(); - var contentNo = uuid.v4(); + String contentNo = uuid.v4(); - var msg = message.text; + String msg = message.text; SingleUserChatModel data = SingleUserChatModel( chatEventId: chatEventId, chatSource: 1, diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index ec772f6..ea43004 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -239,8 +239,7 @@ class ChatBubble extends StatelessWidget { return SizedBox( height: isReplyPreview ? 32 : 140, width: isReplyPreview ? 32 : 227, - child: const Center(child: CircularProgressIndicator()), - ); + ).toShimmer(); } }, ); diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 36bfe3e..804332a 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -34,7 +34,6 @@ class _ChatHomeScreenState extends State { final RefreshController _rc = RefreshController(initialRefresh: false); - @override void initState() { super.initState(); diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 6034151..9378625 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -23,13 +23,16 @@ class ChatFavoriteUsersScreen extends StatelessWidget { body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { if (m.isLoading) { - return ChatHomeShimmer(isDetailedScreen: false,); + return ChatHomeShimmer( + isDetailedScreen: false, + ); } else { return m.favUsersList != null && m.favUsersList.isNotEmpty ? ListView.separated( itemCount: m.favUsersList!.length, shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), + physics: const ClampingScrollPhysics(), + padding: const EdgeInsets.only(bottom: 80.0), itemBuilder: (BuildContext context, int index) { return SizedBox( height: 55, diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index 32b501c..475c4a5 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -15,6 +15,7 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; @@ -90,10 +91,9 @@ class _SearchEmployeeBottomSheetState extends State { Utils.showLoading(context); chatUsersList = await ChatApiClient().getChatMemberFromSearch( searchText, - int.parse( - AppState().chatDetails!.response!.id.toString(), - ), + int.parse(AppState().chatDetails!.response!.id.toString()), ); + chatUsersList!.removeWhere((element) => element.id == AppState().chatDetails!.response!.id); Utils.hideLoading(context); setState(() {}); } catch (e) { From d66f841ca4cd93def9c28b672c3a72f5f6a50f77 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 8 Dec 2022 13:13:53 +0300 Subject: [PATCH 192/302] App security implemented, Offers & discounts fixes --- lib/config/routes.dart | 5 ++ lib/extensions/string_extensions.dart | 3 +- lib/ui/login/login_screen.dart | 90 +++++++++---------- .../offers_and_discounts_details.dart | 2 +- .../offers_and_discounts_home.dart | 53 +++++------ lib/ui/unsafe_device_screen.dart | 72 +++++++++++++++ pubspec.yaml | 2 + 7 files changed, 144 insertions(+), 83 deletions(-) create mode 100644 lib/ui/unsafe_device_screen.dart diff --git a/lib/config/routes.dart b/lib/config/routes.dart index d1b6b08..365a1c0 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -67,6 +67,7 @@ import 'package:mohem_flutter_app/ui/screens/pending_transactions/pending_transa import 'package:mohem_flutter_app/ui/screens/pending_transactions/pending_transactions_details.dart'; import 'package:mohem_flutter_app/ui/screens/submenu_screen.dart'; import 'package:mohem_flutter_app/ui/termination/end_employement.dart'; +import 'package:mohem_flutter_app/ui/unsafe_device_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/item_history_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/itg_detail_screen.dart'; import 'package:mohem_flutter_app/ui/work_list/work_list_screen.dart'; @@ -191,6 +192,8 @@ class AppRoutes { static const String marathonSponsorVideoScreen = "/marathonSponsorVideoScreen"; static const String marathonWaitingScreen = "/marathonWaitingScreen"; + static const String unsafeDeviceScreen = "/unsafeDeviceScreen"; + static final Map routes = { login: (BuildContext context) => LoginScreen(), verifyLogin: (BuildContext context) => VerifyLoginScreen(), @@ -300,5 +303,7 @@ class AppRoutes { marathonWinnerScreen: (BuildContext context) => WinnerScreen(), marathonSponsorVideoScreen: (BuildContext context) => const SponsorVideoScreen(), marathonWaitingScreen: (BuildContext context) => const MarathonWaitingScreen(), + + unsafeDeviceScreen: (BuildContext context) => const UnsafeDeviceScreen(), }; } diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 3261149..01b7a08 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -90,8 +90,9 @@ extension EmailValidator on String { style: TextStyle(fontSize: 13, fontWeight: FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.52, decoration: isUnderLine ? TextDecoration.underline : null), ); - Widget toText14({Color? color, bool isUnderLine = false, bool isBold = false, FontWeight? weight, int? maxlines}) => Text( + Widget toText14({Color? color, bool isUnderLine = false, bool isBold = false, FontWeight? weight, int? maxlines, bool isCenter = false}) => Text( this, + textAlign: isCenter ? TextAlign.center : TextAlign.left, maxLines: maxlines, style: TextStyle( color: color ?? MyColors.darkTextColor, diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index e225459..a0ab3c9 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -25,6 +25,7 @@ import 'package:mohem_flutter_app/models/member_login_list_model.dart'; import 'package:mohem_flutter_app/models/privilege_list_model.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/input_widget.dart'; +import 'package:safe_device/safe_device.dart'; class LoginScreen extends StatefulWidget { LoginScreen({Key? key}) : super(key: key); @@ -48,10 +49,34 @@ class _LoginScreenState extends State { bool? isAppOpenBySystem; + bool isJailBroken = false; + bool isRealDevice = false; + bool isOnExternalStorage = false; + bool isDevelopmentModeEnable = false; + @override void initState() { super.initState(); - // checkFirebaseToken(); + // checkFirebaseToken(); + if (kReleaseMode) { + checkDeviceSafety(); + } + } + + void checkDeviceSafety() async { + try { + isJailBroken = await SafeDevice.isJailBroken; + isRealDevice = await SafeDevice.isRealDevice; + if (Platform.isAndroid) { + isOnExternalStorage = await SafeDevice.isOnExternalStorage; + isDevelopmentModeEnable = await SafeDevice.isDevelopmentModeEnable; + } + if (isJailBroken || !isRealDevice || isOnExternalStorage || isDevelopmentModeEnable) { + Navigator.pushNamedAndRemoveUntil(context, AppRoutes.unsafeDeviceScreen, (_) => false); + } + } catch (error) { + print(error); + } } @override @@ -68,8 +93,7 @@ class _LoginScreenState extends State { await Firebase.initializeApp(); _firebaseMessaging = FirebaseMessaging.instance; firebaseToken = await _firebaseMessaging.getToken(); - loginInfo = await LoginApiClient().getMobileLoginInfoNEW( - firebaseToken ?? "", Platform.isAndroid ? "android" : "ios"); + loginInfo = await LoginApiClient().getMobileLoginInfoNEW(firebaseToken ?? "", Platform.isAndroid ? "android" : "ios"); if (loginInfo == null) { Utils.hideLoading(context); return; @@ -86,11 +110,9 @@ class _LoginScreenState extends State { } Future checkPrefs() async { - String username = - await Utils.getStringFromPrefs(SharedPrefsConsts.username); + String username = await Utils.getStringFromPrefs(SharedPrefsConsts.username); if (username.isNotEmpty) { - String password = - await Utils.getStringFromPrefs(SharedPrefsConsts.password); + String password = await Utils.getStringFromPrefs(SharedPrefsConsts.password); // String firebaseToken = await Utils.getStringFromPrefs(SharedPrefsConsts.firebaseToken); // print("firebaseToken:$firebaseToken"); this.username.text = username; @@ -103,30 +125,23 @@ class _LoginScreenState extends State { Utils.showLoading(context); try { _checkMobileAppVersion = await LoginApiClient().checkMobileAppVersion(); - _memberLoginList = - await LoginApiClient().memberLogin(username.text, password.text); + _memberLoginList = await LoginApiClient().memberLogin(username.text, password.text); AppState().setMemberLoginListModel = _memberLoginList; AppState().setUserName = username.text; AppState().password = password.text; if (_autoLogin) { - AppState().setMemberInformationListModel = - (await MemberInformationListModel.getFromPrefs()).first; - AppState().setPrivilegeListModel = - await PrivilegeListModel.getFromPrefs(); - String mohemmWifiSSID = - await Utils.getStringFromPrefs(SharedPrefsConsts.mohemmWifiSSID); - String mohemmWifiPassword = await Utils.getStringFromPrefs( - SharedPrefsConsts.mohemmWifiPassword); + AppState().setMemberInformationListModel = (await MemberInformationListModel.getFromPrefs()).first; + AppState().setPrivilegeListModel = await PrivilegeListModel.getFromPrefs(); + String mohemmWifiSSID = await Utils.getStringFromPrefs(SharedPrefsConsts.mohemmWifiSSID); + String mohemmWifiPassword = await Utils.getStringFromPrefs(SharedPrefsConsts.mohemmWifiPassword); AppState().setMohemmWifiSSID = mohemmWifiSSID; AppState().setMohemmWifiPassword = mohemmWifiPassword; } Utils.hideLoading(context); if (_autoLogin) { - Navigator.pushReplacementNamed(context, AppRoutes.verifyLastLogin, - arguments: loginInfo); + Navigator.pushReplacementNamed(context, AppRoutes.verifyLastLogin, arguments: loginInfo); } else { - Navigator.pushNamed(context, AppRoutes.verifyLogin, - arguments: "$firebaseToken"); + Navigator.pushNamed(context, AppRoutes.verifyLogin, arguments: "$firebaseToken"); } Utils.saveStringFromPrefs(SharedPrefsConsts.password, password.text); } catch (ex) { @@ -169,13 +184,7 @@ class _LoginScreenState extends State { Expanded(child: SizedBox()), Row( children: [ - LocaleKeys.english - .tr() - .toText14( - color: AppState().isArabic(context) - ? null - : MyColors.textMixColor) - .onPress(() { + LocaleKeys.english.tr().toText14(color: AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { context.setLocale(const Locale("en", "US")); }), Container( @@ -184,13 +193,7 @@ class _LoginScreenState extends State { height: 16, margin: const EdgeInsets.only(left: 10, right: 10), ), - LocaleKeys.arabic - .tr() - .toText14( - color: !AppState().isArabic(context) - ? null - : MyColors.textMixColor) - .onPress(() { + LocaleKeys.arabic.tr().toText14(color: !AppState().isArabic(context) ? null : MyColors.textMixColor).onPress(() { context.setLocale(const Locale("ar", "SA")); }), ], @@ -206,23 +209,14 @@ class _LoginScreenState extends State { LocaleKeys.login.tr().toText24(isBold: true), LocaleKeys.pleaseEnterLoginDetails.tr().toText16(), 16.height, - InputWidget( - LocaleKeys.username.tr(), "123456", username), + InputWidget(LocaleKeys.username.tr(), "123456", username), 12.height, - InputWidget( - LocaleKeys.password.tr(), "xxxxxx", password, - isTextIsPassword: true), + InputWidget(LocaleKeys.password.tr(), "xxxxxx", password, isTextIsPassword: true), 9.height, Align( alignment: Alignment.centerRight, - child: LocaleKeys.forgotPassword - .tr() - .toText12( - isUnderLine: true, - color: MyColors.textMixColor) - .onPress(() { - Navigator.pushNamed( - context, AppRoutes.forgotPassword); + child: LocaleKeys.forgotPassword.tr().toText12(isUnderLine: true, color: MyColors.textMixColor).onPress(() { + Navigator.pushNamed(context, AppRoutes.forgotPassword); }), ), ], diff --git a/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart b/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart index 325f4f3..e9f46d7 100644 --- a/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart +++ b/lib/ui/screens/offers_and_discounts/offers_and_discounts_details.dart @@ -143,7 +143,7 @@ class _OffersAndDiscountsDetailsState extends State { List getItemsForSaleWidgets() { List itemsList = []; - for (int i = 1; i < 5; i++) { + for (int i = 1; i < getOffersList.length; i++) { itemsList.add(getItemCard(getOffersList[i])); } return itemsList; diff --git a/lib/ui/screens/offers_and_discounts/offers_and_discounts_home.dart b/lib/ui/screens/offers_and_discounts/offers_and_discounts_home.dart index 343eed8..c62cc9c 100644 --- a/lib/ui/screens/offers_and_discounts/offers_and_discounts_home.dart +++ b/lib/ui/screens/offers_and_discounts/offers_and_discounts_home.dart @@ -80,39 +80,26 @@ class _OffersAndDiscountsHomeState extends State { // getItemsForSale(currentPageNo, currentCategoryID); }); }, - child: Container( - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(15), - boxShadow: [ - BoxShadow( - color: const Color(0xff000000).withOpacity(.05), - blurRadius: 26, - offset: const Offset(0, -3), - ), - ], - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SvgPicture.string( - getCategoriesList[index].content!, - fit: BoxFit.contain, - width: 25, - height: 25, - ), - currentCategoryID == getCategoriesList[index].id ? const Icon(Icons.check_circle_rounded, color: MyColors.greenColor, size: 16.0) : Container(), - ], - ).expanded, - AppState().isArabic(context) ? getCategoriesList[index].categoryNameAr!.toText10(maxlines: 1) : getCategoriesList[index].categoryNameEn!.toText10(maxlines: 1) - ], - ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12), - ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SvgPicture.string( + getCategoriesList[index].content!, + fit: BoxFit.contain, + width: 25, + height: 25, + ), + currentCategoryID == getCategoriesList[index].id ? const Icon(Icons.check_circle_rounded, color: MyColors.greenColor, size: 16.0) : Container(), + ], + ).expanded, + AppState().isArabic(context) ? getCategoriesList[index].categoryNameAr!.toText10() : getCategoriesList[index].categoryNameEn!.toText10() + ], + ).paddingOnly(left: 10, right: 10, bottom: 10, top: 12).expanded.objectContainerView(disablePadding: true), ), ); }, diff --git a/lib/ui/unsafe_device_screen.dart b/lib/ui/unsafe_device_screen.dart new file mode 100644 index 0000000..dca8748 --- /dev/null +++ b/lib/ui/unsafe_device_screen.dart @@ -0,0 +1,72 @@ +import 'dart:io'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; + +class UnsafeDeviceScreen extends StatefulWidget { + const UnsafeDeviceScreen({Key? key}) : super(key: key); + + @override + State createState() => _UnsafeDeviceScreenState(); +} + +class _UnsafeDeviceScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + 21.height, + Center(child: Image.asset("assets/images/logos/main_mohemm_logo.png", width: 200, height: 50)), + 50.height, + "Sorry".toText24(isBold: true), + 21.height, + "You are using Mohemm app on an unsafe device. To be able to use the app with all it's features, Please make sure that the below points are considered: " + .toText14(isCenter: true) + .paddingOnly(left: 20.0, right: 20.0), + 48.height, + passwordConstraintsUI("The device is not jailbroken or rooted.", true).paddingOnly(left: 24.0, right: 5.0), + 8.height, + passwordConstraintsUI("The app is not installed on external storage.", true).paddingOnly(left: 24.0, right: 5.0), + 8.height, + passwordConstraintsUI("Development mode is disabled.", true).paddingOnly(left: 24.0, right: 5.0), + 21.height, + DefaultButton(LocaleKeys.ok.tr(), () async { + if (Platform.isAndroid) { + SystemChannels.platform.invokeMethod('SystemNavigator.pop'); + } else { + // MinimizeApp.minimizeApp(); + } + }).paddingAll(24) + ], + ), + ), + ); + } + + Widget passwordConstraintsUI(String description, bool check) { + return Row( + children: [ + 4.width, + SizedBox( + width: 12, + height: 12, + child: Checkbox(fillColor: MaterialStateProperty.all(MyColors.gradiantEndColor), shape: const CircleBorder(), value: check, onChanged: null), + ), + 8.width, + description.toText14() + ], + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 4fc00c8..39afde3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -99,6 +99,8 @@ dependencies: video_player: ^2.4.7 just_audio: ^0.9.30 + safe_device: ^1.1.2 + dev_dependencies: flutter_test: sdk: flutter From d25e6085658e77baeb8cff5671a0214dd8392f53 Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Sun, 11 Dec 2022 11:33:47 +0300 Subject: [PATCH 193/302] bug fixes --- lib/classes/consts.dart | 5 +- lib/classes/encryption.dart | 1 + .../chat/get_single_user_chat_list_model.dart | 1 + .../get_eit_dff_structure_list_model.dart | 14 +-- lib/provider/chat_provider_model.dart | 1 + .../dynamic_screens/dynamic_input_screen.dart | 22 +--- lib/ui/profile/contact_details.dart | 62 +++++++---- .../dynamic_input_address_screen.dart | 2 +- lib/ui/profile/family_members.dart | 104 ++++++++++-------- 9 files changed, 117 insertions(+), 95 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 944a29b..27fd9bb 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,7 +3,7 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -23,7 +23,7 @@ class ApiConsts { static String chatSingleUserHistoryUrl = chatServerBaseApiUrl + "UserChatHistory/"; static String chatMediaImageUploadUrl = chatServerBaseApiUrl + "shared/"; static String chatFavUser = chatServerBaseApiUrl + "FavUser/"; - static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; + static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; //Brain Marathon Constants static String marathonBaseUrl = "https://marathoon.com/service/"; @@ -35,7 +35,6 @@ class ApiConsts { //DummyCards for the UI static CardContent dummyQuestion = const CardContent(); - } class SharedPrefsConsts { diff --git a/lib/classes/encryption.dart b/lib/classes/encryption.dart index a4ab6be..a2b45b5 100644 --- a/lib/classes/encryption.dart +++ b/lib/classes/encryption.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:typed_data'; import 'package:flutter/services.dart'; diff --git a/lib/models/chat/get_single_user_chat_list_model.dart b/lib/models/chat/get_single_user_chat_list_model.dart index 07b2f51..80ffa5a 100644 --- a/lib/models/chat/get_single_user_chat_list_model.dart +++ b/lib/models/chat/get_single_user_chat_list_model.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:typed_data'; import 'package:flutter/foundation.dart'; diff --git a/lib/models/get_eit_dff_structure_list_model.dart b/lib/models/get_eit_dff_structure_list_model.dart index 832dc86..3aed98c 100644 --- a/lib/models/get_eit_dff_structure_list_model.dart +++ b/lib/models/get_eit_dff_structure_list_model.dart @@ -210,10 +210,10 @@ class GetEITDFFStructureList { } class ESERVICESDV { - String? pIDCOLUMNNAME; - String? pRETURNMSG; + dynamic pIDCOLUMNNAME; + dynamic pRETURNMSG; String? pRETURNSTATUS; - String? pVALUECOLUMNNAME; + dynamic pVALUECOLUMNNAME; ESERVICESDV({this.pIDCOLUMNNAME, this.pRETURNMSG, this.pRETURNSTATUS, this.pVALUECOLUMNNAME}); @@ -226,10 +226,10 @@ class ESERVICESDV { Map toJson() { Map data = new Map(); - data['P_ID_COLUMN_NAME'] = this.pIDCOLUMNNAME; - data['P_RETURN_MSG'] = this.pRETURNMSG; - data['P_RETURN_STATUS'] = this.pRETURNSTATUS; - data['P_VALUE_COLUMN_NAME'] = this.pVALUECOLUMNNAME; + data['P_ID_COLUMN_NAME'] = pIDCOLUMNNAME; + data['P_RETURN_MSG'] = pRETURNMSG; + data['P_RETURN_STATUS'] = pRETURNSTATUS; + data['P_VALUE_COLUMN_NAME'] = pVALUECOLUMNNAME; return data; } } diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 0b522db..0482bc4 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; +import 'dart:typed_data'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 08d2be7..62cafbd 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -50,18 +50,6 @@ class _DynamicInputScreenState extends State { descFlexConTextTitle = genericResponseModel!.pDESCFLEXCONTEXTNAME ?? ""; getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); - if (dynamicParams!.collectionNotificationList != null && dynamicParams!.collectionNotificationList!.isNotEmpty) { - getEitDffStructureList!.forEach((element) { - dynamicParams!.collectionNotificationList!.forEach((element2) { - if (element.sEGMENTNAME == element2.segmentName) { - element.fieldAnswer = element2.varchar2Value; - element.eSERVICESDV ??= ESERVICESDV(); - element.eSERVICESDV!.pIDCOLUMNNAME = element2.varchar2Value; - } - }); - }); - } - Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -108,11 +96,9 @@ class _DynamicInputScreenState extends State { SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp ?? ''); Utils.hideLoading(context); - var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); - if (res != null && res == true) { - Utils.showLoading(context); - } + Utils.showLoading(context); await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); Utils.hideLoading(context); } catch (ex) { @@ -345,7 +331,7 @@ class _DynamicInputScreenState extends State { idColName = val; if (getEitDffStructureList![j].fORMATTYPE == "X") { - idColName = Utils.formatDateDefault(idColName!); + idColName = Utils.formatDateNew(idColName!); // commenting to test // DateTime date = DateFormat('yyyy-MM-dd').parse(idColName!); // idColName = DateFormat('yyyy-MM-dd HH:mm:ss').format(date); @@ -498,7 +484,7 @@ class _DynamicInputScreenState extends State { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model.eSERVICESDV?.pIDCOLUMNNAME ?? "", - // isReadOnly: model.rEADONLY == "Y", + isReadOnly: model.rEADONLY == "Y", isInputTypeNum: true, onChange: (text) { model.fieldAnswer = text; diff --git a/lib/ui/profile/contact_details.dart b/lib/ui/profile/contact_details.dart index 95c867a..a2c68ae 100644 --- a/lib/ui/profile/contact_details.dart +++ b/lib/ui/profile/contact_details.dart @@ -1,3 +1,4 @@ +import 'package:auto_size_text/auto_size_text.dart'; import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; @@ -14,6 +15,7 @@ import 'package:mohem_flutter_app/models/get_employee_address_model.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/misc/no_data_ui.dart'; import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_address_screen.dart'; import 'package:mohem_flutter_app/ui/profile/phone_numbers.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; @@ -99,16 +101,17 @@ class _ContactDetailsState extends State { separatorBuilder: (cxt, index) => 12.height, itemCount: getEmployeePhonesList.length), if (menuEntriesPhone.updateButton == 'Y') - AppState().isArabic(context)? Positioned( - top: 1, - left: 1, - child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(updatePhone), - ) - :Positioned( - top: 1, - right: 1, - child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(updatePhone), - ), + AppState().isArabic(context) + ? Positioned( + top: 1, + left: 1, + child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(updatePhone), + ) + : Positioned( + top: 1, + right: 1, + child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(updatePhone), + ), ], ).objectContainerView(), 12.height, @@ -129,16 +132,35 @@ class _ContactDetailsState extends State { separatorBuilder: (cxt, index) => 12.height, itemCount: getEmployeeAddressList.length), if (menuEntriesAddress.updateButton == 'Y') - AppState().isArabic(context)? Positioned( - top: 1, - left: 1, - child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(addUpdateAddress), - ) - :Positioned( - top: 1, - right: 1, - child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(addUpdateAddress), - ), + AppState().isArabic(context) + ? Positioned( + top: 1, + left: 1, + child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(addUpdateAddress), + ) + : Positioned( + top: 1, + right: 1, + child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(addUpdateAddress), + ), + ], + ).objectContainerView() + else + Stack( + children: [ + if (menuEntriesAddress.addButton == 'Y') + AppState().isArabic(context) + ? Positioned( + top: 1, + left: 1, + child: const Icon(Icons.add_location_alt_outlined, size: 20).onPress(continueDynamicForms), + ) + : Positioned( + top: 1, + right: 1, + child: const Icon(Icons.add_location_alt_outlined, size: 20).onPress(continueDynamicForms), + ), + Utils.getNoDataWidget(context).expanded, ], ).objectContainerView() ], diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart index 226eae9..cf74412 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -291,7 +291,7 @@ class _DynamicInputScreenState extends State { values, dynamicParams!.correctOrNew, countryCode, - effectiveDate.isEmpty ? DateFormat('dd-MMM-yyy').format(DateTime.now().add(Duration(days: 35))) : effectiveDate, + effectiveDate.isEmpty ? DateFormat('dd-MMM-yyy').format(DateTime.now()) : effectiveDate, ); print(values); Utils.hideLoading(context); diff --git a/lib/ui/profile/family_members.dart b/lib/ui/profile/family_members.dart index 25f62c0..6c564e3 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -34,12 +34,12 @@ class _FamilyMembersState extends State { @override void initState() { super.initState(); - List menuData = Provider.of(context, listen: false).getMenuEntriesList!; + List menuData = Provider.of(context, listen: false).getMenuEntriesList!; - List arr = menuData.where((GetMenuEntriesList e) => e.requestType == 'CONTACT').toList(); - if(arr.isNotEmpty){ + List arr = menuData.where((GetMenuEntriesList e) => e.requestType == 'CONTACT').toList(); + if (arr.isNotEmpty) { menuEntries = arr[0]; - }else{ + } else { menuEntries = new GetMenuEntriesList(); } @@ -66,9 +66,10 @@ class _FamilyMembersState extends State { ), backgroundColor: MyColors.backgroundColor, body: Column( - children: [ + children: [ Expanded( - child: getEmployeeContactsList.isEmpty ? Utils.getNoDataWidget(context) + child: getEmployeeContactsList.isEmpty + ? Utils.getNoDataWidget(context) : ListView.separated( padding: const EdgeInsets.all(21), separatorBuilder: (cxt, index) => 12.height, @@ -87,57 +88,68 @@ class _FamilyMembersState extends State { children: [ // todo @faitma clean below logic and write clean code. RichText( - text: TextSpan( - children: [ - WidgetSpan( - child: Icon(Icons.edit, size: 14, color: menuEntries.updateButton == 'Y' ? MyColors.grey67Color : MyColors.lightGreyColor,) - ), - TextSpan( - text: LocaleKeys.update.tr(), - style:TextStyle(color: menuEntries.updateButton == 'Y' ? MyColors.grey67Color : MyColors.lightGreyColor, fontSize: 12, letterSpacing: -0.36, fontWeight: FontWeight.w600), - recognizer: TapGestureRecognizer() - ..onTap = () async { - relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID; - menuEntries.updateButton == 'Y'? showUpdateAlertDialog(context, relationId, 2, "UPDATE"):null; - } - ) - ], - ), - ), - Container(height: 35, width: 1, color: const Color(0xffEFEFEF)), - RichText( - text: TextSpan( - children: [ - const WidgetSpan( + text: TextSpan( + children: [ + WidgetSpan( child: Icon( - Icons.delete, size: 15, color: MyColors.redColor,), - ), - TextSpan( - text: LocaleKeys.remove.tr(), - style: const TextStyle(color: MyColors.redColor, fontSize: 12, letterSpacing: -0.36, fontWeight: FontWeight.w600), + Icons.edit, + size: 14, + color: menuEntries.updateButton == 'Y' ? MyColors.grey67Color : MyColors.lightGreyColor, + )), + TextSpan( + text: LocaleKeys.update.tr(), + style: TextStyle( + color: menuEntries.updateButton == 'Y' ? MyColors.grey67Color : MyColors.lightGreyColor, fontSize: 12, letterSpacing: -0.36, fontWeight: FontWeight.w600), + recognizer: TapGestureRecognizer() + ..onTap = () async { + relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID; + menuEntries.updateButton == 'Y' ? showUpdateAlertDialog(context, relationId, 2, "UPDATE") : null; + }) + ], + ), + ), + Container(height: 35, width: 1, color: const Color(0xffEFEFEF)), + RichText( + text: TextSpan( + children: [ + WidgetSpan( + child: Icon( + Icons.delete, + size: 15, + color: menuEntries.updateButton == 'Y' ? MyColors.redColor : MyColors.lightGreyColor, ), - ], - ), - ).onPress(() { relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID; - showRemoveAlertDialog(context, relationId);}), + ), + TextSpan( + text: LocaleKeys.remove.tr(), + style: TextStyle( + color: menuEntries.updateButton == 'Y' ? MyColors.redColor : MyColors.lightGreyColor, fontSize: 12, letterSpacing: -0.36, fontWeight: FontWeight.w600), + ), + ], + ), + ).onPress(() { + relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID; + menuEntries.updateButton == 'Y' ? showRemoveAlertDialog(context, relationId) : null; + }), ], ), ], ).objectContainerView(disablePadding: true); }), ), - DefaultButton(LocaleKeys.addNewFamilyMember.tr(), - menuEntries.updateButton == 'Y' - ? - () async { - Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID": relationId, "flag": 1, "actionType": "ADD"}); - // ProfileScreen(); - } : null).insideContainer, + DefaultButton( + LocaleKeys.addNewFamilyMember.tr(), + menuEntries.updateButton == 'Y' + ? () async { + Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID": relationId, "flag": 1, "actionType": "ADD"}); + // ProfileScreen(); + } + : null) + .insideContainer, ], )); } - void showUpdateAlertDialog(BuildContext context, relationId, int flag, String actionType) { + void showUpdateAlertDialog(BuildContext context, relationId, int flag, String actionType) { Widget cancelButton = TextButton( child: Text( LocaleKeys.cancel.tr(), @@ -176,7 +188,7 @@ class _FamilyMembersState extends State { ); } - void showRemoveAlertDialog(BuildContext context, relationId) { + void showRemoveAlertDialog(BuildContext context, relationId) { Widget cancelButton = TextButton( child: Text( LocaleKeys.cancel.tr(), From 0f3882531401b44f57f78f4c886033f1c2dbee13 Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Sun, 11 Dec 2022 12:29:05 +0300 Subject: [PATCH 194/302] bug fix --- lib/ui/profile/contact_details.dart | 2 +- .../dynamic_screens/dynamic_input_address_screen.dart | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/ui/profile/contact_details.dart b/lib/ui/profile/contact_details.dart index a2c68ae..78afc1c 100644 --- a/lib/ui/profile/contact_details.dart +++ b/lib/ui/profile/contact_details.dart @@ -35,7 +35,7 @@ class _ContactDetailsState extends State { String? civilIdentityNumber = ""; String? emailAddress = ""; String? employeeNo = ""; - int? correctOrNew = 1; + int? correctOrNew = 2; List getEmployeePhonesList = []; List getEmployeeAddressList = []; List getEmployeeBasicDetailsList = []; diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart index cf74412..a233839 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -191,7 +191,8 @@ class _DynamicInputScreenState extends State { ], onSelected: (int popupIndex) { model?.getEmployeeAddressList!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME; - model?.getEmployeeAddressList!.vARCHAR2VALUE = model.eSERVICESVS![popupIndex].dESCRIPTION; + model?.getEmployeeAddressList!.vARCHAR2VALUE = + model.eSERVICESVS![popupIndex].dESCRIPTION != "" ? model.eSERVICESVS![popupIndex].dESCRIPTION : model.eSERVICESVS![popupIndex].iDCOLUMNNAME; setState(() {}); }); } @@ -282,7 +283,7 @@ class _DynamicInputScreenState extends State { tempVar = e.getEmployeeAddressList!.sEGMENTVALUEDSP ?? ""; } - return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 0, vARCHAR2VALUE: tempVar.toString()).toJson(); + return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: 0, tRANSACTIONNUMBER: 0, vARCHAR2VALUE: tempVar.toString()).toJson(); }).toList(); submitPhoneNumbers = await ProfileApiClient().submitAddressTransaction( From 2790d18c1dad369e0f7e19e51feb3b4aa4697bbf Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 11 Dec 2022 15:03:55 +0300 Subject: [PATCH 195/302] fixes --- android/app/src/main/AndroidManifest.xml | 1 + ios/Runner/Info.plist | 6 +++++- lib/ui/screens/announcements/announcement_details.dart | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index dd9a8de..30555e1 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -11,6 +11,7 @@ NSPhotoLibraryUsageDescription This app requires photo library access to select image as document & upload it. NSMicrophoneUsageDescription - This app requires microphone access to for call. + This app requires microphone access to for call. UIBackgroundModes remote-notification @@ -69,6 +69,10 @@ UIViewControllerBasedStatusBarAppearance + com.apple.developer.nfc.readersession.formats + + TAG + com.apple.developer.nfc.readersession.felica.systemcodes 0000 diff --git a/lib/ui/screens/announcements/announcement_details.dart b/lib/ui/screens/announcements/announcement_details.dart index dbe1eb2..210a8f7 100644 --- a/lib/ui/screens/announcements/announcement_details.dart +++ b/lib/ui/screens/announcements/announcement_details.dart @@ -60,7 +60,7 @@ class _AnnouncementDetailsState extends State { ), ), Html( - data: getAnnouncementDetailsObj?.bodyEN, + data: AppState().isArabic(context) ? getAnnouncementDetailsObj?.bodyAR : getAnnouncementDetailsObj?.bodyEN, ).paddingOnly(top: 12), ], ).objectContainerView().paddingAll(21), From cd813a163fff0f4f392eb2ac68dd9db25d0cbe30 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Sun, 11 Dec 2022 15:37:42 +0300 Subject: [PATCH 196/302] fix issues --- lib/api/dashboard_api_client.dart | 5 +- lib/api/leave_balance_api_client.dart | 35 +++++++++++--- .../add_leave_balance_screen.dart | 47 +++++++++++++------ .../leave_balance/leave_balance_screen.dart | 31 +++++++++--- lib/ui/misc/request_submit_screen.dart | 7 ++- .../dynamic_listview_screen.dart | 4 +- .../services_menu_list_screen.dart | 2 +- lib/widgets/balances_dashboard_widget.dart | 4 +- 8 files changed, 102 insertions(+), 33 deletions(-) diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index e30af91..3eab65b 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -65,10 +65,13 @@ class DashboardApiClient { }, url, postParams); } - Future> getAccrualBalances(String effectiveDate) async { + Future> getAccrualBalances(String effectiveDate, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ACCRUAL_BALANCES"; Map postParams = {"P_EFFECTIVE_DATE": effectiveDate}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.getAccrualBalancesList ?? []; diff --git a/lib/api/leave_balance_api_client.dart b/lib/api/leave_balance_api_client.dart index cd577ba..f9c5e21 100644 --- a/lib/api/leave_balance_api_client.dart +++ b/lib/api/leave_balance_api_client.dart @@ -17,27 +17,33 @@ class LeaveBalanceApiClient { factory LeaveBalanceApiClient() => _instance; - Future> getAbsenceTransactions(int pSelectedResopID) async { + Future> getAbsenceTransactions(int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceTransactionList ?? []; }, url, postParams); } - Future> getAbsenceAttendanceTypes() async { + Future> getAbsenceAttendanceTypes({String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_ATTENDANCE_TYPES"; Map postParams = {}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceAttendanceTypesList ?? []; }, url, postParams); } - Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID) async { + Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}CALCULATE_ABSENCE_DURATION"; Map postParams = { "P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID, @@ -49,16 +55,22 @@ class LeaveBalanceApiClient { "P_TIME_START": null, }; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.calculateAbsenceDuration!; }, url, postParams); } - Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID) async { + Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_DFF_STRUCTURE"; Map postParams = {"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceDffStructureList ?? []; @@ -67,7 +79,7 @@ class LeaveBalanceApiClient { Future validateAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = ""}) async { + {String comments = "", String? empID}) async { String url = "${ApiConsts.erpRest}VALIDATE_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -86,6 +98,9 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; @@ -94,7 +109,7 @@ class LeaveBalanceApiClient { Future submitAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = ""}) async { + {String comments = "", String? empID}) async { String url = "${ApiConsts.erpRest}SUBMIT_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -113,6 +128,9 @@ class LeaveBalanceApiClient { }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.sumbitAbsenceTransactionList!; @@ -129,7 +147,7 @@ class LeaveBalanceApiClient { }, url, postParams); } - Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID) async { + Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID,{String? empID}) async { String url = "${ApiConsts.erpRest}START_ABSENCE_APPROVAL_PROCESS"; Map postParams = { "P_TRANSACTION_ID": pTransactionID, @@ -138,6 +156,9 @@ class LeaveBalanceApiClient { "P_MENU_TYPE": "E", }; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.startAbsenceApprovalProccess!; diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index 1a4958e..dde2f02 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -24,7 +25,8 @@ import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; class AddLeaveBalanceScreen extends StatefulWidget { - AddLeaveBalanceScreen({Key? key}) : super(key: key); + final String selectedEmp; + AddLeaveBalanceScreen({this.selectedEmp ='', Key? key}) : super(key: key); @override _AddLeaveBalanceScreenState createState() { @@ -42,19 +44,21 @@ class _AddLeaveBalanceScreenState extends State { int? totalDays; String comment = ""; ReplacementList? selectedReplacementEmployee; + dynamic dynamicParams; + String selectedEmp =""; DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); @override void initState() { super.initState(); - getAbsenceAttendanceTypes(); + //getAbsenceAttendanceTypes(); } void getAbsenceAttendanceTypes() async { try { Utils.showLoading(context); - absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(); + absenceList = await LeaveBalanceApiClient().getAbsenceAttendanceTypes(empID: selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -67,7 +71,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); getabsenceDffStructureList.clear(); - getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999); + getabsenceDffStructureList = await LeaveBalanceApiClient().getAbsenceDffStructure(selectedAbsenceType!.dESCFLEXCONTEXTCODE!, "HR_LOA_SS", -999, empID: selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -80,7 +84,7 @@ class _AddLeaveBalanceScreenState extends State { try { Utils.showLoading(context); CalculateAbsenceDuration duration = await LeaveBalanceApiClient() - .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999); + .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999, empID: selectedEmp); totalDays = duration.pABSENCEDAYS?.toInt(); Utils.hideLoading(context); @@ -91,8 +95,8 @@ class _AddLeaveBalanceScreenState extends State { } } - void validateAbsenceTransaction() async { - // try { + void validateAbsenceTransaction(selectedID) async { + try { Utils.showLoading(context); Map dffDataMap = {}; for (int i = 1; i <= 20; i++) { @@ -118,7 +122,8 @@ class _AddLeaveBalanceScreenState extends State { DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), -999, dffDataMap, - comments: comment); + comments: comment, + empID: selectedEmp); SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( selectedAbsenceType!.dESCFLEXCONTEXTCODE!, @@ -129,7 +134,8 @@ class _AddLeaveBalanceScreenState extends State { DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), -999, dffDataMap, - comments: comment); + comments: comment, + empID: selectedEmp); Utils.hideLoading(context); @@ -139,10 +145,10 @@ class _AddLeaveBalanceScreenState extends State { } await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); Utils.hideLoading(context); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } @override @@ -152,6 +158,19 @@ class _AddLeaveBalanceScreenState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + getAbsenceAttendanceTypes(); + }else{ + getAbsenceAttendanceTypes(); + } + } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( @@ -269,7 +288,7 @@ class _AddLeaveBalanceScreenState extends State { validateFieldData() ? null : () { - validateAbsenceTransaction(); + validateAbsenceTransaction(selectedEmp); }, ).insideContainer ], diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 548ca99..a397c11 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -1,6 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -13,7 +14,8 @@ import 'package:mohem_flutter_app/widgets/balances_dashboard_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; class LeaveBalance extends StatefulWidget { - LeaveBalance({Key? key}) : super(key: key); + final String selectedEmp; + LeaveBalance({this.selectedEmp ='', Key? key}) : super(key: key); @override _LeaveBalanceState createState() { @@ -25,12 +27,16 @@ class _LeaveBalanceState extends State { List? absenceTransList; DateTime accrualDateTime = DateTime.now(); + dynamic dynamicParams; + String selectedEmp =""; @override void initState() { super.initState(); - - getAbsenceTransactions(); + // if (selectedEmp.isNotEmpty) {} + // else { + // getAbsenceTransactions(); + // } } @override @@ -39,9 +45,9 @@ class _LeaveBalanceState extends State { } void getAbsenceTransactions() async { - try { + try { Utils.showLoading(context); - absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999); + absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999, empID: selectedEmp); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -52,6 +58,19 @@ class _LeaveBalanceState extends State { @override Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute + .of(context)! + .settings + .arguments; + if (dynamicParams.isNotEmpty) { + AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; + selectedEmp =dynamicParams; + getAbsenceTransactions(); + }else{ + getAbsenceTransactions(); + } + } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( @@ -111,7 +130,7 @@ class _LeaveBalanceState extends State { ), child: const Icon(Icons.add, color: Colors.white, size: 30), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.addLeaveBalance); + Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: selectedEmp ??''); }), ); } diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index f05bacb..170e288 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -8,6 +8,7 @@ import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/api/termination_dff_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -35,7 +36,8 @@ class RequestSubmitScreenParams { } class RequestSubmitScreen extends StatefulWidget { - RequestSubmitScreen({Key? key}) : super(key: key); + final String selectedEmp; + RequestSubmitScreen({this.selectedEmp ='',Key? key}) : super(key: key); @override _RequestSubmitScreenState createState() { @@ -50,6 +52,8 @@ class _RequestSubmitScreenState extends State { List approverList = []; List attachmentFiles = []; List attachments = []; + dynamic dynamicParams; + String selectedEmp =""; @override void initState() { @@ -123,6 +127,7 @@ class _RequestSubmitScreenState extends State { params!.transactionId, comments.text, -999, + empID: widget.selectedEmp ); } else if (params!.approvalFlag == 'eit') { await MyAttendanceApiClient().startEitApprovalProcess( diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index 5c4053c..a670cbb 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -102,8 +102,8 @@ class _DynamicListViewScreenState extends State { itemBuilder: (cxt, int parentIndex) => getEITTransactionList![parentIndex].collectionTransaction!.isEmpty ? const SizedBox() : GridView( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.9 / 0.75), - padding: const EdgeInsets.all(12.0), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.0 / 0.75), + padding: const EdgeInsets.only(left: 12,right: 21,top: 12), shrinkWrap: true, primary: false, physics: const ScrollPhysics(), diff --git a/lib/ui/my_attendance/services_menu_list_screen.dart b/lib/ui/my_attendance/services_menu_list_screen.dart index cd76132..7a61029 100644 --- a/lib/ui/my_attendance/services_menu_list_screen.dart +++ b/lib/ui/my_attendance/services_menu_list_screen.dart @@ -54,7 +54,7 @@ class ServicesMenuListScreen extends StatelessWidget { } return; } else if (servicesMenuData.list[index].requestType == "ABSENCE") { - Navigator.pushNamed(context, AppRoutes.leaveBalance); + Navigator.pushNamed(context, AppRoutes.leaveBalance, arguments: servicesMenuData?.selectedEmp ??''); return; } if (servicesMenuData.list[index].requestType == "EIT") { diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index e546acf..510137a 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -45,6 +45,8 @@ class _BalancesDashboardWidgetState extends State { late DateTime accrualDateTime; GetAccrualBalancesList? leaveBalanceAccrual; List? ticketBalanceAccrualList; + dynamic dynamicParams; + String selectedEmp =""; @override void initState() { @@ -60,7 +62,7 @@ class _BalancesDashboardWidgetState extends State { void changeAccrualDate() async { try { Utils.showLoading(context); - List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime)); + List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime),empID: selectedEmp); if (accrualList.isNotEmpty) { if (widget.isLeaveBalance) { leaveBalanceAccrual = accrualList[0]; From f1b7b897cc7cfca0022c6f8139184eaa051e7ac1 Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Sun, 11 Dec 2022 16:12:34 +0300 Subject: [PATCH 197/302] leave balance page updated --- .../add_leave_balance_screen.dart | 107 +++++++++--------- .../leave_balance/leave_balance_screen.dart | 26 ++--- lib/widgets/balances_dashboard_widget.dart | 5 +- 3 files changed, 65 insertions(+), 73 deletions(-) diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index dde2f02..4df7233 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -26,7 +26,7 @@ import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget class AddLeaveBalanceScreen extends StatefulWidget { final String selectedEmp; - AddLeaveBalanceScreen({this.selectedEmp ='', Key? key}) : super(key: key); + AddLeaveBalanceScreen({this.selectedEmp = '', Key? key}) : super(key: key); @override _AddLeaveBalanceScreenState createState() { @@ -45,14 +45,14 @@ class _AddLeaveBalanceScreenState extends State { String comment = ""; ReplacementList? selectedReplacementEmployee; dynamic dynamicParams; - String selectedEmp =""; + String selectedEmp = ""; DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); @override void initState() { super.initState(); - //getAbsenceAttendanceTypes(); + //getAbsenceAttendanceTypes(); } void getAbsenceAttendanceTypes() async { @@ -96,59 +96,59 @@ class _AddLeaveBalanceScreenState extends State { } void validateAbsenceTransaction(selectedID) async { - try { - Utils.showLoading(context); - Map dffDataMap = {}; - for (int i = 1; i <= 20; i++) { - dffDataMap["P_ATTRIBUTE$i"] = null; - for (int dffIndex = 0; dffIndex < getabsenceDffStructureList.length; dffIndex++) { - if ("ATTRIBUTE$i" == getabsenceDffStructureList[dffIndex].aPPLICATIONCOLUMNNAME) { - if (getabsenceDffStructureList[dffIndex].fORMATTYPE == "X") { - dffDataMap["P_ATTRIBUTE$i"] = - getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME != null ? Utils.formatDate(getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME!) : ""; - } else { - dffDataMap["P_ATTRIBUTE$i"] = getabsenceDffStructureList[dffIndex].eSERVICESDV?.pIDCOLUMNNAME; - } - break; + //try { + Utils.showLoading(context); + Map dffDataMap = {}; + for (int i = 1; i <= 20; i++) { + dffDataMap["P_ATTRIBUTE$i"] = null; + for (int dffIndex = 0; dffIndex < getabsenceDffStructureList.length; dffIndex++) { + if ("ATTRIBUTE$i" == getabsenceDffStructureList[dffIndex].aPPLICATIONCOLUMNNAME) { + if (getabsenceDffStructureList[dffIndex].fORMATTYPE == "X") { + dffDataMap["P_ATTRIBUTE$i"] = + getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME != null ? Utils.formatDate(getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME!) : ""; + } else { + dffDataMap["P_ATTRIBUTE$i"] = getabsenceDffStructureList[dffIndex].eSERVICESDV?.pIDCOLUMNNAME; } + break; } } - await LeaveBalanceApiClient().validateAbsenceTransaction( - selectedAbsenceType!.dESCFLEXCONTEXTCODE!, - "HR_LOA_SS", - selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, - selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", - DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), - DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), - -999, - dffDataMap, - comments: comment, - empID: selectedEmp); + } + await LeaveBalanceApiClient().validateAbsenceTransaction( + selectedAbsenceType!.dESCFLEXCONTEXTCODE!, + "HR_LOA_SS", + selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, + selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", + DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), + DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), + -999, + dffDataMap, + comments: comment, + empID: selectedEmp); - SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( - selectedAbsenceType!.dESCFLEXCONTEXTCODE!, - "HR_LOA_SS", - selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, - selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", - DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), - DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), - -999, - dffDataMap, - comments: comment, - empID: selectedEmp); + SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( + selectedAbsenceType!.dESCFLEXCONTEXTCODE!, + "HR_LOA_SS", + selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, + selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", + DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), + DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), + -999, + dffDataMap, + comments: comment, + empID: selectedEmp); - Utils.hideLoading(context); + Utils.hideLoading(context); - var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance")); - if (res != null && res == true) { - Utils.showLoading(context); - } - await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); - Utils.hideLoading(context); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); + var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance")); + if (res != null && res == true) { + Utils.showLoading(context); } + await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); + Utils.hideLoading(context); + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } } @override @@ -159,15 +159,12 @@ class _AddLeaveBalanceScreenState extends State { @override Widget build(BuildContext context) { if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; + dynamicParams = ModalRoute.of(context)!.settings.arguments; if (dynamicParams.isNotEmpty) { AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; + selectedEmp = dynamicParams; getAbsenceAttendanceTypes(); - }else{ + } else { getAbsenceAttendanceTypes(); } } diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index a397c11..07d6a7c 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -15,7 +15,7 @@ import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; class LeaveBalance extends StatefulWidget { final String selectedEmp; - LeaveBalance({this.selectedEmp ='', Key? key}) : super(key: key); + LeaveBalance({this.selectedEmp = '', Key? key}) : super(key: key); @override _LeaveBalanceState createState() { @@ -28,15 +28,12 @@ class _LeaveBalanceState extends State { DateTime accrualDateTime = DateTime.now(); dynamic dynamicParams; - String selectedEmp =""; + String selectedEmp = ""; @override void initState() { super.initState(); - // if (selectedEmp.isNotEmpty) {} - // else { - // getAbsenceTransactions(); - // } + absenceTransList = []; } @override @@ -45,10 +42,10 @@ class _LeaveBalanceState extends State { } void getAbsenceTransactions() async { - try { - Utils.showLoading(context); + try { + // Utils.showLoading(context); absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999, empID: selectedEmp); - Utils.hideLoading(context); + //Utils.hideLoading(context); setState(() {}); } catch (ex) { Utils.hideLoading(context); @@ -59,15 +56,12 @@ class _LeaveBalanceState extends State { @override Widget build(BuildContext context) { if (dynamicParams == null) { - dynamicParams = ModalRoute - .of(context)! - .settings - .arguments; + dynamicParams = ModalRoute.of(context)!.settings.arguments; if (dynamicParams.isNotEmpty) { AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp =dynamicParams; + selectedEmp = dynamicParams; getAbsenceTransactions(); - }else{ + } else { getAbsenceTransactions(); } } @@ -130,7 +124,7 @@ class _LeaveBalanceState extends State { ), child: const Icon(Icons.add, color: Colors.white, size: 30), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: selectedEmp ??''); + Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: selectedEmp ?? ''); }), ); } diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index 510137a..2c56c7e 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -46,12 +46,13 @@ class _BalancesDashboardWidgetState extends State { GetAccrualBalancesList? leaveBalanceAccrual; List? ticketBalanceAccrualList; dynamic dynamicParams; - String selectedEmp =""; + String selectedEmp = ""; @override void initState() { super.initState(); accrualDateTime = DateTime.now(); + changeAccrualDate(); } @override @@ -62,7 +63,7 @@ class _BalancesDashboardWidgetState extends State { void changeAccrualDate() async { try { Utils.showLoading(context); - List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime),empID: selectedEmp); + List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime), empID: selectedEmp); if (accrualList.isNotEmpty) { if (widget.isLeaveBalance) { leaveBalanceAccrual = accrualList[0]; From ecaede0deb29d0f3f139334ae2b49a51b0dd6edc Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 11 Dec 2022 16:22:54 +0300 Subject: [PATCH 198/302] Updates & fixes --- lib/classes/utils.dart | 3 +- lib/ui/work_list/worklist_detail_screen.dart | 32 ++++++++++---------- pubspec.yaml | 1 + 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 3b30d05..050ae4d 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -121,7 +121,8 @@ class Utils { ), ); } else { - showToast(errorMessage); + // showToast(errorMessage); + confirmDialog(cxt, errorMessage); } } } diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 8b22041..75ee88f 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -233,9 +233,9 @@ class _WorkListDetailScreenState extends State { ), child: Row( children: [ - (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") ? myTab(LocaleKeys.details.tr(), 0) : myTab(LocaleKeys.request.tr(), 0), - myTab(LocaleKeys.actions.tr(), 1), - myTab(LocaleKeys.info.tr(), 2), + myTab(LocaleKeys.info.tr(), 0), + (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") ? myTab(LocaleKeys.details.tr(), 1) : myTab(LocaleKeys.request.tr(), 1), + myTab(LocaleKeys.actions.tr(), 2), myTab(LocaleKeys.attachments.tr(), 3), ], ), @@ -249,6 +249,19 @@ class _WorkListDetailScreenState extends State { }); }, children: [ + InfoFragment( + poHeaderList: getPoNotificationBody?.pOHeader ?? [], + workListData: workListData, + itemCreationHeader: getItemCreationNtfBody?.itemCreationHeader ?? [], + getStampMsNotifications: getStampMsNotifications, + getStampNsNotifications: getStampNsNotifications, + getEitCollectionNotificationBodyList: getEitCollectionNotificationBodyList, + getPhonesNotificationBodyList: getPhonesNotificationBodyList, + getBasicDetNtfBodyList: getBasicDetNtfBodyList, + getAbsenceCollectionNotificationBodyList: getAbsenceCollectionNotificationBodyList, + getContactNotificationBodyList: getContactNotificationBodyList, + getPrNotificationBodyList: getPrNotificationBody, + ), (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") ? DetailFragment(workListData, memberInformationListModel) : RequestFragment( @@ -266,19 +279,6 @@ class _WorkListDetailScreenState extends State { voidCallback: reloadWorkList, ) : showLoadingAnimation(), - InfoFragment( - poHeaderList: getPoNotificationBody?.pOHeader ?? [], - workListData: workListData, - itemCreationHeader: getItemCreationNtfBody?.itemCreationHeader ?? [], - getStampMsNotifications: getStampMsNotifications, - getStampNsNotifications: getStampNsNotifications, - getEitCollectionNotificationBodyList: getEitCollectionNotificationBodyList, - getPhonesNotificationBodyList: getPhonesNotificationBodyList, - getBasicDetNtfBodyList: getBasicDetNtfBodyList, - getAbsenceCollectionNotificationBodyList: getAbsenceCollectionNotificationBodyList, - getContactNotificationBodyList: getContactNotificationBodyList, - getPrNotificationBodyList: getPrNotificationBody, - ), isAttachmentLoaded ? getAttachmentList.isEmpty ? Utils.getNoDataWidget(context) diff --git a/pubspec.yaml b/pubspec.yaml index 4fc00c8..0d5cda5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -98,6 +98,7 @@ dependencies: video_player: ^2.4.7 just_audio: ^0.9.30 + safe_device: ^1.1.2 dev_dependencies: flutter_test: From 7cdcea93ba7ba357f4664859113bd1395ed9d661 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Sun, 11 Dec 2022 16:33:32 +0300 Subject: [PATCH 199/302] fix issues --- lib/ui/leave_balance/add_leave_balance_screen.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index 4df7233..03ffe36 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -96,7 +96,7 @@ class _AddLeaveBalanceScreenState extends State { } void validateAbsenceTransaction(selectedID) async { - //try { + try { Utils.showLoading(context); Map dffDataMap = {}; for (int i = 1; i <= 20; i++) { @@ -145,10 +145,10 @@ class _AddLeaveBalanceScreenState extends State { } await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); Utils.hideLoading(context); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } @override From 810920a93468d298af78e902009c7a591bc9f4f5 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Sun, 11 Dec 2022 16:57:14 +0300 Subject: [PATCH 200/302] Pushing after resolving multiple times API calling issue --- lib/api/marathon/marathon_api_client.dart | 63 ++- lib/classes/consts.dart | 6 +- lib/config/routes.dart | 3 - lib/extensions/string_extensions.dart | 12 +- lib/generated/codegen_loader.g.dart | 22 +- lib/generated/locale_keys.g.dart | 500 ------------------ lib/main.dart | 5 + lib/models/marathon/winner_model.dart | 17 + lib/ui/marathon/marathon_provider.dart | 86 +-- lib/ui/marathon/marathon_screen.dart | 57 +- .../marathon_sponsor_video_screen.dart | 51 +- lib/ui/marathon/marathon_waiting_screen.dart | 123 +++-- .../marathon/marathon_winner_selection.dart | 90 ---- lib/ui/marathon/widgets/countdown_timer.dart | 182 ++----- lib/ui/marathon/widgets/marathon_banner.dart | 74 ++- .../marathon_qualifiers_container.dart | 6 +- lib/ui/marathon/widgets/question_card.dart | 30 +- 17 files changed, 423 insertions(+), 904 deletions(-) delete mode 100644 lib/generated/locale_keys.g.dart create mode 100644 lib/models/marathon/winner_model.dart delete mode 100644 lib/ui/marathon/marathon_winner_selection.dart diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 132ec30..a9266d2 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -8,6 +8,7 @@ import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_generic_model.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; +import 'package:mohem_flutter_app/models/marathon/winner_model.dart'; import 'package:signalr_netcore/hub_connection.dart'; class MarathonApiClient { @@ -19,6 +20,7 @@ class MarathonApiClient { String employeeSession = AppState().postParamsObject?.pSessionId.toString() ?? ""; Map jsonObject = {"userName": employeeUserName, "password": employeeSession}; + Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonParticipantLoginUrl, jsonObject); var json = jsonDecode(response.body); @@ -80,10 +82,11 @@ class MarathonApiClient { return marathonDetailModel; } - Future joinMarathonAsParticipant() async { + Future joinMarathonAsParticipant() async { Map jsonObject = { "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER ?? "", - "employeeName": AppState().memberInformationList!.eMPLOYEENAME ?? "", + "employeeNameAr": AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr ?? "", + "employeeNameEn": AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn ?? "", "marathonId": AppState().getMarathonProjectId!, }; @@ -95,31 +98,33 @@ class MarathonApiClient { if (marathonModel.statusCode == 208) { // means participant is already in the marathon i.e already joined - return true; + return marathonModel.data["remainingTime"]; } if (marathonModel.statusCode == 200) { if (marathonModel.data != null && marathonModel.isSuccessful == true) { logger.i("joinMarathonAsParticipant: ${marathonModel.data}"); - return true; + return marathonModel.data["remainingTime"]; } else { - return false; + return null; } } else { - return false; + return null; } } Future getNextQuestion({required String? questionId, required String marathonId}) async { Map jsonObject = { - "questionId": questionId, + "previousQuestionId": questionId, "marathonId": marathonId, - }; + }; Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonNextQuestionUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); var json = jsonDecode(response.body); + + logger.i("json in NextQuestion: $json"); var data = json["data"]; if (data != null) { @@ -130,13 +135,13 @@ class MarathonApiClient { } } - Future submitSelectedOption({required String? selectedAnswerId}) async { - Map jsonObject = {"selectedOptionId": selectedAnswerId}; + Future submitSelectedOption({required String marathonId, required String? questionId, required String? selectedAnswerId}) async { + Map jsonObject = {"marathonId": marathonId, "questionId": questionId, "selectedOptionId" : selectedAnswerId}; Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonSubmitAnswerUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); var json = jsonDecode(response.body); - logger.i("json: $json"); + logger.i("json in submitSelectedOption : $json"); MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); @@ -147,6 +152,42 @@ class MarathonApiClient { return marathonModel.isSuccessful!; } + Future getQualifiers({required String marathonId}) async { + Map params = {"marathonId": marathonId}; + Response response = await ApiClient().getJsonForResponse(ApiConsts.marathonQualifiersUrl, queryParameters: params, token: AppState().getMarathonToken ?? await getMarathonToken()); + + var json = jsonDecode(response.body); + logger.i("json in getQualifiers: $json"); + + MarathonGenericModel marathonGenericModel = MarathonGenericModel.fromJson(json); + + if (marathonGenericModel.isSuccessful == true && marathonGenericModel.statusCode == 200 && marathonGenericModel.data != null) { + return marathonGenericModel.data["winnerCount"]; + } + return null; + } + + Future?> getSelectedWinner({required String marathonId}) async { + Map params = {"marathonId": marathonId}; + Response response = await ApiClient().getJsonForResponse(ApiConsts.marathonSelectedWinner, queryParameters: params, token: AppState().getMarathonToken ?? await getMarathonToken()); + + var json = jsonDecode(response.body); + logger.i("json in getSelectedWinner: $json"); + + MarathonGenericModel marathonGenericModel = MarathonGenericModel.fromJson(json); + + if (marathonGenericModel.isSuccessful == true && marathonGenericModel.statusCode == 200 && marathonGenericModel.data != null) { + List winners = []; + List data = marathonGenericModel.data as List; + + for (Map winner in data) { + winners.add(WinnerModel.fromJson(winner)); + } + return winners; + } + return null; + } + // Future buildHubConnection(BuildContext context, String prizeId) async { // HttpConnectionOptions httpOptions = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); // hubConnection = HubConnectionBuilder() diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 1230c8b..7ee0c23 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -25,21 +25,21 @@ class ApiConsts { static String chatFavUser = chatServerBaseApiUrl + "FavUser/"; static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; - //Brain Marathon Constants static String marathonBaseUrl = "https://marathoon.com/service/api/"; static String marathonParticipantLoginUrl = marathonBaseUrl + "auth/participantlogin"; static String marathonProjectGetUrl = marathonBaseUrl + "Project/Project_Get"; static String marathonUpcomingUrl = marathonBaseUrl + "marathon/upcoming/"; - static String marathonJoinParticipantUrl = marathonBaseUrl + "participant/participant_join"; + static String marathonJoinParticipantUrl = marathonBaseUrl + "participant/join"; static String marathonNextQuestionUrl = marathonBaseUrl + "question/next"; static String marathonSubmitAnswerUrl = marathonBaseUrl + "question/submit"; static String marathonQualifiersUrl = marathonBaseUrl + "winner/getWinner/"; static String marathonSelectedWinner = marathonBaseUrl + "winner/getSelectedWinner/"; //DummyCards for the UI - static CardContent dummyQuestion = const CardContent(); + + static int tabletMinLength = 500; } class SharedPrefsConsts { diff --git a/lib/config/routes.dart b/lib/config/routes.dart index d1b6b08..af6af26 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -22,7 +22,6 @@ import 'package:mohem_flutter_app/ui/marathon/marathon_intro_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_sponsor_video_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_waiting_screen.dart'; -import 'package:mohem_flutter_app/ui/marathon/marathon_winner_selection.dart'; import 'package:mohem_flutter_app/ui/marathon/winner_screen.dart'; import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart'; @@ -186,7 +185,6 @@ class AppRoutes { //Marathon static const String marathonIntroScreen = "/marathonIntroScreen"; static const String marathonScreen = "/marathonScreen"; - static const String marathonWinnerSelection = "/marathonWinnerSelection"; static const String marathonWinnerScreen = "/marathonWinnerScreen"; static const String marathonSponsorVideoScreen = "/marathonSponsorVideoScreen"; static const String marathonWaitingScreen = "/marathonWaitingScreen"; @@ -296,7 +294,6 @@ class AppRoutes { // Marathon marathonIntroScreen: (BuildContext context) => MarathonIntroScreen(), marathonScreen: (BuildContext context) => MarathonScreen(), - marathonWinnerSelection: (BuildContext context) => MarathonWinnerSelection(), marathonWinnerScreen: (BuildContext context) => WinnerScreen(), marathonSponsorVideoScreen: (BuildContext context) => const SponsorVideoScreen(), marathonWaitingScreen: (BuildContext context) => const MarathonWaitingScreen(), diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 3261149..494daaf 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -140,8 +140,9 @@ extension EmailValidator on String { style: TextStyle(color: color ?? MyColors.grey3AColor, fontSize: 21, letterSpacing: -0.84, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.w600)), ); - Widget toText22({Color? color, bool isBold = false}) => Text( + Widget toText22({Color? color, bool isBold = false, bool isCentered = false}) => Text( this, + textAlign: isCentered ? TextAlign.center : null, style: TextStyle(height: 1, color: color ?? MyColors.darkTextColor, fontSize: 22, letterSpacing: -1.44, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), ); @@ -151,12 +152,13 @@ extension EmailValidator on String { ); Widget toText30({Color? color, bool isBold = false}) => Text( - this, - style: TextStyle(height: 20 / 32, color: color ?? MyColors.darkTextColor, fontSize: 32, letterSpacing: -1.2, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), - ); + this, + style: TextStyle(height: 20 / 32, color: color ?? MyColors.darkTextColor, fontSize: 32, letterSpacing: -1.2, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), + ); - Widget toText32({Color? color, bool isBold = false}) => Text( + Widget toText32({Color? color, bool isBold = false, bool isCentered = false}) => Text( this, + textAlign: isCentered ? TextAlign.center : null, style: TextStyle(height: 32 / 32, color: color ?? MyColors.darkTextColor, fontSize: 32, letterSpacing: -1.92, fontWeight: isBold ? FontWeight.bold : FontWeight.w600), ); diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index a54ff37..8a2113d 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -516,7 +516,16 @@ class CodegenLoader extends AssetLoader{ "codeExpire": "انتهت صلاحية رمز التحقق", "typeheretoreply": "اكتب هنا للرد", "favorite": "مفضلتي", - "searchfromchat": "البحث من الدردشة" + "searchfromchat": "البحث من الدردشة", + "yourAnswerCorrect": "إجابتك صحيحة", + "youMissedTheQuestion": "نفد منك الوقت. أنت خارج اللعبة. لكن يمكنك الاستمرار وكمشاهد.", + "wrongAnswer": "إجابتك غير صحيحة. أنت خارج اللعبة. لكن يمكنك الاستمرار وكمشاهد.", + "oops": "أوه!!!", + "winner": "الفائز", + "youWantToLeaveMarathon": "هل أنت متأكد أنك تريد العودة؟ سوف تخرج من المسابقة.", + "ourSponsor": "راعينا:", + "startingIn": "يبدأ في", + "youAreOutOfContest": "أنت خارج المسابقة." }; static const Map en_US = { "mohemm": "Mohemm", @@ -1020,7 +1029,16 @@ static const Map en_US = { "allQuestionsCorrect": "You have answered all questions correct", "typeheretoreply": "Type here to reply", "favorite": "My Favorites", - "searchfromchat": "Search from chat" + "searchfromchat": "Search from chat", + "yourAnswerCorrect": "Your answer is correct", + "youMissedTheQuestion": "You ran out of time. You are out of the game. But you can continue and as a viewer.", + "wrongAnswer": "Your answer is Incorrect. You are out of the game. But you can continue and as a viewer.", + "oops": "Ooopsss!!!!", + "winner": "WINNER", + "youWantToLeaveMarathon": "Are you sure you want to go back? You will be out of the contest.", + "ourSponsor": "Our Sponsor:", + "startingIn": "Starting in", + "youAreOutOfContest": "You are out of the contest." }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart deleted file mode 100644 index 1d28232..0000000 --- a/lib/generated/locale_keys.g.dart +++ /dev/null @@ -1,500 +0,0 @@ -// DO NOT EDIT. This is code generated via package:easy_localization/generate.dart - -abstract class LocaleKeys { - static const mohemm = 'mohemm'; - static const english = 'english'; - static const arabic = 'arabic'; - static const login = 'login'; - static const pleaseEnterLoginDetails = 'pleaseEnterLoginDetails'; - static const username = 'username'; - static const password = 'password'; - static const welcomeBack = 'welcomeBack'; - static const wouldYouLikeToLoginWithCurrentUsername = 'wouldYouLikeToLoginWithCurrentUsername'; - static const lastLoginDetails = 'lastLoginDetails'; - static const verificationType = 'verificationType'; - static const pleaseVerify = 'pleaseVerify'; - static const pleaseVerifyForBio = 'pleaseVerifyForBio'; - static const verifyThroughFace = 'verifyThroughFace'; - static const verifyThroughFingerprint = 'verifyThroughFingerprint'; - static const verifyThroughSMS = 'verifyThroughSMS'; - static const verifyThroughWhatsapp = 'verifyThroughWhatsapp'; - static const useAnotherAccount = 'useAnotherAccount'; - static const pleaseEnterTheVerificationCodeSentTo = 'pleaseEnterTheVerificationCodeSentTo'; - static const theVerificationCodeWillExpireIn = 'theVerificationCodeWillExpireIn'; - static const goodMorning = 'goodMorning'; - static const markAttendance = 'markAttendance'; - static const timeLeftToday = 'timeLeftToday'; - static const checkIn = 'checkIn'; - static const workList = 'workList'; - static const leaveBalance = 'leaveBalance'; - static const missingSwipes = 'missingSwipes'; - static const ticketBalance = 'ticketBalance'; - static const services = 'services'; - static const viewAllServices = 'viewAllServices'; - static const monthlyAttendance = 'monthlyAttendance'; - static const vacationRule = 'vacationRule'; - static const vacationType = 'vacationType'; - static const startDateT = 'startDateT'; - static const endDateT = 'endDateT'; - static const workFromHome = 'workFromHome'; - static const ticketRequest = 'ticketRequest'; - static const viewAllOffers = 'viewAllOffers'; - static const offers = 'offers'; - static const discounts = 'discounts'; - static const newString = 'newString'; - static const setTheNewPassword = 'setTheNewPassword'; - static const typeYourNewPasswordBelow = 'typeYourNewPasswordBelow'; - static const confirmPassword = 'confirmPassword'; - static const update = 'update'; - static const title = 'title'; - static const home = 'home'; - static const mySalary = 'mySalary'; - static const createRequest = 'createRequest'; - static const forgotPassword = 'forgotPassword'; - static const employeeId = 'employeeId'; - static const loginCodeWillSentToMobileNumber = 'loginCodeWillSentToMobileNumber'; - static const changePassword = 'changePassword'; - static const ok = 'ok'; - static const confirm = 'confirm'; - static const passwordChangedSuccessfully = 'passwordChangedSuccessfully'; - static const itemsForSale = 'itemsForSale'; - static const attendanceDetails = 'attendanceDetails'; - static const order = 'order'; - static const earlyOut = 'earlyOut'; - static const shortage = 'shortage'; - static const excess = 'excess'; - static const lateIn = 'lateIn'; - static const approvedCheckOut = 'approvedCheckOut'; - static const approvedCheckIn = 'approvedCheckIn'; - static const actualCheckOut = 'actualCheckOut'; - static const actualCheckIn = 'actualCheckIn'; - static const present = 'present'; - static const pres = 'pres'; - static const shiftTime = 'shiftTime'; - static const absent = 'absent'; - static const attendance = 'attendance'; - static const scheduleDays = 'scheduleDays'; - static const offDays = 'offDays'; - static const nonAnalyzed = 'nonAnalyzed'; - static const shortageHour = 'shortageHour'; - static const stats = 'stats'; - static const completed = 'completed'; - static const msg = 'msg'; - static const msg_named = 'msg_named'; - static const clickMe = 'clickMe'; - static const doNotUseRecentPassword = 'doNotUseRecentPassword'; - static const atLeastOneLowercase = 'atLeastOneLowercase'; - static const atLeastOneUppercase = 'atLeastOneUppercase'; - static const atLeastOneNumeric = 'atLeastOneNumeric'; - static const minimum8Characters = 'minimum8Characters'; - static const doNotAddRepeatingLetters = 'doNotAddRepeatingLetters'; - static const itShouldContainSpecialCharacter = 'itShouldContainSpecialCharacter'; - static const confirmPasswordMustMatch = 'confirmPasswordMustMatch'; - static const sms = 'sms'; - static const fingerPrint = 'fingerPrint'; - static const face = 'face'; - static const whatsapp = 'whatsapp'; - static const reject = 'reject'; - static const approve = 'approve'; - static const cancel = 'cancel'; - static const requestedItems = 'requestedItems'; - static const request = 'request'; - static const myRequest = 'myRequest'; - static const actions = 'actions'; - static const delegate = 'delegate'; - static const request_info = 'request_info'; - static const attachments = 'attachments'; - static const info = 'info'; - static const employeeNumber = 'employeeNumber'; - static const assignmentNumber = 'assignmentNumber'; - static const employeeName = 'employeeName'; - static const scheduleDate = 'scheduleDate'; - static const shiftType = 'shiftType'; - static const shift = 'shift'; - static const breakText = 'breakText'; - static const actualSwipeStart = 'actualSwipeStart'; - static const actualSwipeEnd = 'actualSwipeEnd'; - static const approvedSwipeStart = 'approvedSwipeStart'; - static const approvedSwipeStartReason = 'approvedSwipeStartReason'; - static const approvedSwipeEnd = 'approvedSwipeEnd'; - static const approvedSwipeEndReason = 'approvedSwipeEndReason'; - static const from = 'from'; - static const to = 'to'; - static const sent = 'sent'; - static const closed = 'closed'; - static const id = 'id'; - static const responder = 'responder'; - static const jobTitle = 'jobTitle'; - static const grade = 'grade'; - static const jobCategory = 'jobCategory'; - static const category = 'category'; - static const employeeEmailAddress = 'employeeEmailAddress'; - static const payrollBranch = 'payrollBranch'; - static const yourChangeHasBeenSavedSuccessfully = 'yourChangeHasBeenSavedSuccessfully'; - static const code = 'code'; - static const unit = 'unit'; - static const quantity = 'quantity'; - static const dateRequired = 'dateRequired'; - static const lineStatus = 'lineStatus'; - static const statusDate = 'statusDate'; - static const transactionType = 'transactionType'; - static const operatingUnit = 'operatingUnit'; - static const organizationCode = 'organizationCode'; - static const organization = 'organization'; - static const fromSubInventory = 'fromSubInventory'; - static const fromLocator = 'fromLocator'; - static const toSubInventory = 'toSubInventory'; - static const toLocator = 'toLocator'; - static const shipToLocator = 'shipToLocator'; - static const itemHistory = 'itemHistory'; - static const mfg = 'mfg'; - static const lineType = 'lineType'; - static const price = 'price'; - static const lineAmount = 'lineAmount'; - static const lineDiscount = 'lineDiscount'; - static const needByDate = 'needByDate'; - static const promisedDate = 'promisedDate'; - static const deliverToLocation = 'deliverToLocation'; - static const requisitionNumber = 'requisitionNumber'; - static const requester = 'requester'; - static const quotationAnalysis = 'quotationAnalysis'; - static const subject = 'subject'; - static const description = 'description'; - static const supplier = 'supplier'; - static const site = 'site'; - static const buyer = 'buyer'; - static const preparer = 'preparer'; - static const creationDate = 'creationDate'; - static const shipToLocation = 'shipToLocation'; - static const quotationNumber = 'quotationNumber'; - static const quotationDate = 'quotationDate'; - static const paymentTerms = 'paymentTerms'; - static const currency = 'currency'; - static const grossAmount = 'grossAmount'; - static const discountAmount = 'discountAmount'; - static const customDuty = 'customDuty'; - static const shipHandle = 'shipHandle'; - static const otherCharges = 'otherCharges'; - static const totalPOAmountWithVAT = 'totalPOAmountWithVAT'; - static const totalPOAmountInWords = 'totalPOAmountInWords'; - static const requestNumber = 'requestNumber'; - static const uom = 'uom'; - static const operatingCode = 'operatingCode'; - static const poNumber = 'poNumber'; - static const revision = 'revision'; - static const quantityOrdered = 'quantityOrdered'; - static const quantityReceived = 'quantityReceived'; - static const bonusQuantity = 'bonusQuantity'; - static const purchasePrice = 'purchasePrice'; - static const discountPer = 'discountPer'; - static const balanceQuantity = 'balanceQuantity'; - static const netPrice = 'netPrice'; - static const closureStatus = 'closureStatus'; - static const quotationNetPrice = 'quotationNetPrice'; - static const quotationUOM = 'quotationUOM'; - static const quotationQty = 'quotationQty'; - static const itemCode = 'itemCode'; - static const vendorName = 'vendorName'; - static const quotationMFGPartNumber = 'quotationMFGPartNumber'; - static const quotationDeliveryDate = 'quotationDeliveryDate'; - static const quotationBonusQuantity = 'quotationBonusQuantity'; - static const quotationLineTotal = 'quotationLineTotal'; - static const rfqUOM = 'rfqUOM'; - static const rfqQty = 'rfqQty'; - static const rfqNumber = 'rfqNumber'; - static const human = 'human'; - static const resources = 'resources'; - static const details = 'details'; - static const noDataAvailable = 'noDataAvailable'; - static const productName = 'productName'; - static const productDescription = 'productDescription'; - static const unitPrice = 'unitPrice'; - static const manufacturerName = 'manufacturerName'; - static const manufacturerPartName = 'manufacturerPartName'; - static const supplierName = 'supplierName'; - static const supplierContact = 'supplierContact'; - static const chargeToPatient = 'chargeToPatient'; - static const justification = 'justification'; - static const itemDescription = 'itemDescription'; - static const groupCode = 'groupCode'; - static const primaryUOM = 'primaryUOM'; - static const subgroupDescription = 'subgroupDescription'; - static const subgroupCode = 'subgroupCode'; - static const groupDescription = 'groupDescription'; - static const templateName = 'templateName'; - static const itemCreationStatus = 'itemCreationStatus'; - static const standardizationApprovalStatus = 'standardizationApprovalStatus'; - static const standardizationApprovalRejectionReason = 'standardizationApprovalRejectionReason'; - static const analyzedBy = 'analyzedBy'; - static const approvedDate = 'approvedDate'; - static const itemType = 'itemType'; - static const relatedTo = 'relatedTo'; - static const requestDate = 'requestDate'; - static const analyzedDate = 'analyzedDate'; - static const urgent = 'urgent'; - static const requestDetails = 'requestDetails'; - static const approvalLevel = 'approvalLevel'; - static const requesterDetails = 'requesterDetails'; - static const myAttendance = 'myAttendance'; - static const workOnBreak = 'workOnBreak'; - static const next = 'next'; - static const apply = 'apply'; - static const mobile = 'mobile'; - static const completingYear = 'completingYear'; - static const year = 'year'; - static const month = 'month'; - static const day = 'day'; - static const address = 'address'; - static const phoneNumber = 'phoneNumber'; - static const businessGroup = 'businessGroup'; - static const Payroll = 'Payroll'; - static const civilIdentityNumber = 'civilIdentityNumber'; - static const dateOfBirth = 'dateOfBirth'; - static const maritalStatus = 'maritalStatus '; - static const fullName = 'fullName'; - static const remove = 'remove'; - static const submit = 'submit'; - static const areYouSureYouWantToSubmit = 'areYouSureYouWantToSubmit'; - static const comments = 'comments'; - static const writeComment = 'writeComment'; - static const approversList = 'approversList'; - static const yourRequestHasBeenSubmittedForApprovals = 'yourRequestHasBeenSubmittedForApprovals'; - static const monthlyPaySlip = 'monthlyPaySlip'; - static const particular = 'particular'; - static const earnings = 'earnings'; - static const deductions = 'deductions'; - static const paymentMethodName = 'paymentMethodName'; - static const bankName = 'bankName'; - static const branchCode = 'branchCode'; - static const accountNo = 'accountNo'; - static const summaryOfInformation = 'summaryOfInformation'; - static const totalPayAmount = 'totalPayAmount'; - static const paymentInformation = 'paymentInformation'; - static const performance = 'performance'; - static const performanceEvaluation = 'performanceEvaluation'; - static const performanceEvaluationIn = 'performanceEvaluationIn'; - static const valuationIn = 'valuationIn'; - static const amount = 'amount'; - static const correctCurrentDatails = 'correctCurrentDatails'; - static const selectType = 'selectType'; - static const enterNewInfo = 'enterNewInfo'; - static const endDate = 'endDate'; - static const removeThisMember = 'removeThisMember'; - static const wantUpdateThisMember = 'wantUpdateThisMember '; - static const addNewFamilyMember = 'addNewFamilyMember'; - static const addRow = 'addRow'; - static const pleaseSelect = 'pleaseSelect'; - static const delete = 'delete'; - static const edit = 'edit'; - static const add = 'add'; - static const myProfile = 'myProfile'; - static const mowadhafhi = 'mowadhafhi'; - static const searchAnnouncements = 'searchAnnouncements'; - static const announcements = 'announcements'; - static const swipeRequest = 'swipeRequest'; - static const serviceType = 'serviceType'; - static const departmentName = 'departmentName'; - static const selectDepartment = 'selectDepartment'; - static const relatedSection = 'relatedSection'; - static const selectSection = 'selectSection'; - static const relatedTopic = 'relatedTopic'; - static const selectTopic = 'selectTopic'; - static const supportingDocument = 'supportingDocument'; - static const mowadhafhiRequest = 'mowadhafhiRequest'; - static const ticketReference = 'ticketReference'; - static const section = 'section'; - static const topic = 'topic'; - static const actionBy = 'actionBy'; - static const pending = 'pending'; - static const pendingTransactions = 'pendingTransactions'; - static const selectRequestType = 'selectRequestType'; - static const dateFrom = 'dateFrom'; - static const dateTo = 'dateTo'; - static const requestName = 'requestName'; - static const createdFor = 'createdFor'; - static const requestCreatedSuccessfully = 'requestCreatedSuccessfully'; - static const search = 'search'; - static const wantToReject = 'wantToReject'; - static const requestType = 'requestType'; - static const employeeDigitalID = 'employeeDigitalID'; - static const businessCard = 'businessCard'; - static const viewBusinessCard = 'viewBusinessCard'; - static const logout = 'logout'; - static const checkOut = 'checkOut'; - static const regular = 'regular'; - static const mark = 'mark'; - static const selectMethodOfAttendance = 'selectMethodOfAttendance'; - static const comeNearHMGWifi = 'comeNearHMGWifi'; - static const deliverNotificationToMeRegardless = 'deliverNotificationToMeRegardless'; - static const close = 'close'; - static const respond = 'respond'; - static const vacationRuleAdded = 'vacationRuleAdded'; - static const selectTypeT = 'selectTypeT'; - static const notification = 'notification'; - static const selectNotification = 'selectNotification'; - static const ifAllSelectedYouWillSkip = 'ifAllSelectedYouWillSkip'; - static const applyForVacationRule = 'applyForVacationRule'; - static const step1 = 'step1'; - static const step2 = 'step2'; - static const step3 = 'step3'; - static const message = 'message'; - static const writeAMessage = 'writeAMessage'; - static const notificationReassign = 'notificationReassign'; - static const selectEmployee = 'selectEmployee'; - static const searchEmployeeForReplacement = 'searchEmployeeForReplacement'; - static const searchForEmployee = 'searchForEmployee'; - static const pleaseSpecifyEndTime = 'pleaseSpecifyEndTime'; - static const pleaseSelectNotificationReassign = 'pleaseSelectNotificationReassign'; - static const pleaseSelectEmployeeForReplacement = 'pleaseSelectEmployeeForReplacement'; - static const pleaseSelectAction = 'pleaseSelectAction'; - static const pleaseSelectDate = 'pleaseSelectDate'; - static const todayAttendance = 'todayAttendance'; - static const viewAttendance = 'viewAttendance'; - static const teamMembers = 'teamMembers'; - static const profileDetails = 'profileDetails'; - static const noResultsFound = 'noResultsFound'; - static const searchBy = 'searchBy'; - static const myTeamMembers = 'myTeamMembers'; - static const save = 'save'; - static const TurnNotificationsFor = 'TurnNotificationsFor'; - static const worklistSettings = 'worklistSettings'; - static const absenceType = 'absenceType'; - static const absenceCategory = 'absenceCategory'; - static const days = 'days'; - static const hours = 'hours'; - static const approvalStatus = 'approvalStatus'; - static const absenceStatus = 'absenceStatus'; - static const subordinateLeave = 'subordinateLeave'; - static const numberDays = 'numberDays'; - static const poweredBy = 'poweredBy'; - static const cloudSolutions = 'cloudSolutions'; - static const selectTemplate = 'selectTemplate'; - static const myPostedAds = 'myPostedAds'; - static const browseCategories = 'browseCategories'; - static const searchItems = 'searchItems'; - static const offerAndDiscounts = 'offerAndDiscounts'; - static const offerValid = 'offerValid'; - static const offerExpired = 'offerExpired'; - static const whatAreYouOffering = 'whatAreYouOffering'; - static const selectCategory = 'selectCategory'; - static const inProgress = 'inProgress'; - static const locked = 'locked'; - static const addDetails = 'addDetails'; - static const reviewAndSell = 'reviewAndSell'; - static const itemTitle = 'itemTitle'; - static const itemCondition = 'itemCondition'; - static const used = 'used'; - static const region = 'region'; - static const selectRegion = 'selectRegion'; - static const itemPrice = 'itemPrice'; - static const itemPhotos = 'itemPhotos'; - static const itemInfo = 'itemInfo'; - static const uploadAttachment = 'uploadAttachment'; - static const selectFromGalleryOrOpenCamera = 'selectFromGalleryOrOpenCamera'; - static const openCamera = 'openCamera'; - static const uploadFromGallery = 'uploadFromGallery'; - static const name = 'name'; - static const email = 'email'; - static const noHistoryAvailable = 'noHistoryAvailable'; - static const purchaseRequisition = 'purchaseRequisition'; - static const moveOrder = 'moveOrder'; - static const humanResource = 'humanResource'; - static const purchaseOrder = 'purchaseOrder'; - static const ITGForms = 'ITGForms'; - static const itemCreation = 'itemCreation'; - static const stamp = 'stamp'; - static const addFavoriteList = 'addFavoriteList'; - static const feedbackUserExperience = 'feedbackUserExperience'; - static const rateUI = 'rateUI'; - static const submitSurvey = 'submitSurvey'; - static const typeHere = 'typeHere'; - static const infoDetail = 'infoDetail'; - static const amount_detail = 'amount_detail'; - static const currentBalance = 'currentBalance'; - static const currentLeaveBalance = 'currentLeaveBalance'; - static const calculatedDays = 'calculatedDays'; - static const totalDays = 'totalDays'; - static const usedBalance = 'usedBalance'; - static const infants = 'infants'; - static const child = 'child'; - static const adult = 'adult'; - static const updateMember = 'updateMember'; - static const fieldIsEmpty = 'fieldIsEmpty'; - static const pleaseEnterComments = 'pleaseEnterComments'; - static const skip = 'skip'; - static const typeCurrentPasswordBelow = 'typeCurrentPasswordBelow'; - static const currentPassword = 'currentPassword'; - static const concurrentReports = 'concurrentReports'; - static const profile_reset_password_label = 'profile.reset_password.label'; - static const profile_reset_password_username = 'profile.reset_password.username'; - static const profile_reset_password_password = 'profile.reset_password.password'; - static const profile_reset_password = 'profile.reset_password'; - static const profile_profileCompletionPer = 'profile.profileCompletionPer'; - static const profile_completeProfile = 'profile.completeProfile'; - static const profile_personalInformation = 'profile.personalInformation'; - static const profile_basicDetails = 'profile.basicDetails'; - static const profile_address = 'profile.address'; - static const profile_contactDetails = 'profile.contactDetails'; - static const profile_familyDetails = 'profile.familyDetails'; - static const profile_effectiveDate = 'profile.effectiveDate'; - static const profile_country = 'profile.country'; - static const profile = 'profile'; - static const clicked = 'clicked'; - static const gender_with_arg = 'gender.with_arg'; - static const gender = 'gender'; - static const reset_locale = 'reset_locale'; - static const chat = 'chat'; - static const mychats = 'mychats'; - static const advancedSearch = 'advancedSearch'; - static const openNot = 'openNot'; - static const fyi = 'fyi'; - static const toDo = 'toDo'; - static const all = 'all'; - static const meNot = 'meNot'; - static const view = 'view'; - static const fromUserName = 'fromUserName'; - static const sentDate = 'sentDate'; - static const itemTypeDisplayName = 'itemTypeDisplayName'; - static const none = 'none'; - static const createNewChat = 'createNewChat'; - static const brainMarathon = 'brainMarathon'; - static const contestTopicAbout = 'contestTopicAbout'; - static const gameDate = 'gameDate'; - static const gameTime = 'gameTime'; - static const joinMarathon = 'joinMarathon'; - static const joinDemoMarathon = 'joinDemoMarathon'; - static const minutes = 'minutes'; - static const seconds = 'seconds'; - static const note = 'note'; - static const demoMarathonNoteP1 = 'demoMarathonNoteP1'; - static const demoMarathonNoteP2 = 'demoMarathonNoteP2'; - static const demoMarathonNoteP3 = 'demoMarathonNoteP3'; - static const sponsoredBy = 'sponsoredBy'; - static const question = 'question'; - static const marathoners = 'marathoners'; - static const prize = 'prize'; - static const winnerSelection = 'winnerSelection'; - static const qualifiers = 'qualifiers'; - static const getReadyForContest = 'getReadyForContest'; - static const winnerSelectedRandomly = 'winnerSelectedRandomly'; - static const fingersCrossed = 'fingersCrossed'; - static const congrats = 'congrats'; - static const allQuestionsCorrect = 'allQuestionsCorrect'; - static const otp = 'otp'; - static const verification = 'verification'; - static const resend = 'resend'; - static const codeExpire = 'codeExpire'; - static const typeheretoreply = 'typeheretoreply'; - static const favorite = 'favorite'; - static const searchfromchat = 'searchfromchat'; - static const yourAnswerCorrect = 'yourAnswerCorrect'; - static const youMissedTheQuestion = 'youMissedTheQuestion'; - static const wrongAnswer = 'wrongAnswer'; - static const oops = 'oops'; - static const winner = 'winner'; - static const youWantToLeaveMarathon = 'youWantToLeaveMarathon'; - static const ourSponsor = 'ourSponsor'; - static const startingIn = 'startingIn'; - static const youAreOutOfContest = 'youAreOutOfContest'; - -} diff --git a/lib/main.dart b/lib/main.dart index 4709be1..aa9f933 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/codegen_loader.g.dart'; import 'package:mohem_flutter_app/models/post_params_model.dart'; @@ -32,11 +33,15 @@ class MyHttpOverrides extends HttpOverrides { } } +bool isTablet = false; + Future main() async { WidgetsFlutterBinding.ensureInitialized(); await EasyLocalization.ensureInitialized(); AppState().setPostParamsInitConfig(); HttpOverrides.global = MyHttpOverrides(); + isTablet = MediaQueryData.fromWindow(WidgetsBinding.instance.window).size.shortestSide >= ApiConsts.tabletMinLength; + runApp( EasyLocalization( supportedLocales: const [ diff --git a/lib/models/marathon/winner_model.dart b/lib/models/marathon/winner_model.dart new file mode 100644 index 0000000..5663bf1 --- /dev/null +++ b/lib/models/marathon/winner_model.dart @@ -0,0 +1,17 @@ +class WinnerModel { + String? id; + String? marathoneId; + String? employeeId; + String? nameEn; + String? nameAr; + + WinnerModel({id, marathoneId, employeeId, nameEn, nameAr}); + + WinnerModel.fromJson(Map json) { + id = json['id']; + marathoneId = json['marathoneId']; + employeeId = json['employeeId']; + nameEn = json['nameEn']; + nameAr = json['nameAr']; + } +} diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 1cf8efd..2d778b9 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -9,6 +9,7 @@ import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; +import 'package:mohem_flutter_app/models/marathon/winner_model.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:video_player/video_player.dart'; @@ -22,10 +23,10 @@ class MarathonProvider extends ChangeNotifier { QuestionModel currentQuestion = QuestionModel(); List answerStatusesList = []; QuestionCardStatus questionCardStatus = QuestionCardStatus.question; - + List? selectedWinners; int? selectedOptionIndex; String? selectedOptionId; - int totalQualifiers = 0; + int? totalQualifiers; bool _isLoading = false; @@ -110,6 +111,7 @@ class MarathonProvider extends ChangeNotifier { //****************TIMERS********** + int sponsorsSecondsCounter = 0; int totalSponsorVideoSeconds = 0; Timer timerForSponsorVideo = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); @@ -118,6 +120,7 @@ class MarathonProvider extends ChangeNotifier { timerForSponsorVideo = Timer.periodic( oneSec, (Timer timer) async { + sponsorsSecondsCounter++; if (totalSponsorVideoSeconds == 0) { timer.cancel(); notifyListeners(); @@ -134,12 +137,15 @@ class MarathonProvider extends ChangeNotifier { int totalSecondsToWaitForMarathon = 20; Timer timerToWaitForMarathon = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); - void startTimerToMarathon(BuildContext context) { + void startTimerToWaitForMarathon() { const Duration oneSec = Duration(seconds: 1); timerToWaitForMarathon = Timer.periodic( oneSec, (Timer timer) async { if (totalSecondsToWaitForMarathon == 0) { + callNextQuestionApi(); + timer.cancel(); + return; } else { totalSecondsToWaitForMarathon--; } @@ -163,6 +169,8 @@ class MarathonProvider extends ChangeNotifier { } if (totalCurrentQuestionTime == currentGapTime) { + totalCurrentQuestionTime--; + updateCardStatusToAnswer(); await callSubmitOptionApi().then((bool value) async { @@ -175,6 +183,7 @@ class MarathonProvider extends ChangeNotifier { if (totalCurrentQuestionTime == 0) { updateCardData(); if (currentQuestionNumber == marathonDetailModel.totalQuestions! - 1) { + callGetQualifiersApi(); updateQuestionCardStatus(QuestionCardStatus.findingWinner); timer.cancel(); cancelTimer(); @@ -182,7 +191,9 @@ class MarathonProvider extends ChangeNotifier { } return; } else { - totalCurrentQuestionTime--; + if (totalCurrentQuestionTime != currentGapTime) { + totalCurrentQuestionTime--; + } } notifyListeners(); @@ -214,7 +225,17 @@ class MarathonProvider extends ChangeNotifier { //****************FUNCTIONS********* Future callSubmitOptionApi() async { - return await MarathonApiClient().submitSelectedOption(selectedAnswerId: selectedOptionId); + return await MarathonApiClient().submitSelectedOption(marathonId: marathonDetailModel.id!, questionId: currentQuestion.id, selectedAnswerId: selectedOptionId); + } + + Future callGetQualifiersApi() async { + totalQualifiers = await MarathonApiClient().getQualifiers(marathonId: marathonDetailModel.id!); + notifyListeners(); + } + + Future callGetSelectedWinnersApi() async { + selectedWinners = await MarathonApiClient().getSelectedWinner(marathonId: marathonDetailModel.id!); + notifyListeners(); } // TODO: here I need to add a logic where I should call this function for Api but for the 1st question it should behave differently @@ -222,6 +243,7 @@ class MarathonProvider extends ChangeNotifier { Future callNextQuestionApi() async { if (currentQuestionNumber < marathonDetailModel.totalQuestions!) { if (currentQuestionNumber == 0) { + Utils.showLoading(AppRoutes.navigatorKey.currentContext!); currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: null, marathonId: marathonDetailModel.id!))!; if (Utils.isLoading) { Utils.hideLoading(AppRoutes.navigatorKey.currentContext!); @@ -239,8 +261,7 @@ class MarathonProvider extends ChangeNotifier { void updateCardData() { if (currentQuestionNumber > 0) { - print("swiped it away!!"); - swipeCardLeft(); + swiperController.swipeLeft(); } selectedOptionIndex = null; currentQuestionNumber++; @@ -249,6 +270,7 @@ class MarathonProvider extends ChangeNotifier { currentGapTime = currentQuestion.nextQuestGap!; totalMarathoners = currentQuestion.remainingParticipantCount!; questionCardStatus = QuestionCardStatus.question; + notifyListeners(); } void populateQuestionStatusesList() { @@ -316,20 +338,21 @@ class MarathonProvider extends ChangeNotifier { } } - void swipeCardLeft() { - swiperController.swipeLeft(); - notifyListeners(); - } - void resetValues() async { _currentQuestionNumber = 0; cardContentList.clear(); timerForWinnerSelection.cancel(); + timerForSponsorVideo.cancel(); + timerToWaitForMarathon.cancel(); timerForQuestion.cancel(); _isMarathonCompleted = false; + isUserOutOfGame = false; totalCurrentQuestionTime = 0; + sponsorsSecondsCounter = 0; + totalSponsorVideoSeconds = 0; + totalSecondsToWaitForMarathon = 20; + currentGapTime = 0; currentQuestion = QuestionModel(); - notifyListeners(); } @@ -354,40 +377,23 @@ class MarathonProvider extends ChangeNotifier { }); } - Future buildConnectionWithSignalR(BuildContext context) async { - Utils.showLoading(context); + Future onJoinMarathonPressed(BuildContext context) async { try { + Utils.showLoading(context); resetValues(); - // await MarathonApiClient().buildHubConnection(context, marathonDetailModel.sponsors!.first.sponsorPrizes!.first.id!); + int? remainingTime = await MarathonApiClient().joinMarathonAsParticipant(); + if (remainingTime != null) { + totalSecondsToWaitForMarathon = remainingTime; + notifyListeners(); + startTimerToWaitForMarathon(); + Navigator.pushReplacementNamed(context, AppRoutes.marathonWaitingScreen); + } } catch (e) { if (kDebugMode) { - print("error in buildConnectionWithSignalR: ${e.toString()}"); + print("error in onJoinMarathonPressed: ${e.toString()}"); } Utils.hideLoading(context); Utils.confirmDialog(context, e.toString()); } } - - Future onJoinMarathonPressed(BuildContext context) async { - //TODO: here we need to put a check to make sure we should not display sponsor when remaining time to marathon is less than 30 seconds plus video duration e.g. 30 seconds + video duration time - // if (marathonDetailModel.sponsors!.first.video != null && marathonDetailModel.sponsors!.first.video != "") { - if (false) { - await initializeVideoPlayer().then((_) { - startTimerForSponsorVideo(); - Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); - }); - } else { - try { - Utils.showLoading(context); - bool isJoined = await MarathonApiClient().joinMarathonAsParticipant(); - if (isJoined) { - print("joined"); - callNextQuestionApi(); - } - } catch (e, s) { - Utils.hideLoading(context); - Utils.confirmDialog(context, e.toString()); - } - } - } } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index e14f8c9..2ae3f64 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -8,7 +8,7 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; -import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; @@ -21,6 +21,7 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_qualifiers_contai import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card_builder.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; import 'package:provider/provider.dart'; class MarathonScreen extends StatelessWidget { @@ -63,22 +64,28 @@ class MarathonScreen extends StatelessWidget { SizedBox( height: 50, child: Stack( - children: [ + children: [ Align( alignment: Alignment.center, child: SvgPicture.asset("assets/images/winner_ribbon.svg", height: 50), ), Align( alignment: Alignment.center, - child: LocaleKeys.winner.tr().toText32(color: MyColors.white, isBold: true).paddingOnly(top: 07), + child: LocaleKeys.winner.tr().toText32(color: MyColors.white, isBold: true, isCentered: true).paddingOnly(top: 07), ) ], ), ), 12.height, - "Muhammad Shrouff".toText22(color: MyColors.grey3AColor), - "837436".toText22(color: MyColors.grey57Color), - 80.height, + if (provider.selectedWinners != null) ...[ + (AppState().isArabic(context) ? provider.selectedWinners!.first.nameEn : provider.selectedWinners!.first.nameEn)!.toText22( + color: MyColors.grey3AColor, + isCentered: true, + ), + 8.height, + provider.selectedWinners!.first.employeeId!.toText22(color: MyColors.grey57Color), + ], + 60.height, if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ Row( mainAxisAlignment: MainAxisAlignment.center, @@ -118,12 +125,12 @@ class MarathonScreen extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn! : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr!) + (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr! : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn!) .toText17(isBold: true, color: MyColors.white), AppState().memberInformationList!.eMPLOYEENUMBER!.toText17(isBold: true, color: MyColors.white), ], ), - ).paddingOnly(left: 20, right: 20, top: 12, bottom: 20); + ).paddingOnly(left: 20, right: 20, top: 12, bottom: 10); } @override @@ -135,10 +142,38 @@ class MarathonScreen extends StatelessWidget { context, title: LocaleKeys.brainMarathon.tr(), onHomeTapped: () { - Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); + if (provider.questionCardStatus == QuestionCardStatus.winnerFound) { + provider.resetValues(); + Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + } else { + showDialog( + context: context, + builder: (BuildContext context) => ConfirmDialog( + message: LocaleKeys.youWantToLeaveMarathon.tr(), + onTap: () { + provider.resetValues(); + Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ), + ); + } }, onBackTapped: () { - Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); + if (provider.questionCardStatus == QuestionCardStatus.winnerFound) { + provider.resetValues(); + Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + } else { + showDialog( + context: context, + builder: (BuildContext context) => ConfirmDialog( + message: LocaleKeys.youWantToLeaveMarathon.tr(), + onTap: () { + provider.resetValues(); + Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ), + ); + } }, ), body: SingleChildScrollView( @@ -156,7 +191,7 @@ class MarathonScreen extends StatelessWidget { getNameContainer(context), ], QuestionCardBuilder( - onQuestion: (BuildContext context) => QuestionCard(provider: provider), + onQuestion: (BuildContext context) => const QuestionCard(), onCompleted: (BuildContext context) => CustomStatusWidget( asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), diff --git a/lib/ui/marathon/marathon_sponsor_video_screen.dart b/lib/ui/marathon/marathon_sponsor_video_screen.dart index c81f59b..12d5949 100644 --- a/lib/ui/marathon/marathon_sponsor_video_screen.dart +++ b/lib/ui/marathon/marathon_sponsor_video_screen.dart @@ -25,6 +25,9 @@ class SponsorVideoScreen extends StatelessWidget { return WillPopScope( onWillPop: () { provider.videoController.dispose(); + provider.sponsorsSecondsCounter = 0; + provider.totalSponsorVideoSeconds = 0; + provider.timerForSponsorVideo.cancel(); return Future.value(true); }, child: Scaffold( @@ -52,9 +55,11 @@ class SponsorVideoScreen extends StatelessWidget { child: provider.totalSponsorVideoSeconds == 0 ? InkWell( onTap: () { - Navigator.pop(context); provider.videoController.dispose(); - provider.buildConnectionWithSignalR(AppRoutes.navigatorKey.currentState!.overlay!.context); + provider.sponsorsSecondsCounter = 0; + provider.totalSponsorVideoSeconds = 0; + provider.timerForSponsorVideo.cancel(); + Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); }, child: const Icon(Icons.close, size: 12), ) @@ -64,24 +69,30 @@ class SponsorVideoScreen extends StatelessWidget { ), ), ).paddingOnly(top: 20, right: 18), - Align( - alignment: Alignment.topLeft, - child: InkWell( - onTap: () { - Navigator.pop(context); - provider.videoController.dispose(); - provider.buildConnectionWithSignalR(AppRoutes.navigatorKey.currentState!.overlay!.context); - }, - child: Container( - decoration: BoxDecoration(color: MyColors.white, borderRadius: BorderRadius.circular(15)), - padding: const EdgeInsets.symmetric(vertical: 3, horizontal: 6), - child: Directionality( - textDirection: ui.TextDirection.ltr, - child: LocaleKeys.skip.tr().toText11(color: MyColors.darkTextColor), - ), - ), - ), - ).paddingOnly(top: 20, left: 18), + + //TODO: WE WILL INCREASE THIS 2 BEFORE GOING LIVE + provider.sponsorsSecondsCounter >= 2 + ? Align( + alignment: Alignment.topLeft, + child: InkWell( + onTap: () { + provider.videoController.dispose(); + provider.sponsorsSecondsCounter = 0; + provider.totalSponsorVideoSeconds = 0; + provider.timerForSponsorVideo.cancel(); + Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); + }, + child: Container( + decoration: BoxDecoration(color: MyColors.white, borderRadius: BorderRadius.circular(15)), + padding: const EdgeInsets.symmetric(vertical: 3, horizontal: 6), + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: LocaleKeys.skip.tr().toText11(color: MyColors.darkTextColor), + ), + ), + ), + ).paddingOnly(top: 20, left: 18) + : const SizedBox(), ], ), ), diff --git a/lib/ui/marathon/marathon_waiting_screen.dart b/lib/ui/marathon/marathon_waiting_screen.dart index 27f0c08..7191ff2 100644 --- a/lib/ui/marathon/marathon_waiting_screen.dart +++ b/lib/ui/marathon/marathon_waiting_screen.dart @@ -4,12 +4,13 @@ import 'package:lottie/lottie.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; -import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; import 'package:provider/provider.dart'; class MarathonWaitingScreen extends StatelessWidget { @@ -18,44 +19,90 @@ class MarathonWaitingScreen extends StatelessWidget { @override Widget build(BuildContext context) { MarathonProvider provider = context.watch(); - return Scaffold( - appBar: AppBarWidget( - context, - title: LocaleKeys.brainMarathon.tr(), - onHomeTapped: () { - Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); - }, - onBackTapped: () { - Utils.confirmDialog(context, LocaleKeys.youWantToLeaveMarathon.tr()); - }, - ), - body: Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: double.infinity, - margin: const EdgeInsets.all(21), - decoration: MyDecorations.shadowDecoration, - child: Stack( - children: [ - Align( - child: Lottie.asset(MyLottieConsts.marathonWaiting, height: 200), - ), - Align( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - LocaleKeys.startingIn.tr().toText16(), - "00:${provider.totalSecondsToWaitForMarathon < 10 ? "0${provider.totalSecondsToWaitForMarathon}" : provider.totalSecondsToWaitForMarathon}" - .toText18(color: provider.totalSecondsToWaitForMarathon < 5 ? MyColors.redColor : MyColors.black), - ], + return WillPopScope( + onWillPop: () { + showDialog( + context: context, + builder: (BuildContext context) => ConfirmDialog( + message: LocaleKeys.youWantToLeaveMarathon.tr(), + onTap: () { + provider.resetValues(); + Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ), + ); + return Future.value(false); + }, + child: Scaffold( + appBar: AppBarWidget( + context, + title: LocaleKeys.brainMarathon.tr(), + onHomeTapped: () { + showDialog( + context: context, + builder: (BuildContext context) => ConfirmDialog( + message: LocaleKeys.youWantToLeaveMarathon.tr(), + onTap: () { + provider.resetValues(); + Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ), + ); + }, + onBackTapped: () { + showDialog( + context: context, + builder: (BuildContext context) => ConfirmDialog( + message: LocaleKeys.youWantToLeaveMarathon.tr(), + onTap: () { + provider.resetValues(); + Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ), + ); + }, + ), + body: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: double.infinity, + margin: const EdgeInsets.all(21), + decoration: MyDecorations.shadowDecoration, + child: Stack( + children: [ + Align( + child: Lottie.asset(MyLottieConsts.marathonWaiting, height: 200), + ), + Align( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + LocaleKeys.startingIn.tr().toText16(), + provider.totalSecondsToWaitForMarathon.toString().toText18(color: provider.totalSecondsToWaitForMarathon < 5 ? MyColors.redColor : MyColors.black), + ], + ), + ), + Align( + child: Column( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + InkWell( + onTap: () { + provider.callNextQuestionApi(); + provider.timerToWaitForMarathon.cancel(); + }, + child: "Join Now".toText16(), + ).paddingOnly(bottom: 20), + ], + ), ), - ), - ], - ), - ).expanded, - ], + ], + ), + ).expanded, + ], + ), ), ); } diff --git a/lib/ui/marathon/marathon_winner_selection.dart b/lib/ui/marathon/marathon_winner_selection.dart deleted file mode 100644 index ed49f04..0000000 --- a/lib/ui/marathon/marathon_winner_selection.dart +++ /dev/null @@ -1,90 +0,0 @@ -import 'package:easy_localization/easy_localization.dart'; -import 'package:flutter/material.dart'; -import 'package:lottie/lottie.dart'; -import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/lottie_consts.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; -import 'package:mohem_flutter_app/extensions/int_extensions.dart'; -import 'package:mohem_flutter_app/extensions/string_extensions.dart'; -import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; -import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/custom_status_widget.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_qualifiers_container.dart'; -import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; -import 'package:provider/provider.dart'; - -class MarathonWinnerSelection extends StatelessWidget { - const MarathonWinnerSelection({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - MarathonProvider provider = context.read(); - return Scaffold( - appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), - body: SingleChildScrollView( - child: Column( - children: [ - 20.height, - QualifiersContainer(provider: provider,).paddingOnly(left: 21, right: 21), - 12.height, - InkWell( - onTap: () { - Navigator.pushNamed(context, AppRoutes.marathonWinnerScreen); - }, - child: Container( - height: 50, - decoration: BoxDecoration( - color: MyColors.greenColor, - borderRadius: BorderRadius.circular(15), - boxShadow: [ - BoxShadow( - color: const Color(0xff000000).withOpacity(.05), - blurRadius: 26, - offset: const Offset(0, -3), - ), - ], - ), - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - "Muhammad Shrouff".toText17(isBold: true, color: MyColors.white), - "837436".toText17(isBold: true, color: MyColors.white), - ], - ), - ), - ).paddingOnly(left: 20, right: 20), - ), - CustomStatusWidget( - asset: Lottie.asset( - MyLottieConsts.winnerLottie, - height: 168, - ), - title: Text( - LocaleKeys.fingersCrossed.tr(), - style: const TextStyle( - height: 27 / 27, - color: MyColors.greenColor, - fontSize: 27, - letterSpacing: -1.08, - fontWeight: FontWeight.w600, - ), - ), - subTitle: Text( - LocaleKeys.winnerSelectedRandomly.tr(), - textAlign: TextAlign.center, - style: const TextStyle( - color: MyColors.darkTextColor, - fontSize: 18, - letterSpacing: -0.72, - fontWeight: FontWeight.w600, - ), - )).paddingOnly(left: 21, right: 21, top: 20, bottom: 20), - ], - ), - ), - ); - } -} diff --git a/lib/ui/marathon/widgets/countdown_timer.dart b/lib/ui/marathon/widgets/countdown_timer.dart index cfa3b1b..3a33697 100644 --- a/lib/ui/marathon/widgets/countdown_timer.dart +++ b/lib/ui/marathon/widgets/countdown_timer.dart @@ -8,6 +8,7 @@ import 'package:flutter_countdown_timer/current_remaining_time.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; class BuildCountdownTimer extends StatelessWidget { @@ -29,9 +30,10 @@ class BuildCountdownTimer extends StatelessWidget { letterSpacing: -0.4, ); - final TextStyle styleDigitHome = const TextStyle( + final TextStyle styleDigitHome = TextStyle( height: 22 / 27, color: MyColors.white, + fontSize: isTablet ? 30 : 15, fontStyle: FontStyle.italic, letterSpacing: -1.44, fontWeight: FontWeight.bold, @@ -53,6 +55,33 @@ class BuildCountdownTimer extends StatelessWidget { fontWeight: FontWeight.bold, ); + Widget buildSeparator() { + return AutoSizeText( + " : ", + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ); + } + + Widget getTimeDigit(String text) { + return AutoSizeText( + text, + maxFontSize: 24, + minFontSize: 20, + style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + ); + } + + Widget getTimeText(String text) { + return AutoSizeText( + text, + minFontSize: 7, + maxFontSize: 8, + style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + ); + } + Widget buildEmptyWidget() { return Directionality( textDirection: ui.TextDirection.ltr, @@ -63,70 +92,29 @@ class BuildCountdownTimer extends StatelessWidget { children: [ Column( children: [ - // todo @faiz: Make a separate method and pass string , so we can minimize code replication - AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.days.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), + getTimeDigit("00"), + getTimeText(LocaleKeys.days.tr()), ], ), buildSeparator(), Column( children: [ - AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.hours.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), + getTimeDigit("00"), + getTimeText(LocaleKeys.hours.tr()), ], ), buildSeparator(), Column( children: [ - AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.minutes.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), + getTimeDigit("00"), + getTimeText(LocaleKeys.minutes.tr()), ], ), buildSeparator(), Column( children: [ - AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.seconds.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), + getTimeDigit("00"), + getTimeText(LocaleKeys.seconds.tr()), ], ), ], @@ -134,15 +122,6 @@ class BuildCountdownTimer extends StatelessWidget { ); } - Widget buildSeparator() { - return AutoSizeText( - " : ", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ); - } - Widget buildCountdownTimer(CurrentRemainingTime? time) { if (time == null) { if (!provider.itsMarathonTime) { @@ -162,98 +141,29 @@ class BuildCountdownTimer extends StatelessWidget { children: [ Column( children: [ - // todo @faiz: Make a separate method and pass value and string , so we can minimize code replication - time.days == null - ? AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ) - : AutoSizeText( - time.days! < 10 ? "0${time.days.toString()}" : time.days.toString(), - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.days.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), + time.days == null ? getTimeDigit("00") : getTimeDigit(time.days! < 10 ? "0${time.days.toString()}" : time.days.toString()), + getTimeText(LocaleKeys.days.tr()), ], ), buildSeparator(), Column( children: [ - time.hours == null - ? AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ) - : AutoSizeText( - time.hours! < 10 ? "0${time.hours.toString()}" : time.hours.toString(), - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.hours.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), + time.hours == null ? getTimeDigit("00") : getTimeDigit(time.hours! < 10 ? "0${time.hours.toString()}" : time.hours.toString()), + getTimeText(LocaleKeys.hours.tr()), ], ), buildSeparator(), Column( children: [ - time.min == null - ? AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ) - : AutoSizeText( - time.min! < 10 ? "0${time.min.toString()}" : time.min.toString(), - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.minutes.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), + time.min == null ? getTimeDigit("00") : getTimeDigit(time.min! < 10 ? "0${time.min.toString()}" : time.min.toString()), + getTimeText(LocaleKeys.minutes.tr()), ], ), buildSeparator(), Column( children: [ - time.sec == null - ? AutoSizeText( - "00", - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ) - : AutoSizeText( - time.sec! < 10 ? "0${time.sec.toString()}" : time.sec.toString(), - maxFontSize: 24, - minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, - ), - AutoSizeText( - LocaleKeys.seconds.tr(), - minFontSize: 7, - maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, - ), + time.sec == null ? getTimeDigit("00") : getTimeDigit(time.sec! < 10 ? "0${time.sec.toString()}" : time.sec.toString()), + getTimeText(LocaleKeys.seconds.tr()), ], ), ], diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index d805362..2be08a9 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -1,16 +1,18 @@ import 'dart:math' as math; -import 'package:auto_size_text/auto_size_text.dart'; import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; import 'package:provider/provider.dart'; @@ -26,10 +28,10 @@ class MarathonBanner extends StatelessWidget { return provider.marathonDetailModel.startTime != null ? Container( decoration: MyDecorations.shadowDecoration, - height: MediaQuery.of(context).size.height * 0.11, + height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, clipBehavior: Clip.antiAlias, child: Stack( - children: [ + children: [ Transform( alignment: Alignment.center, transform: Matrix4.rotationY( @@ -48,8 +50,8 @@ class MarathonBanner extends StatelessWidget { child: Transform.rotate( angle: 10, child: Container( - width: 65, - height: 32, + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, color: MyColors.darkDigitColor, ), ), @@ -60,8 +62,8 @@ class MarathonBanner extends StatelessWidget { child: Transform.rotate( angle: 15, child: Container( - width: 65, - height: 32, + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, color: MyColors.darkDigitColor, ), ), @@ -70,7 +72,7 @@ class MarathonBanner extends StatelessWidget { width: double.infinity, height: double.infinity, child: Row( - children: [ + children: [ const Expanded( flex: 3, child: SizedBox( @@ -92,28 +94,27 @@ class MarathonBanner extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ AppState().isArabic(context) ? 0.height : 5.height, - AutoSizeText( + Text( LocaleKeys.getReadyForContest.tr(), - minFontSize: 08, - maxFontSize: 11, style: TextStyle( + fontSize: isTablet ? 20 : 11, fontStyle: FontStyle.italic, fontWeight: FontWeight.w600, color: MyColors.white.withOpacity(0.83), letterSpacing: -0.4, ), ), - AutoSizeText( + Text( AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", style: TextStyle( fontStyle: FontStyle.italic, - fontSize: 19, + fontSize: isTablet ? 30 : 19, fontWeight: FontWeight.bold, color: MyColors.white.withOpacity(0.83), height: 32 / 22, ), ), - 3.height, + isTablet ? 10.height : 3.height, BuildCountdownTimer( timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, provider: provider, @@ -135,18 +136,18 @@ class MarathonBanner extends StatelessWidget { ? Align( alignment: Alignment.topRight, child: SizedBox( - height: 20, - width: 35, + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, child: Transform.rotate( angle: math.pi / 4.5, child: Text( LocaleKeys.brainMarathon.tr(), textAlign: TextAlign.center, maxLines: 2, - style: const TextStyle( + style: TextStyle( color: MyColors.white, fontWeight: FontWeight.bold, - fontSize: 6, + fontSize: isTablet ? 8 : 6, height: 1.2, ), ), @@ -156,18 +157,18 @@ class MarathonBanner extends StatelessWidget { : Align( alignment: Alignment.topLeft, child: SizedBox( - height: 20, - width: 35, + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, child: Transform.rotate( angle: -math.pi / 4.5, child: Text( LocaleKeys.brainMarathon.tr(), textAlign: TextAlign.center, maxLines: 2, - style: const TextStyle( + style: TextStyle( color: MyColors.kWhiteColor, fontWeight: FontWeight.bold, - fontSize: 6, + fontSize: isTablet ? 8 : 6, height: 1.2, ), ), @@ -181,7 +182,7 @@ class MarathonBanner extends StatelessWidget { child: RotatedBox( quarterTurns: 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(15), + ).paddingAll(isTablet ? 20 : 15), ) : Positioned( bottom: 0, @@ -189,12 +190,31 @@ class MarathonBanner extends StatelessWidget { child: RotatedBox( quarterTurns: 2, child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(15), + ).paddingAll(isTablet ? 20 : 15), ), ], - ).onPress( - () => Navigator.pushNamed(context, AppRoutes.marathonIntroScreen), - ), + ).onPress(() async { + int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; + + if (remainingTimeInMinutes > 2) { + Utils.showLoading(context); + try { + await provider.initializeVideoPlayer().then((_) { + Utils.hideLoading(context); + provider.startTimerForSponsorVideo(); + Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); + }); + } catch (e, s) { + if (kDebugMode) { + print("Error in VideoPlayer: ${e.toString()}"); + } + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + } + } else { + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + } + }), ) : const SizedBox(); } diff --git a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart index 0308027..dc9d7e4 100644 --- a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart +++ b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart @@ -20,6 +20,7 @@ class _QualifiersContainerState extends State { @override void initState() { widget.provider.startTimerForWinnerSelection(); + widget.provider.callGetSelectedWinnersApi(); super.initState(); } @@ -36,13 +37,14 @@ class _QualifiersContainerState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.winnerSelection.tr().toText21(color: MyColors.grey3AColor), - "00:${widget.provider.totalSecondsToWaitForWinner < 10 ? "0${widget.provider.totalSecondsToWaitForWinner}" : widget.provider.totalSecondsToWaitForWinner}".toText18(color: MyColors.redColor), + "00:${widget.provider.totalSecondsToWaitForWinner < 10 ? "0${widget.provider.totalSecondsToWaitForWinner}" : widget.provider.totalSecondsToWaitForWinner}" + .toText18(color: MyColors.redColor), ], ), 10.height, Row( children: [ - widget.provider.totalQualifiers.toString().toText30(color: MyColors.greenColor, isBold: true), + widget.provider.totalQualifiers != null ? widget.provider.totalQualifiers.toString().toText30(color: MyColors.greenColor, isBold: true) : const SizedBox(), 2.width, LocaleKeys.qualifiers.tr().toText16(color: MyColors.greenColor), ], diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index 4009983..5f419c5 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -1,4 +1,5 @@ import 'package:appinio_swiper/appinio_swiper.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:lottie/lottie.dart'; @@ -6,38 +7,35 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:provider/provider.dart'; class QuestionCard extends StatelessWidget { - final MarathonProvider provider; - - const QuestionCard({Key? key, required this.provider}) : super(key: key); + const QuestionCard({Key? key}) : super(key: key); @override Widget build(BuildContext context) { + MarathonProvider provider = context.read(); return CupertinoPageScaffold( child: provider.cardContentList.isEmpty ? Lottie.asset(MyLottieConsts.hourGlassLottie, height: 250).paddingOnly(top: 50) : SizedBox( height: 440, width: double.infinity, - child: Consumer( - builder: (BuildContext context, MarathonProvider provider, _) { - return AppinioSwiper( - duration: const Duration(milliseconds: 400), - padding: EdgeInsets.zero, - isDisabled: true, - controller: provider.swiperController, - unswipe: (int index, AppinioSwiperDirection direction) {}, - onSwipe: (int index, AppinioSwiperDirection direction) {}, - cards: provider.cardContentList, - ); - }, + child: AppinioSwiper( + duration: const Duration(milliseconds: 400), + padding: EdgeInsets.zero, + isDisabled: true, + controller: provider.swiperController, + unswipe: (int index, AppinioSwiperDirection direction) {}, + onSwipe: (int index, AppinioSwiperDirection direction) {}, + cards: provider.cardContentList, ), ), ); @@ -163,7 +161,7 @@ class AnswerTileForText extends StatelessWidget { MarathonProvider provider = context.watch(); return InkWell( onTap: () { - provider.isUserOutOfGame ? null : onAnswerTapped() ; + provider.isUserOutOfGame ? Utils.showToast(LocaleKeys.youAreOutOfContest.tr()) : onAnswerTapped(); }, child: Container( alignment: Alignment.centerLeft, From 4c53fcfdb6191b0a4b944c0832b8aa206946c12c Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 11 Dec 2022 17:20:39 +0300 Subject: [PATCH 201/302] updates & fixes --- lib/api/dashboard_api_client.dart | 2 +- lib/ui/leave_balance/add_leave_balance_screen.dart | 2 +- lib/ui/leave_balance/leave_balance_screen.dart | 4 ++-- .../dynamic_screens/dynamic_input_screen.dart | 7 ++++++- .../dynamic_screens/dynamic_listview_screen.dart | 2 +- lib/ui/my_team/create_request.dart | 8 ++++---- lib/widgets/balances_dashboard_widget.dart | 9 +++++---- 7 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index 3eab65b..076a353 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -69,7 +69,7 @@ class DashboardApiClient { String url = "${ApiConsts.erpRest}GET_ACCRUAL_BALANCES"; Map postParams = {"P_EFFECTIVE_DATE": effectiveDate}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { + if (empID != null && empID.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index 4df7233..ed8396f 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -160,7 +160,7 @@ class _AddLeaveBalanceScreenState extends State { Widget build(BuildContext context) { if (dynamicParams == null) { dynamicParams = ModalRoute.of(context)!.settings.arguments; - if (dynamicParams.isNotEmpty) { + if (dynamicParams!= null && dynamicParams.isNotEmpty) { AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; selectedEmp = dynamicParams; getAbsenceAttendanceTypes(); diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 07d6a7c..d1a64c6 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -57,7 +57,7 @@ class _LeaveBalanceState extends State { Widget build(BuildContext context) { if (dynamicParams == null) { dynamicParams = ModalRoute.of(context)!.settings.arguments; - if (dynamicParams.isNotEmpty) { + if (dynamicParams!= null && dynamicParams.isNotEmpty) { AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; selectedEmp = dynamicParams; getAbsenceTransactions(); @@ -75,7 +75,7 @@ class _LeaveBalanceState extends State { physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ - BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true), + BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true, selectedEmp), 12.height, absenceTransList == null ? const SizedBox() diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 62cafbd..2461e4b 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -621,7 +621,12 @@ class _DynamicInputScreenState extends State { ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ if (model.rEADONLY != "Y") - for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(value: i, child: Column( + children: [ + Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), + const PopupMenuDivider(), + ], + )), ], onSelected: (int popipIndex) async { ESERVICESDV eservicesdv = ESERVICESDV( diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index a670cbb..d1c21e1 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -91,7 +91,7 @@ class _DynamicListViewScreenState extends State { padding: const EdgeInsets.all(21), children: [ // HMG_TKT_NEW_EIT_SS Id used for ticket balance dashboard - if (isTicketRequest) ...[const BalancesDashboardWidget("Current Ticket Balance", false), 12.height], + if (isTicketRequest) ...[const BalancesDashboardWidget("Current Ticket Balance", false, ""), 12.height], getEITTransactionList == null ? const SizedBox() : (getEITTransactionList!.isEmpty diff --git a/lib/ui/my_team/create_request.dart b/lib/ui/my_team/create_request.dart index 53205c9..2b3e063 100644 --- a/lib/ui/my_team/create_request.dart +++ b/lib/ui/my_team/create_request.dart @@ -65,14 +65,14 @@ class _CreateRequestState extends State { return menus; } - void handleOnPress(context, Menus menu) { - + void handleOnPress(context, Menus menu) { if (menu.menuEntry.menuEntryType == "FUNCTION") { if (menu.menuEntry.requestType == "EIT") { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!)); + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER ?? '')); } else {} } else { - Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, arguments: ServicesMenuListScreenParams(menu.menuEntry.prompt!, menu.menuEntiesList, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER??'')); + Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, + arguments: ServicesMenuListScreenParams(menu.menuEntry.prompt!, menu.menuEntiesList, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER ?? '')); } return; } diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index 2c56c7e..9689de4 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -31,8 +31,9 @@ class BalancesDashboardWidget extends StatefulWidget { final String title; final List chartModelList; final bool isLeaveBalance; + final String selectedEmp; - const BalancesDashboardWidget(this.title, this.isLeaveBalance, {Key? key, this.chartModelList = const []}) : super(key: key); + const BalancesDashboardWidget(this.title, this.isLeaveBalance, this.selectedEmp, {Key? key, this.chartModelList = const []}) : super(key: key); @override _BalancesDashboardWidgetState createState() { @@ -62,8 +63,8 @@ class _BalancesDashboardWidgetState extends State { void changeAccrualDate() async { try { - Utils.showLoading(context); - List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime), empID: selectedEmp); + // Utils.showLoading(context); + List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime), empID: widget.selectedEmp); if (accrualList.isNotEmpty) { if (widget.isLeaveBalance) { leaveBalanceAccrual = accrualList[0]; @@ -79,7 +80,7 @@ class _BalancesDashboardWidgetState extends State { ]; } } - Utils.hideLoading(context); + // Utils.hideLoading(context); setState(() {}); } catch (ex) { Utils.hideLoading(context); From 1e7ff09f140942ff4ff7137f969c28f84ad1a856 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 11 Dec 2022 17:23:25 +0300 Subject: [PATCH 202/302] loader uncommented --- lib/ui/leave_balance/add_leave_balance_screen.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index ed8396f..5ef03f4 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -96,7 +96,7 @@ class _AddLeaveBalanceScreenState extends State { } void validateAbsenceTransaction(selectedID) async { - //try { + try { Utils.showLoading(context); Map dffDataMap = {}; for (int i = 1; i <= 20; i++) { @@ -145,10 +145,10 @@ class _AddLeaveBalanceScreenState extends State { } await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); Utils.hideLoading(context); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } @override From 8a3ca3135bba87cc5debaf3ce67827c24cd8e5ba Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Sun, 11 Dec 2022 17:29:34 +0300 Subject: [PATCH 203/302] Pushing after resolving multiple times API calling issue --- lib/generated/locale_keys.g.dart | 500 +++++++++++++++++++++++++++++++ 1 file changed, 500 insertions(+) create mode 100644 lib/generated/locale_keys.g.dart diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart new file mode 100644 index 0000000..1d28232 --- /dev/null +++ b/lib/generated/locale_keys.g.dart @@ -0,0 +1,500 @@ +// DO NOT EDIT. This is code generated via package:easy_localization/generate.dart + +abstract class LocaleKeys { + static const mohemm = 'mohemm'; + static const english = 'english'; + static const arabic = 'arabic'; + static const login = 'login'; + static const pleaseEnterLoginDetails = 'pleaseEnterLoginDetails'; + static const username = 'username'; + static const password = 'password'; + static const welcomeBack = 'welcomeBack'; + static const wouldYouLikeToLoginWithCurrentUsername = 'wouldYouLikeToLoginWithCurrentUsername'; + static const lastLoginDetails = 'lastLoginDetails'; + static const verificationType = 'verificationType'; + static const pleaseVerify = 'pleaseVerify'; + static const pleaseVerifyForBio = 'pleaseVerifyForBio'; + static const verifyThroughFace = 'verifyThroughFace'; + static const verifyThroughFingerprint = 'verifyThroughFingerprint'; + static const verifyThroughSMS = 'verifyThroughSMS'; + static const verifyThroughWhatsapp = 'verifyThroughWhatsapp'; + static const useAnotherAccount = 'useAnotherAccount'; + static const pleaseEnterTheVerificationCodeSentTo = 'pleaseEnterTheVerificationCodeSentTo'; + static const theVerificationCodeWillExpireIn = 'theVerificationCodeWillExpireIn'; + static const goodMorning = 'goodMorning'; + static const markAttendance = 'markAttendance'; + static const timeLeftToday = 'timeLeftToday'; + static const checkIn = 'checkIn'; + static const workList = 'workList'; + static const leaveBalance = 'leaveBalance'; + static const missingSwipes = 'missingSwipes'; + static const ticketBalance = 'ticketBalance'; + static const services = 'services'; + static const viewAllServices = 'viewAllServices'; + static const monthlyAttendance = 'monthlyAttendance'; + static const vacationRule = 'vacationRule'; + static const vacationType = 'vacationType'; + static const startDateT = 'startDateT'; + static const endDateT = 'endDateT'; + static const workFromHome = 'workFromHome'; + static const ticketRequest = 'ticketRequest'; + static const viewAllOffers = 'viewAllOffers'; + static const offers = 'offers'; + static const discounts = 'discounts'; + static const newString = 'newString'; + static const setTheNewPassword = 'setTheNewPassword'; + static const typeYourNewPasswordBelow = 'typeYourNewPasswordBelow'; + static const confirmPassword = 'confirmPassword'; + static const update = 'update'; + static const title = 'title'; + static const home = 'home'; + static const mySalary = 'mySalary'; + static const createRequest = 'createRequest'; + static const forgotPassword = 'forgotPassword'; + static const employeeId = 'employeeId'; + static const loginCodeWillSentToMobileNumber = 'loginCodeWillSentToMobileNumber'; + static const changePassword = 'changePassword'; + static const ok = 'ok'; + static const confirm = 'confirm'; + static const passwordChangedSuccessfully = 'passwordChangedSuccessfully'; + static const itemsForSale = 'itemsForSale'; + static const attendanceDetails = 'attendanceDetails'; + static const order = 'order'; + static const earlyOut = 'earlyOut'; + static const shortage = 'shortage'; + static const excess = 'excess'; + static const lateIn = 'lateIn'; + static const approvedCheckOut = 'approvedCheckOut'; + static const approvedCheckIn = 'approvedCheckIn'; + static const actualCheckOut = 'actualCheckOut'; + static const actualCheckIn = 'actualCheckIn'; + static const present = 'present'; + static const pres = 'pres'; + static const shiftTime = 'shiftTime'; + static const absent = 'absent'; + static const attendance = 'attendance'; + static const scheduleDays = 'scheduleDays'; + static const offDays = 'offDays'; + static const nonAnalyzed = 'nonAnalyzed'; + static const shortageHour = 'shortageHour'; + static const stats = 'stats'; + static const completed = 'completed'; + static const msg = 'msg'; + static const msg_named = 'msg_named'; + static const clickMe = 'clickMe'; + static const doNotUseRecentPassword = 'doNotUseRecentPassword'; + static const atLeastOneLowercase = 'atLeastOneLowercase'; + static const atLeastOneUppercase = 'atLeastOneUppercase'; + static const atLeastOneNumeric = 'atLeastOneNumeric'; + static const minimum8Characters = 'minimum8Characters'; + static const doNotAddRepeatingLetters = 'doNotAddRepeatingLetters'; + static const itShouldContainSpecialCharacter = 'itShouldContainSpecialCharacter'; + static const confirmPasswordMustMatch = 'confirmPasswordMustMatch'; + static const sms = 'sms'; + static const fingerPrint = 'fingerPrint'; + static const face = 'face'; + static const whatsapp = 'whatsapp'; + static const reject = 'reject'; + static const approve = 'approve'; + static const cancel = 'cancel'; + static const requestedItems = 'requestedItems'; + static const request = 'request'; + static const myRequest = 'myRequest'; + static const actions = 'actions'; + static const delegate = 'delegate'; + static const request_info = 'request_info'; + static const attachments = 'attachments'; + static const info = 'info'; + static const employeeNumber = 'employeeNumber'; + static const assignmentNumber = 'assignmentNumber'; + static const employeeName = 'employeeName'; + static const scheduleDate = 'scheduleDate'; + static const shiftType = 'shiftType'; + static const shift = 'shift'; + static const breakText = 'breakText'; + static const actualSwipeStart = 'actualSwipeStart'; + static const actualSwipeEnd = 'actualSwipeEnd'; + static const approvedSwipeStart = 'approvedSwipeStart'; + static const approvedSwipeStartReason = 'approvedSwipeStartReason'; + static const approvedSwipeEnd = 'approvedSwipeEnd'; + static const approvedSwipeEndReason = 'approvedSwipeEndReason'; + static const from = 'from'; + static const to = 'to'; + static const sent = 'sent'; + static const closed = 'closed'; + static const id = 'id'; + static const responder = 'responder'; + static const jobTitle = 'jobTitle'; + static const grade = 'grade'; + static const jobCategory = 'jobCategory'; + static const category = 'category'; + static const employeeEmailAddress = 'employeeEmailAddress'; + static const payrollBranch = 'payrollBranch'; + static const yourChangeHasBeenSavedSuccessfully = 'yourChangeHasBeenSavedSuccessfully'; + static const code = 'code'; + static const unit = 'unit'; + static const quantity = 'quantity'; + static const dateRequired = 'dateRequired'; + static const lineStatus = 'lineStatus'; + static const statusDate = 'statusDate'; + static const transactionType = 'transactionType'; + static const operatingUnit = 'operatingUnit'; + static const organizationCode = 'organizationCode'; + static const organization = 'organization'; + static const fromSubInventory = 'fromSubInventory'; + static const fromLocator = 'fromLocator'; + static const toSubInventory = 'toSubInventory'; + static const toLocator = 'toLocator'; + static const shipToLocator = 'shipToLocator'; + static const itemHistory = 'itemHistory'; + static const mfg = 'mfg'; + static const lineType = 'lineType'; + static const price = 'price'; + static const lineAmount = 'lineAmount'; + static const lineDiscount = 'lineDiscount'; + static const needByDate = 'needByDate'; + static const promisedDate = 'promisedDate'; + static const deliverToLocation = 'deliverToLocation'; + static const requisitionNumber = 'requisitionNumber'; + static const requester = 'requester'; + static const quotationAnalysis = 'quotationAnalysis'; + static const subject = 'subject'; + static const description = 'description'; + static const supplier = 'supplier'; + static const site = 'site'; + static const buyer = 'buyer'; + static const preparer = 'preparer'; + static const creationDate = 'creationDate'; + static const shipToLocation = 'shipToLocation'; + static const quotationNumber = 'quotationNumber'; + static const quotationDate = 'quotationDate'; + static const paymentTerms = 'paymentTerms'; + static const currency = 'currency'; + static const grossAmount = 'grossAmount'; + static const discountAmount = 'discountAmount'; + static const customDuty = 'customDuty'; + static const shipHandle = 'shipHandle'; + static const otherCharges = 'otherCharges'; + static const totalPOAmountWithVAT = 'totalPOAmountWithVAT'; + static const totalPOAmountInWords = 'totalPOAmountInWords'; + static const requestNumber = 'requestNumber'; + static const uom = 'uom'; + static const operatingCode = 'operatingCode'; + static const poNumber = 'poNumber'; + static const revision = 'revision'; + static const quantityOrdered = 'quantityOrdered'; + static const quantityReceived = 'quantityReceived'; + static const bonusQuantity = 'bonusQuantity'; + static const purchasePrice = 'purchasePrice'; + static const discountPer = 'discountPer'; + static const balanceQuantity = 'balanceQuantity'; + static const netPrice = 'netPrice'; + static const closureStatus = 'closureStatus'; + static const quotationNetPrice = 'quotationNetPrice'; + static const quotationUOM = 'quotationUOM'; + static const quotationQty = 'quotationQty'; + static const itemCode = 'itemCode'; + static const vendorName = 'vendorName'; + static const quotationMFGPartNumber = 'quotationMFGPartNumber'; + static const quotationDeliveryDate = 'quotationDeliveryDate'; + static const quotationBonusQuantity = 'quotationBonusQuantity'; + static const quotationLineTotal = 'quotationLineTotal'; + static const rfqUOM = 'rfqUOM'; + static const rfqQty = 'rfqQty'; + static const rfqNumber = 'rfqNumber'; + static const human = 'human'; + static const resources = 'resources'; + static const details = 'details'; + static const noDataAvailable = 'noDataAvailable'; + static const productName = 'productName'; + static const productDescription = 'productDescription'; + static const unitPrice = 'unitPrice'; + static const manufacturerName = 'manufacturerName'; + static const manufacturerPartName = 'manufacturerPartName'; + static const supplierName = 'supplierName'; + static const supplierContact = 'supplierContact'; + static const chargeToPatient = 'chargeToPatient'; + static const justification = 'justification'; + static const itemDescription = 'itemDescription'; + static const groupCode = 'groupCode'; + static const primaryUOM = 'primaryUOM'; + static const subgroupDescription = 'subgroupDescription'; + static const subgroupCode = 'subgroupCode'; + static const groupDescription = 'groupDescription'; + static const templateName = 'templateName'; + static const itemCreationStatus = 'itemCreationStatus'; + static const standardizationApprovalStatus = 'standardizationApprovalStatus'; + static const standardizationApprovalRejectionReason = 'standardizationApprovalRejectionReason'; + static const analyzedBy = 'analyzedBy'; + static const approvedDate = 'approvedDate'; + static const itemType = 'itemType'; + static const relatedTo = 'relatedTo'; + static const requestDate = 'requestDate'; + static const analyzedDate = 'analyzedDate'; + static const urgent = 'urgent'; + static const requestDetails = 'requestDetails'; + static const approvalLevel = 'approvalLevel'; + static const requesterDetails = 'requesterDetails'; + static const myAttendance = 'myAttendance'; + static const workOnBreak = 'workOnBreak'; + static const next = 'next'; + static const apply = 'apply'; + static const mobile = 'mobile'; + static const completingYear = 'completingYear'; + static const year = 'year'; + static const month = 'month'; + static const day = 'day'; + static const address = 'address'; + static const phoneNumber = 'phoneNumber'; + static const businessGroup = 'businessGroup'; + static const Payroll = 'Payroll'; + static const civilIdentityNumber = 'civilIdentityNumber'; + static const dateOfBirth = 'dateOfBirth'; + static const maritalStatus = 'maritalStatus '; + static const fullName = 'fullName'; + static const remove = 'remove'; + static const submit = 'submit'; + static const areYouSureYouWantToSubmit = 'areYouSureYouWantToSubmit'; + static const comments = 'comments'; + static const writeComment = 'writeComment'; + static const approversList = 'approversList'; + static const yourRequestHasBeenSubmittedForApprovals = 'yourRequestHasBeenSubmittedForApprovals'; + static const monthlyPaySlip = 'monthlyPaySlip'; + static const particular = 'particular'; + static const earnings = 'earnings'; + static const deductions = 'deductions'; + static const paymentMethodName = 'paymentMethodName'; + static const bankName = 'bankName'; + static const branchCode = 'branchCode'; + static const accountNo = 'accountNo'; + static const summaryOfInformation = 'summaryOfInformation'; + static const totalPayAmount = 'totalPayAmount'; + static const paymentInformation = 'paymentInformation'; + static const performance = 'performance'; + static const performanceEvaluation = 'performanceEvaluation'; + static const performanceEvaluationIn = 'performanceEvaluationIn'; + static const valuationIn = 'valuationIn'; + static const amount = 'amount'; + static const correctCurrentDatails = 'correctCurrentDatails'; + static const selectType = 'selectType'; + static const enterNewInfo = 'enterNewInfo'; + static const endDate = 'endDate'; + static const removeThisMember = 'removeThisMember'; + static const wantUpdateThisMember = 'wantUpdateThisMember '; + static const addNewFamilyMember = 'addNewFamilyMember'; + static const addRow = 'addRow'; + static const pleaseSelect = 'pleaseSelect'; + static const delete = 'delete'; + static const edit = 'edit'; + static const add = 'add'; + static const myProfile = 'myProfile'; + static const mowadhafhi = 'mowadhafhi'; + static const searchAnnouncements = 'searchAnnouncements'; + static const announcements = 'announcements'; + static const swipeRequest = 'swipeRequest'; + static const serviceType = 'serviceType'; + static const departmentName = 'departmentName'; + static const selectDepartment = 'selectDepartment'; + static const relatedSection = 'relatedSection'; + static const selectSection = 'selectSection'; + static const relatedTopic = 'relatedTopic'; + static const selectTopic = 'selectTopic'; + static const supportingDocument = 'supportingDocument'; + static const mowadhafhiRequest = 'mowadhafhiRequest'; + static const ticketReference = 'ticketReference'; + static const section = 'section'; + static const topic = 'topic'; + static const actionBy = 'actionBy'; + static const pending = 'pending'; + static const pendingTransactions = 'pendingTransactions'; + static const selectRequestType = 'selectRequestType'; + static const dateFrom = 'dateFrom'; + static const dateTo = 'dateTo'; + static const requestName = 'requestName'; + static const createdFor = 'createdFor'; + static const requestCreatedSuccessfully = 'requestCreatedSuccessfully'; + static const search = 'search'; + static const wantToReject = 'wantToReject'; + static const requestType = 'requestType'; + static const employeeDigitalID = 'employeeDigitalID'; + static const businessCard = 'businessCard'; + static const viewBusinessCard = 'viewBusinessCard'; + static const logout = 'logout'; + static const checkOut = 'checkOut'; + static const regular = 'regular'; + static const mark = 'mark'; + static const selectMethodOfAttendance = 'selectMethodOfAttendance'; + static const comeNearHMGWifi = 'comeNearHMGWifi'; + static const deliverNotificationToMeRegardless = 'deliverNotificationToMeRegardless'; + static const close = 'close'; + static const respond = 'respond'; + static const vacationRuleAdded = 'vacationRuleAdded'; + static const selectTypeT = 'selectTypeT'; + static const notification = 'notification'; + static const selectNotification = 'selectNotification'; + static const ifAllSelectedYouWillSkip = 'ifAllSelectedYouWillSkip'; + static const applyForVacationRule = 'applyForVacationRule'; + static const step1 = 'step1'; + static const step2 = 'step2'; + static const step3 = 'step3'; + static const message = 'message'; + static const writeAMessage = 'writeAMessage'; + static const notificationReassign = 'notificationReassign'; + static const selectEmployee = 'selectEmployee'; + static const searchEmployeeForReplacement = 'searchEmployeeForReplacement'; + static const searchForEmployee = 'searchForEmployee'; + static const pleaseSpecifyEndTime = 'pleaseSpecifyEndTime'; + static const pleaseSelectNotificationReassign = 'pleaseSelectNotificationReassign'; + static const pleaseSelectEmployeeForReplacement = 'pleaseSelectEmployeeForReplacement'; + static const pleaseSelectAction = 'pleaseSelectAction'; + static const pleaseSelectDate = 'pleaseSelectDate'; + static const todayAttendance = 'todayAttendance'; + static const viewAttendance = 'viewAttendance'; + static const teamMembers = 'teamMembers'; + static const profileDetails = 'profileDetails'; + static const noResultsFound = 'noResultsFound'; + static const searchBy = 'searchBy'; + static const myTeamMembers = 'myTeamMembers'; + static const save = 'save'; + static const TurnNotificationsFor = 'TurnNotificationsFor'; + static const worklistSettings = 'worklistSettings'; + static const absenceType = 'absenceType'; + static const absenceCategory = 'absenceCategory'; + static const days = 'days'; + static const hours = 'hours'; + static const approvalStatus = 'approvalStatus'; + static const absenceStatus = 'absenceStatus'; + static const subordinateLeave = 'subordinateLeave'; + static const numberDays = 'numberDays'; + static const poweredBy = 'poweredBy'; + static const cloudSolutions = 'cloudSolutions'; + static const selectTemplate = 'selectTemplate'; + static const myPostedAds = 'myPostedAds'; + static const browseCategories = 'browseCategories'; + static const searchItems = 'searchItems'; + static const offerAndDiscounts = 'offerAndDiscounts'; + static const offerValid = 'offerValid'; + static const offerExpired = 'offerExpired'; + static const whatAreYouOffering = 'whatAreYouOffering'; + static const selectCategory = 'selectCategory'; + static const inProgress = 'inProgress'; + static const locked = 'locked'; + static const addDetails = 'addDetails'; + static const reviewAndSell = 'reviewAndSell'; + static const itemTitle = 'itemTitle'; + static const itemCondition = 'itemCondition'; + static const used = 'used'; + static const region = 'region'; + static const selectRegion = 'selectRegion'; + static const itemPrice = 'itemPrice'; + static const itemPhotos = 'itemPhotos'; + static const itemInfo = 'itemInfo'; + static const uploadAttachment = 'uploadAttachment'; + static const selectFromGalleryOrOpenCamera = 'selectFromGalleryOrOpenCamera'; + static const openCamera = 'openCamera'; + static const uploadFromGallery = 'uploadFromGallery'; + static const name = 'name'; + static const email = 'email'; + static const noHistoryAvailable = 'noHistoryAvailable'; + static const purchaseRequisition = 'purchaseRequisition'; + static const moveOrder = 'moveOrder'; + static const humanResource = 'humanResource'; + static const purchaseOrder = 'purchaseOrder'; + static const ITGForms = 'ITGForms'; + static const itemCreation = 'itemCreation'; + static const stamp = 'stamp'; + static const addFavoriteList = 'addFavoriteList'; + static const feedbackUserExperience = 'feedbackUserExperience'; + static const rateUI = 'rateUI'; + static const submitSurvey = 'submitSurvey'; + static const typeHere = 'typeHere'; + static const infoDetail = 'infoDetail'; + static const amount_detail = 'amount_detail'; + static const currentBalance = 'currentBalance'; + static const currentLeaveBalance = 'currentLeaveBalance'; + static const calculatedDays = 'calculatedDays'; + static const totalDays = 'totalDays'; + static const usedBalance = 'usedBalance'; + static const infants = 'infants'; + static const child = 'child'; + static const adult = 'adult'; + static const updateMember = 'updateMember'; + static const fieldIsEmpty = 'fieldIsEmpty'; + static const pleaseEnterComments = 'pleaseEnterComments'; + static const skip = 'skip'; + static const typeCurrentPasswordBelow = 'typeCurrentPasswordBelow'; + static const currentPassword = 'currentPassword'; + static const concurrentReports = 'concurrentReports'; + static const profile_reset_password_label = 'profile.reset_password.label'; + static const profile_reset_password_username = 'profile.reset_password.username'; + static const profile_reset_password_password = 'profile.reset_password.password'; + static const profile_reset_password = 'profile.reset_password'; + static const profile_profileCompletionPer = 'profile.profileCompletionPer'; + static const profile_completeProfile = 'profile.completeProfile'; + static const profile_personalInformation = 'profile.personalInformation'; + static const profile_basicDetails = 'profile.basicDetails'; + static const profile_address = 'profile.address'; + static const profile_contactDetails = 'profile.contactDetails'; + static const profile_familyDetails = 'profile.familyDetails'; + static const profile_effectiveDate = 'profile.effectiveDate'; + static const profile_country = 'profile.country'; + static const profile = 'profile'; + static const clicked = 'clicked'; + static const gender_with_arg = 'gender.with_arg'; + static const gender = 'gender'; + static const reset_locale = 'reset_locale'; + static const chat = 'chat'; + static const mychats = 'mychats'; + static const advancedSearch = 'advancedSearch'; + static const openNot = 'openNot'; + static const fyi = 'fyi'; + static const toDo = 'toDo'; + static const all = 'all'; + static const meNot = 'meNot'; + static const view = 'view'; + static const fromUserName = 'fromUserName'; + static const sentDate = 'sentDate'; + static const itemTypeDisplayName = 'itemTypeDisplayName'; + static const none = 'none'; + static const createNewChat = 'createNewChat'; + static const brainMarathon = 'brainMarathon'; + static const contestTopicAbout = 'contestTopicAbout'; + static const gameDate = 'gameDate'; + static const gameTime = 'gameTime'; + static const joinMarathon = 'joinMarathon'; + static const joinDemoMarathon = 'joinDemoMarathon'; + static const minutes = 'minutes'; + static const seconds = 'seconds'; + static const note = 'note'; + static const demoMarathonNoteP1 = 'demoMarathonNoteP1'; + static const demoMarathonNoteP2 = 'demoMarathonNoteP2'; + static const demoMarathonNoteP3 = 'demoMarathonNoteP3'; + static const sponsoredBy = 'sponsoredBy'; + static const question = 'question'; + static const marathoners = 'marathoners'; + static const prize = 'prize'; + static const winnerSelection = 'winnerSelection'; + static const qualifiers = 'qualifiers'; + static const getReadyForContest = 'getReadyForContest'; + static const winnerSelectedRandomly = 'winnerSelectedRandomly'; + static const fingersCrossed = 'fingersCrossed'; + static const congrats = 'congrats'; + static const allQuestionsCorrect = 'allQuestionsCorrect'; + static const otp = 'otp'; + static const verification = 'verification'; + static const resend = 'resend'; + static const codeExpire = 'codeExpire'; + static const typeheretoreply = 'typeheretoreply'; + static const favorite = 'favorite'; + static const searchfromchat = 'searchfromchat'; + static const yourAnswerCorrect = 'yourAnswerCorrect'; + static const youMissedTheQuestion = 'youMissedTheQuestion'; + static const wrongAnswer = 'wrongAnswer'; + static const oops = 'oops'; + static const winner = 'winner'; + static const youWantToLeaveMarathon = 'youWantToLeaveMarathon'; + static const ourSponsor = 'ourSponsor'; + static const startingIn = 'startingIn'; + static const youAreOutOfContest = 'youAreOutOfContest'; + +} From 7d1086522d094c6886cadd720acfb5bf9d9f3b02 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 12 Dec 2022 11:04:28 +0300 Subject: [PATCH 204/302] Chat Fixes & Counter Updated on Signal R --- lib/api/chat/chat_api_client.dart | 98 ++++++---- lib/api/dashboard_api_client.dart | 7 +- .../chat/chat_count_conversation_model.dart | 28 +-- .../chat/get_search_user_chat_model.dart | 36 ++-- lib/provider/chat_provider_model.dart | 169 ++++++++++++++---- lib/provider/dashboard_provider_model.dart | 23 +-- lib/ui/chat/chat_bubble.dart | 50 +++--- lib/ui/chat/chat_detailed_screen.dart | 61 ++++--- lib/ui/chat/chat_home.dart | 18 +- lib/ui/chat/chat_home_screen.dart | 38 ++-- lib/ui/chat/favorite_users_screen.dart | 25 +-- lib/ui/landing/dashboard_screen.dart | 9 +- lib/widgets/app_bar_widget.dart | 13 ++ .../search_employee_bottom_sheet.dart | 3 +- lib/widgets/image_picker.dart | 2 +- 15 files changed, 367 insertions(+), 213 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index bea5b7c..3ef8fba 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -2,11 +2,11 @@ import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; +import 'package:flutter/foundation.dart'; import 'package:http/http.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; -import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart'; @@ -29,6 +29,9 @@ class ChatApiClient { "password": "FxIu26rWIKoF8n6mpbOmAjDLphzFGmpG", }, ); + if (!kReleaseMode) { + logger.i("res: " + response.body); + } user.UserAutoLoginModel userLoginResponse = user.userAutoLoginModelFromJson(response.body); return userLoginResponse; } @@ -38,33 +41,36 @@ class ChatApiClient { "${ApiConsts.chatLoginTokenUrl}getUserWithStatusAndFavAsync/$sName/$cUserId", token: AppState().chatDetails!.response!.token, ); - return searchUserJsonModel(response.body); + if (!kReleaseMode) { + logger.i("res: " + response.body); + } + return List.from(json.decode(response.body).map((x) => ChatUser.fromJson(x))); } - List searchUserJsonModel(String str) => List.from(json.decode(str).map((x) => ChatUser.fromJson(x))); - Future getRecentChats() async { try { Response response = await ApiClient().getJsonForResponse( "${ApiConsts.chatRecentUrl}getchathistorybyuserid", token: AppState().chatDetails!.response!.token, ); + if (!kReleaseMode) { + logger.i("res: " + response.body); + } return ChatUserModel.fromJson( json.decode(response.body), ); } catch (e) { - e as APIException; - if (e.message == "api_common_unauthorized") { - user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); - if (userLoginResponse.response != null) { - AppState().setchatUserDetails = userLoginResponse; - getRecentChats(); - } else { - Utils.showToast( - userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", - ); - } - } + // if (e.message == "api_common_unauthorized") { + // user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); + // if (userLoginResponse.response != null) { + // AppState().setchatUserDetails = userLoginResponse; + // getRecentChats(); + // } else { + // Utils.showToast( + // userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", + // ); + // } + // } throw e; } } @@ -74,9 +80,10 @@ class ChatApiClient { "${ApiConsts.chatFavUser}getFavUserById/${AppState().chatDetails!.response!.id}", token: AppState().chatDetails!.response!.token, ); - return ChatUserModel.fromJson( - json.decode(favRes.body), - ); + if (!kReleaseMode) { + logger.i("res: " + favRes.body); + } + return ChatUserModel.fromJson(json.decode(favRes.body)); } Future getSingleUserChatHistory({required int senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false, required int paginationVal}) async { @@ -85,24 +92,30 @@ class ChatApiClient { "${ApiConsts.chatSingleUserHistoryUrl}GetUserChatHistory/$senderUID/$receiverUID/$paginationVal", token: AppState().chatDetails!.response!.token, ); + if (!kReleaseMode) { + logger.i("res: " + response.body); + } return response; } catch (e) { - e as APIException; - if (e.message == "api_common_unauthorized") { - user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); - if (userLoginResponse.response != null) { - AppState().setchatUserDetails = userLoginResponse; - getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); - } else { - Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); - } - } + // e as APIException; + // if (e.message == "api_common_unauthorized") { + // user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); + // if (userLoginResponse.response != null) { + // AppState().setchatUserDetails = userLoginResponse; + // getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); + // } else { + // Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); + // } + // } throw e; } } Future favUser({required int userID, required int targetUserID}) async { Response response = await ApiClient().postJsonForResponse("${ApiConsts.chatFavUser}addFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token); + if (!kReleaseMode) { + logger.i("res: " + response.body); + } fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); return favoriteChatUser; } @@ -114,20 +127,23 @@ class ChatApiClient { {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token, ); + if (!kReleaseMode) { + logger.i("res: " + response.body); + } + fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); return favoriteChatUser; } catch (e) { e as APIException; - if (e.message == "api_common_unauthorized") { - logger.d("Token Generated On APIIIIII"); - user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); - if (userLoginResponse.response != null) { - AppState().setchatUserDetails = userLoginResponse; - unFavUser(userID: userID, targetUserID: targetUserID); - } else { - Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); - } - } + // if (e.message == "api_common_unauthorized") { + // user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); + // if (userLoginResponse.response != null) { + // AppState().setchatUserDetails = userLoginResponse; + // unFavUser(userID: userID, targetUserID: targetUserID); + // } else { + // Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); + // } + // } throw e; } } @@ -138,6 +154,7 @@ class ChatApiClient { request.files.add(await MultipartFile.fromPath('files', file.path)); request.headers.addAll({'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}'}); StreamedResponse response = await request.send(); + if (!kReleaseMode) {} return response; } @@ -159,6 +176,9 @@ class ChatApiClient { {"encryptedEmails": encryptedEmails, "fromClient": false}, token: AppState().chatDetails!.response!.token, ); + if (!kReleaseMode) { + logger.i("res: " + response.body); + } return chatUserImageModelFromJson(response.body); } } diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index e30af91..48063c3 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -180,12 +180,7 @@ class DashboardApiClient { }, url, postParams); } - Future getChatCount() async { - Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatLoginTokenUrl}unreadconversationcount/${AppState().getUserName}", - ); - return chatUnreadCovnCountModelFromJson(response.body); - } + // Future setAdvertisementViewed(String masterID, int advertisementId) async { // String url = "${ApiConsts.cocRest}Mohemm_ITG_UpdateAdvertisementAsViewed"; diff --git a/lib/models/chat/chat_count_conversation_model.dart b/lib/models/chat/chat_count_conversation_model.dart index e584d32..1906803 100644 --- a/lib/models/chat/chat_count_conversation_model.dart +++ b/lib/models/chat/chat_count_conversation_model.dart @@ -1,8 +1,8 @@ -import 'dart:convert'; - -ChatUnreadCovnCountModel chatUnreadCovnCountModelFromJson(String str) => ChatUnreadCovnCountModel.fromJson(json.decode(str)); +// To parse this JSON data, do +// +// final chatUnreadCovnCountModel = chatUnreadCovnCountModelFromMap(jsonString); -String chatUnreadCovnCountModelToJson(ChatUnreadCovnCountModel data) => json.encode(data.toJson()); +import 'dart:convert'; class ChatUnreadCovnCountModel { ChatUnreadCovnCountModel({ @@ -13,13 +13,17 @@ class ChatUnreadCovnCountModel { int? singleChatCount; int? groupChatCount; - factory ChatUnreadCovnCountModel.fromJson(Map json) => ChatUnreadCovnCountModel( - singleChatCount: json["singleChatCount"] == null ? null : json["singleChatCount"], - groupChatCount: json["groupChatCount"] == null ? null : json["groupChatCount"], - ); + factory ChatUnreadCovnCountModel.fromJson(String str) => ChatUnreadCovnCountModel.fromMap(json.decode(str)); + + String toJson() => json.encode(toMap()); + + factory ChatUnreadCovnCountModel.fromMap(Map json) => ChatUnreadCovnCountModel( + singleChatCount: json["singleChatCount"] == null ? null : json["singleChatCount"], + groupChatCount: json["groupChatCount"] == null ? null : json["groupChatCount"], + ); - Map toJson() => { - "singleChatCount": singleChatCount == null ? null : singleChatCount, - "groupChatCount": groupChatCount == null ? null : groupChatCount, - }; + Map toMap() => { + "singleChatCount": singleChatCount == null ? null : singleChatCount, + "groupChatCount": groupChatCount == null ? null : groupChatCount, + }; } diff --git a/lib/models/chat/get_search_user_chat_model.dart b/lib/models/chat/get_search_user_chat_model.dart index fe87061..3d023fd 100644 --- a/lib/models/chat/get_search_user_chat_model.dart +++ b/lib/models/chat/get_search_user_chat_model.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + class ChatUserModel { ChatUserModel({ this.response, @@ -35,6 +37,7 @@ class ChatUser { this.isTyping, this.isImageLoaded, this.isImageLoading, + this.userLocalDownlaodedImage, }); int? id; @@ -52,24 +55,25 @@ class ChatUser { bool? isTyping; bool? isImageLoaded; bool? isImageLoading; + File? userLocalDownlaodedImage; factory ChatUser.fromJson(Map json) => ChatUser( - id: json["id"] == null ? null : json["id"], - userName: json["userName"] == null ? null : json["userName"], - email: json["email"] == null ? null : json["email"], - phone: json["phone"], - title: json["title"], - userStatus: json["userStatus"] == null ? null : json["userStatus"], - image: json["image"], - unreadMessageCount: json["unreadMessageCount"] == null ? null : json["unreadMessageCount"], - userAction: json["userAction"], - isPin: json["isPin"] == null ? null : json["isPin"], - isFav: json["isFav"] == null ? null : json["isFav"], - isAdmin: json["isAdmin"] == null ? null : json["isAdmin"], - isTyping: false, - isImageLoaded: false, - isImageLoading: true, - ); + id: json["id"] == null ? null : json["id"], + userName: json["userName"] == null ? null : json["userName"], + email: json["email"] == null ? null : json["email"], + phone: json["phone"], + title: json["title"], + userStatus: json["userStatus"] == null ? null : json["userStatus"], + image: json["image"], + unreadMessageCount: json["unreadMessageCount"] == null ? null : json["unreadMessageCount"], + userAction: json["userAction"], + isPin: json["isPin"] == null ? null : json["isPin"], + isFav: json["isFav"] == null ? null : json["isFav"], + isAdmin: json["isAdmin"] == null ? null : json["isAdmin"], + isTyping: false, + isImageLoaded: false, + isImageLoading: true, + userLocalDownlaodedImage: null); Map toJson() => { "id": id == null ? null : id, diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 5fb4cbf..94a296a 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -12,6 +12,7 @@ import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/encryption.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/models/chat/chat_count_conversation_model.dart'; import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; @@ -19,6 +20,8 @@ import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' a import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/image_picker.dart'; +import 'package:open_file/open_file.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:signalr_netcore/hub_connection.dart'; import 'package:signalr_netcore/signalr_client.dart'; import 'package:uuid/uuid.dart'; @@ -39,6 +42,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List repliedMsg = []; List favUsersList = []; int paginationVal = 0; + bool currentUserTyping = false; + + //Chat + int chatUConvCounter = 0; Future getUserAutoLoginToken() async { userLoginToken.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); @@ -56,30 +63,23 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await chatHubConnection.start(); print("Startedddddddd"); chatHubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); + chatHubConnection.on("OnGetChatConversationCount", onNewChatConversion); } Future getHubConnection() async { HubConnection hub; - // try { HttpConnectionOptions httpOp = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); hub = HubConnectionBuilder() .withUrl(ApiConsts.chatHubConnectionUrl + "?UserId=${AppState().chatDetails!.response!.id}&source=Web&access_token=${AppState().chatDetails!.response!.token}", options: httpOp) .withAutomaticReconnect(retryDelays: [2000, 5000, 10000, 20000]).build(); - // isChatHubLoding = false; return hub; - // } catch (e) { - // getUserAutoLoginToken().whenComplete(() { - // getHubConnection(); - // }); - // throw e; - // } } void registerEvents() { chatHubConnection.on("OnUpdateUserStatusAsync", changeStatus); // chatHubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); // hubConnection.on("OnSeenChatUserAsync", onChatSeen); - //hubConnection.on("OnUserTypingAsync", onUserTyping); + chatHubConnection.on("OnUserTypingAsync", onUserTyping); chatHubConnection.on("OnUserCountAsync", userCountAsync); // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); chatHubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); @@ -164,7 +164,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } isLoading = false; notifyListeners(); + markRead(userChatHistory, receiverUID); + generateConvId(); } @@ -176,26 +178,28 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void markRead(List data, int receiverID) { if (data != null) { for (SingleUserChatModel element in data!) { - if (element.isSeen != null) { - if (!element.isSeen!) { - element.isSeen = true; - dynamic data = [ - { - "userChatHistoryId": element.userChatHistoryId, - "TargetUserId": element.currentUserId == receiverID ? element.currentUserId : element.targetUserId, - "isDelivered": true, - "isSeen": true, - } - ]; - updateUserChatHistoryStatusAsync(data); - notifyListeners(); + if (AppState().chatDetails!.response!.id! == element.targetUserId) { + if (element.isSeen != null) { + if (!element.isSeen!) { + element.isSeen = true; + dynamic data = [ + { + "userChatHistoryId": element.userChatHistoryId, + "TargetUserId": element.currentUserId == receiverID ? element.currentUserId : element.targetUserId, + "isDelivered": true, + "isSeen": true, + } + ]; + updateUserChatHistoryStatusAsync(data); + notifyListeners(); + } + } + for (ChatUser element in searchedChats!) { + if (element.id == receiverID) { + element.unreadMessageCount = 0; + chatUConvCounter = 0; + } } - } - } - for (ChatUser element in searchedChats!) { - if (element.id == receiverID) { - element.unreadMessageCount = 0; - // notifyListeners(); } } notifyListeners(); @@ -346,9 +350,23 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } - dynamic contain = searchedChats!.where((ChatUser element) => element.id == data.first.currentUserId); - if (contain.isEmpty) { - searchedChats!.add(ChatUser(id: data.first.currentUserId, userName: data.first.currentUserName, unreadMessageCount: 0, isImageLoading: false, image: "", isImageLoaded: true, userStatus: 1)); + + if (searchedChats != null) { + dynamic contain = searchedChats!.where((ChatUser element) => element.id == data.first.currentUserId); + if (contain.isEmpty) { + searchedChats!.add( + ChatUser( + id: data.first.currentUserId, + userName: data.first.currentUserName, + unreadMessageCount: 0, + isImageLoading: false, + image: "", + isImageLoaded: true, + userStatus: 1, + isTyping: false, + userLocalDownlaodedImage: null), + ); + } } setMsgTune(); @@ -368,6 +386,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { {"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive ? true : false} ]; updateUserChatHistoryOnMsg(list); + invokeChatCounter(userId: AppState().chatDetails!.response!.id!); notifyListeners(); } @@ -384,7 +403,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (user.id == parameters![1] && parameters[0] == true) { user.isTyping = parameters[0] as bool?; Future.delayed( - const Duration(seconds: 2), + const Duration(seconds: 1), () { user.isTyping = false; notifyListeners(); @@ -392,6 +411,17 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); } } + if (isChatScreenActive) { + currentUserTyping = true; + notifyListeners(); + Future.delayed( + const Duration(seconds: 2), + () { + currentUserTyping = false; + notifyListeners(); + }, + ); + } notifyListeners(); } @@ -473,7 +503,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { required bool isImageLoaded}) async { Uuid uuid = const Uuid(); String contentNo = uuid.v4(); - String msg = message.text; SingleUserChatModel data = SingleUserChatModel( chatEventId: chatEventId, @@ -492,8 +521,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { fileTypeResponse: isAttachment ? FileTypeResponse( fileTypeId: fileTypeId, - fileTypeName: getFileType(getFileExtension(selectedFile.path).toString()), - fileKind: getFileExtension(selectedFile.path), + fileTypeName: getFileExtension(selectedFile.path).toString(), + fileKind: "file", fileName: selectedFile.path.split("/").last, fileTypeDescription: getFileTypeDescription(getFileExtension(selectedFile.path).toString()), ) @@ -517,7 +546,17 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { searchedChats!.add( - ChatUser(id: targetUserId, userName: targetUserName, unreadMessageCount: 0, isImageLoading: false, image: "", isImageLoaded: true), + ChatUser( + id: targetUserId, + userName: targetUserName, + unreadMessageCount: 0, + isImageLoading: false, + image: "", + isImageLoaded: true, + isTyping: false, + isFav: false, + userLocalDownlaodedImage: null, + ), ); notifyListeners(); } @@ -530,6 +569,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: false, chatReplyId: null, isReply: false, isImageLoaded: false, image: null); } // normal Text msg if (isFileSelected && !isMsgReply) { + bool isImage = false; print("Normal Attachment Msg"); Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); @@ -605,6 +645,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String? getFileExtension(String fileName) { try { + print("Ext: " + "." + fileName.split('.').last); return "." + fileName.split('.').last; } catch (e) { return null; @@ -740,6 +781,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { for (ChatUserImageModel uImage in chatImages) { if (user.email == uImage.email) { user.image = uImage.profilePicture ?? ""; + user.userLocalDownlaodedImage = await downloadImageLocal(uImage.profilePicture, user.id.toString()); user.isImageLoading = false; user.isImageLoaded = true; } @@ -749,6 +791,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { for (ChatUserImageModel uImage in chatImages) { if (favUser.email == uImage.email) { favUser.image = uImage.profilePicture ?? ""; + favUser.userLocalDownlaodedImage = await downloadImageLocal(uImage.profilePicture, favUser.id.toString()); favUser.isImageLoading = false; favUser.isImageLoaded = true; } @@ -758,6 +801,35 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } + Future downloadImageLocal(String? encodedBytes, String userID) async { + File? myfile; + if (encodedBytes == null) { + return myfile; + } else { + await deleteFile(userID); + Uint8List decodedBytes = base64Decode(encodedBytes); + Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); // 1 + late File imageFile = File("${appDocumentsDirectory.path}/$userID.jpg"); + imageFile.writeAsBytesSync(decodedBytes); + return imageFile; + } + } + + Future deleteFile(String userID) async { + Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); + late File imageFile = File('${appDocumentsDirectory.path}/$userID.jpg'); + if (await imageFile.exists()) { + await imageFile.delete(); + } + } + + Future downChatMedia(Uint8List bytes, String ext) async { + String dir = (await getApplicationDocumentsDirectory()).path; + File file = File("$dir/" + DateTime.now().millisecondsSinceEpoch.toString() + "." + ext); + await file.writeAsBytes(bytes); + return file.path; + } + void setMsgTune() async { AudioPlayer player = AudioPlayer(); await player.setVolume(1.0); @@ -775,4 +847,29 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { print("Error: $e"); } } + + Future getChatMedia({required String fileName, required String fileTypeName, required int fileTypeID}) async { + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) { + Uint8List encodedString = await ChatApiClient().downloadURL(fileName: fileName, fileTypeDescription: getFileTypeDescription(fileTypeName)); + try { + String path = await downChatMedia(encodedString, fileTypeName ?? ""); + OpenFile.open(path); + } catch (e) { + Utils.showToast("Cannot open file."); + } + } + } + + void onNewChatConversion(List? params) { + dynamic items = params!.toList(); + logger.d(items); + chatUConvCounter = items[0]["singleChatCount"] ?? 0; + notifyListeners(); + } + + Future invokeChatCounter({required int userId}) async { + print("invokedd"); + await chatHubConnection.invoke("GetChatCounversationCount", args: [userId]); + return ""; + } } diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index 48531b7..c1a186a 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -7,7 +7,6 @@ import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; -import 'package:mohem_flutter_app/models/chat/chat_count_conversation_model.dart'; import 'package:mohem_flutter_app/models/dashboard/drawer_menu_item_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; @@ -20,6 +19,7 @@ import 'package:mohem_flutter_app/models/dashboard/mohemm_itg_pending_task_respo import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; +import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; /// Mix-in [DiagnosticableTreeMixin] to have access to [debugFillProperties] for the devtool @@ -35,9 +35,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { bool isWorkListLoading = true; int workListCounter = 0; - //Chat - bool isChatCounterLoding = true; - int chatUConvCounter = 0; + //Misssing Swipe bool isMissingSwipeLoading = true; @@ -96,8 +94,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { accrualList = null; leaveBalanceAccrual = null; - isChatCounterLoding = true; - chatUConvCounter = 0; ticketBalance = 0; isServicesMenusLoading = true; @@ -273,21 +269,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { MohemmItgResponseItem? res = await DashboardApiClient().getITGPageNotification(); return res; } - - void fetchChatCounts() async { - try { - ChatUnreadCovnCountModel response = await DashboardApiClient().getChatCount(); - chatUConvCounter = response.singleChatCount!; - isChatCounterLoding = false; - notifyListeners(); - } catch (ex) { - logger.wtf(ex); - notifyListeners(); - Utils.handleException(ex, null, null); - } - } - - void notify() { notifyListeners(); } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index ea43004..3e99678 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -1,17 +1,23 @@ +import 'dart:convert'; import 'dart:typed_data'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/chat_full_image_preview.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; +import 'package:open_file/open_file.dart'; +import 'package:provider/provider.dart'; // todo: @aamir use extension methods, and use correct widgets. @@ -19,11 +25,12 @@ class ChatBubble extends StatelessWidget { ChatBubble({Key? key, required this.dateTime, required this.cItem}) : super(key: key); final String dateTime; final SingleUserChatModel cItem; - bool isCurrentUser = false; bool isSeen = false; bool isReplied = false; int? fileTypeID; + String? fileTypeName; + late ChatProviderModel data; String? fileTypeDescription; bool isDelivered = false; @@ -35,6 +42,7 @@ class ChatBubble extends StatelessWidget { isSeen = cItem.isSeen == true ? true : false; isReplied = cItem.userChatReplyResponse != null ? true : false; fileTypeID = cItem.fileTypeId; + fileTypeName = cItem.fileTypeResponse != null ? cItem.fileTypeResponse!.fileTypeName : ""; fileTypeDescription = cItem.fileTypeResponse != null ? cItem.fileTypeResponse!.fileTypeDescription : ""; isDelivered = cItem.currentUserId == AppState().chatDetails!.response!.id && cItem.isDelivered == true ? true : false; userName = AppState().chatDetails!.response!.userName == cItem.currentUserName.toString() ? "You" : cItem.currentUserName.toString(); @@ -45,6 +53,8 @@ class ChatBubble extends StatelessWidget { Size windowSize = MediaQuery.of(context).size; screenOffset = Offset(windowSize.width / 2, windowSize.height / 2); makeAssign(); + data = Provider.of(context, listen: false); + return isCurrentUser ? currentUser(context) : receiptUser(context); } @@ -77,22 +87,6 @@ class ChatBubble extends StatelessWidget { if (cItem.userChatReplyResponse != null && cItem.userChatReplyResponse!.fileTypeId == 12 || cItem.userChatReplyResponse!.fileTypeId == 3 || cItem.userChatReplyResponse!.fileTypeId == 4) - // Container( - // padding: EdgeInsets.all(0), // Border width - // decoration: BoxDecoration(color: Colors.red, borderRadius: const BorderRadius.all(Radius.circular(8))), - // child: ClipRRect( - // borderRadius: const BorderRadius.all( - // Radius.circular(8), - // ), - // child: SizedBox.fromSize( - // size: Size.fromRadius(8), // Image radius - // child: showImage( - // isReplyPreview: true, - // fileName: cItem.userChatReplyResponse!.contant!, - // fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg"), - // ), - // ), - // ), ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SizedBox( @@ -116,8 +110,15 @@ class ChatBubble extends StatelessWidget { anchorPoint: screenOffset, builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!), ); - }), - cItem.contant!.toText12(), + }) + else + Row( + children: [ + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) + SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), + (cItem.contant ?? "").toText12(), + ], + ), Align( alignment: Alignment.centerRight, child: Row( @@ -200,7 +201,16 @@ class ChatBubble extends StatelessWidget { ); }) else - (cItem.contant ?? "").toText12(color: Colors.white), + Row( + children: [ + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) + SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly( + left: 0, + right: 10, + ), + (cItem.contant ?? "").toText12(color: Colors.white), + ], + ), Align( alignment: Alignment.centerRight, child: dateTime.toText10(color: Colors.white.withOpacity(.71)), diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 2ab5fd8..335eda7 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -12,6 +12,7 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/call.dart'; +import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; @@ -23,9 +24,15 @@ import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:signalr_netcore/signalr_client.dart'; import 'package:swipe_to/swipe_to.dart'; +class ChatDetailedScreenParams { + ChatUser? chatUser; + bool? isNewChat; + + ChatDetailedScreenParams(this.chatUser, this.isNewChat); +} + class ChatDetailScreen extends StatefulWidget { - // ignore: prefer_const_constructors_in_immutables - ChatDetailScreen({Key? key}) : super(key: key); + const ChatDetailScreen({Key? key}) : super(key: key); @override State createState() => _ChatDetailScreenState(); @@ -33,16 +40,16 @@ class ChatDetailScreen extends StatefulWidget { class _ChatDetailScreenState extends State { final RefreshController _rc = RefreshController(initialRefresh: false); - dynamic userDetails; late ChatProviderModel data; + ChatDetailedScreenParams? params; void getMoreChat() async { - if (userDetails != null) { + if (params != null) { data.paginationVal = data.paginationVal + 10; - if (userDetails != null) { + if (params != null) { data.getSingleUserChatHistory( senderUID: AppState().chatDetails!.response!.id!.toInt(), - receiverUID: userDetails["targetUser"].id, + receiverUID: params!.chatUser!.id!, loadMore: true, isNewChat: false, ); @@ -56,14 +63,14 @@ class _ChatDetailScreenState extends State { @override Widget build(BuildContext context) { - userDetails = ModalRoute.of(context)!.settings.arguments; + params = ModalRoute.of(context)!.settings.arguments as ChatDetailedScreenParams; data = Provider.of(context, listen: false); - if (userDetails != null) { + if (params != null) { data.getSingleUserChatHistory( senderUID: AppState().chatDetails!.response!.id!.toInt(), - receiverUID: userDetails["targetUser"].id, + receiverUID: params!.chatUser!.id!, loadMore: false, - isNewChat: userDetails["isNewChat"], + isNewChat: params!.isNewChat!, ); } @@ -71,9 +78,10 @@ class _ChatDetailScreenState extends State { backgroundColor: MyColors.backgroundColor, appBar: AppBarWidget( context, - title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, + title: params!.chatUser!.userName.toString().replaceAll(".", " ").capitalizeFirstofEach, showHomeButton: false, - image: userDetails["targetUser"].image == null || userDetails["targetUser"].image.isEmpty ? null : userDetails["targetUser"].image, + image: params!.chatUser!.image == null || params!.chatUser!.image.isEmpty ? null : params!.chatUser!.image, + showTyping: true, actions: [ SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() { // makeCall(callType: "AUDIO", con: hubConnection); @@ -124,8 +132,13 @@ class _ChatDetailScreenState extends State { m.userChatHistory[i], ); }, - ).onPress(() { - logger.d(jsonEncode(m.userChatHistory[i])); + ).onPress(() async { + if (m.userChatHistory[i].fileTypeResponse != null) { + m.getChatMedia( + fileTypeName: m.userChatHistory[i].fileTypeResponse!.fileTypeName ?? "", + fileTypeID: m.userChatHistory[i].fileTypeResponse!.fileTypeId!, + fileName: m.userChatHistory[i].contant!); + } }); }, ), @@ -152,7 +165,7 @@ class _ChatDetailScreenState extends State { ], ).expanded, 12.width, - if (m.isMsgReply && m.repliedMsg.isNotEmpty) showReplyImage(m.repliedMsg), + if (m.isMsgReply && m.repliedMsg.isNotEmpty) showReplyImage(m.repliedMsg, m), 12.width, const Icon(Icons.cancel, size: 23, color: MyColors.grey7BColor).onPress(m.closeMe), ], @@ -209,7 +222,7 @@ class _ChatDetailScreenState extends State { ), ).paddingOnly(right: 25), SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26).onPress( - () => m.sendChatMessage(userDetails["targetUser"].id, userDetails["targetUser"].userName, context), + () => m.sendChatMessage(params!.chatUser!.id!, params!.chatUser!.userName!, context), ), ], ), @@ -223,7 +236,8 @@ class _ChatDetailScreenState extends State { ); } - Widget showReplyImage(List data) { + Widget showReplyImage(List data, ChatProviderModel m) { + logger.d(jsonEncode(data)); if (data.first.isImageLoaded! && data.first.image != null) { return Container( width: 43, @@ -232,7 +246,14 @@ class _ChatDetailScreenState extends State { border: Border.all(color: MyColors.darkGrey3BColor, width: 1), borderRadius: BorderRadius.circular(10.0), image: DecorationImage(image: MemoryImage(data.first.image!), fit: BoxFit.cover)), ); } else { - return const SizedBox(); + return data.first.fileTypeResponse != null + ? Container( + width: 43, + height: 43, + constraints: BoxConstraints(), + decoration: BoxDecoration(border: Border.all(color: MyColors.darkGrey3BColor, width: 1), borderRadius: BorderRadius.circular(10.0), color: Colors.white), + child: SvgPicture.asset(m.getType(data.first.fileTypeResponse!.fileTypeName), alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 5, right: 5, top: 5, bottom: 5)) + : SizedBox(); } } @@ -240,7 +261,7 @@ class _ChatDetailScreenState extends State { print("================== Make call Triggered ============================"); Map json = { "callerID": AppState().chatDetails!.response!.id!.toString(), - "callReceiverID": userDetails["targetUser"].id.toString(), + "callReceiverID": params!.chatUser!.id.toString(), "notification_foreground": "true", "message": "Aamir is calling", "title": "Video Call", @@ -259,7 +280,7 @@ class _ChatDetailScreenState extends State { { "isSeen": false, "isDelivered": false, - "targetUserId": userDetails["targetUser"].id, + "targetUserId": params!.chatUser!.id!, "targetUserStatus": 4, } ], diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 76aa027..7d0631e 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -30,6 +30,16 @@ class _ChatHomeState extends State { super.initState(); data = Provider.of(context, listen: false); data.registerEvents(); + } + + @override + void dispose() { + super.dispose(); + data.clearAll(); + } + + void fetchAgain() { + print("Fetch Triggered"); if (chatHubConnection.state != HubConnectionState.Connected) { data.getUserAutoLoginToken().whenComplete(() async { await data.buildHubConnection(); @@ -42,14 +52,9 @@ class _ChatHomeState extends State { } } - @override - void dispose() { - super.dispose(); - data.clearAll(); - } - @override Widget build(BuildContext context) { + fetchAgain(); return Scaffold( backgroundColor: MyColors.white, appBar: AppBarWidget(context, title: LocaleKeys.chat.tr(), showHomeButton: true), @@ -85,7 +90,6 @@ class _ChatHomeState extends State { onPageChanged: (int pageIndex) { setState(() { tabIndex = pageIndex; - }); }, children: [ diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 804332a..669504f 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -1,22 +1,19 @@ import 'dart:convert'; -import 'dart:typed_data'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_des/flutter_des.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/encryption.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; +import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; -import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; @@ -53,7 +50,9 @@ class _ChatHomeScreenState extends State { body: Consumer( builder: (BuildContext context, ChatProviderModel m, Widget? child) { return m.isLoading - ? ChatHomeShimmer(isDetailedScreen: false,) + ? ChatHomeShimmer( + isDetailedScreen: false, + ) : Column( children: [ TextField( @@ -102,20 +101,24 @@ class _ChatHomeScreenState extends State { height: 48, width: 48, ).toShimmer().circle(30), - if (m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isNotEmpty) - CircularAvatar( - radius: 20, - height: 48, - width: 48, - url: m.searchedChats![index].image, - isImageBase64: true, - ), - if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].isImageLoaded! && m.searchedChats![index].image.isEmpty) + if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].userLocalDownlaodedImage == null) SvgPicture.asset( "assets/images/user.svg", height: 48, width: 48, ), + if (!m.searchedChats![index].isImageLoading! && m.searchedChats![index].userLocalDownlaodedImage != null) + Container( + width: 48.0, + height: 48.0, + decoration: BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + fit: BoxFit.cover, + image: FileImage(m.searchedChats![index].userLocalDownlaodedImage!), + ), + ), + ), Positioned( right: 5, bottom: 1, @@ -128,14 +131,13 @@ class _ChatHomeScreenState extends State { ).circle(10), ) ], - ).onPress(() { - print(jsonEncode(m.searchedChats![index])); - }), + ), Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), + (m.searchedChats![index].isTyping! ? "Typing ..." : "").toText10(color: MyColors.lightGreyColor).paddingOnly(left: 11, top: 0), ], ).expanded, SizedBox( @@ -194,7 +196,7 @@ class _ChatHomeScreenState extends State { Navigator.pushNamed( context, AppRoutes.chatDetailed, - arguments: {"targetUser": m.searchedChats![index], "isNewChat": false}, + arguments: ChatDetailedScreenParams(m.searchedChats![index], false), ).then((Object? value) { m.clearSelections(); m.notifyListeners(); diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 9378625..157a884 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -9,6 +9,7 @@ import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; @@ -45,20 +46,24 @@ class ChatFavoriteUsersScreen extends StatelessWidget { height: 48, width: 48, ).toShimmer().circle(30), - if (m.favUsersList![index].isImageLoaded! && m.favUsersList![index].image != null && m.favUsersList![index].image.isNotEmpty) - CircularAvatar( - radius: 20, - height: 48, - width: 48, - url: m.favUsersList![index].image, - isImageBase64: true, - ), - if (!m.favUsersList![index].isImageLoading! && m.favUsersList![index].isImageLoaded! && m.favUsersList![index].image.isEmpty) + if (!m.favUsersList![index].isImageLoading! && m.favUsersList![index].userLocalDownlaodedImage == null) SvgPicture.asset( "assets/images/user.svg", height: 48, width: 48, ), + if (!m.favUsersList![index].isImageLoading! && m.favUsersList![index].userLocalDownlaodedImage != null) + Container( + width: 48.0, + height: 48.0, + decoration: BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + fit: BoxFit.cover, + image: FileImage(m.favUsersList![index].userLocalDownlaodedImage!), + ), + ), + ), Positioned( right: 5, bottom: 1, @@ -106,7 +111,7 @@ class ChatFavoriteUsersScreen extends StatelessWidget { Navigator.pushNamed( context, AppRoutes.chatDetailed, - arguments: {"targetUser": m.favUsersList![index], "isNewChat": false}, + arguments: ChatDetailedScreenParams(m.favUsersList![index], false), ).then( (Object? value) { m.clearSelections(); diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 4e6988b..0e9053a 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -90,7 +90,6 @@ class _DashboardScreenState extends State { data.fetchMenuEntries(); data.getCategoryOffersListAPI(context); marathonProvider.getMarathonDetailsFromApi(); - data.fetchChatCounts(); _refreshController.refreshCompleted(); } @@ -503,8 +502,8 @@ class _DashboardScreenState extends State { "assets/icons/chat/chat.svg", color: currentIndex == 4 ? MyColors.grey3AColor : MyColors.grey98Color, ).paddingAll(4), - Consumer( - builder: (BuildContext cxt, DashboardProviderModel data, Widget? child) { + Consumer( + builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { return Positioned( right: 0, top: 0, @@ -538,9 +537,7 @@ class _DashboardScreenState extends State { } else if (index == 3) { Navigator.pushNamed(context, AppRoutes.itemsForSale); } else if (index == 4) { - Navigator.pushNamed(context, AppRoutes.chat).then((Object? value) { - data.fetchChatCounts(); - }); + Navigator.pushNamed(context, AppRoutes.chat); } }, ), diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index 199074a..3903327 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -5,7 +5,9 @@ import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; +import 'package:provider/provider.dart'; AppBar AppBarWidget(BuildContext context, {required String title, @@ -13,6 +15,7 @@ AppBar AppBarWidget(BuildContext context, bool showNotificationButton = false, bool showMemberButton = false, String? image, + bool showTyping = false, List? actions, void Function()? onHomeTapped, void Function()? onBackTapped}) { @@ -43,6 +46,16 @@ AppBar AppBarWidget(BuildContext context, ), if (image != null) 14.width, title.toText24(color: MyColors.darkTextColor, isBold: true).expanded, + if(showTyping) + Consumer( + builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { + if (data.currentUserTyping) { + return ("Typing ...").toText10(color: MyColors.lightGreyColor).paddingOnly(left: 5, top: 0); + } else { + return const SizedBox(); + } + }, + ), ], ), centerTitle: false, diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index 475c4a5..77501bc 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -20,6 +20,7 @@ import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; +import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; @@ -238,7 +239,7 @@ class _SearchEmployeeBottomSheetState extends State { Navigator.pushNamed( context, AppRoutes.chatDetailed, - arguments: {"targetUser": chatUsersList![index], "isNewChat": true}, + arguments: ChatDetailedScreenParams(chatUsersList![index], true), ); }, ), diff --git a/lib/widgets/image_picker.dart b/lib/widgets/image_picker.dart index 69bf7e4..75466fc 100644 --- a/lib/widgets/image_picker.dart +++ b/lib/widgets/image_picker.dart @@ -45,7 +45,7 @@ class ImageOptions { onFilesTap: () async { FilePickerResult? result = await FilePicker.platform.pickFiles( type: FileType.custom, - allowedExtensions: ['jpg', 'jpeg ', 'pdf', 'txt', 'docx', 'doc', 'pptx', 'xlsx', 'png', 'rar', 'zip', 'xls'], + allowedExtensions: ['jpg', 'jpeg ', 'pdf', 'txt', 'docx', 'doc', 'pptx', 'xlsx', 'png', 'rar', 'zip',], ); List files = result!.paths.map((path) => File(path!)).toList(); image(result.files.first.path.toString(), files.first); From ff3592a120223a1e468e8e69bae1896c6fe6f80e Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 12 Dec 2022 14:48:38 +0300 Subject: [PATCH 205/302] Chat Fixes & Counter Updated on Signal R --- lib/provider/chat_provider_model.dart | 13 +---- lib/ui/chat/chat_bubble.dart | 6 +-- lib/ui/chat/chat_detailed_screen.dart | 4 +- lib/ui/chat/chat_home_screen.dart | 2 +- lib/widgets/app_bar_widget.dart | 26 --------- lib/widgets/chat_app_bar_widge.dart | 78 +++++++++++++++++++++++++++ 6 files changed, 86 insertions(+), 43 deletions(-) create mode 100644 lib/widgets/chat_app_bar_widge.dart diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index c0dbb52..4263569 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -44,6 +44,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List favUsersList = []; int paginationVal = 0; bool currentUserTyping = false; + int? cTypingUserId = 0; //Chat int chatUConvCounter = 0; @@ -412,17 +413,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); } } - if (isChatScreenActive) { - currentUserTyping = true; - notifyListeners(); - Future.delayed( - const Duration(seconds: 2), - () { - currentUserTyping = false; - notifyListeners(); - }, - ); - } notifyListeners(); } @@ -869,7 +859,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future invokeChatCounter({required int userId}) async { - print("invokedd"); await chatHubConnection.invoke("GetChatCounversationCount", args: [userId]); return ""; } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 3e99678..288a13f 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -116,7 +116,7 @@ class ChatBubble extends StatelessWidget { children: [ if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), - (cItem.contant ?? "").toText12(), + (cItem.contant ?? "").toText12().expanded, ], ), Align( @@ -208,12 +208,12 @@ class ChatBubble extends StatelessWidget { left: 0, right: 10, ), - (cItem.contant ?? "").toText12(color: Colors.white), + (cItem.contant ?? "").toText12(color: Colors.white).expanded, ], ), Align( alignment: Alignment.centerRight, - child: dateTime.toText10(color: Colors.white.withOpacity(.71)), + child: dateTime.toText10(color: Colors.white.withOpacity(.71),), ), ], ), diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 335eda7..9454e75 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -18,6 +18,7 @@ import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/widgets/chat_app_bar_widge.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; @@ -76,12 +77,13 @@ class _ChatDetailScreenState extends State { return Scaffold( backgroundColor: MyColors.backgroundColor, - appBar: AppBarWidget( + appBar: ChatAppBarWidget( context, title: params!.chatUser!.userName.toString().replaceAll(".", " ").capitalizeFirstofEach, showHomeButton: false, image: params!.chatUser!.image == null || params!.chatUser!.image.isEmpty ? null : params!.chatUser!.image, showTyping: true, + chatUser: params!.chatUser, actions: [ SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() { // makeCall(callType: "AUDIO", con: hubConnection); diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 669504f..fe4291f 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -137,7 +137,7 @@ class _ChatHomeScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), - (m.searchedChats![index].isTyping! ? "Typing ..." : "").toText10(color: MyColors.lightGreyColor).paddingOnly(left: 11, top: 0), + (m.searchedChats![index].isTyping! ? "Typing ..." : "").toText10(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 0), ], ).expanded, SizedBox( diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index 3903327..8bca3f3 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -14,19 +14,11 @@ AppBar AppBarWidget(BuildContext context, bool showHomeButton = true, bool showNotificationButton = false, bool showMemberButton = false, - String? image, - bool showTyping = false, List? actions, void Function()? onHomeTapped, void Function()? onBackTapped}) { return AppBar( leadingWidth: 0, - // leading: GestureDetector( - // behavior: HitTestBehavior.opaque, - // onTap: Feedback.wrapForTap(() => Navigator.maybePop(context), context), - // child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), - // ), - //titleSpacing: -1.44, title: Row( children: [ GestureDetector( @@ -37,25 +29,7 @@ AppBar AppBarWidget(BuildContext context, child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), ), 4.width, - if (image != null) - CircularAvatar( - url: image, - height: 40, - width: 40, - isImageBase64: true, - ), - if (image != null) 14.width, title.toText24(color: MyColors.darkTextColor, isBold: true).expanded, - if(showTyping) - Consumer( - builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { - if (data.currentUserTyping) { - return ("Typing ...").toText10(color: MyColors.lightGreyColor).paddingOnly(left: 5, top: 0); - } else { - return const SizedBox(); - } - }, - ), ], ), centerTitle: false, diff --git a/lib/widgets/chat_app_bar_widge.dart b/lib/widgets/chat_app_bar_widge.dart new file mode 100644 index 0000000..3a9dee4 --- /dev/null +++ b/lib/widgets/chat_app_bar_widge.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; +import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; +import 'package:provider/provider.dart'; + +AppBar ChatAppBarWidget(BuildContext context, + {required String title, + bool showHomeButton = true, + String? image, + ChatUser? chatUser, + bool showTyping = false, + List? actions, + void Function()? onHomeTapped, + void Function()? onBackTapped}) { + return AppBar( + leadingWidth: 0, + title: Row( + children: [ + GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: Feedback.wrapForTap(() { + (onBackTapped == null ? Navigator.maybePop(context) : onBackTapped()); + }, context), + child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), + ), + 4.width, + if (image != null) + CircularAvatar( + url: image, + height: 40, + width: 40, + isImageBase64: true, + ), + if (image != null) 14.width, + SizedBox( + height: 40, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + title.toText20(color: MyColors.darkTextColor, isBold: true).expanded, + if (showTyping) + Consumer( + builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { + if (chatUser!.isTyping!) { + return ("Typing ...").toText10(color: MyColors.darkTextColor); + } else { + return const SizedBox(); + } + }, + ), + ], + ).expanded, + ) + ], + ), + centerTitle: false, + elevation: 0, + backgroundColor: Colors.white, + actions: [ + if (showHomeButton) + IconButton( + onPressed: () { + onHomeTapped == null ? Navigator.popUntil(context, ModalRoute.withName(AppRoutes.dashboard)) : onHomeTapped(); + }, + icon: const Icon(Icons.home, color: MyColors.darkIconColor), + ), + ...actions ?? [] + ], + ); +} From 668efb8412e9c1cc880c8da8c6aab51b3145bf8b Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 12 Dec 2022 15:00:02 +0300 Subject: [PATCH 206/302] Chat Fixes & Counter Updated on Signal R --- lib/ui/chat/chat_detailed_screen.dart | 270 +++++++++++++------------- 1 file changed, 136 insertions(+), 134 deletions(-) diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 9454e75..619e850 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -95,145 +95,147 @@ class _ChatDetailScreenState extends State { 21.width, ], ), - body: Consumer( - builder: (BuildContext context, ChatProviderModel m, Widget? child) { - return (m.isLoading - ? ChatHomeShimmer( - isDetailedScreen: true, - ) - : Column( - children: [ - SmartRefresher( - enablePullDown: false, - enablePullUp: true, - onLoading: () { - getMoreChat(); - }, - header: const MaterialClassicHeader( - color: MyColors.gradiantEndColor, - ), - controller: _rc, - reverse: true, - child: ListView.separated( - controller: m.scrollController, - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - reverse: true, - itemCount: m.userChatHistory.length, - padding: const EdgeInsets.all(21), - separatorBuilder: (cxt, index) => 8.height, - itemBuilder: (BuildContext context, int i) { - return SwipeTo( - iconColor: MyColors.lightGreenColor, - child: ChatBubble( - dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), - cItem: m.userChatHistory[i], - ), - onRightSwipe: () { - m.chatReply( - m.userChatHistory[i], - ); - }, - ).onPress(() async { - if (m.userChatHistory[i].fileTypeResponse != null) { - m.getChatMedia( - fileTypeName: m.userChatHistory[i].fileTypeResponse!.fileTypeName ?? "", - fileTypeID: m.userChatHistory[i].fileTypeResponse!.fileTypeId!, - fileName: m.userChatHistory[i].contant!); - } - }); + body: SafeArea( + child: Consumer( + builder: (BuildContext context, ChatProviderModel m, Widget? child) { + return (m.isLoading + ? ChatHomeShimmer( + isDetailedScreen: true, + ) + : Column( + children: [ + SmartRefresher( + enablePullDown: false, + enablePullUp: true, + onLoading: () { + getMoreChat(); }, - ), - ).expanded, - if (m.isMsgReply) - SizedBox( - height: 82, - child: Row( - children: [ - Container(height: 82, color: MyColors.textMixColor, width: 6), - Container( - color: MyColors.darkTextColor.withOpacity(0.10), - padding: const EdgeInsets.only(top: 11, left: 14, bottom: 14, right: 21), - child: Row( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString() - ? "You" - : m.repliedMsg.first.currentUserName.toString().replaceAll(".", " ")) - .toText14(color: MyColors.lightGreenColor), - (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12(color: MyColors.grey71Color, maxLine: 2) - ], - ).expanded, - 12.width, - if (m.isMsgReply && m.repliedMsg.isNotEmpty) showReplyImage(m.repliedMsg, m), - 12.width, - const Icon(Icons.cancel, size: 23, color: MyColors.grey7BColor).onPress(m.closeMe), - ], - ), - ).expanded, - ], + header: const MaterialClassicHeader( + color: MyColors.gradiantEndColor, ), - ), - if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") - SizedBox(height: 200, width: double.infinity, child: Image.file(m.selectedFile, fit: BoxFit.cover)).paddingOnly(left: 21, right: 21, top: 21), - const Divider( - height: 1, - color: MyColors.lightGreyEFColor, - ), - TextField( - controller: m.message, - decoration: InputDecoration( - hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), - hintStyle: TextStyle(color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14), - border: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, - errorBorder: InputBorder.none, - disabledBorder: InputBorder.none, - filled: true, - fillColor: MyColors.white, - contentPadding: const EdgeInsets.only( - left: 21, - top: 20, - bottom: 20, + controller: _rc, + reverse: true, + child: ListView.separated( + controller: m.scrollController, + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + reverse: true, + itemCount: m.userChatHistory.length, + padding: const EdgeInsets.all(21), + separatorBuilder: (cxt, index) => 8.height, + itemBuilder: (BuildContext context, int i) { + return SwipeTo( + iconColor: MyColors.lightGreenColor, + child: ChatBubble( + dateTime: m.dateFormte(m.userChatHistory[i].createdDate!), + cItem: m.userChatHistory[i], + ), + onRightSwipe: () { + m.chatReply( + m.userChatHistory[i], + ); + }, + ).onPress(() async { + if (m.userChatHistory[i].fileTypeResponse != null) { + m.getChatMedia( + fileTypeName: m.userChatHistory[i].fileTypeResponse!.fileTypeName ?? "", + fileTypeID: m.userChatHistory[i].fileTypeResponse!.fileTypeId!, + fileName: m.userChatHistory[i].contant!); + } + }); + }, ), - prefixIconConstraints: const BoxConstraints(), - prefixIcon: m.sFileType.isNotEmpty - ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 21, right: 15) - : null, - suffixIcon: SizedBox( - width: 100, + ).expanded, + if (m.isMsgReply) + SizedBox( + height: 82, child: Row( - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.center, // added line children: [ - if (m.sFileType.isNotEmpty) - Row( - children: [ - const Icon(Icons.cancel, size: 15, color: MyColors.redA3Color).paddingOnly(right: 5), - ("Clear").toText11(color: MyColors.redA3Color, isUnderLine: true).paddingOnly(left: 0), + Container(height: 82, color: MyColors.textMixColor, width: 6), + Container( + color: MyColors.darkTextColor.withOpacity(0.10), + padding: const EdgeInsets.only(top: 11, left: 14, bottom: 14, right: 21), + child: Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString() + ? "You" + : m.repliedMsg.first.currentUserName.toString().replaceAll(".", " ")) + .toText14(color: MyColors.lightGreenColor), + (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12(color: MyColors.grey71Color, maxLine: 2) + ], + ).expanded, + 12.width, + if (m.isMsgReply && m.repliedMsg.isNotEmpty) showReplyImage(m.repliedMsg, m), + 12.width, + const Icon(Icons.cancel, size: 23, color: MyColors.grey7BColor).onPress(m.closeMe), ], - ).onPress(() => m.removeAttachment()).paddingOnly(right: 25), - if (m.sFileType.isEmpty) - RotationTransition( - turns: const AlwaysStoppedAnimation(45 / 360), - child: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor).onPress( - () => m.selectImageToUpload(context), - ), - ).paddingOnly(right: 25), - SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26).onPress( - () => m.sendChatMessage(params!.chatUser!.id!, params!.chatUser!.userName!, context), - ), + ), + ).expanded, ], ), - ).paddingOnly(right: 21), + ), + if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") + SizedBox(height: 200, width: double.infinity, child: Image.file(m.selectedFile, fit: BoxFit.cover)).paddingOnly(left: 21, right: 21, top: 21), + const Divider( + height: 1, + color: MyColors.lightGreyEFColor, + ), + TextField( + controller: m.message, + decoration: InputDecoration( + hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), + hintStyle: TextStyle(color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14), + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + errorBorder: InputBorder.none, + disabledBorder: InputBorder.none, + filled: true, + fillColor: MyColors.white, + contentPadding: const EdgeInsets.only( + left: 21, + top: 20, + bottom: 20, + ), + prefixIconConstraints: const BoxConstraints(), + prefixIcon: m.sFileType.isNotEmpty + ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 21, right: 15) + : null, + suffixIcon: SizedBox( + width: 100, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.center, // added line + children: [ + if (m.sFileType.isNotEmpty) + Row( + children: [ + const Icon(Icons.cancel, size: 15, color: MyColors.redA3Color).paddingOnly(right: 5), + ("Clear").toText11(color: MyColors.redA3Color, isUnderLine: true).paddingOnly(left: 0), + ], + ).onPress(() => m.removeAttachment()).paddingOnly(right: 25), + if (m.sFileType.isEmpty) + RotationTransition( + turns: const AlwaysStoppedAnimation(45 / 360), + child: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor).onPress( + () => m.selectImageToUpload(context), + ), + ).paddingOnly(right: 25), + SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26).onPress( + () => m.sendChatMessage(params!.chatUser!.id!, params!.chatUser!.userName!, context), + ), + ], + ), + ).paddingOnly(right: 21), + ), ), - ), - ], - )); - }, + ], + )); + }, + ), ), ); } @@ -248,14 +250,14 @@ class _ChatDetailScreenState extends State { border: Border.all(color: MyColors.darkGrey3BColor, width: 1), borderRadius: BorderRadius.circular(10.0), image: DecorationImage(image: MemoryImage(data.first.image!), fit: BoxFit.cover)), ); } else { - return data.first.fileTypeResponse != null + return data.first.fileTypeResponse != null && data.first.fileTypeResponse!.fileTypeName != null ? Container( width: 43, height: 43, - constraints: BoxConstraints(), + constraints: const BoxConstraints(), decoration: BoxDecoration(border: Border.all(color: MyColors.darkGrey3BColor, width: 1), borderRadius: BorderRadius.circular(10.0), color: Colors.white), - child: SvgPicture.asset(m.getType(data.first.fileTypeResponse!.fileTypeName), alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 5, right: 5, top: 5, bottom: 5)) - : SizedBox(); + child: SvgPicture.asset(m.getType(data.first.fileTypeResponse!.fileTypeName ?? ""), alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 5, right: 5, top: 5, bottom: 5)) + : const SizedBox(); } } From ae559df29f07b036756db0d2953a715ba76223ed Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 12 Dec 2022 15:56:52 +0300 Subject: [PATCH 207/302] Chat Fixes & Counter Updated on Signal R --- lib/provider/chat_provider_model.dart | 7 +++++-- lib/ui/chat/chat_detailed_screen.dart | 6 ++---- lib/ui/chat/chat_home_screen.dart | 10 +++++++++- lib/widgets/chat_app_bar_widge.dart | 10 ++++++++-- pubspec.yaml | 1 + 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 4263569..d3639c9 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -405,7 +405,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (user.id == parameters![1] && parameters[0] == true) { user.isTyping = parameters[0] as bool?; Future.delayed( - const Duration(seconds: 1), + const Duration(seconds: 2), () { user.isTyping = false; notifyListeners(); @@ -839,12 +839,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } - Future getChatMedia({required String fileName, required String fileTypeName, required int fileTypeID}) async { + Future getChatMedia(BuildContext context, {required String fileName, required String fileTypeName, required int fileTypeID}) async { + Utils.showLoading(context); if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) { Uint8List encodedString = await ChatApiClient().downloadURL(fileName: fileName, fileTypeDescription: getFileTypeDescription(fileTypeName)); try { String path = await downChatMedia(encodedString, fileTypeName ?? ""); + Utils.hideLoading(context); OpenFile.open(path); + } catch (e) { Utils.showToast("Cannot open file."); } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 619e850..15b2156 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -137,10 +137,8 @@ class _ChatDetailScreenState extends State { }, ).onPress(() async { if (m.userChatHistory[i].fileTypeResponse != null) { - m.getChatMedia( - fileTypeName: m.userChatHistory[i].fileTypeResponse!.fileTypeName ?? "", - fileTypeID: m.userChatHistory[i].fileTypeResponse!.fileTypeId!, - fileName: m.userChatHistory[i].contant!); + m.getChatMedia(context, + fileTypeName: m.userChatHistory[i].fileTypeResponse!.fileTypeName ?? "", fileTypeID: m.userChatHistory[i].fileTypeId!, fileName: m.userChatHistory[i].contant!); } }); }, diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index fe4291f..a9814ee 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -137,7 +138,14 @@ class _ChatHomeScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), - (m.searchedChats![index].isTyping! ? "Typing ..." : "").toText10(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 0), + m.searchedChats![index].isTyping! + ? AnimatedTextKit( + animatedTexts: [ + ScaleAnimatedText('Typing...', textStyle: const TextStyle(color: MyColors.textMixColor, fontSize: 10, letterSpacing: -0.4, fontStyle: FontStyle.normal)), + ], + ).paddingOnly(left: 11) + : const SizedBox() + //(m.searchedChats![index].isTyping! ? "Typing ..." : "").toText10(color: MyColors.textMixColor).paddingOnly(left: 11, top: 0), ], ).expanded, SizedBox( diff --git a/lib/widgets/chat_app_bar_widge.dart b/lib/widgets/chat_app_bar_widge.dart index 3a9dee4..0feac6c 100644 --- a/lib/widgets/chat_app_bar_widge.dart +++ b/lib/widgets/chat_app_bar_widge.dart @@ -1,3 +1,4 @@ +import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; @@ -50,14 +51,19 @@ AppBar ChatAppBarWidget(BuildContext context, Consumer( builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { if (chatUser!.isTyping!) { - return ("Typing ...").toText10(color: MyColors.darkTextColor); + // return ("Typing ...").toText10(color: MyColors.textMixColor); + return AnimatedTextKit( + animatedTexts: [ + ScaleAnimatedText('Typing...', textStyle: const TextStyle(color: MyColors.textMixColor, fontSize: 10, letterSpacing: -0.4, fontStyle: FontStyle.normal)), + ], + ); } else { return const SizedBox(); } }, ), ], - ).expanded, + ), ) ], ), diff --git a/pubspec.yaml b/pubspec.yaml index 0d5cda5..2e3c4c2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -92,6 +92,7 @@ dependencies: swipe_to: ^1.0.2 flutter_webrtc: ^0.9.16 camera: ^0.10.0+4 + animated_text_kit: ^4.2.2 #Encryption flutter_des: ^2.1.0 From 43fb34c218c7455d725193e24abe300efd4979b9 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 12 Dec 2022 16:15:50 +0300 Subject: [PATCH 208/302] fixes --- lib/classes/utils.dart | 4 ++-- lib/models/member_information_list_model.dart | 2 +- lib/ui/profile/contact_details.dart | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 050ae4d..1336f3f 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -121,8 +121,8 @@ class Utils { ), ); } else { - // showToast(errorMessage); - confirmDialog(cxt, errorMessage); + showToast(errorMessage); + // confirmDialog(cxt, errorMessage); } } } diff --git a/lib/models/member_information_list_model.dart b/lib/models/member_information_list_model.dart index 4225905..4871855 100644 --- a/lib/models/member_information_list_model.dart +++ b/lib/models/member_information_list_model.dart @@ -48,7 +48,7 @@ class MemberInformationListModel { String? nATIONALITYCODE; String? nATIONALITYMEANING; String? nATIONALIDENTIFIER; - String? nORMALHOURS; + dynamic? nORMALHOURS; int? nOOFROWS; int? oRGANIZATIONID; String? oRGANIZATIONNAME; diff --git a/lib/ui/profile/contact_details.dart b/lib/ui/profile/contact_details.dart index 4d28a81..749978e 100644 --- a/lib/ui/profile/contact_details.dart +++ b/lib/ui/profile/contact_details.dart @@ -160,7 +160,7 @@ class _ContactDetailsState extends State { right: 1, child: const Icon(Icons.add_location_alt_outlined, size: 20).onPress(continueDynamicForms), ), - Utils.getNoDataWidget(context).expanded, + Utils.getNoDataWidget(context), ], ).objectContainerView() ], From ef347f1078041c406a54a61d60a4d888eebd8259 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 12 Dec 2022 16:53:21 +0300 Subject: [PATCH 209/302] Sort Fix --- lib/provider/chat_provider_model.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index d3639c9..d5b81fe 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -125,6 +125,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { AppState().chatDetails!.response!.id.toString(), ), ); + sort(); notifyListeners(); if (searchedChats!.isNotEmpty) { getUserImages(); From feb5c5071caa3e636e258e41841c7d8d50a94f0e Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 13 Dec 2022 09:54:32 +0300 Subject: [PATCH 210/302] Fav Users Images Fix --- lib/provider/chat_provider_model.dart | 22 +++++++++++----------- lib/ui/landing/dashboard_screen.dart | 3 +++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index d5b81fe..ca07b9b 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -127,7 +127,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); sort(); notifyListeners(); - if (searchedChats!.isNotEmpty) { + if (searchedChats!.isNotEmpty || favUsersList.isNotEmpty) { getUserImages(); } } @@ -142,19 +142,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (isNewChat) userChatHistory = []; if (!loadMore) paginationVal = 0; isChatScreenActive = true; - // if (chatHubConnection.state != HubConnectionState.Connected) { - // getUserAutoLoginToken().whenComplete(() async { - // await buildHubConnection(); - // getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore); - // }); - // return; - // } Response response = await ChatApiClient().getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); if (response.statusCode == 204) { if (isNewChat) { userChatHistory = []; } else if (loadMore) { - // userChatHistory = []; Utils.showToast("No More Data To Load"); } } else { @@ -765,9 +757,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void getUserImages() async { List emails = []; - for (ChatUser element in searchedChats!) { + List exists = [], unique = []; + exists.addAll(searchedChats!); + exists.addAll(favUsersList!); + Map profileMap = {}; + for (ChatUser item in exists) { + profileMap[item.email!] = item; + } + unique = profileMap.values.toList(); + for (ChatUser element in unique!) { emails.add(await EmailImageEncryption().encrypt(val: element.email!)); } + List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); for (ChatUser user in searchedChats!) { for (ChatUserImageModel uImage in chatImages) { @@ -848,7 +849,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String path = await downChatMedia(encodedString, fileTypeName ?? ""); Utils.hideLoading(context); OpenFile.open(path); - } catch (e) { Utils.showToast("Cannot open file."); } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 0e9053a..1800aa3 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -72,6 +72,9 @@ class _DashboardScreenState extends State { void _bHubCon() { cProvider.getUserAutoLoginToken().whenComplete(() { cProvider.buildHubConnection(); + Future.delayed(const Duration(seconds: 2), () { + cProvider.invokeChatCounter(userId: AppState().chatDetails!.response!.id!); + }); }); } From 2a39ee9ddc8f929bc9d4b1caabb7652b7e26cdb9 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 13 Dec 2022 10:00:27 +0300 Subject: [PATCH 211/302] Fav Users Images Fix --- lib/ui/chat/chat_home.dart | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 7d0631e..807af1a 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -38,23 +38,23 @@ class _ChatHomeState extends State { data.clearAll(); } - void fetchAgain() { - print("Fetch Triggered"); - if (chatHubConnection.state != HubConnectionState.Connected) { - data.getUserAutoLoginToken().whenComplete(() async { - await data.buildHubConnection(); - data.getUserRecentChats(); - }); - return; - } - if (data.searchedChats == null || data.searchedChats!.isEmpty) { - data.getUserRecentChats(); - } - } + // void fetchAgain() { + // print("Fetch Triggered"); + // if (chatHubConnection.state != HubConnectionState.Connected) { + // data.getUserAutoLoginToken().whenComplete(() async { + // await data.buildHubConnection(); + // data.getUserRecentChats(); + // }); + // return; + // } + // if (data.searchedChats == null || data.searchedChats!.isEmpty) { + // data.getUserRecentChats(); + // } + // } @override Widget build(BuildContext context) { - fetchAgain(); + // fetchAgain(); return Scaffold( backgroundColor: MyColors.white, appBar: AppBarWidget(context, title: LocaleKeys.chat.tr(), showHomeButton: true), From 45b4adc2528986a5b59c7fbdd800f2fc381aa14d Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 13 Dec 2022 10:09:20 +0300 Subject: [PATCH 212/302] Fav Users Images Fix --- lib/provider/chat_provider_model.dart | 3 ++- lib/ui/chat/chat_bubble.dart | 3 +-- lib/ui/chat/chat_detailed_screen.dart | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index ca07b9b..3a4e70b 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -526,7 +526,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await chatHubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); } - void sendChatMessage(int targetUserId, String targetUserName, BuildContext context) async { + void sendChatMessage(int targetUserId, int userStatus, String targetUserName, BuildContext context) async { dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { searchedChats!.add( @@ -539,6 +539,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isImageLoaded: true, isTyping: false, isFav: false, + userStatus: userStatus, userLocalDownlaodedImage: null, ), ); diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 288a13f..c79c66b 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -54,11 +54,10 @@ class ChatBubble extends StatelessWidget { screenOffset = Offset(windowSize.width / 2, windowSize.height / 2); makeAssign(); data = Provider.of(context, listen: false); - return isCurrentUser ? currentUser(context) : receiptUser(context); } - Widget currentUser(context) { + Widget currentUser(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 15b2156..05e674a 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -223,7 +223,7 @@ class _ChatDetailScreenState extends State { ), ).paddingOnly(right: 25), SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26).onPress( - () => m.sendChatMessage(params!.chatUser!.id!, params!.chatUser!.userName!, context), + () => m.sendChatMessage(params!.chatUser!.id!, params!.chatUser!.userStatus ?? 0, params!.chatUser!.userName!, context), ), ], ), @@ -239,7 +239,6 @@ class _ChatDetailScreenState extends State { } Widget showReplyImage(List data, ChatProviderModel m) { - logger.d(jsonEncode(data)); if (data.first.isImageLoaded! && data.first.image != null) { return Container( width: 43, From 4a513c08d905ba8e82613ce4f0f889a9953e088f Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 13 Dec 2022 10:46:30 +0300 Subject: [PATCH 213/302] fixes --- lib/classes/consts.dart | 1 + lib/classes/utils.dart | 2 +- lib/main.dart | 5 ++++ .../get_time_card_summary_list_model.dart | 24 +++++++++---------- lib/ui/landing/dashboard_screen.dart | 2 +- lib/ui/work_list/worklist_detail_screen.dart | 22 ++++++++++++++++- 6 files changed, 41 insertions(+), 15 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index e9b902a..3d58efd 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,6 +3,7 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 1336f3f..3be8356 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -37,7 +37,7 @@ class Utils { timeInSecForIosWeb: 1, backgroundColor: Colors.black54, textColor: Colors.white, - fontSize: 16.0); + fontSize: 13.0); } static dynamic getNotNullValue(List list, int index) { diff --git a/lib/main.dart b/lib/main.dart index aa9f933..fdc4ad6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:logger/logger.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; @@ -37,6 +38,10 @@ bool isTablet = false; Future main() async { WidgetsFlutterBinding.ensureInitialized(); + SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + DeviceOrientation.portraitDown, + ]); await EasyLocalization.ensureInitialized(); AppState().setPostParamsInitConfig(); HttpOverrides.global = MyHttpOverrides(); diff --git a/lib/models/get_time_card_summary_list_model.dart b/lib/models/get_time_card_summary_list_model.dart index 85a2a8e..becc1d2 100644 --- a/lib/models/get_time_card_summary_list_model.dart +++ b/lib/models/get_time_card_summary_list_model.dart @@ -1,41 +1,41 @@ class GetTimeCardSummaryList { - int? aBSENTDAYS; + num? aBSENTDAYS; dynamic? aCTUALHRS; dynamic? aPPROVEDTIMEBACKHRS; - int? aSSIGNMENTID; - int? aTTENDEDDAYS; - int? bUSINESSTRIP; + num? aSSIGNMENTID; + num? aTTENDEDDAYS; + num? bUSINESSTRIP; dynamic? cOMPOFFHHRS; dynamic? cOMPOFFNHRS; dynamic? cOMPOFFWHRS; dynamic? dESIREDSCHEDULEDHRS; dynamic? eARLYOUTHRS; dynamic? eXCESSHRS; - int? hALFDAYLEAVE; + num? hALFDAYLEAVE; dynamic? lATEINHRS; dynamic? lEAVESHOLIDAYSHRS; dynamic? nONSCHEDULEDAYS; dynamic? nOTANALYZEDDAYS; - int? oFFDAYS; + num? oFFDAYS; dynamic? oNCALLHRS; dynamic? pAIDLEAVE; - int? pERIODDAYS; + num? pERIODDAYS; dynamic? pLANNEDOTHRS; - int? pUBLICHOLIDAY; + num? pUBLICHOLIDAY; dynamic? sCHEDULEDHRS; dynamic? sCHEDULEDONCALLHRS; dynamic? sCHEDULEDPLANNEDOTHRS; - int? sCHEDULEDAYS; + num? sCHEDULEDAYS; dynamic? sHORTAGEHRS; dynamic? sHORTAGESCHEDULEHRS; - int? sICKLEAVE; + num? sICKLEAVE; dynamic? tIMEBACKHRS; dynamic? tIMEBACKBALANCE; - int? uNAUTHORIZEDLEAVE; + num? uNAUTHORIZEDLEAVE; dynamic? uNCOVERDSHORTAGEHRS; - int? uNPAIDLEAVE; + num? uNPAIDLEAVE; GetTimeCardSummaryList( {this.aBSENTDAYS, diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 0e9053a..15fc795 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -196,7 +196,7 @@ class _DashboardScreenState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color), + LocaleKeys.welcomeBack.tr().toText14(color: MyColors.grey77Color), (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(isBold: true), 16.height, Row( diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 75ee88f..b5129a5 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -106,6 +106,19 @@ class _WorkListDetailScreenState extends State { void getData() async { // try { // Utils.showLoading(context); + + getEitCollectionNotificationBodyList!.clear(); + getAbsenceCollectionNotificationBodyList!.clear(); + getPrNotificationBody = null; + getStampMsNotifications.clear(); + getStampNsNotifications.clear(); + getPoNotificationBody?.pOHeader!.clear(); + getItemCreationNtfBody?.itemCreationHeader!.clear(); + getPhonesNotificationBodyList!.clear(); + getBasicDetNtfBodyList!.clear(); + getAbsenceCollectionNotificationBodyList!.clear(); + getContactNotificationBodyList = null; + if (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") { getUserInformation(); } @@ -688,7 +701,7 @@ class _WorkListDetailScreenState extends State { GenericResponseModel model = await WorkListApiClient().postNotificationActions(payload); Utils.hideLoading(context); Utils.showToast(LocaleKeys.yourChangeHasBeenSavedSuccessfully.tr()); - animationIndex=animationIndex+1; + animationIndex = animationIndex + 1; AppState().workList!.removeAt(AppState().workListIndex!); if (AppState().workList!.isEmpty) { Navigator.pop(context, "delegate_reload"); @@ -725,6 +738,7 @@ class _WorkListDetailScreenState extends State { try { if (apiCallCount == 0) Utils.showLoading(context); apiCallCount++; + getEitCollectionNotificationBodyList!.clear(); getEitCollectionNotificationBodyList = await WorkListApiClient().GetEitNotificationBody(workListData!.nOTIFICATIONID); apiCallCount--; if (apiCallCount == 0) { @@ -742,6 +756,7 @@ class _WorkListDetailScreenState extends State { try { if (apiCallCount == 0) Utils.showLoading(context); apiCallCount++; + memberInformationListModel = null; memberInformationListModel = await WorkListApiClient().getUserInformation(-999, workListData!.sELECTEDEMPLOYEENUMBER!); apiCallCount--; if (apiCallCount == 0) { @@ -759,6 +774,7 @@ class _WorkListDetailScreenState extends State { try { if (apiCallCount == 0) Utils.showLoading(context); apiCallCount++; + getPhonesNotificationBodyList!.clear(); getPhonesNotificationBodyList = await WorkListApiClient().getPhonesNotificationBodyList(workListData!.nOTIFICATIONID); apiCallCount--; if (apiCallCount == 0) { @@ -776,6 +792,7 @@ class _WorkListDetailScreenState extends State { try { if (apiCallCount == 0) Utils.showLoading(context); apiCallCount++; + getBasicDetNtfBodyList!.clear(); getBasicDetNtfBodyList = await WorkListApiClient().getBasicDetNtfBodyList(workListData!.nOTIFICATIONID); apiCallCount--; if (apiCallCount == 0) { @@ -793,6 +810,7 @@ class _WorkListDetailScreenState extends State { try { if (apiCallCount == 0) Utils.showLoading(context); apiCallCount++; + getAbsenceCollectionNotificationBodyList!.clear(); getAbsenceCollectionNotificationBodyList = await WorkListApiClient().getAbsenceNotificationBody(workListData!.nOTIFICATIONID); apiCallCount--; if (apiCallCount == 0) { @@ -916,6 +934,7 @@ class _WorkListDetailScreenState extends State { try { if (apiCallCount == 0) Utils.showLoading(context); apiCallCount++; + getNotificationRespondAttributes.clear(); getNotificationRespondAttributes = await WorkListApiClient().notificationGetRespondAttributes(workListData!.nOTIFICATIONID!); if (getNotificationRespondAttributes.isNotEmpty) { notificationNoteInput = getNotificationRespondAttributes.first; @@ -936,6 +955,7 @@ class _WorkListDetailScreenState extends State { try { if (apiCallCount == 0) Utils.showLoading(context); apiCallCount++; + notificationButtonsList.clear(); notificationButtonsList = await WorkListApiClient().getNotificationButtons(workListData!.nOTIFICATIONID!); if (notificationButtonsList.isNotEmpty) { isCloseAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "CLOSE"); From 67c4970897bb1d0493392ee32672b07d2482a62b Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 13 Dec 2022 11:11:40 +0300 Subject: [PATCH 214/302] fixes --- lib/ui/chat/chat_home.dart | 27 +++++++++++++-------------- lib/ui/landing/dashboard_screen.dart | 2 +- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 807af1a..330242a 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -38,23 +38,22 @@ class _ChatHomeState extends State { data.clearAll(); } - // void fetchAgain() { - // print("Fetch Triggered"); - // if (chatHubConnection.state != HubConnectionState.Connected) { - // data.getUserAutoLoginToken().whenComplete(() async { - // await data.buildHubConnection(); - // data.getUserRecentChats(); - // }); - // return; - // } - // if (data.searchedChats == null || data.searchedChats!.isEmpty) { - // data.getUserRecentChats(); - // } - // } + void fetchAgain() { + if (chatHubConnection.state != HubConnectionState.Connected) { + data.getUserAutoLoginToken().whenComplete(() async { + await data.buildHubConnection(); + data.getUserRecentChats(); + }); + return; + } + if (data.searchedChats == null || data.searchedChats!.isEmpty) { + data.getUserRecentChats(); + } + } @override Widget build(BuildContext context) { - // fetchAgain(); + fetchAgain(); return Scaffold( backgroundColor: MyColors.white, appBar: AppBarWidget(context, title: LocaleKeys.chat.tr(), showHomeButton: true), diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 2d7de09..b423ebd 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -58,7 +58,6 @@ class _DashboardScreenState extends State { data = Provider.of(context, listen: false); marathonProvider = Provider.of(context, listen: false); cProvider = Provider.of(context, listen: false); - _bHubCon(); _onRefresh(); }); } @@ -80,6 +79,7 @@ class _DashboardScreenState extends State { void _onRefresh() async { data.initProvider(); + _bHubCon(); // data.getITGNotification().then((value) { // print("--------------------detail_1-----------------"); // print(value!.result!.data!.notificationMasterId); From 86d25d3ecce835a6d71a377579d931fb3594d79c Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 13 Dec 2022 11:13:37 +0300 Subject: [PATCH 215/302] Added Privileged logic for Marathon --- assets/langs/ar-SA.json | 3 +- assets/langs/en-US.json | 3 +- lib/app_state/app_state.dart | 1 + lib/classes/colors.dart | 1 + lib/generated/locale_keys.g.dart | 1 + lib/ui/login/verify_login_screen.dart | 1 + lib/ui/marathon/marathon_provider.dart | 59 ++- lib/ui/marathon/marathon_screen.dart | 141 +++-- lib/ui/marathon/widgets/marathon_banner.dart | 514 ++++++++++++------- 9 files changed, 478 insertions(+), 246 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index d51e724..2adb2ba 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -512,5 +512,6 @@ "youWantToLeaveMarathon": "هل أنت متأكد أنك تريد العودة؟ سوف تخرج من المسابقة.", "ourSponsor": "راعينا:", "startingIn": "يبدأ في", - "youAreOutOfContest": "أنت خارج المسابقة." + "youAreOutOfContest": "أنت خارج المسابقة.", + "winners": "الفائزين!!!" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 97e8c5c..46ede79 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -512,6 +512,7 @@ "youWantToLeaveMarathon": "Are you sure you want to go back? You will be out of the contest.", "ourSponsor": "Our Sponsor:", "startingIn": "Starting in", - "youAreOutOfContest": "You are out of the contest." + "youAreOutOfContest": "You are out of the contest.", + "winners": "WINNERS!!!" } \ No newline at end of file diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index b0620ad..5060195 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -38,6 +38,7 @@ class AppState { String? get getForgetPasswordTokenID => forgetPasswordTokenID; + //Wifi info String? _mohemmWifiSSID; diff --git a/lib/classes/colors.dart b/lib/classes/colors.dart index 4394279..5c9b30e 100644 --- a/lib/classes/colors.dart +++ b/lib/classes/colors.dart @@ -63,4 +63,5 @@ class MyColors { static const Color darkDigitColor = Color(0xff2D2F39); static const Color grey71Color = Color(0xff717171); static const Color darkGrey3BColor = Color(0xff3B3B3B); + static const Color lightGreyIconColor = Color(0xff919191); } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index c862385..8960278 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -499,5 +499,6 @@ abstract class LocaleKeys { static const ourSponsor = 'ourSponsor'; static const startingIn = 'startingIn'; static const youAreOutOfContest = 'youAreOutOfContest'; + static const winners = 'winners'; } diff --git a/lib/ui/login/verify_login_screen.dart b/lib/ui/login/verify_login_screen.dart index ce21b63..b5eb7df 100644 --- a/lib/ui/login/verify_login_screen.dart +++ b/lib/ui/login/verify_login_screen.dart @@ -642,6 +642,7 @@ class _VerifyLoginScreenState extends State { PrivilegeListModel.saveToPrefs(genericResponseModel.privilegeList ?? []); AppState().setMohemmWifiSSID = genericResponseModel.mohemmWifiSSID; AppState().setMohemmWifiPassword = genericResponseModel.mohemmWifiPassword; + AppState().setMohemmWifiPassword = genericResponseModel.mohemmWifiPassword; Utils.saveStringFromPrefs(SharedPrefsConsts.username, AppState().getUserName!); Utils.saveStringFromPrefs(SharedPrefsConsts.password, AppState().password!); Utils.saveStringFromPrefs(SharedPrefsConsts.mohemmWifiSSID, genericResponseModel.mohemmWifiSSID!); diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 2d778b9..175b7be 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -5,11 +5,13 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/models/marathon/winner_model.dart'; +import 'package:mohem_flutter_app/models/privilege_list_model.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:video_player/video_player.dart'; @@ -28,6 +30,9 @@ class MarathonProvider extends ChangeNotifier { String? selectedOptionId; int? totalQualifiers; + bool iAmWinner = false; + bool isPrivilegedWithMarathon = false; + bool _isLoading = false; bool get isLoading => _isLoading; @@ -164,7 +169,7 @@ class MarathonProvider extends ChangeNotifier { oneSec, (Timer timer) async { // This 2 is just to show the color of answer tile for 2 seconds and then update card status - if (totalCurrentQuestionTime - currentGapTime == currentQuestion.questionTime! - 2) { + if (totalCurrentQuestionTime - currentGapTime == 1) { getCorrectAnswerAndUpdateAnswerColor(); } @@ -182,7 +187,7 @@ class MarathonProvider extends ChangeNotifier { if (totalCurrentQuestionTime == 0) { updateCardData(); - if (currentQuestionNumber == marathonDetailModel.totalQuestions! - 1) { + if (currentQuestionNumber == marathonDetailModel.totalQuestions! ) { callGetQualifiersApi(); updateQuestionCardStatus(QuestionCardStatus.findingWinner); timer.cancel(); @@ -235,6 +240,19 @@ class MarathonProvider extends ChangeNotifier { Future callGetSelectedWinnersApi() async { selectedWinners = await MarathonApiClient().getSelectedWinner(marathonId: marathonDetailModel.id!); + if (selectedWinners != null) { + selectedWinners!.removeWhere((WinnerModel element) { + print("matching : ${AppState().memberInformationList!.eMPLOYEENUMBER} with ${element.employeeId}"); + if (element.employeeId == AppState().memberInformationList!.eMPLOYEENUMBER) { + iAmWinner = true; + return true; + } else { + return false; + } + }); + } + print("selectedWinners Length : ${selectedWinners!.length}"); + notifyListeners(); } @@ -361,20 +379,35 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } + bool checkIfPrivilegedForMarathon() { + for (PrivilegeListModel element in AppState().privilegeListModel!) { + if (element.serviceName == "Marathon") { + if (element.previlege != null) { + return element.previlege!; + } + } + } + return false; + } + Future getMarathonDetailsFromApi() async { isLoading = true; notifyListeners(); - await MarathonApiClient().getMarathonToken().whenComplete(() async { - marathonDetailModel = await MarathonApiClient().getMarathonDetails(); - if (marathonDetailModel.id == null) { - isUpComingMarathon = false; - notifyListeners(); - return; - } - populateQuestionStatusesList(); - isLoading = false; - notifyListeners(); - }); + isPrivilegedWithMarathon = checkIfPrivilegedForMarathon(); + if (isPrivilegedWithMarathon) { + await MarathonApiClient().getMarathonToken().whenComplete(() async { + marathonDetailModel = await MarathonApiClient().getMarathonDetails(); + if (marathonDetailModel.id == null) { + isUpComingMarathon = false; + isLoading = false; + notifyListeners(); + return; + } + populateQuestionStatusesList(); + }); + } + isLoading = false; + notifyListeners(); } Future onJoinMarathonPressed(BuildContext context) async { diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 2ae3f64..71ae3d6 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -43,71 +43,102 @@ class MarathonScreen extends StatelessWidget { return Image.asset(MyLottieConsts.congratsGif, height: 200); } + // SizedBox( + // height: 200, + // child: Stack( + // fit: StackFit.expand, + // children: [ + // Lottie.asset(MyLottieConsts.celebrate1Lottie, height: 200), + // // Lottie.asset(MyLottieConsts.celebrate2Lottie, height: 200), + // ], + // ), + // ), + Widget getWinnerWidget(BuildContext context, {required MarathonProvider provider}) { return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SizedBox( - height: 200, - child: Stack( - children: [ - Lottie.asset(MyLottieConsts.celebrate1Lottie, height: 200), - Lottie.asset(MyLottieConsts.celebrate2Lottie, height: 200), + child: Stack( + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 50, + child: Stack( + children: [ + Align( + alignment: Alignment.center, + child: SvgPicture.asset("assets/images/winner_ribbon.svg", height: 50), + ), + Align( + alignment: Alignment.center, + child: LocaleKeys.winners.tr().toText32(color: MyColors.white, isBold: true, isCentered: true).paddingOnly(top: 07), + ) + ], + ), + ), + 16.height, + !provider.iAmWinner + ? Column( + children: [ + (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn)!.toText22( + color: MyColors.grey3AColor, + isCentered: true, + ), + 8.height, + AppState().memberInformationList!.eMPLOYEENUMBER!.toText22(color: MyColors.grey57Color), + ], + ) + : const SizedBox(), + 36.height, + if (provider.selectedWinners != null) ...[ + ListView.separated( + shrinkWrap: true, + itemCount: provider.selectedWinners!.length, + separatorBuilder: (BuildContext context, int index) { + return const Divider(); + }, + itemBuilder: (BuildContext context, int index) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (AppState().isArabic(context) ? provider.selectedWinners![index].nameEn : provider.selectedWinners![index].nameEn)!.toText16( + color: MyColors.grey3AColor, + ), + provider.selectedWinners!.first.employeeId!.toText16(color: MyColors.grey57Color), + ], + ); + }, + ), ], - ), - ), - 26.height, - SizedBox( - height: 50, - child: Stack( - children: [ - Align( - alignment: Alignment.center, - child: SvgPicture.asset("assets/images/winner_ribbon.svg", height: 50), + 60.height, + if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + "${LocaleKeys.sponsoredBy.tr()} ".toText14(color: MyColors.grey77Color), + (AppState().isArabic(context) ? provider.marathonDetailModel.sponsors!.first.nameAr ?? "" : provider.marathonDetailModel.sponsors!.first.nameEn ?? "").toText14( + color: MyColors.darkTextColor, + isBold: true, + ), + ], ), - Align( - alignment: Alignment.center, - child: LocaleKeys.winner.tr().toText32(color: MyColors.white, isBold: true, isCentered: true).paddingOnly(top: 07), + 5.height, + Image.network( + provider.marathonDetailModel.sponsors!.first.image!, + height: 40, + width: 150, + fit: BoxFit.fill, + errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + return const Center(); + }, ) ], - ), + ], ), - 12.height, - if (provider.selectedWinners != null) ...[ - (AppState().isArabic(context) ? provider.selectedWinners!.first.nameEn : provider.selectedWinners!.first.nameEn)!.toText22( - color: MyColors.grey3AColor, - isCentered: true, - ), - 8.height, - provider.selectedWinners!.first.employeeId!.toText22(color: MyColors.grey57Color), - ], - 60.height, - if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - "${LocaleKeys.sponsoredBy.tr()} ".toText14(color: MyColors.grey77Color), - (AppState().isArabic(context) ? provider.marathonDetailModel.sponsors!.first.nameAr ?? "" : provider.marathonDetailModel.sponsors!.first.nameEn ?? "").toText14( - color: MyColors.darkTextColor, - isBold: true, - ), - ], - ), - 5.height, - Image.network( - provider.marathonDetailModel.sponsors!.first.image!, - height: 40, - width: 150, - fit: BoxFit.fill, - errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { - return const Center(); - }, - ) - ], + Lottie.asset(MyLottieConsts.celebrate1Lottie), ], ), ); diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 2be08a9..0487c74 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -22,200 +22,362 @@ class MarathonBanner extends StatelessWidget { const MarathonBanner({Key? key, required this.isMarathonUpcoming}) : super(key: key); - @override - Widget build(BuildContext context) { - MarathonProvider provider = context.read(); - return provider.marathonDetailModel.startTime != null - ? Container( - decoration: MyDecorations.shadowDecoration, - height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, - clipBehavior: Clip.antiAlias, - child: Stack( + Widget getUnPrivilegedMarathon(BuildContext context) { + return Container( + decoration: MyDecorations.shadowDecoration, + height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, + clipBehavior: Clip.antiAlias, + child: Stack( + children: [ + Transform( + alignment: Alignment.center, + transform: Matrix4.rotationY( + AppState().isArabic(context) ? math.pi : 0, + ), + child: SvgPicture.asset( + "assets/images/marathon_banner_bg.svg", + fit: BoxFit.fill, + width: double.infinity, + ), + ), + AppState().isArabic(context) + ? Positioned( + right: -15, + top: -10, + child: Transform.rotate( + angle: 10, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, + ), + ), + ) + : Positioned( + left: -20, + top: -10, + child: Transform.rotate( + angle: 15, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, + ), + ), + ), + SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( children: [ - Transform( - alignment: Alignment.center, - transform: Matrix4.rotationY( - AppState().isArabic(context) ? math.pi : 0, + const Expanded( + flex: 3, + child: SizedBox( + width: double.infinity, + height: double.infinity, ), - child: SvgPicture.asset( - "assets/images/marathon_banner_bg.svg", - fit: BoxFit.fill, + ), + Expanded( + flex: AppState().isArabic(context) ? 4 : 5, + child: SizedBox( width: double.infinity, + height: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + AppState().isArabic(context) ? 0.height : 5.height, + Text( + LocaleKeys.getReadyForContest.tr(), + style: TextStyle( + fontSize: isTablet ? 20 : 11, + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w600, + color: MyColors.white.withOpacity(0.83), + letterSpacing: -0.4, + ), + ), + Text( + LocaleKeys.brainMarathon.tr(), + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: isTablet ? 30 : 19, + fontWeight: FontWeight.bold, + color: MyColors.white.withOpacity(0.83), + height: 32 / 22, + ), + ), + ], + ).paddingOnly( + left: AppState().isArabic(context) ? 12 : 3, + right: AppState().isArabic(context) ? 3 : 12, + ) + ], + ), ), ), - AppState().isArabic(context) - ? Positioned( - right: -15, - top: -10, - child: Transform.rotate( - angle: 10, - child: Container( - width: isTablet ? 70 : 65, - height: isTablet ? 40 : 32, - color: MyColors.darkDigitColor, - ), - ), - ) - : Positioned( - left: -20, - top: -10, - child: Transform.rotate( - angle: 15, - child: Container( - width: isTablet ? 70 : 65, - height: isTablet ? 40 : 32, - color: MyColors.darkDigitColor, - ), + ], + ), + ), + AppState().isArabic(context) + ? Align( + alignment: Alignment.topRight, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.white, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, ), ), - SizedBox( - width: double.infinity, - height: double.infinity, - child: Row( - children: [ - const Expanded( - flex: 3, - child: SizedBox( - width: double.infinity, - height: double.infinity, + ), + ), + ).paddingOnly(top: 5) + : Align( + alignment: Alignment.topLeft, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: -math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.kWhiteColor, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, ), ), - Expanded( - flex: AppState().isArabic(context) ? 4 : 5, - child: SizedBox( - width: double.infinity, - height: double.infinity, - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, + ), + ), + ).paddingOnly(top: 5), + Container( + height: double.infinity, + width: double.infinity, + color: Colors.black.withOpacity(0.6), + child: const Icon( + Icons.lock_rounded, + color: MyColors.lightGreyIconColor, + ), + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + MarathonProvider provider = context.read(); + + return !provider.isPrivilegedWithMarathon + ? getUnPrivilegedMarathon(context) + : provider.marathonDetailModel.startTime != null + ? Container( + decoration: MyDecorations.shadowDecoration, + height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, + clipBehavior: Clip.antiAlias, + child: Stack( + children: [ + Transform( + alignment: Alignment.center, + transform: Matrix4.rotationY( + AppState().isArabic(context) ? math.pi : 0, + ), + child: SvgPicture.asset( + "assets/images/marathon_banner_bg.svg", + fit: BoxFit.fill, + width: double.infinity, + ), + ), + AppState().isArabic(context) + ? Positioned( + right: -15, + top: -10, + child: Transform.rotate( + angle: 10, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, + ), + ), + ) + : Positioned( + left: -20, + top: -10, + child: Transform.rotate( + angle: 15, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, + ), + ), + ), + SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + children: [ + const Expanded( + flex: 3, + child: SizedBox( + width: double.infinity, + height: double.infinity, + ), + ), + Expanded( + flex: AppState().isArabic(context) ? 4 : 5, + child: SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, children: [ - AppState().isArabic(context) ? 0.height : 5.height, - Text( - LocaleKeys.getReadyForContest.tr(), - style: TextStyle( - fontSize: isTablet ? 20 : 11, - fontStyle: FontStyle.italic, - fontWeight: FontWeight.w600, - color: MyColors.white.withOpacity(0.83), - letterSpacing: -0.4, - ), - ), - Text( - AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", - style: TextStyle( - fontStyle: FontStyle.italic, - fontSize: isTablet ? 30 : 19, - fontWeight: FontWeight.bold, - color: MyColors.white.withOpacity(0.83), - height: 32 / 22, - ), - ), - isTablet ? 10.height : 3.height, - BuildCountdownTimer( - timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, - provider: provider, - screenFlag: 0, - ), + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + AppState().isArabic(context) ? 0.height : 5.height, + Text( + LocaleKeys.getReadyForContest.tr(), + style: TextStyle( + fontSize: isTablet ? 20 : 11, + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w600, + color: MyColors.white.withOpacity(0.83), + letterSpacing: -0.4, + ), + ), + Text( + AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: isTablet ? 30 : 19, + fontWeight: FontWeight.bold, + color: MyColors.white.withOpacity(0.83), + height: 32 / 22, + ), + ), + isTablet ? 10.height : 3.height, + BuildCountdownTimer( + timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, + provider: provider, + screenFlag: 0, + ), + ], + ).paddingOnly( + left: AppState().isArabic(context) ? 12 : 3, + right: AppState().isArabic(context) ? 3 : 12, + ) ], - ).paddingOnly( - left: AppState().isArabic(context) ? 12 : 3, - right: AppState().isArabic(context) ? 3 : 12, - ) - ], + ), + ), ), - ), + ], ), - ], - ), - ), - AppState().isArabic(context) - ? Align( - alignment: Alignment.topRight, - child: SizedBox( - height: isTablet ? 30 : 20, - width: isTablet ? 45 : 35, - child: Transform.rotate( - angle: math.pi / 4.5, - child: Text( - LocaleKeys.brainMarathon.tr(), - textAlign: TextAlign.center, - maxLines: 2, - style: TextStyle( - color: MyColors.white, - fontWeight: FontWeight.bold, - fontSize: isTablet ? 8 : 6, - height: 1.2, + ), + AppState().isArabic(context) + ? Align( + alignment: Alignment.topRight, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.white, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, + ), + ), ), ), - ), - ), - ).paddingOnly(top: 5) - : Align( - alignment: Alignment.topLeft, - child: SizedBox( - height: isTablet ? 30 : 20, - width: isTablet ? 45 : 35, - child: Transform.rotate( - angle: -math.pi / 4.5, - child: Text( - LocaleKeys.brainMarathon.tr(), - textAlign: TextAlign.center, - maxLines: 2, - style: TextStyle( - color: MyColors.kWhiteColor, - fontWeight: FontWeight.bold, - fontSize: isTablet ? 8 : 6, - height: 1.2, + ).paddingOnly(top: 5) + : Align( + alignment: Alignment.topLeft, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: -math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.kWhiteColor, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, + ), + ), ), ), + ).paddingOnly(top: 5), + !AppState().isArabic(context) + ? Positioned( + right: 0, + bottom: 0, + child: RotatedBox( + quarterTurns: 4, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), + ).paddingAll(isTablet ? 20 : 15), + ) + : Positioned( + bottom: 0, + left: 0, + child: RotatedBox( + quarterTurns: 2, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), + ).paddingAll(isTablet ? 20 : 15), ), - ), - ).paddingOnly(top: 5), - !AppState().isArabic(context) - ? Positioned( - right: 0, - bottom: 0, - child: RotatedBox( - quarterTurns: 4, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(isTablet ? 20 : 15), - ) - : Positioned( - bottom: 0, - left: 0, - child: RotatedBox( - quarterTurns: 2, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(isTablet ? 20 : 15), - ), - ], - ).onPress(() async { - int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; - if (remainingTimeInMinutes > 2) { - Utils.showLoading(context); - try { - await provider.initializeVideoPlayer().then((_) { - Utils.hideLoading(context); - provider.startTimerForSponsorVideo(); - Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); - }); - } catch (e, s) { - if (kDebugMode) { - print("Error in VideoPlayer: ${e.toString()}"); - } - Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); - } - } else { - Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); - } - }), - ) - : const SizedBox(); + ], + ).onPress(() async { + int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; + + if (remainingTimeInMinutes > 2) { + Utils.showLoading(context); + try { + await provider.initializeVideoPlayer().then((_) { + Utils.hideLoading(context); + provider.startTimerForSponsorVideo(); + Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); + }); + } catch (e) { + if (kDebugMode) { + print("Error in VideoPlayer: ${e.toString()}"); + } + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + } + } else { + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + } + }), + ) + : const SizedBox(); } } From 76239d0077b1ca46d0b1526d82f67cd211eca314 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 13 Dec 2022 11:36:38 +0300 Subject: [PATCH 216/302] Fixes --- .../chat/get_single_user_chat_list_model.dart | 2 ++ lib/provider/chat_provider_model.dart | 36 ++++++++++++------- lib/ui/chat/chat_detailed_screen.dart | 6 +++- lib/ui/chat/chat_home.dart | 27 +++++++------- lib/ui/landing/dashboard_screen.dart | 3 +- 5 files changed, 45 insertions(+), 29 deletions(-) diff --git a/lib/models/chat/get_single_user_chat_list_model.dart b/lib/models/chat/get_single_user_chat_list_model.dart index 80ffa5a..ee4f210 100644 --- a/lib/models/chat/get_single_user_chat_list_model.dart +++ b/lib/models/chat/get_single_user_chat_list_model.dart @@ -38,8 +38,10 @@ class SingleUserChatModel { String? contantNo; int? currentUserId; String? currentUserName; + String? currentUserEmail; int? targetUserId; String? targetUserName; + String? targetUserEmail; String? encryptedTargetUserId; String? encryptedTargetUserName; int? chatEventId; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 3a4e70b..67899c5 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -330,8 +330,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { temp = getSingleUserChatModel(jsonEncode(msg)); data.first.targetUserId = temp.first.currentUserId; data.first.targetUserName = temp.first.currentUserName; + data.first.targetUserEmail = temp.first.currentUserEmail; data.first.currentUserId = temp.first.targetUserId; data.first.currentUserName = temp.first.targetUserName; + data.first.currentUserEmail = temp.first.targetUserEmail; + if (data.first.fileTypeId == 12 || data.first.fileTypeId == 4 || data.first.fileTypeId == 3) { data.first.image = await ChatApiClient().downloadURL(fileName: data.first.contant!, fileTypeDescription: data.first.fileTypeResponse!.fileTypeDescription ?? "image/jpg"); } @@ -349,21 +352,24 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (searchedChats != null) { dynamic contain = searchedChats!.where((ChatUser element) => element.id == data.first.currentUserId); if (contain.isEmpty) { + List emails = []; + emails.add(await EmailImageEncryption().encrypt(val: data.first.currentUserEmail!)); + List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); searchedChats!.add( ChatUser( - id: data.first.currentUserId, - userName: data.first.currentUserName, - unreadMessageCount: 0, - isImageLoading: false, - image: "", - isImageLoaded: true, - userStatus: 1, - isTyping: false, - userLocalDownlaodedImage: null), + id: data.first.currentUserId, + userName: data.first.currentUserName, + unreadMessageCount: 0, + isImageLoading: false, + image: chatImages!.first.profilePicture ?? "", + isImageLoaded: true, + userStatus: 1, + isTyping: false, + userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, data.first.currentUserId.toString()), + ), ); } } - setMsgTune(); userChatHistory.insert(0, data.first); @@ -526,21 +532,25 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await chatHubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); } - void sendChatMessage(int targetUserId, int userStatus, String targetUserName, BuildContext context) async { + void sendChatMessage(BuildContext context, {required int targetUserId, required int userStatus, required String userEmail, required String targetUserName}) async { dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { + List emails = []; + emails.add(await EmailImageEncryption().encrypt(val: userEmail)); + List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); searchedChats!.add( ChatUser( id: targetUserId, userName: targetUserName, unreadMessageCount: 0, + email: userEmail, isImageLoading: false, - image: "", + image: chatImages.first.profilePicture ?? "", isImageLoaded: true, isTyping: false, isFav: false, userStatus: userStatus, - userLocalDownlaodedImage: null, + userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), ), ); notifyListeners(); diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 05e674a..be685df 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -223,7 +223,11 @@ class _ChatDetailScreenState extends State { ), ).paddingOnly(right: 25), SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26).onPress( - () => m.sendChatMessage(params!.chatUser!.id!, params!.chatUser!.userStatus ?? 0, params!.chatUser!.userName!, context), + () => m.sendChatMessage(context, + targetUserId: params!.chatUser!.id!, + userStatus: params!.chatUser!.userStatus ?? 0, + userEmail: params!.chatUser!.email!, + targetUserName: params!.chatUser!.userName!), ), ], ), diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 807af1a..330242a 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -38,23 +38,22 @@ class _ChatHomeState extends State { data.clearAll(); } - // void fetchAgain() { - // print("Fetch Triggered"); - // if (chatHubConnection.state != HubConnectionState.Connected) { - // data.getUserAutoLoginToken().whenComplete(() async { - // await data.buildHubConnection(); - // data.getUserRecentChats(); - // }); - // return; - // } - // if (data.searchedChats == null || data.searchedChats!.isEmpty) { - // data.getUserRecentChats(); - // } - // } + void fetchAgain() { + if (chatHubConnection.state != HubConnectionState.Connected) { + data.getUserAutoLoginToken().whenComplete(() async { + await data.buildHubConnection(); + data.getUserRecentChats(); + }); + return; + } + if (data.searchedChats == null || data.searchedChats!.isEmpty) { + data.getUserRecentChats(); + } + } @override Widget build(BuildContext context) { - // fetchAgain(); + fetchAgain(); return Scaffold( backgroundColor: MyColors.white, appBar: AppBarWidget(context, title: LocaleKeys.chat.tr(), showHomeButton: true), diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 1800aa3..b1dac53 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -58,7 +58,7 @@ class _DashboardScreenState extends State { data = Provider.of(context, listen: false); marathonProvider = Provider.of(context, listen: false); cProvider = Provider.of(context, listen: false); - _bHubCon(); + _onRefresh(); }); } @@ -80,6 +80,7 @@ class _DashboardScreenState extends State { void _onRefresh() async { data.initProvider(); + _bHubCon(); // data.getITGNotification().then((value) { // print("--------------------detail_1-----------------"); // print(value!.result!.data!.notificationMasterId); From 1144664d6457b56882c2683e5cb2a2cbe647e35c Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 13 Dec 2022 11:52:38 +0300 Subject: [PATCH 217/302] Images Fixes --- lib/models/chat/get_single_user_chat_list_model.dart | 6 ++++++ lib/ui/chat/favorite_users_screen.dart | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/models/chat/get_single_user_chat_list_model.dart b/lib/models/chat/get_single_user_chat_list_model.dart index ee4f210..246a515 100644 --- a/lib/models/chat/get_single_user_chat_list_model.dart +++ b/lib/models/chat/get_single_user_chat_list_model.dart @@ -19,6 +19,8 @@ class SingleUserChatModel { this.targetUserName, this.encryptedTargetUserId, this.encryptedTargetUserName, + this.currentUserEmail, + this.targetUserEmail, this.chatEventId, this.fileTypeId, this.isSeen, @@ -66,6 +68,8 @@ class SingleUserChatModel { currentUserName: json["currentUserName"] == null ? null : json["currentUserName"], targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], targetUserName: json["targetUserName"] == null ? null : json["targetUserName"], + targetUserEmail: json["targetUserEmail"] == null ? null : json["targetUserEmail"], + currentUserEmail: json["currentUserEmail"] == null ? null : json["currentUserEmail"], encryptedTargetUserId: json["encryptedTargetUserId"] == null ? null : json["encryptedTargetUserId"], encryptedTargetUserName: json["encryptedTargetUserName"] == null ? null : json["encryptedTargetUserName"], chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], @@ -92,6 +96,8 @@ class SingleUserChatModel { "targetUserName": targetUserName == null ? null : targetUserName, "encryptedTargetUserId": encryptedTargetUserId == null ? null : encryptedTargetUserId, "encryptedTargetUserName": encryptedTargetUserName == null ? null : encryptedTargetUserName, + "currentUserEmail": currentUserEmail == null ? null : currentUserEmail, + "targetUserEmail": targetUserEmail == null ? null : targetUserEmail, "chatEventId": chatEventId == null ? null : chatEventId, "fileTypeId": fileTypeId, "isSeen": isSeen == null ? null : isSeen, diff --git a/lib/ui/chat/favorite_users_screen.dart b/lib/ui/chat/favorite_users_screen.dart index 157a884..a978ccb 100644 --- a/lib/ui/chat/favorite_users_screen.dart +++ b/lib/ui/chat/favorite_users_screen.dart @@ -111,7 +111,7 @@ class ChatFavoriteUsersScreen extends StatelessWidget { Navigator.pushNamed( context, AppRoutes.chatDetailed, - arguments: ChatDetailedScreenParams(m.favUsersList![index], false), + arguments: ChatDetailedScreenParams(m.favUsersList![index], true), ).then( (Object? value) { m.clearSelections(); From 243da0c775cef79372d68e181c1e2cf33c0e3cfa Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 13 Dec 2022 11:57:22 +0300 Subject: [PATCH 218/302] fixes --- lib/widgets/item_detail_view_widget.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/item_detail_view_widget.dart b/lib/widgets/item_detail_view_widget.dart index ccdedea..77d959b 100644 --- a/lib/widgets/item_detail_view_widget.dart +++ b/lib/widgets/item_detail_view_widget.dart @@ -39,7 +39,7 @@ class ItemDetailViewCol extends StatelessWidget { children: [ "$title:".toText12(isBold: true, color: const Color(0xff2BB8A6), maxLine: 2), 4.width, - (value.isEmpty ? "--" : value).toText12(color: MyColors.normalTextColor, maxLine: 2), + (value.isEmpty ? "--" : value).toText12(color: MyColors.normalTextColor, maxLine: 5), ], ); } From a39e6808d71cde79e81f9befcf5fa0e0d9f14be1 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 13 Dec 2022 12:20:55 +0300 Subject: [PATCH 219/302] fixes & updates --- lib/api/marathon/marathon_api_client.dart | 1 - lib/api/monthly_attendance_api_client.dart | 2 -- lib/api/monthly_pay_slip_api_client.dart | 1 - lib/api/my_attendance_api_client.dart | 1 - lib/api/my_team/my_team_api_client.dart | 2 -- lib/api/profile_api_client.dart | 8 -------- lib/api/termination_dff_api_client.dart | 3 --- lib/classes/utils.dart | 1 - lib/ui/chat/chat_home_screen.dart | 12 +++++------- lib/ui/landing/today_attendance_screen.dart | 2 -- lib/ui/login/verify_login_screen.dart | 3 --- lib/ui/marathon/marathon_provider.dart | 2 -- lib/ui/profile/basic_details.dart | 5 ++--- lib/ui/profile/delete_family_member.dart | 1 - .../dynamic_input_address_screen.dart | 1 - .../fragments/items_for_sale.dart | 1 - .../fragments/my_posted_ads_fragment.dart | 1 - lib/ui/termination/end_employement.dart | 1 - lib/ui/work_list/itg_detail_screen.dart | 2 -- lib/widgets/chat_app_bar_widge.dart | 8 +------- lib/widgets/mark_attendance_widget.dart | 17 ----------------- lib/widgets/nfc/nfc_reader_sheet.dart | 1 - pubspec.yaml | 2 +- 23 files changed, 9 insertions(+), 69 deletions(-) diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index a9266d2..26a0363 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -30,7 +30,6 @@ class MarathonApiClient { if (marathonModel.statusCode == 200) { if (marathonModel.data != null && marathonModel.isSuccessful == true) { AppState().setMarathonToken = marathonModel.data["token"] ?? ""; - print("bearer: ${AppState().getMarathonToken}"); return marathonModel.data["token"] ?? ""; } else { //TODO : DO ERROR HANDLING HERE diff --git a/lib/api/monthly_attendance_api_client.dart b/lib/api/monthly_attendance_api_client.dart index 00d444f..e462373 100644 --- a/lib/api/monthly_attendance_api_client.dart +++ b/lib/api/monthly_attendance_api_client.dart @@ -29,7 +29,6 @@ class MonthlyAttendanceApiClient { postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - print(responseData); return (responseData.getTimeCardSummaryList?.length ?? 0) > 0 ? responseData.getTimeCardSummaryList!.first : null; }, url, postParams); } @@ -49,7 +48,6 @@ class MonthlyAttendanceApiClient { // postParams["DeviceType"] = deviceType; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - print(responseData.getDayHoursTypeDetailsList!.length); return responseData.getDayHoursTypeDetailsList ?? []; }, url, postParams); } diff --git a/lib/api/monthly_pay_slip_api_client.dart b/lib/api/monthly_pay_slip_api_client.dart index 95bf847..e3071a4 100644 --- a/lib/api/monthly_pay_slip_api_client.dart +++ b/lib/api/monthly_pay_slip_api_client.dart @@ -19,7 +19,6 @@ class MonthlyPaySlipApiClient { String url = "${ApiConsts.erpRest}GET_PAYSLIP"; Map postParams = {"P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": -999}; postParams.addAll(AppState().postParamsJson); - print(postParams); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getPayslipList ?? []; diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart index 5833413..0f078a2 100644 --- a/lib/api/my_attendance_api_client.dart +++ b/lib/api/my_attendance_api_client.dart @@ -26,7 +26,6 @@ class MyAttendanceApiClient { if (empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; // AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - print(empID); } return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); diff --git a/lib/api/my_team/my_team_api_client.dart b/lib/api/my_team/my_team_api_client.dart index 17a0a90..df635b0 100644 --- a/lib/api/my_team/my_team_api_client.dart +++ b/lib/api/my_team/my_team_api_client.dart @@ -64,7 +64,6 @@ class MyTeamApiClient { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - print(responseData.getDayHoursTypeDetailsList!.length); return responseData.getDayHoursTypeDetailsList ?? []; }, url, postParams); } @@ -76,7 +75,6 @@ class MyTeamApiClient { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - print(responseData.getAttendanceTrackingList); return responseData.getAttendanceTrackingList; }, url, postParams); } diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index 210d179..6a8cfb0 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -41,7 +41,6 @@ class ProfileApiClient { postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - print(responseData); return responseData.getEmployeeContactsList ?? []; }, url, postParams); } @@ -258,7 +257,6 @@ class ProfileApiClient { // "EITTransactionTBLModel": list, }; postParams.addAll(AppState().postParamsJson); - print("postParams:$postParams"); postParams["EITTransactionTBL"] = list; postParams["EITTransactionTBLModel"] = list; return await ApiClient().postJsonForObject((json) { @@ -300,7 +298,6 @@ class ProfileApiClient { // "EITTransactionTBLModel": list, }; postParams.addAll(AppState().postParamsJson); - print("postParams:$postParams"); postParams["EITTransactionTBL"] = list; // postParams["EITTransactionTBLModel"] = list; return await ApiClient().postJsonForObject((json) { @@ -389,12 +386,7 @@ class ProfileApiClient { }; postParams.addAll(AppState().postParamsJson); - print("postParam:${json.encode(postParams)}"); postParams["EITTransactionTBL"] = list; - list.forEach((element) { - print(json.encode(element)); - - }); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.submitContactTransactionList; diff --git a/lib/api/termination_dff_api_client.dart b/lib/api/termination_dff_api_client.dart index 0933dea..0d5864f 100644 --- a/lib/api/termination_dff_api_client.dart +++ b/lib/api/termination_dff_api_client.dart @@ -46,9 +46,6 @@ class TerminationDffApiClient { }; postParams.addAll(AppState().postParamsJson); - for (var abc in list) { - print(abc); - } return await ApiClient().postJsonForObject((json) { GenericResponseModel genericResponseModel = GenericResponseModel.fromJson(json); return genericResponseModel.submitTermTransactionList!; diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 3be8356..fbdc6ce 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -340,7 +340,6 @@ class Utils { static void readNFc({required Function(String) onRead}) { NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async { - print(tag.data); var f; if (Platform.isAndroid) { f = MifareUltralight(tag: tag, identifier: tag.data["nfca"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index a9814ee..395556a 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -1,5 +1,3 @@ -import 'dart:convert'; -import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -139,11 +137,11 @@ class _ChatHomeScreenState extends State { children: [ (m.searchedChats![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), m.searchedChats![index].isTyping! - ? AnimatedTextKit( - animatedTexts: [ - ScaleAnimatedText('Typing...', textStyle: const TextStyle(color: MyColors.textMixColor, fontSize: 10, letterSpacing: -0.4, fontStyle: FontStyle.normal)), - ], - ).paddingOnly(left: 11) + ? 'Typing...' + .toText10( + color: MyColors.textMixColor, + ) + .paddingOnly(left: 11.0) : const SizedBox() //(m.searchedChats![index].isTyping! ? "Typing ..." : "").toText10(color: MyColors.textMixColor).paddingOnly(left: 11, top: 0), ], diff --git a/lib/ui/landing/today_attendance_screen.dart b/lib/ui/landing/today_attendance_screen.dart index d23fa10..ea3ae24 100644 --- a/lib/ui/landing/today_attendance_screen.dart +++ b/lib/ui/landing/today_attendance_screen.dart @@ -41,8 +41,6 @@ class _TodayAttendanceScreenState extends State { bool isAvailable = await NfcManager.instance.isAvailable(); setState(() { AppState().privilegeListModel!.forEach((element) { - print(element.serviceName.toString() + " " + element.previlege.toString()); // Check availability - if (element.serviceName == "enableNFC") { if (isAvailable) if (element.previlege ?? false) isNfcEnabled = true; } else if (element.serviceName == "enableQR") { diff --git a/lib/ui/login/verify_login_screen.dart b/lib/ui/login/verify_login_screen.dart index b5eb7df..803f3d9 100644 --- a/lib/ui/login/verify_login_screen.dart +++ b/lib/ui/login/verify_login_screen.dart @@ -636,9 +636,6 @@ class _VerifyLoginScreenState extends State { AppState().setPrivilegeListModel = genericResponseModel!.privilegeList ?? []; AppState().setMemberInformationListModel = genericResponseModel.memberInformationList?.first; MemberInformationListModel.saveToPrefs(genericResponseModel.memberInformationList ?? []); - genericResponseModel.privilegeList!.forEach((element) { - print(element.serviceName.toString() + " " + element.previlege.toString()); // Check availability - }); PrivilegeListModel.saveToPrefs(genericResponseModel.privilegeList ?? []); AppState().setMohemmWifiSSID = genericResponseModel.mohemmWifiSSID; AppState().setMohemmWifiPassword = genericResponseModel.mohemmWifiPassword; diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 175b7be..c5b1cd7 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -242,7 +242,6 @@ class MarathonProvider extends ChangeNotifier { selectedWinners = await MarathonApiClient().getSelectedWinner(marathonId: marathonDetailModel.id!); if (selectedWinners != null) { selectedWinners!.removeWhere((WinnerModel element) { - print("matching : ${AppState().memberInformationList!.eMPLOYEENUMBER} with ${element.employeeId}"); if (element.employeeId == AppState().memberInformationList!.eMPLOYEENUMBER) { iAmWinner = true; return true; @@ -251,7 +250,6 @@ class MarathonProvider extends ChangeNotifier { } }); } - print("selectedWinners Length : ${selectedWinners!.length}"); notifyListeners(); } diff --git a/lib/ui/profile/basic_details.dart b/lib/ui/profile/basic_details.dart index c91adb5..42ecf1d 100644 --- a/lib/ui/profile/basic_details.dart +++ b/lib/ui/profile/basic_details.dart @@ -44,13 +44,12 @@ class _BasicDetailsState extends State { super.initState(); memberInformationList = AppState().memberInformationList!; List menuData = Provider.of(context, listen: false).getMenuEntriesList!; - for( int i=0;i e.requestType == 'BASIC_DETAILS').toList(); - if(filterList.isNotEmpty) { + if (filterList.isNotEmpty) { menuEntries = filterList.first; } diff --git a/lib/ui/profile/delete_family_member.dart b/lib/ui/profile/delete_family_member.dart index 73c44de..16052f8 100644 --- a/lib/ui/profile/delete_family_member.dart +++ b/lib/ui/profile/delete_family_member.dart @@ -37,7 +37,6 @@ class _DeleteFamilyMemberState extends State { //int? relationId; @override void initState() { - print(widget.relationId); super.initState(); } diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart index a233839..77b2abd 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -294,7 +294,6 @@ class _DynamicInputScreenState extends State { countryCode, effectiveDate.isEmpty ? DateFormat('dd-MMM-yyy').format(DateTime.now()) : effectiveDate, ); - print(values); Utils.hideLoading(context); Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, diff --git a/lib/ui/screens/items_for_sale/fragments/items_for_sale.dart b/lib/ui/screens/items_for_sale/fragments/items_for_sale.dart index 50a89cc..ae715fe 100644 --- a/lib/ui/screens/items_for_sale/fragments/items_for_sale.dart +++ b/lib/ui/screens/items_for_sale/fragments/items_for_sale.dart @@ -39,7 +39,6 @@ class _ItemsForSaleFragmentState extends State { if (gridScrollController.position.atEdge) { bool isTop = gridScrollController.position.pixels == 0; if (!isTop && getItemsForSaleList.length == currentPageNo * 10) { - print('At the bottom'); currentPageNo++; getItemsForSale(currentPageNo, currentCategoryID); } diff --git a/lib/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart b/lib/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart index f477672..64b8bf9 100644 --- a/lib/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart +++ b/lib/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart @@ -193,7 +193,6 @@ class _MyPostedAdsFragmentState extends State { Utils.hideLoading(context); Utils.handleException(e, context, null); }); - print(response.statusCode); Utils.hideLoading(context); getAdsByEmployee(); } diff --git a/lib/ui/termination/end_employement.dart b/lib/ui/termination/end_employement.dart index 6fbfa61..73e8f79 100644 --- a/lib/ui/termination/end_employement.dart +++ b/lib/ui/termination/end_employement.dart @@ -255,7 +255,6 @@ class _EndEmploymentScreenState extends State { ], onSelected: (int popipIndex) async { termColObject.selectedObjectValue = termColObject.objectValuesList![popipIndex]; - print(termColObject.selectedObjectValue?.toJson()); setState(() {}); }); } diff --git a/lib/ui/work_list/itg_detail_screen.dart b/lib/ui/work_list/itg_detail_screen.dart index e123d22..ebe16c8 100644 --- a/lib/ui/work_list/itg_detail_screen.dart +++ b/lib/ui/work_list/itg_detail_screen.dart @@ -352,7 +352,6 @@ class _ItgDetailScreenState extends State { } void handleFabAction(AllowedActions action) { - print(action.toJson()); switch (action.action) { case "Delegate": showMyBottomSheet(context, @@ -461,7 +460,6 @@ class _ItgDetailScreenState extends State { } void performAction(String actionMode) { - print(actionMode); showDialog( context: context, builder: (cxt) => ITGCommentsDialog( diff --git a/lib/widgets/chat_app_bar_widge.dart b/lib/widgets/chat_app_bar_widge.dart index 0feac6c..a67ae7d 100644 --- a/lib/widgets/chat_app_bar_widge.dart +++ b/lib/widgets/chat_app_bar_widge.dart @@ -1,4 +1,3 @@ -import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; @@ -51,12 +50,7 @@ AppBar ChatAppBarWidget(BuildContext context, Consumer( builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { if (chatUser!.isTyping!) { - // return ("Typing ...").toText10(color: MyColors.textMixColor); - return AnimatedTextKit( - animatedTexts: [ - ScaleAnimatedText('Typing...', textStyle: const TextStyle(color: MyColors.textMixColor, fontSize: 10, letterSpacing: -0.4, fontStyle: FontStyle.normal)), - ], - ); + return ("Typing ...").toText10(color: MyColors.textMixColor); } else { return const SizedBox(); } diff --git a/lib/widgets/mark_attendance_widget.dart b/lib/widgets/mark_attendance_widget.dart index a6b6cfc..9840700 100644 --- a/lib/widgets/mark_attendance_widget.dart +++ b/lib/widgets/mark_attendance_widget.dart @@ -48,8 +48,6 @@ class _MarkAttendanceWidgetState extends State { bool isAvailable = await NfcManager.instance.isAvailable(); setState(() { AppState().privilegeListModel!.forEach((element) { - print(element.serviceName.toString() + " " + element.previlege.toString()); // Check availability - if (element.serviceName == "enableNFC") { if (isAvailable) if (element.previlege ?? false) isNfcEnabled = true; } else if (element.serviceName == "enableQR") { @@ -76,7 +74,6 @@ class _MarkAttendanceWidgetState extends State { @override Widget build(BuildContext context) { - print(MediaQuery.of(context).size.width); return Container( padding: EdgeInsets.only(left: 21, right: 21, bottom: 21, top: widget.topPadding), decoration: const BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white), @@ -134,12 +131,6 @@ class _MarkAttendanceWidgetState extends State { } Future performNfcAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { - if (isNfcLocationEnabled) { - print("nfc location enabled"); - } else { - print("nfc not location enabled"); - } - if (Platform.isIOS) { Utils.readNFc(onRead: (String nfcId) async { Utils.showLoading(context); @@ -177,7 +168,6 @@ class _MarkAttendanceWidgetState extends State { }); } else { showNfcReader(context, onNcfScan: (String? nfcId) async { - print(nfcId); Utils.showLoading(context); try { GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 2, nfcValue: nfcId ?? "", isGpsRequired: isNfcLocationEnabled, lat: lat, long: lng); @@ -214,12 +204,6 @@ class _MarkAttendanceWidgetState extends State { } Future performWifiAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async { - if (isWifiLocationEnabled) { - print("wifi location enabled"); - } else { - print("wifi not location enabled"); - } - Utils.showLoading(context); bool isConnected = await WiFiForIoTPlugin.connect(AppState().getMohemmWifiSSID ?? "", password: AppState().getMohemmWifiPassword ?? "", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false); @@ -271,7 +255,6 @@ class _MarkAttendanceWidgetState extends State { ), ); if (qrCodeValue != null) { - print("qrCode: " + qrCodeValue); Utils.showLoading(context); try { GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 1, isGpsRequired: isQrLocationEnabled, lat: lat, long: lng, QRValue: qrCodeValue); diff --git a/lib/widgets/nfc/nfc_reader_sheet.dart b/lib/widgets/nfc/nfc_reader_sheet.dart index 4ac055b..b7b97a7 100644 --- a/lib/widgets/nfc/nfc_reader_sheet.dart +++ b/lib/widgets/nfc/nfc_reader_sheet.dart @@ -41,7 +41,6 @@ class _NfcLayoutState extends State { super.initState(); NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async { - print(tag.data); var f; if (Platform.isAndroid) { f = MifareUltralight(tag: tag, identifier: tag.data["nfca"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); diff --git a/pubspec.yaml b/pubspec.yaml index 2e3c4c2..086ec65 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -92,7 +92,7 @@ dependencies: swipe_to: ^1.0.2 flutter_webrtc: ^0.9.16 camera: ^0.10.0+4 - animated_text_kit: ^4.2.2 +# animated_text_kit: ^4.2.2 #Encryption flutter_des: ^2.1.0 From 2caf5b6caa07d1191204f3d2cff872e143bb5e3e Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 13 Dec 2022 15:24:47 +0300 Subject: [PATCH 220/302] Pushing for testing --- lib/api/marathon/marathon_api_client.dart | 1 - lib/classes/consts.dart | 5 ++-- lib/ui/marathon/marathon_provider.dart | 6 ++--- lib/ui/marathon/marathon_screen.dart | 24 ++++++------------ .../marathon_sponsor_video_screen.dart | 3 --- .../widgets/marathon_details_card.dart | 25 ++++++++----------- 6 files changed, 24 insertions(+), 40 deletions(-) diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index a9266d2..26a0363 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -30,7 +30,6 @@ class MarathonApiClient { if (marathonModel.statusCode == 200) { if (marathonModel.data != null && marathonModel.isSuccessful == true) { AppState().setMarathonToken = marathonModel.data["token"] ?? ""; - print("bearer: ${AppState().getMarathonToken}"); return marathonModel.data["token"] ?? ""; } else { //TODO : DO ERROR HANDLING HERE diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 3d58efd..0559996 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,9 +2,9 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -28,6 +28,7 @@ class ApiConsts { //Brain Marathon Constants static String marathonBaseUrl = "https://marathoon.com/service/api/"; + static String marathonBaseUrlServices = "https://marathoon.com/service/"; static String marathonParticipantLoginUrl = marathonBaseUrl + "auth/participantlogin"; static String marathonProjectGetUrl = marathonBaseUrl + "Project/Project_Get"; static String marathonUpcomingUrl = marathonBaseUrl + "marathon/upcoming/"; diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 175b7be..4144e32 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -6,6 +6,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; @@ -99,8 +100,7 @@ class MarathonProvider extends ChangeNotifier { late VideoPlayerController videoController; Future initializeVideoPlayer() async { - // videoController = VideoPlayerController.network(marathonDetailModel.sponsors!.first.video!)..initialize(); - videoController = VideoPlayerController.network("http://clips.vorwaerts-gmbh.de/VfE_html5.mp4"); + videoController = VideoPlayerController.network(ApiConsts.marathonBaseUrlServices + marathonDetailModel.sponsors!.first.video!); await videoController.initialize(); await videoController.play(); await videoController.setVolume(1.0); @@ -187,7 +187,7 @@ class MarathonProvider extends ChangeNotifier { if (totalCurrentQuestionTime == 0) { updateCardData(); - if (currentQuestionNumber == marathonDetailModel.totalQuestions! ) { + if (currentQuestionNumber == marathonDetailModel.totalQuestions!) { callGetQualifiersApi(); updateQuestionCardStatus(QuestionCardStatus.findingWinner); timer.cancel(); diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 71ae3d6..67d6f4e 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -6,6 +6,7 @@ import 'package:flutter_svg/svg.dart'; import 'package:lottie/lottie.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/lottie_consts.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -43,24 +44,13 @@ class MarathonScreen extends StatelessWidget { return Image.asset(MyLottieConsts.congratsGif, height: 200); } - // SizedBox( - // height: 200, - // child: Stack( - // fit: StackFit.expand, - // children: [ - // Lottie.asset(MyLottieConsts.celebrate1Lottie, height: 200), - // // Lottie.asset(MyLottieConsts.celebrate2Lottie, height: 200), - // ], - // ), - // ), - Widget getWinnerWidget(BuildContext context, {required MarathonProvider provider}) { return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), child: Stack( - children: [ + children: [ Column( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -80,7 +70,7 @@ class MarathonScreen extends StatelessWidget { ), ), 16.height, - !provider.iAmWinner + provider.iAmWinner ? Column( children: [ (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn)!.toText22( @@ -103,7 +93,7 @@ class MarathonScreen extends StatelessWidget { itemBuilder: (BuildContext context, int index) { return Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ (AppState().isArabic(context) ? provider.selectedWinners![index].nameEn : provider.selectedWinners![index].nameEn)!.toText16( color: MyColors.grey3AColor, ), @@ -127,10 +117,10 @@ class MarathonScreen extends StatelessWidget { ), 5.height, Image.network( - provider.marathonDetailModel.sponsors!.first.image!, - height: 40, + ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.image!, + height: 50, width: 150, - fit: BoxFit.fill, + fit: BoxFit.contain, errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { return const Center(); }, diff --git a/lib/ui/marathon/marathon_sponsor_video_screen.dart b/lib/ui/marathon/marathon_sponsor_video_screen.dart index 12d5949..88c66f9 100644 --- a/lib/ui/marathon/marathon_sponsor_video_screen.dart +++ b/lib/ui/marathon/marathon_sponsor_video_screen.dart @@ -15,9 +15,6 @@ import 'package:video_player/video_player.dart'; class SponsorVideoScreen extends StatelessWidget { const SponsorVideoScreen({Key? key}) : super(key: key); - Future onSponsorVideoClosed(BuildContext context) async { - Navigator.pop(context); - } @override Widget build(BuildContext context) { diff --git a/lib/ui/marathon/widgets/marathon_details_card.dart b/lib/ui/marathon/widgets/marathon_details_card.dart index b74b78b..e8b37a0 100644 --- a/lib/ui/marathon/widgets/marathon_details_card.dart +++ b/lib/ui/marathon/widgets/marathon_details_card.dart @@ -1,16 +1,14 @@ - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; - - class MarathonDetailsCard extends StatelessWidget { final MarathonProvider provider; @@ -38,16 +36,16 @@ class MarathonDetailsCard extends StatelessWidget { ) ], ), - if (provider.itsMarathonTime && provider.marathonDetailModel.sponsors != null) ...[ + if (provider.marathonDetailModel.sponsors != null) ...[ 5.height, provider.marathonDetailModel.sponsors?.first.sponsorPrizes != null ? Row( - children: [ - "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), - "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr : provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr}" - .toText16(color: MyColors.greenColor, isBold: true), - ], - ) + children: [ + "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), + "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr : provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr}" + .toText16(color: MyColors.greenColor, isBold: true), + ], + ) : const SizedBox(), Row( children: [ @@ -61,10 +59,10 @@ class MarathonDetailsCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Image.network( - provider.marathonDetailModel.sponsors!.first.image!, - height: 40, + ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.image!, + height: 50, width: 150, - fit: BoxFit.fill, + fit: BoxFit.contain, errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { return const Center(); }, @@ -79,4 +77,3 @@ class MarathonDetailsCard extends StatelessWidget { ); } } - From 7b6e2547d7440387c597236bc2acb91cb239445d Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Tue, 13 Dec 2022 16:36:27 +0300 Subject: [PATCH 221/302] comp-off issue fixed --- .../dynamic_screens/dynamic_input_screen.dart | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 62cafbd..e84a9a8 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -110,9 +110,9 @@ class _DynamicInputScreenState extends State { String dESCFLEXCONTEXTCODE = ""; String descFlexConTextTitle = ""; - Future calGetValueSetValues(GetEITDFFStructureList structureList) async { + Future calGetValueSetValues(GetEITDFFStructureList structureList, {bool showLoading = true}) async { try { - Utils.showLoading(context); + if (showLoading) Utils.showLoading(context); for (int i = 0; i < (structureList.cHILDSEGMENTSVSSplited?.length ?? 0); i++) { List> values = []; String segmentId = structureList.cHILDSEGMENTSVSSplited![i]; @@ -140,18 +140,21 @@ class _DynamicInputScreenState extends State { // getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); } - await Future.delayed(const Duration(seconds: 1)); - Utils.hideLoading(context); + if (showLoading) { + await Future.delayed(const Duration(seconds: 1)); + Utils.hideLoading(context); + } + setState(() {}); } catch (ex) { - Utils.hideLoading(context); + if (showLoading) Utils.hideLoading(context); Utils.handleException(ex, context, null); } } - Future getDefaultValues(GetEITDFFStructureList structureList) async { + Future getDefaultValues(GetEITDFFStructureList structureList, {bool showLoading = true}) async { try { - Utils.showLoading(context); + if (showLoading) Utils.showLoading(context); for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) { String segmentId = structureList.cHILDSEGMENTSDVSplited![i]; GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); @@ -176,8 +179,7 @@ class _DynamicInputScreenState extends State { GetEITDFFStructureList defaultValueCheck = getEitDffStructureList!.where((GetEITDFFStructureList element) => element.sEGMENTNAME == segmentId).toList().first; if (defaultValueCheck.cHILDSEGMENTSDVSplited!.isNotEmpty && defaultValueCheck.rEADONLY == 'Y') { - getDefaultValues(defaultValueCheck); - Utils.hideLoading(context); + await getDefaultValues(defaultValueCheck, showLoading: false); // GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId); // List> getSetList = getDefaultValuesIonicLogic(parent); @@ -185,19 +187,23 @@ class _DynamicInputScreenState extends State { // int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); // getEitDffStructureList![index].eSERVICESDV = defaultValue; } else if (defaultValueCheck.cHILDSEGMENTSVSSplited!.isNotEmpty && defaultValueCheck.rEADONLY == 'Y') { - calGetValueSetValues(defaultValueCheck); - Utils.hideLoading(context); + await calGetValueSetValues(defaultValueCheck, showLoading: false); + // Utils.hideLoading(context); } } else if (values.isNotEmpty) { ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + getEitDffStructureList![index].eSERVICESDV = defaultValue; } } - await Future.delayed(const Duration(seconds: 1)); - Utils.hideLoading(context); + if (showLoading) { + await Future.delayed(const Duration(seconds: 1)); + Utils.hideLoading(context); + } + setState(() {}); } catch (ex) { - Utils.hideLoading(context); + if (showLoading) Utils.hideLoading(context); Utils.handleException(ex, context, null); } } @@ -331,7 +337,7 @@ class _DynamicInputScreenState extends State { idColName = val; if (getEitDffStructureList![j].fORMATTYPE == "X") { - idColName = Utils.formatDateNew(idColName!); + idColName = Utils.formatDateDefault(idColName!); // commenting to test // DateTime date = DateFormat('yyyy-MM-dd').parse(idColName!); // idColName = DateFormat('yyyy-MM-dd HH:mm:ss').format(date); From 9f91f1e83c2294fdec5ad566e9cadc3a8bb0c86c Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 14 Dec 2022 09:59:41 +0300 Subject: [PATCH 222/302] Chat Fixes --- lib/provider/chat_provider_model.dart | 7 +++- lib/ui/chat/chat_bubble.dart | 60 ++++++++++++++++++--------- 2 files changed, 45 insertions(+), 22 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 67899c5..3f76a86 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -371,7 +371,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } setMsgTune(); - userChatHistory.insert(0, data.first); + if (isChatScreenActive) { + if (data.first.targetUserId == AppState().chatDetails!.response!.id) { + userChatHistory.insert(0, data.first); + } + } if (searchedChats != null && !isChatScreenActive) { for (ChatUser user in searchedChats!) { @@ -868,7 +872,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void onNewChatConversion(List? params) { dynamic items = params!.toList(); - logger.d(items); chatUConvCounter = items[0]["singleChatCount"] ?? 0; notifyListeners(); } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index c79c66b..03a41e4 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -101,15 +101,22 @@ class ChatBubble extends StatelessWidget { ], ), ), - ).paddingOnly(right: 5, bottom: 7), + ).paddingOnly(bottom: 7), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) - showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).paddingOnly(right: 5).onPress(() { - showDialog( - context: context, - anchorPoint: screenOffset, - builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!), - ); - }) + ClipRRect( + borderRadius: BorderRadius.circular(5.0), + child: SizedBox( + height: 140, + width: 227, + child: showImage(isReplyPreview: false, fileName: cItem.contant!, fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription).onPress(() { + showDialog( + context: context, + anchorPoint: screenOffset, + builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant!, img: cItem.image!), + ); + }), + ), + ).paddingOnly(bottom: 4) else Row( children: [ @@ -132,12 +139,12 @@ class ChatBubble extends StatelessWidget { ), ), ], - ).paddingOnly(top: 11, left: 13, right: 7, bottom: 5).objectContainerView(disablePadding: true).paddingOnly(left: MediaQuery.of(context).size.width * 0.3); + ).paddingOnly(top: 11, left: 13, right: 13, bottom: 5).objectContainerView(disablePadding: true).paddingOnly(left: MediaQuery.of(context).size.width * 0.3); } Widget receiptUser(BuildContext context) { return Container( - padding: const EdgeInsets.only(top: 11, left: 13, right: 7, bottom: 5), + padding: const EdgeInsets.only(top: 11, left: 13, right: 13, bottom: 5), decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), gradient: const LinearGradient( @@ -190,15 +197,22 @@ class ChatBubble extends StatelessWidget { ], ), ), - ).paddingOnly(right: 5, bottom: 7), + ).paddingOnly(bottom: 7), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) - showImage(isReplyPreview: false, fileName: cItem.contant ?? "", fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription ?? "image/jpg").paddingOnly(right: 5).onPress(() { - showDialog( - context: context, - anchorPoint: screenOffset, - builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant ?? "", img: cItem.image!), - ); - }) + ClipRRect( + borderRadius: BorderRadius.circular(5.0), + child: SizedBox( + height: 140, + width: 227, + child: showImage(isReplyPreview: false, fileName: cItem.contant ?? "", fileTypeDescription: cItem.fileTypeResponse!.fileTypeDescription ?? "image/jpg").onPress(() { + showDialog( + context: context, + anchorPoint: screenOffset, + builder: (BuildContext context) => ChatImagePreviewScreen(imgTitle: cItem.contant ?? "", img: cItem.image!), + ); + }), + ), + ).paddingOnly(bottom: 4) else Row( children: [ @@ -212,7 +226,9 @@ class ChatBubble extends StatelessWidget { ), Align( alignment: Alignment.centerRight, - child: dateTime.toText10(color: Colors.white.withOpacity(.71),), + child: dateTime.toText10( + color: Colors.white.withOpacity(.71), + ), ), ], ), @@ -220,12 +236,15 @@ class ChatBubble extends StatelessWidget { } Widget showImage({required bool isReplyPreview, required String fileName, required String fileTypeDescription}) { + if (isReplyPreview) {} + if (cItem.isImageLoaded! && cItem.image != null) { return Image.memory( cItem.image!, height: isReplyPreview ? 32 : 140, width: isReplyPreview ? 32 : 227, fit: BoxFit.cover, + alignment: Alignment.center, ); } else { return FutureBuilder( @@ -233,7 +252,7 @@ class ChatBubble extends StatelessWidget { builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.connectionState != ConnectionState.waiting) { if (snapshot.data == null) { - return SizedBox(); + return const SizedBox(); } else { cItem.image = snapshot.data; cItem.isImageLoaded = true; @@ -242,6 +261,7 @@ class ChatBubble extends StatelessWidget { height: isReplyPreview ? 32 : 140, width: isReplyPreview ? 32 : 227, fit: BoxFit.cover, + alignment: Alignment.center, ); } } else { From 2266ace39a6f5331b137253557eca257a9e56847 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 14 Dec 2022 10:23:21 +0300 Subject: [PATCH 223/302] Chat Fixes & Call Button Disabled --- lib/api/chat/chat_api_client.dart | 30 --------------------------- lib/provider/chat_provider_model.dart | 11 +++++----- lib/ui/chat/chat_detailed_screen.dart | 16 +++++++------- 3 files changed, 14 insertions(+), 43 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 3ef8fba..35e4f79 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -60,17 +60,6 @@ class ChatApiClient { json.decode(response.body), ); } catch (e) { - // if (e.message == "api_common_unauthorized") { - // user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); - // if (userLoginResponse.response != null) { - // AppState().setchatUserDetails = userLoginResponse; - // getRecentChats(); - // } else { - // Utils.showToast( - // userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", - // ); - // } - // } throw e; } } @@ -97,16 +86,6 @@ class ChatApiClient { } return response; } catch (e) { - // e as APIException; - // if (e.message == "api_common_unauthorized") { - // user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); - // if (userLoginResponse.response != null) { - // AppState().setchatUserDetails = userLoginResponse; - // getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); - // } else { - // Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); - // } - // } throw e; } } @@ -135,15 +114,6 @@ class ChatApiClient { return favoriteChatUser; } catch (e) { e as APIException; - // if (e.message == "api_common_unauthorized") { - // user.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); - // if (userLoginResponse.response != null) { - // AppState().setchatUserDetails = userLoginResponse; - // unFavUser(userID: userID, targetUserID: targetUserID); - // } else { - // Utils.showToast(userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr"); - // } - // } throw e; } } diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 3f76a86..fbcb801 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -36,6 +36,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String chatCID = ''; bool isLoading = true; bool isChatScreenActive = false; + int ReceiverID = 0; + late File selectedFile; bool isFileSelected = false; String sFileType = ""; @@ -142,6 +144,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (isNewChat) userChatHistory = []; if (!loadMore) paginationVal = 0; isChatScreenActive = true; + ReceiverID = receiverUID; Response response = await ChatApiClient().getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); if (response.statusCode == 204) { if (isNewChat) { @@ -371,13 +374,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } setMsgTune(); - if (isChatScreenActive) { - if (data.first.targetUserId == AppState().chatDetails!.response!.id) { - userChatHistory.insert(0, data.first); - } + if (isChatScreenActive && data.first.currentUserId == ReceiverID) { + userChatHistory.insert(0, data.first); } - if (searchedChats != null && !isChatScreenActive) { + if (searchedChats != null) { for (ChatUser user in searchedChats!) { if (user.id == data.first.currentUserId) { int tempCount = user.unreadMessageCount ?? 0; diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index be685df..5cad3fa 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -85,14 +85,14 @@ class _ChatDetailScreenState extends State { showTyping: true, chatUser: params!.chatUser, actions: [ - SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() { - // makeCall(callType: "AUDIO", con: hubConnection); - }), - 24.width, - SvgPicture.asset("assets/icons/chat/video_call.svg", width: 21, height: 18).onPress(() { - // makeCall(callType: "VIDEO", con: hubConnection); - }), - 21.width, + // SvgPicture.asset("assets/icons/chat/call.svg", width: 21, height: 23).onPress(() { + // // makeCall(callType: "AUDIO", con: hubConnection); + // }), + // 24.width, + // SvgPicture.asset("assets/icons/chat/video_call.svg", width: 21, height: 18).onPress(() { + // // makeCall(callType: "VIDEO", con: hubConnection); + // }), + // 21.width, ], ), body: SafeArea( From cb4b95ddb45856083e47df39717902fa9b78ca05 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 14 Dec 2022 10:47:33 +0300 Subject: [PATCH 224/302] Read Issue On Sub Page --- lib/provider/chat_provider_model.dart | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index fbcb801..876737f 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -36,7 +36,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String chatCID = ''; bool isLoading = true; bool isChatScreenActive = false; - int ReceiverID = 0; + int receiverID = 0; late File selectedFile; bool isFileSelected = false; @@ -144,7 +144,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (isNewChat) userChatHistory = []; if (!loadMore) paginationVal = 0; isChatScreenActive = true; - ReceiverID = receiverUID; + receiverID = receiverUID; Response response = await ChatApiClient().getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); if (response.statusCode == 204) { if (isNewChat) { @@ -163,7 +163,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isLoading = false; notifyListeners(); - markRead(userChatHistory, receiverUID); + if (isChatScreenActive && receiverUID == receiverID) { + markRead(userChatHistory, receiverUID); + } generateConvId(); } @@ -374,7 +376,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } setMsgTune(); - if (isChatScreenActive && data.first.currentUserId == ReceiverID) { + if (isChatScreenActive && data.first.currentUserId == receiverID) { userChatHistory.insert(0, data.first); } @@ -389,7 +391,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } List list = [ - {"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive ? true : false} + {"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive && data.first.currentUserId == receiverID ? true : false} ]; updateUserChatHistoryOnMsg(list); invokeChatCounter(userId: AppState().chatDetails!.response!.id!); @@ -751,6 +753,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { searchedChats = pChatHistory; search.clear(); isChatScreenActive = false; + receiverID = 0; paginationVal = 0; message.text = ''; isFileSelected = false; @@ -764,6 +767,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { searchedChats = pChatHistory; search.clear(); isChatScreenActive = false; + receiverID = 0; paginationVal = 0; message.text = ''; isFileSelected = false; From 631752cffae12484d13e517506783f2ff5c50f18 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 14 Dec 2022 11:33:28 +0300 Subject: [PATCH 225/302] fixes --- lib/classes/utils.dart | 9 ++++++--- lib/ui/landing/dashboard_screen.dart | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index fbdc6ce..57bb888 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -9,7 +9,6 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -66,6 +65,7 @@ class Utils { showDialog( context: context, barrierColor: Colors.black.withOpacity(0.5), + useRootNavigator: false, builder: (BuildContext context) => LoadingDialog(), ).then((value) { _isLoadingVisible = false; @@ -121,8 +121,11 @@ class Utils { ), ); } else { - showToast(errorMessage); - // confirmDialog(cxt, errorMessage); + if (cxt != null) { + confirmDialog(cxt, errorMessage); + } else { + showToast(errorMessage); + } } } } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index b1dac53..22768e6 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -200,7 +200,7 @@ class _DashboardScreenState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.goodMorning.tr().toText14(color: MyColors.grey77Color), + LocaleKeys.welcomeBack.tr().toText14(color: MyColors.grey77Color), (AppState().memberInformationList!.eMPLOYEENAME ?? "").toText24(isBold: true), 16.height, Row( From 3b6f3f5c4ffcd52c1126207ed7879232b48bfa85 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 14 Dec 2022 12:52:37 +0300 Subject: [PATCH 226/302] Address info issue fixed --- lib/api/worklist/worklist_api_client.dart | 15 ++++++++ lib/models/generic_response_model.dart | 12 +++++- .../get_address_notification_body_list.dart | 28 ++++++++++++++ lib/ui/login/login_screen.dart | 6 +-- lib/ui/work_list/worklist_detail_screen.dart | 24 ++++++++++++ .../worklist_fragments/info_fragments.dart | 38 ++++++++++++++++++- .../dynamic_textfield_widget.dart | 6 +-- 7 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 lib/models/worklist/hr/get_address_notification_body_list.dart diff --git a/lib/api/worklist/worklist_api_client.dart b/lib/api/worklist/worklist_api_client.dart index 75992e7..dcbb415 100644 --- a/lib/api/worklist/worklist_api_client.dart +++ b/lib/api/worklist/worklist_api_client.dart @@ -26,6 +26,7 @@ import 'package:mohem_flutter_app/models/update_user_item_type_list.dart'; import 'package:mohem_flutter_app/models/worklist/GetRFCEmployeeList.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; +import 'package:mohem_flutter_app/models/worklist/hr/get_address_notification_body_list.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart'; @@ -509,6 +510,20 @@ class WorkListApiClient { }, url, postParams); } + Future?> getAddressNotificationBodyList(int? notificationId) async { + String url = "${ApiConsts.erpRest}GET_ADDRESS_NOTIFICATION_BODY"; + Map postParams = { + "P_NOTIFICATION_ID": notificationId, + "P_PAGE_LIMIT": 100, + "P_PAGE_NUM": 1, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + return responseData.getAddressNotificationBodyList; + }, url, postParams); + } + Future?> getFavoriteReplacementWithoutImage() async { String url = "${ApiConsts.erpRest}Mohemm_GetFavoriteReplacementsWithoutImage"; Map postParams = {}; diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index cd7043c..ed00de4 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -102,6 +102,7 @@ import 'package:mohem_flutter_app/models/validate_eit_transaction_list_model.dar import 'package:mohem_flutter_app/models/worklist/GetRFCEmployeeList.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; +import 'package:mohem_flutter_app/models/worklist/hr/get_address_notification_body_list.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart'; @@ -163,12 +164,12 @@ class GenericResponseModel { List? getAbsenceAttachmentsList; List? getAbsenceAttendanceTypesList; List? getAbsenceCollectionNotificationBodyList; + List? getAddressNotificationBodyList; List? getAbsenceDffStructureList; List? getAbsenceTransactionList; List? getAccrualBalancesList; List? getActionHistoryList; List? getAddressDffStructureList; - List? getAddressNotificationBodyList; List? getApprovesList; List? getAttachementList; GetAttendanceTracking? getAttendanceTrackingList; @@ -717,6 +718,13 @@ class GenericResponseModel { }); } + if (json['GetAddressNotificationBodyList'] != null) { + getAddressNotificationBodyList = []; + json['GetAddressNotificationBodyList'].forEach((v) { + getAddressNotificationBodyList!.add(GetAddressNotificationBodyList.fromJson(v)); + }); + } + if (json['GetAbsenceDffStructureList'] != null) { getAbsenceDffStructureList = []; json['GetAbsenceDffStructureList'].forEach((v) { @@ -746,7 +754,7 @@ class GenericResponseModel { getAddressDffStructureList!.add(GetAddressDffStructureList.fromJson(v)); }); } - getAddressNotificationBodyList = json['GetAddressNotificationBodyList']; + // getAddressNotificationBodyList = json['GetAddressNotificationBodyList']; if (json['GetApprovesList'] != null) { getApprovesList = []; diff --git a/lib/models/worklist/hr/get_address_notification_body_list.dart b/lib/models/worklist/hr/get_address_notification_body_list.dart new file mode 100644 index 0000000..28ee516 --- /dev/null +++ b/lib/models/worklist/hr/get_address_notification_body_list.dart @@ -0,0 +1,28 @@ +class GetAddressNotificationBodyList { + String? pREVSEGMENTVALUEDSP; + String? sEGMENTPROMPT; + String? sEGMENTVALUEDSP; + String? uPDATEDFLAG; + + GetAddressNotificationBodyList( + {this.pREVSEGMENTVALUEDSP, + this.sEGMENTPROMPT, + this.sEGMENTVALUEDSP, + this.uPDATEDFLAG}); + + GetAddressNotificationBodyList.fromJson(Map json) { + pREVSEGMENTVALUEDSP = json['PREV_SEGMENT_VALUE_DSP']; + sEGMENTPROMPT = json['SEGMENT_PROMPT']; + sEGMENTVALUEDSP = json['SEGMENT_VALUE_DSP']; + uPDATEDFLAG = json['UPDATED_FLAG']; + } + + Map toJson() { + Map data = new Map(); + data['PREV_SEGMENT_VALUE_DSP'] = this.pREVSEGMENTVALUEDSP; + data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT; + data['SEGMENT_VALUE_DSP'] = this.sEGMENTVALUEDSP; + data['UPDATED_FLAG'] = this.uPDATEDFLAG; + return data; + } +} diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index a0ab3c9..04c3077 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -58,9 +58,9 @@ class _LoginScreenState extends State { void initState() { super.initState(); // checkFirebaseToken(); - if (kReleaseMode) { - checkDeviceSafety(); - } + // if (kReleaseMode) { + // checkDeviceSafety(); + // } } void checkDeviceSafety() async { diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index b5129a5..8ec8d00 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -25,6 +25,7 @@ import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/GetRFCEmployeeList.dart'; import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; +import 'package:mohem_flutter_app/models/worklist/hr/get_address_notification_body_list.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart'; @@ -78,6 +79,8 @@ class _WorkListDetailScreenState extends State { List? getBasicDetNtfBodyList = []; List? getAbsenceCollectionNotificationBodyList = []; GetContactNotificationBodyList? getContactNotificationBodyList; + List? getAddressNotificationBodyList = []; + GenericResponseModel? getBasicNTFBody; GenericResponseModel? getICBody; @@ -118,6 +121,7 @@ class _WorkListDetailScreenState extends State { getBasicDetNtfBodyList!.clear(); getAbsenceCollectionNotificationBodyList!.clear(); getContactNotificationBodyList = null; + getAddressNotificationBodyList!.clear(); if (workListData!.iTEMTYPE == "HRSSA" || workListData!.iTEMTYPE == "STAMP") { getUserInformation(); @@ -139,6 +143,8 @@ class _WorkListDetailScreenState extends State { getAbsenceNotificationBody(); } else if (workListData!.rEQUESTTYPE == "CONTACT") { getContactNotificationBody(); + } else if (workListData!.rEQUESTTYPE == "ADDRESS") { + getAddressNotificationBody(); } // getBasicNTFBody = await WorkListApiClient().getBasicDetNTFBody(workListData!.nOTIFICATIONID!, -999); // getAbsenceCollectionNotifications = await WorkListApiClient().getAbsenceNotificationBody(workListData!.nOTIFICATIONID!, -999); @@ -271,6 +277,7 @@ class _WorkListDetailScreenState extends State { getEitCollectionNotificationBodyList: getEitCollectionNotificationBodyList, getPhonesNotificationBodyList: getPhonesNotificationBodyList, getBasicDetNtfBodyList: getBasicDetNtfBodyList, + getAddressNotificationBodyList: getAddressNotificationBodyList, getAbsenceCollectionNotificationBodyList: getAbsenceCollectionNotificationBodyList, getContactNotificationBodyList: getContactNotificationBodyList, getPrNotificationBodyList: getPrNotificationBody, @@ -841,6 +848,23 @@ class _WorkListDetailScreenState extends State { } } + void getAddressNotificationBody() async { + try { + if (apiCallCount == 0) Utils.showLoading(context); + apiCallCount++; + getAddressNotificationBodyList = await WorkListApiClient().getAddressNotificationBodyList(workListData!.nOTIFICATIONID); + apiCallCount--; + if (apiCallCount == 0) { + Utils.hideLoading(context); + setState(() {}); + } + } catch (ex) { + apiCallCount--; + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + void getStampNotificationBody() async { try { if (apiCallCount == 0) Utils.showLoading(context); diff --git a/lib/ui/work_list/worklist_fragments/info_fragments.dart b/lib/ui/work_list/worklist_fragments/info_fragments.dart index 7cf8aa9..bcde517 100644 --- a/lib/ui/work_list/worklist_fragments/info_fragments.dart +++ b/lib/ui/work_list/worklist_fragments/info_fragments.dart @@ -13,6 +13,7 @@ import 'package:mohem_flutter_app/models/get_pr_notification_body_list_model.dar import 'package:mohem_flutter_app/models/get_stamp_ms_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/get_stamp_ns_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/eit_otification_body_model.dart'; +import 'package:mohem_flutter_app/models/worklist/hr/get_address_notification_body_list.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_basic_det_ntf_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_contact_notification_body_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_body_list_model.dart'; @@ -31,6 +32,7 @@ class InfoFragment extends StatelessWidget { List? getAbsenceCollectionNotificationBodyList; GetContactNotificationBodyList? getContactNotificationBodyList; GetPrNotificationBodyList? getPrNotificationBodyList; + List? getAddressNotificationBodyList = []; InfoFragment( {this.workListData, @@ -43,7 +45,8 @@ class InfoFragment extends StatelessWidget { this.getBasicDetNtfBodyList, this.getAbsenceCollectionNotificationBodyList, this.getContactNotificationBodyList, - this.getPrNotificationBodyList}); + this.getPrNotificationBodyList, + this.getAddressNotificationBodyList}); double itemHeight = 0; double itemWidth = 0; @@ -89,6 +92,7 @@ class InfoFragment extends StatelessWidget { if (getBasicDetNtfBodyList?.isNotEmpty ?? false) getBasicDetNtfBodyListWidget(getBasicDetNtfBodyList ?? []).objectContainerView(title: "Basic Information"), if (getAbsenceCollectionNotificationBodyList?.isNotEmpty ?? false) getAbsenceCollectionNotificationBodyListWidget(getAbsenceCollectionNotificationBodyList ?? []), if (getContactNotificationBodyList != null) getContactNotificationBodyListWidget(getContactNotificationBodyList ?? GetContactNotificationBodyList()).objectContainerView(), + if (getAddressNotificationBodyList?.isNotEmpty ?? false) getAddressNotificationBodyListWidget(getAddressNotificationBodyList!), ]; return Container( width: double.infinity, @@ -465,6 +469,36 @@ class InfoFragment extends StatelessWidget { ); } + Widget getAddressNotificationBodyListWidget(List getAddressNotificationBodyList) { + bool isOdd = false; + try { + if (getAddressNotificationBodyList.length % 2 != 0) { + isOdd = true; + getAddressNotificationBodyList.add(GetAddressNotificationBodyList(sEGMENTPROMPT: "--", sEGMENTVALUEDSP: "--")); + } + } catch (e) {} + + return GridView.builder( + itemCount: getAddressNotificationBodyList!.length, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) => ItemDetailViewGridItem( + index, + getAddressNotificationBodyList[index].sEGMENTPROMPT, + getAddressNotificationBodyList[index].sEGMENTVALUEDSP, + isNeedToShowEmptyDivider: (getAddressNotificationBodyList.length == index + 1) + ? isOdd + ? true + : false + : false, + ), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + childAspectRatio: (itemWidth / itemHeight), + ), + ).objectContainerView(); + } + List getPRHeaderValues() { List pRHeaders = []; getPrNotificationBodyList!.pRHeader!.forEach((element) { @@ -478,7 +512,7 @@ class InfoFragment extends StatelessWidget { try { if (data.contactNotificationBody!.length % 2 != 0) { isOdd = true; - data.contactNotificationBody!.add(new ContactNotificationBody()); + data.contactNotificationBody!.add(ContactNotificationBody(segmentPrompt: "--", segmentValueDsp: "--")); } } catch (e) {} diff --git a/lib/widgets/dynamic_forms/dynamic_textfield_widget.dart b/lib/widgets/dynamic_forms/dynamic_textfield_widget.dart index 299ef7a..ec4146b 100644 --- a/lib/widgets/dynamic_forms/dynamic_textfield_widget.dart +++ b/lib/widgets/dynamic_forms/dynamic_textfield_widget.dart @@ -68,11 +68,7 @@ class DynamicTextFieldWidget extends StatelessWidget { enabled: isEnable, scrollPadding: EdgeInsets.zero, readOnly: isReadOnly, - keyboardType: (isInputTypeNum) - ? isInputTypeNumSigned - ? const TextInputType.numberWithOptions(signed: true) - : TextInputType.number - : TextInputType.text, + keyboardType: (isInputTypeNum) ? (isInputTypeNumSigned ? const TextInputType.numberWithOptions(signed: true, decimal: true) : TextInputType.numberWithOptions(signed: true, decimal: true)) : TextInputType.text, textInputAction: TextInputAction.done, //controller: controller, maxLines: lines, From 3d4d5403a9b2703be968fece1fe8b6330715b792 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 15 Dec 2022 09:48:33 +0300 Subject: [PATCH 227/302] Multiple Chat Issue --- lib/provider/chat_provider_model.dart | 94 +++++++++++++++++---------- 1 file changed, 59 insertions(+), 35 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 876737f..6affc8a 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -291,14 +291,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void chatNotDelivered(List? args) { dynamic items = args!.toList(); for (dynamic item in items[0]) { - searchedChats!.forEach( - (ChatUser element) { - if (element.id == item["currentUserId"]) { - int? val = element.unreadMessageCount ?? 0; - element.unreadMessageCount = val! + 1; - } - }, - ); + for (ChatUser element in searchedChats!) { + if (element.id == item["currentUserId"]) { + int? val = element.unreadMessageCount ?? 0; + element.unreadMessageCount = val! + 1; + } + } } notifyListeners(); } @@ -390,8 +388,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sort(); } - List list = [ - {"userChatHistoryId": data.first.userChatHistoryId, "TargetUserId": temp.first.targetUserId, "isDelivered": true, "isSeen": isChatScreenActive && data.first.currentUserId == receiverID ? true : false} + List list = [ + { + "userChatHistoryId": data.first.userChatHistoryId, + "TargetUserId": temp.first.targetUserId, + "isDelivered": true, + "isSeen": isChatScreenActive && data.first.currentUserId == receiverID ? true : false + } ]; updateUserChatHistoryOnMsg(list); invokeChatCounter(userId: AppState().chatDetails!.response!.id!); @@ -400,9 +403,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void sort() { searchedChats!.sort( - (ChatUser a, ChatUser b) => b.unreadMessageCount!.compareTo( - a.unreadMessageCount!, - ), + (ChatUser a, ChatUser b) => b.unreadMessageCount!.compareTo(a.unreadMessageCount!), ); } @@ -540,28 +541,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void sendChatMessage(BuildContext context, {required int targetUserId, required int userStatus, required String userEmail, required String targetUserName}) async { - dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); - if (contain.isEmpty) { - List emails = []; - emails.add(await EmailImageEncryption().encrypt(val: userEmail)); - List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); - searchedChats!.add( - ChatUser( - id: targetUserId, - userName: targetUserName, - unreadMessageCount: 0, - email: userEmail, - isImageLoading: false, - image: chatImages.first.profilePicture ?? "", - isImageLoaded: true, - isTyping: false, - isFav: false, - userStatus: userStatus, - userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), - ), - ); - notifyListeners(); - } if (!isFileSelected && !isMsgReply) { print("Normal Text Msg"); if (message.text == null || message.text.isEmpty) { @@ -621,6 +600,51 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isImageLoaded: true, image: selectedFile.readAsBytesSync()); } + + if (searchedChats != null) { + dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); + if (contain.isEmpty) { + List emails = []; + emails.add(await EmailImageEncryption().encrypt(val: userEmail)); + List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); + searchedChats!.add( + ChatUser( + id: targetUserId, + userName: targetUserName, + unreadMessageCount: 0, + email: userEmail, + isImageLoading: false, + image: chatImages.first.profilePicture ?? "", + isImageLoaded: true, + isTyping: false, + isFav: false, + userStatus: userStatus, + userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), + ), + ); + notifyListeners(); + } + } else { + List emails = []; + emails.add(await EmailImageEncryption().encrypt(val: userEmail)); + List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); + searchedChats!.add( + ChatUser( + id: targetUserId, + userName: targetUserName, + unreadMessageCount: 0, + email: userEmail, + isImageLoading: false, + image: chatImages.first.profilePicture ?? "", + isImageLoaded: true, + isTyping: false, + isFav: false, + userStatus: userStatus, + userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), + ), + ); + notifyListeners(); + } } void selectImageToUpload(BuildContext context) { From 08e0af8f64664b31df929b4e5dbe9f1d5dd26a75 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 15 Dec 2022 12:06:42 +0300 Subject: [PATCH 228/302] Chat Bug's Fix --- lib/provider/chat_provider_model.dart | 60 ++++++++++++++++++++++----- lib/ui/chat/chat_bubble.dart | 7 ++-- lib/ui/chat/chat_detailed_screen.dart | 3 ++ lib/ui/chat/chat_home.dart | 1 + lib/ui/landing/widget/app_drawer.dart | 9 ++++ 5 files changed, 66 insertions(+), 14 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 6affc8a..a62016f 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -48,7 +48,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { bool currentUserTyping = false; int? cTypingUserId = 0; - //Chat + //Chat Home Page Counter int chatUConvCounter = 0; Future getUserAutoLoginToken() async { @@ -376,16 +376,16 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { setMsgTune(); if (isChatScreenActive && data.first.currentUserId == receiverID) { userChatHistory.insert(0, data.first); - } - - if (searchedChats != null) { - for (ChatUser user in searchedChats!) { - if (user.id == data.first.currentUserId) { - int tempCount = user.unreadMessageCount ?? 0; - user.unreadMessageCount = tempCount + 1; + } else { + if (searchedChats != null) { + for (ChatUser user in searchedChats!) { + if (user.id == data.first.currentUserId) { + int tempCount = user.unreadMessageCount ?? 0; + user.unreadMessageCount = tempCount + 1; + } } + sort(); } - sort(); } List list = [ @@ -749,7 +749,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { for (ChatUser user in searchedChats!) { if (user.id == favoriteChatUser.response!.targetUserId!) { user.isFav = favoriteChatUser.response!.isFav; - favUsersList.add(user); + dynamic contain = favUsersList!.where((ChatUser element) => element.id == favoriteChatUser.response!.targetUserId!); + if (contain.isEmpty) { + favUsersList.add(user); + } } } } @@ -788,6 +791,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void clearAll() { + print("----------------- Disposed ---------------------------"); searchedChats = pChatHistory; search.clear(); isChatScreenActive = false; @@ -799,6 +803,37 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sFileType = ""; } + void disposeData() { + search.clear(); + isChatScreenActive = false; + receiverID = 0; + paginationVal = 0; + message.text = ''; + isFileSelected = false; + repliedMsg = []; + sFileType = ""; + deleteData(); + favUsersList.clear(); + searchedChats!.clear(); + pChatHistory!.clear(); + chatHubConnection.stop(); + AppState().chatDetails = null; + } + + void deleteData() { + List exists = [], unique = []; + exists.addAll(searchedChats!); + exists.addAll(favUsersList!); + Map profileMap = {}; + for (ChatUser item in exists) { + profileMap[item.email!] = item; + } + unique = profileMap.values.toList(); + for (ChatUser element in unique!) { + deleteFile(element.id.toString()); + } + } + void getUserImages() async { List emails = []; List exists = [], unique = []; @@ -909,4 +944,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await chatHubConnection.invoke("GetChatCounversationCount", args: [userId]); return ""; } + + void userTypingInvoke({required int currentUser, required int reciptUser}) async { + logger.d([reciptUser, currentUser]); + await chatHubConnection.invoke("UserTypingAsync", args: [reciptUser, currentUser]); + } } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 03a41e4..3b183ed 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -123,6 +123,7 @@ class ChatBubble extends StatelessWidget { if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), (cItem.contant ?? "").toText12().expanded, + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) const Icon(Icons.remove_red_eye, size: 20) ], ), Align( @@ -217,11 +218,9 @@ class ChatBubble extends StatelessWidget { Row( children: [ if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) - SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly( - left: 0, - right: 10, - ), + SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), (cItem.contant ?? "").toText12(color: Colors.white).expanded, + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) const Icon(Icons.remove_red_eye, color: Colors.white, size: 20) ], ), Align( diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 5cad3fa..379fe2b 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -233,6 +233,9 @@ class _ChatDetailScreenState extends State { ), ).paddingOnly(right: 21), ), + onChanged: (val) { + m.userTypingInvoke(currentUser: AppState().chatDetails!.response!.id!, reciptUser: params!.chatUser!.id!); + }, ), ], )); diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 330242a..af243e5 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -47,6 +47,7 @@ class _ChatHomeState extends State { return; } if (data.searchedChats == null || data.searchedChats!.isEmpty) { + data.isLoading = true; data.getUserRecentChats(); } } diff --git a/lib/ui/landing/widget/app_drawer.dart b/lib/ui/landing/widget/app_drawer.dart index 4160fde..4b4219d 100644 --- a/lib/ui/landing/widget/app_drawer.dart +++ b/lib/ui/landing/widget/app_drawer.dart @@ -11,6 +11,7 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/dashboard/drawer_menu_item_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/dialogs/id/business_card_dialog.dart'; import 'package:mohem_flutter_app/ui/dialogs/id/employee_digital_id_dialog.dart'; @@ -28,6 +29,13 @@ class AppDrawer extends StatefulWidget { class _AppDrawerState extends State { List drawerMenuItemList = []; + late ChatProviderModel chatData; + + @override + void initState() { + super.initState(); + chatData = Provider.of(context, listen: false); + } @override Widget build(BuildContext context) { @@ -171,6 +179,7 @@ class _AppDrawerState extends State { AppState().isAuthenticated = false; AppState().isLogged = false; AppState().setPostParamsInitConfig(); + chatData.disposeData(); // SharedPreferences prefs = await SharedPreferences.getInstance(); // await prefs.clear(); Navigator.pushNamedAndRemoveUntil(context, AppRoutes.login, (Route route) => false, arguments: null); From 86d6b57cbcef19924c6aad4c5b8f4259a4ca0bdd Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 15 Dec 2022 12:08:10 +0300 Subject: [PATCH 229/302] dynamic list screen items grid view improvements --- lib/classes/consts.dart | 4 +- lib/extensions/string_extensions.dart | 3 +- lib/ui/login/verify_last_login_screen.dart | 2 +- lib/ui/login/verify_login_screen.dart | 2 +- .../dynamic_listview_screen.dart | 59 ++++++------------- lib/ui/work_list/itg_detail_screen.dart | 2 +- lib/ui/work_list/work_list_screen.dart | 58 +++++++++--------- lib/widgets/app_bar_widget.dart | 6 +- lib/widgets/item_detail_view_widget.dart | 1 + pubspec.yaml | 3 +- 10 files changed, 58 insertions(+), 82 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 3d58efd..ac520b1 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,9 +2,9 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - static String baseUrl = "https://hmgwebservices.com"; // Live server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 8e1637e..e9e7e93 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -102,13 +102,14 @@ extension EmailValidator on String { decoration: isUnderLine ? TextDecoration.underline : null), ); - Widget toText16({Color? color, bool isUnderLine = false, bool isBold = false, int? maxlines}) => Text( + Widget toText16({Color? color, bool isUnderLine = false, bool isBold = false, int? maxlines, double? height}) => Text( this, maxLines: maxlines, style: TextStyle( color: color ?? MyColors.darkTextColor, fontSize: 16, letterSpacing: -0.64, + height: height, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, decoration: isUnderLine ? TextDecoration.underline : null, ), diff --git a/lib/ui/login/verify_last_login_screen.dart b/lib/ui/login/verify_last_login_screen.dart index 81d1ba2..cfa808a 100644 --- a/lib/ui/login/verify_last_login_screen.dart +++ b/lib/ui/login/verify_last_login_screen.dart @@ -289,7 +289,7 @@ class _VerifyLastLoginScreenState extends State { width: 38, color: isDisable ? MyColors.darkTextColor.withOpacity(0.7) : null, ), - _title.toText16() + _title.toText16(height: 20/16) ], ), ), diff --git a/lib/ui/login/verify_login_screen.dart b/lib/ui/login/verify_login_screen.dart index 803f3d9..0ba486b 100644 --- a/lib/ui/login/verify_login_screen.dart +++ b/lib/ui/login/verify_login_screen.dart @@ -572,7 +572,7 @@ class _VerifyLoginScreenState extends State { width: 38, color: isDisable ? MyColors.darkTextColor.withOpacity(0.7) : null, ), - _title.toText16() + _title.toText16(height: 20/16) ], ), ), diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index d1c21e1..68727e5 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_layout_grid/flutter_layout_grid.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; @@ -22,7 +23,8 @@ class DynamicListViewParams { List? collectionNotificationList; final String selectedEmp; - DynamicListViewParams(this.title, this.dynamicId, {this.selectedEmp ='', this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.isUpdate = false, this.collectionNotificationList}); + DynamicListViewParams(this.title, this.dynamicId, + {this.selectedEmp = '', this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.isUpdate = false, this.collectionNotificationList}); } class DynamicListViewScreen extends StatefulWidget { @@ -37,6 +39,7 @@ class DynamicListViewScreen extends StatefulWidget { class _DynamicListViewScreenState extends State { List? getEITTransactionList; DynamicListViewParams? dynamicParams; + // String? empId; @override @@ -99,47 +102,19 @@ class _DynamicListViewScreenState extends State { : ListView.separated( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, - itemBuilder: (cxt, int parentIndex) => getEITTransactionList![parentIndex].collectionTransaction!.isEmpty - ? const SizedBox() - : GridView( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 1.0 / 0.75), - padding: const EdgeInsets.only(left: 12,right: 21,top: 12), - shrinkWrap: true, - primary: false, - physics: const ScrollPhysics(), - children: getEITWidgetsList(getEITTransactionList![parentIndex].collectionTransaction), - ).objectContainerView(), - // Column( - // crossAxisAlignment: CrossAxisAlignment.start, - // mainAxisSize: MainAxisSize.min, - // children: [ - // for (int t = 0; t < (getEITTransactionList![parentIndex].collectionTransaction ?? []).length; t++) - // if (getEITTransactionList![parentIndex].collectionTransaction![t].dISPLAYFLAG == "Y") - // // ItemDetailView(getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTPROMPT!, - // // getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTVALUEDSP ?? ""), - // // GridView( - // // gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2), - // // padding: const EdgeInsets.only(left: 21, right: 21, bottom: 21, top: 12), - // // shrinkWrap: true, - // // primary: false, - // // physics: const ScrollPhysics(), - // // children: getEITWidgetsList(getEITTransactionList![parentIndex].collectionTransaction), - // // ) - // // ItemDetailViewCol(getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTPROMPT!, - // // getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTVALUEDSP ?? ""), - // - // // GridView( - // // gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2), - // // padding: const EdgeInsets.only(left: 21, right: 21, bottom: 21, top: 12), - // // shrinkWrap: true, - // // primary: false, - // // physics: const ScrollPhysics(), - // // children: getEITWidgetsList(getEITTransactionList![parentIndex].collectionTransaction), - // // ) - // // ItemDetailView(getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTPROMPT!, - // // getEITTransactionList![parentIndex].collectionTransaction![t].sEGMENTVALUEDSP ?? ""), - // ], - // ).objectContainerView(), + itemBuilder: (cxt, int parentIndex) { + if (getEITTransactionList![parentIndex].collectionTransaction!.isEmpty) { + return const SizedBox(); + } + int count = getEITTransactionList![parentIndex].collectionTransaction!.length; + return LayoutGrid( + columnSizes: [1.fr, 1.fr], + rowSizes: [for (int i = 0; i < (count / 2).round(); i++) auto], + columnGap: 8, + rowGap: 12, + children: getEITWidgetsList(getEITTransactionList![parentIndex].collectionTransaction), + ).objectContainerView(); + }, separatorBuilder: (cxt, index) => 12.height, itemCount: getEITTransactionList!.length)), ], diff --git a/lib/ui/work_list/itg_detail_screen.dart b/lib/ui/work_list/itg_detail_screen.dart index ebe16c8..05e542e 100644 --- a/lib/ui/work_list/itg_detail_screen.dart +++ b/lib/ui/work_list/itg_detail_screen.dart @@ -533,7 +533,7 @@ class _ItgDetailScreenState extends State { Utils.hideLoading(context); Utils.showToast(LocaleKeys.yourChangeHasBeenSavedSuccessfully.tr()); // Navigator.pop(context, "delegate_reload"); - animationIndex=animationIndex+1; + animationIndex = animationIndex + 1; AppState().requestAllList!.removeAt(AppState().itgWorkListIndex!); if (AppState().requestAllList!.isEmpty) { Navigator.pop(context, "delegate_reload"); diff --git a/lib/ui/work_list/work_list_screen.dart b/lib/ui/work_list/work_list_screen.dart index da1b60f..69fb7f3 100644 --- a/lib/ui/work_list/work_list_screen.dart +++ b/lib/ui/work_list/work_list_screen.dart @@ -215,11 +215,7 @@ class _WorkListScreenState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, - appBar: AppBarWidget( - context, - title: LocaleKeys.workList.tr(), - showNotificationButton: true, - ), + appBar: AppBarWidget(context, title: LocaleKeys.workList.tr(), showWorkListSettingButton: true), body: SizedBox( width: double.infinity, height: double.infinity, @@ -284,31 +280,33 @@ class _WorkListScreenState extends State { physics: const BouncingScrollPhysics(), child: itgRequestTypeIndex != null ? Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - SizedBox( - height: 40, - child: ListView.separated( - itemBuilder: (context, index) { - RequestType type = itgFormsModel!.requestType![index]; - return Container( - padding: const EdgeInsets.only(left: 21, right: 21, top: 8, bottom: 8), - alignment: Alignment.center, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(30), color: itgRequestTypeIndex == index ? MyColors.darkIconColor : MyColors.lightGreyEAColor), - child: ("${type.requestTypeName}").toText12(color: itgRequestTypeIndex == index ? MyColors.white : MyColors.black), - ).onPress(() { - if (itgRequestTypeIndex != index) { - itgRequestTypeIndex = index; - setState(() {}); - } - }); - }, - separatorBuilder: (context, index) => 8.width, - shrinkWrap: true, - itemCount: itgFormsModel?.requestType?.length ?? 0, - scrollDirection: Axis.horizontal, - padding: const EdgeInsets.only(left: 21, right: 21), - ), - ).paddingOnly(top: 16, bottom: 16), + // todo this is commented for temporary purpose, have issue when selecting any itg category and click any item showing wrong details + // SizedBox( + // height: 40, + // child: ListView.separated( + // itemBuilder: (context, index) { + // RequestType type = itgFormsModel!.requestType![index]; + // return Container( + // padding: const EdgeInsets.only(left: 21, right: 21, top: 8, bottom: 8), + // alignment: Alignment.center, + // decoration: BoxDecoration(borderRadius: BorderRadius.circular(30), color: itgRequestTypeIndex == index ? MyColors.darkIconColor : MyColors.lightGreyEAColor), + // child: ("${type.requestTypeName}").toText12(color: itgRequestTypeIndex == index ? MyColors.white : MyColors.black), + // ).onPress(() { + // if (itgRequestTypeIndex != index) { + // itgRequestTypeIndex = index; + // setState(() {}); + // } + // }); + // }, + // separatorBuilder: (context, index) => 8.width, + // shrinkWrap: true, + // itemCount: itgFormsModel?.requestType?.length ?? 0, + // scrollDirection: Axis.horizontal, + // padding: const EdgeInsets.only(left: 21, right: 21), + // ), + // ).paddingOnly(top: 16, bottom: 16), ListView.separated( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), @@ -429,7 +427,7 @@ class _WorkListScreenState extends State { void openBottomSheet(BuildContext context) { showMyBottomSheet( context, - callBackFunc: (){}, + callBackFunc: () {}, child: WorkListAdvanceSearch((selectedViewID, selectedItemTypeID, searchByInput, searchByDate) async { itgRequestTypeIndex = null; pNotificationType = selectedViewID; diff --git a/lib/widgets/app_bar_widget.dart b/lib/widgets/app_bar_widget.dart index 8bca3f3..1096f24 100644 --- a/lib/widgets/app_bar_widget.dart +++ b/lib/widgets/app_bar_widget.dart @@ -12,7 +12,7 @@ import 'package:provider/provider.dart'; AppBar AppBarWidget(BuildContext context, {required String title, bool showHomeButton = true, - bool showNotificationButton = false, + bool showWorkListSettingButton = false, bool showMemberButton = false, List? actions, void Function()? onHomeTapped, @@ -43,12 +43,12 @@ AppBar AppBarWidget(BuildContext context, }, icon: const Icon(Icons.home, color: MyColors.darkIconColor), ), - if (showNotificationButton) + if (showWorkListSettingButton) IconButton( onPressed: () { Navigator.pushNamed(context, AppRoutes.worklistSettings); }, - icon: const Icon(Icons.notifications, color: MyColors.textMixColor), + icon: const Icon(Icons.settings_rounded, color: MyColors.darkIconColor), ), if (showMemberButton) IconButton( diff --git a/lib/widgets/item_detail_view_widget.dart b/lib/widgets/item_detail_view_widget.dart index 77d959b..68b245a 100644 --- a/lib/widgets/item_detail_view_widget.dart +++ b/lib/widgets/item_detail_view_widget.dart @@ -36,6 +36,7 @@ class ItemDetailViewCol extends StatelessWidget { Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, children: [ "$title:".toText12(isBold: true, color: const Color(0xff2BB8A6), maxLine: 2), 4.width, diff --git a/pubspec.yaml b/pubspec.yaml index 086ec65..baa5e9f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -68,7 +68,7 @@ dependencies: month_picker_dialog_2: 0.5.5 open_file: ^3.2.1 wifi_iot: ^0.3.16 - flutter_html: ^2.2.1 + flutter_html: ^3.0.0-alpha.6 # flutter_barcode_scanner: ^2.0.0 qr_code_scanner: ^1.0.0 qr_flutter: ^4.0.0 @@ -100,6 +100,7 @@ dependencies: video_player: ^2.4.7 just_audio: ^0.9.30 safe_device: ^1.1.2 + flutter_layout_grid: ^2.0.1 dev_dependencies: flutter_test: From 660fdb63dd0b849636f1453f454f3e8e1742d458 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 15 Dec 2022 12:18:49 +0300 Subject: [PATCH 230/302] Updates & fixes --- assets/langs/ar-SA.json | 3 +- assets/langs/en-US.json | 4 +- lib/api/dashboard_api_client.dart | 22 ++++++++++ lib/classes/consts.dart | 4 +- lib/generated/codegen_loader.g.dart | 8 +++- lib/generated/locale_keys.g.dart | 1 + lib/ui/work_list/worklist_detail_screen.dart | 6 +++ lib/widgets/location/Location.dart | 6 +-- lib/widgets/mark_attendance_widget.dart | 44 ++++++++++++++++---- 9 files changed, 79 insertions(+), 19 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 2adb2ba..ac320f7 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -513,5 +513,6 @@ "ourSponsor": "راعينا:", "startingIn": "يبدأ في", "youAreOutOfContest": "أنت خارج المسابقة.", - "winners": "الفائزين!!!" + "winners": "الفائزين!!!", + "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 46ede79..1e6025c 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -513,6 +513,6 @@ "ourSponsor": "Our Sponsor:", "startingIn": "Starting in", "youAreOutOfContest": "You are out of the contest.", - "winners": "WINNERS!!!" - + "winners": "WINNERS!!!", + "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified." } \ No newline at end of file diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index ace0881..5f2ad7e 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -133,6 +133,28 @@ class DashboardApiClient { }, url, postParams); } + //Mark Fake Location + Future markFakeLocation({String lat = "0", String? long = "0", required String sourceName}) async { + String url = "${ApiConsts.swpRest}CreateIssueInfo"; + var uuid = Uuid(); + // Generate a v4 (random) id + + Map postParams = { + "UID": uuid.v4(), //Mobile Id + "Latitude": lat, + "Longitude": long, + "QRValue": '', + "NFCValue": sourceName == 'NFC' ? sourceName : '', + "WifiValue": sourceName == 'WIFI' ? sourceName : '', + "EmployeeID": AppState().memberInformationList!.eMPLOYEENUMBER, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + return responseData; + }, url, postParams); + } + //Check ITG Type Future getITGPageNotification() async { String url = "${ApiConsts.cocRest}Mohemm_ITG_GetPageNotification"; diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 3d58efd..93eceee 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,9 +2,9 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index b2a92ad..67408b3 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -528,7 +528,9 @@ class CodegenLoader extends AssetLoader{ "youWantToLeaveMarathon": "هل أنت متأكد أنك تريد العودة؟ سوف تخرج من المسابقة.", "ourSponsor": "راعينا:", "startingIn": "يبدأ في", - "youAreOutOfContest": "أنت خارج المسابقة." + "youAreOutOfContest": "أنت خارج المسابقة.", + "winners": "الفائزين!!!", + "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية" }; static const Map en_US = { "mohemm": "Mohemm", @@ -1044,7 +1046,9 @@ static const Map en_US = { "youWantToLeaveMarathon": "Are you sure you want to go back? You will be out of the contest.", "ourSponsor": "Our Sponsor:", "startingIn": "Starting in", - "youAreOutOfContest": "You are out of the contest." + "youAreOutOfContest": "You are out of the contest.", + "winners": "WINNERS!!!", + "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified." }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 8960278..e4c6ffb 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -500,5 +500,6 @@ abstract class LocaleKeys { static const startingIn = 'startingIn'; static const youAreOutOfContest = 'youAreOutOfContest'; static const winners = 'winners'; + static const fakeLocation = 'fakeLocation'; } diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 8ec8d00..1f62d4e 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -436,6 +436,12 @@ class _WorkListDetailScreenState extends State { case "DELEGATE": returnActionImage = "assets/images/delegate.svg"; break; + case "APPROVE": + returnActionImage = "assets/images/worklist/approve.svg"; + break; + case "REJECT": + returnActionImage = "assets/images/worklist/reject.svg"; + break; case "REQUEST_INFO": returnActionImage = "assets/images/request_info.svg"; break; diff --git a/lib/widgets/location/Location.dart b/lib/widgets/location/Location.dart index 0ddca1c..d407c1c 100644 --- a/lib/widgets/location/Location.dart +++ b/lib/widgets/location/Location.dart @@ -46,12 +46,12 @@ class Location { }); } - static void getCurrentLocation(Function(LatLng?) callback, BuildContext context) { + static void getCurrentLocation(Function(LatLng?, bool isMocked) callback, BuildContext context) { void done(Position position) { //AppStorage.sp.saveLocation(position); - + bool isMocked = position.isMocked; LatLng? myCurrentLocation = LatLng(position.latitude, position.longitude); - callback(myCurrentLocation); + callback(myCurrentLocation, isMocked); } AppPermissions.location((granted) { diff --git a/lib/widgets/mark_attendance_widget.dart b/lib/widgets/mark_attendance_widget.dart index 9840700..cbf70ad 100644 --- a/lib/widgets/mark_attendance_widget.dart +++ b/lib/widgets/mark_attendance_widget.dart @@ -94,8 +94,12 @@ class _MarkAttendanceWidgetState extends State { // if (isNfcEnabled) attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () { if (isNfcLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng) { - performNfcAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + Location.getCurrentLocation((LatLng? latlng, bool isMocked) { + if (isMocked) { + markFakeAttendance("NFC", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? ""); + } else { + performNfcAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + } }, context); } else { performNfcAttendance(widget.model); @@ -104,8 +108,12 @@ class _MarkAttendanceWidgetState extends State { if (isWifiEnabled) attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () { if (isWifiLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng) { - performWifiAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + Location.getCurrentLocation((LatLng? latlng, bool isMocked) { + if (isMocked) { + markFakeAttendance("WIFI", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? ""); + } else { + performWifiAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + } }, context); } else { performWifiAttendance(widget.model); @@ -115,8 +123,12 @@ class _MarkAttendanceWidgetState extends State { if (isQrEnabled) attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async { if (isQrLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng) { - performQrCodeAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + Location.getCurrentLocation((LatLng? latlng, bool isMocked) { + if (isMocked) { + markFakeAttendance("QR", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? ""); + } else { + performQrCodeAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + } }, context); } else { performQrCodeAttendance(widget.model); @@ -136,7 +148,7 @@ class _MarkAttendanceWidgetState extends State { Utils.showLoading(context); try { GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 2, nfcValue: nfcId, isGpsRequired: isNfcLocationEnabled, lat: lat, long: lng); - if(g?.messageStatus != 1) { + if (g?.messageStatus != 1) { Utils.hideLoading(context); showDialog( context: context, @@ -157,7 +169,6 @@ class _MarkAttendanceWidgetState extends State { child: SuccessDialog(widget.isFromDashboard), ); } - } catch (ex) { print(ex); Utils.hideLoading(context); @@ -171,7 +182,7 @@ class _MarkAttendanceWidgetState extends State { Utils.showLoading(context); try { GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 2, nfcValue: nfcId ?? "", isGpsRequired: isNfcLocationEnabled, lat: lat, long: lng); - if(g?.messageStatus != 1) { + if (g?.messageStatus != 1) { Utils.hideLoading(context); showDialog( context: context, @@ -276,6 +287,21 @@ class _MarkAttendanceWidgetState extends State { } } + void markFakeAttendance(String sourceName, String lat, String long) async { + Utils.showLoading(context); + try { + await DashboardApiClient().markFakeLocation(sourceName: sourceName, lat: lat, long: long); + Utils.hideLoading(context); + Utils.confirmDialog(context, LocaleKeys.fakeLocation.tr()); + } catch (ex) { + print(ex); + Utils.hideLoading(context); + Utils.handleException(ex, context, (msg) { + Utils.confirmDialog(context, msg); + }); + } + } + Widget attendanceMethod(String title, String image, bool isEnabled, VoidCallback onPress) => Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(15), From 2174512d792777188333b8c52f80d8e0caaafeba Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 15 Dec 2022 16:31:52 +0300 Subject: [PATCH 231/302] updates & fixes --- lib/classes/consts.dart | 4 ++-- lib/ui/chat/chat_bubble.dart | 4 ++-- lib/ui/login/login_screen.dart | 6 +++--- lib/ui/work_list/worklist_fragments/info_fragments.dart | 2 +- lib/ui/work_list/worklist_fragments/request_fragment.dart | 8 ++++---- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ac520b1..3d58efd 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,9 +2,9 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 3b183ed..8978ff1 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -123,7 +123,7 @@ class ChatBubble extends StatelessWidget { if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), (cItem.contant ?? "").toText12().expanded, - if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) const Icon(Icons.remove_red_eye, size: 20) + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) const Icon(Icons.remove_red_eye, size: 16) ], ), Align( @@ -220,7 +220,7 @@ class ChatBubble extends StatelessWidget { if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), (cItem.contant ?? "").toText12(color: Colors.white).expanded, - if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) const Icon(Icons.remove_red_eye, color: Colors.white, size: 20) + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) const Icon(Icons.remove_red_eye, color: Colors.white, size: 16) ], ), Align( diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 04c3077..a0ab3c9 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -58,9 +58,9 @@ class _LoginScreenState extends State { void initState() { super.initState(); // checkFirebaseToken(); - // if (kReleaseMode) { - // checkDeviceSafety(); - // } + if (kReleaseMode) { + checkDeviceSafety(); + } } void checkDeviceSafety() async { diff --git a/lib/ui/work_list/worklist_fragments/info_fragments.dart b/lib/ui/work_list/worklist_fragments/info_fragments.dart index bcde517..d2c64f3 100644 --- a/lib/ui/work_list/worklist_fragments/info_fragments.dart +++ b/lib/ui/work_list/worklist_fragments/info_fragments.dart @@ -164,7 +164,7 @@ class InfoFragment extends StatelessWidget { ), ItemDetailGrid( ItemDetailViewCol(LocaleKeys.otherCharges.tr(), poHeaderList[index].oTHERCHARGES?.toString() ?? ""), - ItemDetailViewCol(LocaleKeys.totalPOAmountWithVAT.tr(), poHeaderList[index].qUOTATIONDATE ?? ""), + ItemDetailViewCol(LocaleKeys.totalPOAmountWithVAT.tr(), poHeaderList[index].tOTPOAMT.toString() ?? ""), ), ItemDetailGrid( ItemDetailViewCol(LocaleKeys.totalPOAmountInWords.tr(), poHeaderList[index].tOTPOAMTWORD ?? ""), diff --git a/lib/ui/work_list/worklist_fragments/request_fragment.dart b/lib/ui/work_list/worklist_fragments/request_fragment.dart index b86bb1a..a13f91f 100644 --- a/lib/ui/work_list/worklist_fragments/request_fragment.dart +++ b/lib/ui/work_list/worklist_fragments/request_fragment.dart @@ -58,10 +58,10 @@ class RequestFragment extends StatelessWidget { children: [ ItemDetailGrid( ItemDetailViewCol(LocaleKeys.code.tr(), poLinesList[index].iTEMCODE ?? ""), - ItemDetailViewCol(LocaleKeys.mfg.tr(), poLinesList[index].uOM ?? ""), + ItemDetailViewCol(LocaleKeys.mfg.tr(), poLinesList[index].mFG ?? ""), ), ItemDetailGrid( - ItemDetailViewCol(LocaleKeys.lineType.tr(), poLinesList[index].qUANTITY?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.lineType.tr(), poLinesList[index].lINETYPE?.toString() ?? ""), ItemDetailViewCol(LocaleKeys.unit.tr(), poLinesList[index].uOM ?? ""), ), ItemDetailGrid( @@ -78,10 +78,10 @@ class RequestFragment extends StatelessWidget { ), ItemDetailGrid( ItemDetailViewCol(LocaleKeys.deliverToLocation.tr(), poLinesList[index].dELIVERTOLOCATION ?? ""), - ItemDetailViewCol(LocaleKeys.requisitionNumber.tr(), poLinesList[index].rEQUESTOR ?? ""), + ItemDetailViewCol(LocaleKeys.requisitionNumber.tr(), poLinesList[index].pRNUM ?? ""), ), ItemDetailGrid( - ItemDetailViewCol(LocaleKeys.requester.tr(), poLinesList[index].pRNUM ?? ""), + ItemDetailViewCol(LocaleKeys.requester.tr(), poLinesList[index].rEQUESTOR ?? ""), Container(), ), 12.height, From 58fb7a78942206ba48d01d0e9fd44e86c485318f Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Thu, 15 Dec 2022 16:49:23 +0300 Subject: [PATCH 232/302] Pushing for testing --- lib/api/marathon/marathon_api_client.dart | 5 +- lib/ui/marathon/marathon_provider.dart | 33 ++++-- lib/ui/marathon/marathon_screen.dart | 112 ++++++++++-------- lib/ui/marathon/widgets/marathon_footer.dart | 17 --- .../widgets/marathon_progress_container.dart | 8 +- .../marathon_qualifiers_container.dart | 1 + 6 files changed, 92 insertions(+), 84 deletions(-) diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 26a0363..9fcdc68 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -97,6 +97,7 @@ class MarathonApiClient { if (marathonModel.statusCode == 208) { // means participant is already in the marathon i.e already joined + //TODO: NEED TO LOOK UPON THIS return marathonModel.data["remainingTime"]; } @@ -116,13 +117,13 @@ class MarathonApiClient { Map jsonObject = { "previousQuestionId": questionId, "marathonId": marathonId, - }; + }; Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonNextQuestionUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); var json = jsonDecode(response.body); - + logger.i("json in NextQuestion: $json"); var data = json["data"]; diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 4144e32..128b634 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -31,6 +31,11 @@ class MarathonProvider extends ChangeNotifier { String? selectedOptionId; int? totalQualifiers; + //TODO: THIS BUG NEEDS TO BE FIXED. NOT DONE YET + String? gapTimeImage; + String? gapTimeText; + int? gapTimeType; + bool iAmWinner = false; bool isPrivilegedWithMarathon = false; @@ -178,16 +183,21 @@ class MarathonProvider extends ChangeNotifier { updateCardStatusToAnswer(); - await callSubmitOptionApi().then((bool value) async { - if (value) { - await callNextQuestionApi(); - } + scheduleMicrotask(() async { + await callSubmitOptionApi().then((bool value) async { + if (value) { + await callNextQuestionApi(); + } + }); }); } if (totalCurrentQuestionTime == 0) { + gapTimeImage = currentQuestion.gapImage; + gapTimeText = currentQuestion.gapText; + gapTimeType = currentQuestion.gapType; updateCardData(); - if (currentQuestionNumber == marathonDetailModel.totalQuestions!) { + if (currentQuestionNumber - 1 == marathonDetailModel.totalQuestions!) { callGetQualifiersApi(); updateQuestionCardStatus(QuestionCardStatus.findingWinner); timer.cancel(); @@ -242,7 +252,6 @@ class MarathonProvider extends ChangeNotifier { selectedWinners = await MarathonApiClient().getSelectedWinner(marathonId: marathonDetailModel.id!); if (selectedWinners != null) { selectedWinners!.removeWhere((WinnerModel element) { - print("matching : ${AppState().memberInformationList!.eMPLOYEENUMBER} with ${element.employeeId}"); if (element.employeeId == AppState().memberInformationList!.eMPLOYEENUMBER) { iAmWinner = true; return true; @@ -251,18 +260,18 @@ class MarathonProvider extends ChangeNotifier { } }); } - print("selectedWinners Length : ${selectedWinners!.length}"); notifyListeners(); } - // TODO: here I need to add a logic where I should call this function for Api but for the 1st question it should behave differently - // TODO: Verify the callings!!! Future callNextQuestionApi() async { if (currentQuestionNumber < marathonDetailModel.totalQuestions!) { if (currentQuestionNumber == 0) { Utils.showLoading(AppRoutes.navigatorKey.currentContext!); currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: null, marathonId: marathonDetailModel.id!))!; + gapTimeImage = currentQuestion.gapImage; + gapTimeText = currentQuestion.gapText; + gapTimeType = currentQuestion.gapType; if (Utils.isLoading) { Utils.hideLoading(AppRoutes.navigatorKey.currentContext!); } @@ -283,6 +292,7 @@ class MarathonProvider extends ChangeNotifier { } selectedOptionIndex = null; currentQuestionNumber++; + cardContentList.add(const CardContent()); totalCurrentQuestionTime = currentQuestion.questionTime! + currentQuestion.nextQuestGap!; currentGapTime = currentQuestion.nextQuestGap!; @@ -293,7 +303,7 @@ class MarathonProvider extends ChangeNotifier { void populateQuestionStatusesList() { if (marathonDetailModel.totalQuestions != null) { - for (int i = 0; i < marathonDetailModel.totalQuestions! - 1; i++) { + for (int i = 0; i < marathonDetailModel.totalQuestions!; i++) { answerStatusesList.add(QuestionCardStatus.question); } notifyListeners(); @@ -422,9 +432,6 @@ class MarathonProvider extends ChangeNotifier { Navigator.pushReplacementNamed(context, AppRoutes.marathonWaitingScreen); } } catch (e) { - if (kDebugMode) { - print("error in onJoinMarathonPressed: ${e.toString()}"); - } Utils.hideLoading(context); Utils.confirmDialog(context, e.toString()); } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 67d6f4e..c032823 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -22,6 +22,7 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_qualifiers_contai import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/question_card_builder.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart'; import 'package:provider/provider.dart'; @@ -197,57 +198,74 @@ class MarathonScreen extends StatelessWidget { } }, ), - body: SingleChildScrollView( - child: Column( - children: [ - 20.height, - if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ - QualifiersContainer(provider: provider).paddingOnly(left: 21, right: 21), - ] else if (provider.questionCardStatus == QuestionCardStatus.winnerFound) - ...[] - else ...[ - MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), - ], - if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ - getNameContainer(context), + body: Column( + children: [ + ListView( + children: [ + 20.height, + if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ + QualifiersContainer(provider: provider).paddingOnly(left: 21, right: 21), + ] else if (provider.questionCardStatus == QuestionCardStatus.winnerFound) + ...[] + else ...[ + MarathonProgressContainer(provider: provider).paddingOnly(left: 21, right: 21), + ], + if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ + getNameContainer(context), + ], + QuestionCardBuilder( + onQuestion: (BuildContext context) => const QuestionCard(), + onCompleted: (BuildContext context) => CustomStatusWidget( + asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), + title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.allQuestionsCorrect.toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onCorrectAnswer: (BuildContext context) => CustomStatusWidget( + asset: getSuccessWidget(gapType: provider.gapTimeType, gapImage: provider.gapTimeImage, gapText: provider.gapTimeText), + title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.yourAnswerCorrect.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onWinner: (BuildContext context) => getWinnerWidget(context, provider: provider), + onWrongAnswer: (BuildContext context) => CustomStatusWidget( + asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), + title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), + subTitle: LocaleKeys.wrongAnswer.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onSkippedAnswer: (BuildContext context) => CustomStatusWidget( + asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), + title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), + subTitle: LocaleKeys.youMissedTheQuestion.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + onFindingWinner: (BuildContext context) => CustomStatusWidget( + asset: Lottie.asset(MyLottieConsts.winnerLottie, height: 168), + title: LocaleKeys.fingersCrossed.tr().toText22(color: MyColors.greenColor), + subTitle: LocaleKeys.winnerSelectedRandomly.tr().toText18(color: MyColors.darkTextColor, isCentered: true), + ), + questionCardStatus: provider.questionCardStatus, + ).paddingOnly(top: 12, left: 21, right: 21), ], - QuestionCardBuilder( - onQuestion: (BuildContext context) => const QuestionCard(), - onCompleted: (BuildContext context) => CustomStatusWidget( - asset: Lottie.asset(MyLottieConsts.allQuestions, height: 200), - title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), - subTitle: LocaleKeys.allQuestionsCorrect.toText18(color: MyColors.darkTextColor, isCentered: true), - ), - onCorrectAnswer: (BuildContext context) => CustomStatusWidget( - asset: getSuccessWidget(gapType: provider.currentQuestion.gapType, gapImage: provider.currentQuestion.gapImage, gapText: provider.currentQuestion.gapText), - title: LocaleKeys.congrats.tr().toText22(color: MyColors.greenColor), - subTitle: LocaleKeys.yourAnswerCorrect.toText18(color: MyColors.darkTextColor, isCentered: true), - ), - onWinner: (BuildContext context) => getWinnerWidget(context, provider: provider), - onWrongAnswer: (BuildContext context) => CustomStatusWidget( - asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), - title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), - subTitle: LocaleKeys.wrongAnswer.tr().toText18(color: MyColors.darkTextColor, isCentered: true), - ), - onSkippedAnswer: (BuildContext context) => CustomStatusWidget( - asset: Image.asset(MyLottieConsts.wrongAnswerGif, height: 200), - title: LocaleKeys.oops.tr().toText22(color: MyColors.redColor), - subTitle: LocaleKeys.youMissedTheQuestion.tr().toText18(color: MyColors.darkTextColor, isCentered: true), - ), - onFindingWinner: (BuildContext context) => CustomStatusWidget( - asset: Lottie.asset(MyLottieConsts.winnerLottie, height: 168), - title: LocaleKeys.fingersCrossed.tr().toText22(color: MyColors.greenColor), - subTitle: LocaleKeys.winnerSelectedRandomly.tr().toText18(color: MyColors.darkTextColor, isCentered: true), - ), - questionCardStatus: provider.questionCardStatus, - ).paddingOnly(top: 12, left: 21, right: 21), - ], - ), + ).expanded, + provider.questionCardStatus == QuestionCardStatus.winnerFound + ? DefaultButton(LocaleKeys.ok.tr(), () { + provider.resetValues(); + Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }).insideContainer + : const SizedBox() + ], ), ), onWillPop: () { - provider.resetValues(); - return Future.value(true); + showDialog( + context: context, + builder: (BuildContext context) => ConfirmDialog( + message: LocaleKeys.youWantToLeaveMarathon.tr(), + onTap: () { + provider.resetValues(); + Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ), + ); + return Future.value(false); }, ); } diff --git a/lib/ui/marathon/widgets/marathon_footer.dart b/lib/ui/marathon/widgets/marathon_footer.dart index b5083c0..fea076e 100644 --- a/lib/ui/marathon/widgets/marathon_footer.dart +++ b/lib/ui/marathon/widgets/marathon_footer.dart @@ -47,20 +47,3 @@ class MarathonFooter extends StatelessWidget { ).insideContainer; } } - -//Container( -// color: Colors.white, -// child: Column( -// mainAxisSize: MainAxisSize.min, -// children: [ -// buildNoteForDemo(), -// DefaultButton( -// LocaleKeys.joinDemoMarathon.tr(), -// () { -// provider.connectSignalrAndJoinMarathon(context); -// }, -// color: MyColors.yellowColorII, -// ).insideContainer, -// ], -// ), -// ); diff --git a/lib/ui/marathon/widgets/marathon_progress_container.dart b/lib/ui/marathon/widgets/marathon_progress_container.dart index c0dae6c..5015f25 100644 --- a/lib/ui/marathon/widgets/marathon_progress_container.dart +++ b/lib/ui/marathon/widgets/marathon_progress_container.dart @@ -43,7 +43,8 @@ class MarathonProgressContainer extends StatelessWidget { 8.height, Row( children: [ - "${((provider.currentQuestionNumber / provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}".toText14(), + "${provider.currentQuestionNumber == 1 ? 0 : (((provider.currentQuestionNumber - 1) / provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}" + .toText14(), ], ), ], @@ -52,9 +53,6 @@ class MarathonProgressContainer extends StatelessWidget { } Color getStepColor(QuestionCardStatus status, bool isOutOfGame) { - if (isOutOfGame) { - return MyColors.redColor; - } switch (status) { case QuestionCardStatus.question: return MyColors.yellowColorII; @@ -79,7 +77,7 @@ class MarathonProgressContainer extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - for (int i = 0; i < totalQuestions - 1; i++) + for (int i = 0; i < totalQuestions; i++) if (value <= i) roundContainer(MyColors.lightGreyDeColor, i != 0) else diff --git a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart index dc9d7e4..7463f37 100644 --- a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart +++ b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart @@ -43,6 +43,7 @@ class _QualifiersContainerState extends State { ), 10.height, Row( + crossAxisAlignment: CrossAxisAlignment.end, children: [ widget.provider.totalQualifiers != null ? widget.provider.totalQualifiers.toString().toText30(color: MyColors.greenColor, isBold: true) : const SizedBox(), 2.width, From f62253374de2000af2bb847b37092f5dcc81f17a Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 18 Dec 2022 09:37:20 +0300 Subject: [PATCH 233/302] Chat Error Handling --- lib/api/chat/chat_api_client.dart | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 35e4f79..5bceb24 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -3,10 +3,12 @@ import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; import 'package:http/http.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/exceptions/api_exception.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart'; @@ -22,6 +24,7 @@ class ChatApiClient { factory ChatApiClient() => _instance; Future getUserLoginToken() async { + user.UserAutoLoginModel userLoginResponse = user.UserAutoLoginModel(); Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatLoginTokenUrl}externaluserlogin", { @@ -32,7 +35,14 @@ class ChatApiClient { if (!kReleaseMode) { logger.i("res: " + response.body); } - user.UserAutoLoginModel userLoginResponse = user.userAutoLoginModelFromJson(response.body); + if (response.statusCode == 200) { + userLoginResponse = user.userAutoLoginModelFromJson(response.body); + } else if (response.statusCode == 504) { + getUserLoginToken(); + } else { + userLoginResponse = user.userAutoLoginModelFromJson(response.body); + Utils.showToast(userLoginResponse.errorResponses!.first.message!); + } return userLoginResponse; } @@ -141,6 +151,7 @@ class ChatApiClient { } Future> getUsersImages({required List encryptedEmails}) async { + List imagesData = []; Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatUserImages}images", {"encryptedEmails": encryptedEmails, "fromClient": false}, @@ -148,7 +159,16 @@ class ChatApiClient { ); if (!kReleaseMode) { logger.i("res: " + response.body); + print("Images Status Coe is ============== " + response.statusCode.toString()); + } + if (response.statusCode == 200) { + imagesData = chatUserImageModelFromJson(response.body); + } else if (response.statusCode == 504 || response.statusCode == 500) { + getUsersImages(encryptedEmails: encryptedEmails); + } else { + Utils.showToast("Something went wrong while loading images"); + imagesData = []; } - return chatUserImageModelFromJson(response.body); + return imagesData; } } From ece6a68a9569ffe3a361ac9cf5d488a0d0f535cb Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 19 Dec 2022 09:45:22 +0300 Subject: [PATCH 234/302] fixes --- .../get_po_Item_history_list_model.dart | 2 +- .../get_quotation_analysis_list_model.dart | 2 +- .../leave_balance/leave_balance_screen.dart | 4 +- lib/ui/login/login_screen.dart | 6 +- lib/ui/marathon/marathon_provider.dart | 1 + lib/ui/marathon/widgets/marathon_banner.dart | 374 +++++++++--------- lib/ui/work_list/item_history_screen.dart | 3 +- 7 files changed, 198 insertions(+), 194 deletions(-) diff --git a/lib/models/get_po_Item_history_list_model.dart b/lib/models/get_po_Item_history_list_model.dart index 35e81d6..28a4f28 100644 --- a/lib/models/get_po_Item_history_list_model.dart +++ b/lib/models/get_po_Item_history_list_model.dart @@ -4,7 +4,7 @@ class GetPoItemHistoryList { String? bUYER; String? cLOSEDCODE; String? cREATIONDATE; - int? dISCOUNTPERCENTAGE; + num? dISCOUNTPERCENTAGE; int? fROMROWNUM; int? iTEMID; num? nETPRICE; diff --git a/lib/models/get_quotation_analysis_list_model.dart b/lib/models/get_quotation_analysis_list_model.dart index e041f95..e1926f0 100644 --- a/lib/models/get_quotation_analysis_list_model.dart +++ b/lib/models/get_quotation_analysis_list_model.dart @@ -5,7 +5,7 @@ class GetQuotationAnalysisList { int? nOOFROWS; String? qUOTBONUSQTY; String? qUOTDELIVERYDATE; - int? qUOTLINETOTAL; + num? qUOTLINETOTAL; String? qUOTMFGPARTNUM; String? qUOTNUM; num? qUOTQTY; diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index d1a64c6..8c346bc 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -43,9 +43,9 @@ class _LeaveBalanceState extends State { void getAbsenceTransactions() async { try { - // Utils.showLoading(context); + Utils.showLoading(context); absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999, empID: selectedEmp); - //Utils.hideLoading(context); + Utils.hideLoading(context); setState(() {}); } catch (ex) { Utils.hideLoading(context); diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index a0ab3c9..04c3077 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -58,9 +58,9 @@ class _LoginScreenState extends State { void initState() { super.initState(); // checkFirebaseToken(); - if (kReleaseMode) { - checkDeviceSafety(); - } + // if (kReleaseMode) { + // checkDeviceSafety(); + // } } void checkDeviceSafety() async { diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 128b634..bde62aa 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -390,6 +390,7 @@ class MarathonProvider extends ChangeNotifier { } bool checkIfPrivilegedForMarathon() { + return true; for (PrivilegeListModel element in AppState().privilegeListModel!) { if (element.serviceName == "Marathon") { if (element.previlege != null) { diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 0487c74..1b5533b 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -184,200 +184,202 @@ class MarathonBanner extends StatelessWidget { Widget build(BuildContext context) { MarathonProvider provider = context.read(); - return !provider.isPrivilegedWithMarathon - ? getUnPrivilegedMarathon(context) - : provider.marathonDetailModel.startTime != null - ? Container( - decoration: MyDecorations.shadowDecoration, - height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, - clipBehavior: Clip.antiAlias, - child: Stack( - children: [ - Transform( - alignment: Alignment.center, - transform: Matrix4.rotationY( - AppState().isArabic(context) ? math.pi : 0, - ), - child: SvgPicture.asset( - "assets/images/marathon_banner_bg.svg", - fit: BoxFit.fill, - width: double.infinity, - ), + return + // !provider.isPrivilegedWithMarathon + // ? getUnPrivilegedMarathon(context) + // : provider.marathonDetailModel.startTime != null + // ? + Container( + decoration: MyDecorations.shadowDecoration, + height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, + clipBehavior: Clip.antiAlias, + child: Stack( + children: [ + Transform( + alignment: Alignment.center, + transform: Matrix4.rotationY( + AppState().isArabic(context) ? math.pi : 0, + ), + child: SvgPicture.asset( + "assets/images/marathon_banner_bg.svg", + fit: BoxFit.fill, + width: double.infinity, + ), + ), + AppState().isArabic(context) + ? Positioned( + right: -15, + top: -10, + child: Transform.rotate( + angle: 10, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, ), - AppState().isArabic(context) - ? Positioned( - right: -15, - top: -10, - child: Transform.rotate( - angle: 10, - child: Container( - width: isTablet ? 70 : 65, - height: isTablet ? 40 : 32, - color: MyColors.darkDigitColor, + ), + ) + : Positioned( + left: -20, + top: -10, + child: Transform.rotate( + angle: 15, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, + ), + ), + ), + SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + children: [ + const Expanded( + flex: 3, + child: SizedBox( + width: double.infinity, + height: double.infinity, + ), + ), + Expanded( + flex: AppState().isArabic(context) ? 4 : 5, + child: SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + AppState().isArabic(context) ? 0.height : 5.height, + Text( + LocaleKeys.getReadyForContest.tr(), + style: TextStyle( + fontSize: isTablet ? 20 : 11, + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w600, + color: MyColors.white.withOpacity(0.83), + letterSpacing: -0.4, ), ), - ) - : Positioned( - left: -20, - top: -10, - child: Transform.rotate( - angle: 15, - child: Container( - width: isTablet ? 70 : 65, - height: isTablet ? 40 : 32, - color: MyColors.darkDigitColor, + Text( + AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: isTablet ? 30 : 19, + fontWeight: FontWeight.bold, + color: MyColors.white.withOpacity(0.83), + height: 32 / 22, ), ), - ), - SizedBox( - width: double.infinity, - height: double.infinity, - child: Row( - children: [ - const Expanded( - flex: 3, - child: SizedBox( - width: double.infinity, - height: double.infinity, - ), - ), - Expanded( - flex: AppState().isArabic(context) ? 4 : 5, - child: SizedBox( - width: double.infinity, - height: double.infinity, - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - AppState().isArabic(context) ? 0.height : 5.height, - Text( - LocaleKeys.getReadyForContest.tr(), - style: TextStyle( - fontSize: isTablet ? 20 : 11, - fontStyle: FontStyle.italic, - fontWeight: FontWeight.w600, - color: MyColors.white.withOpacity(0.83), - letterSpacing: -0.4, - ), - ), - Text( - AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", - style: TextStyle( - fontStyle: FontStyle.italic, - fontSize: isTablet ? 30 : 19, - fontWeight: FontWeight.bold, - color: MyColors.white.withOpacity(0.83), - height: 32 / 22, - ), - ), - isTablet ? 10.height : 3.height, - BuildCountdownTimer( - timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, - provider: provider, - screenFlag: 0, - ), - ], - ).paddingOnly( - left: AppState().isArabic(context) ? 12 : 3, - right: AppState().isArabic(context) ? 3 : 12, - ) - ], - ), + isTablet ? 10.height : 3.height, + BuildCountdownTimer( + timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, + provider: provider, + screenFlag: 0, ), - ), - ], + ], + ).paddingOnly( + left: AppState().isArabic(context) ? 12 : 3, + right: AppState().isArabic(context) ? 3 : 12, + ) + ], + ), + ), + ), + ], + ), + ), + AppState().isArabic(context) + ? Align( + alignment: Alignment.topRight, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.white, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, + ), ), ), - AppState().isArabic(context) - ? Align( - alignment: Alignment.topRight, - child: SizedBox( - height: isTablet ? 30 : 20, - width: isTablet ? 45 : 35, - child: Transform.rotate( - angle: math.pi / 4.5, - child: Text( - LocaleKeys.brainMarathon.tr(), - textAlign: TextAlign.center, - maxLines: 2, - style: TextStyle( - color: MyColors.white, - fontWeight: FontWeight.bold, - fontSize: isTablet ? 8 : 6, - height: 1.2, - ), - ), - ), - ), - ).paddingOnly(top: 5) - : Align( - alignment: Alignment.topLeft, - child: SizedBox( - height: isTablet ? 30 : 20, - width: isTablet ? 45 : 35, - child: Transform.rotate( - angle: -math.pi / 4.5, - child: Text( - LocaleKeys.brainMarathon.tr(), - textAlign: TextAlign.center, - maxLines: 2, - style: TextStyle( - color: MyColors.kWhiteColor, - fontWeight: FontWeight.bold, - fontSize: isTablet ? 8 : 6, - height: 1.2, - ), - ), - ), - ), - ).paddingOnly(top: 5), - !AppState().isArabic(context) - ? Positioned( - right: 0, - bottom: 0, - child: RotatedBox( - quarterTurns: 4, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(isTablet ? 20 : 15), - ) - : Positioned( - bottom: 0, - left: 0, - child: RotatedBox( - quarterTurns: 2, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(isTablet ? 20 : 15), - ), - - ], - ).onPress(() async { - int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; + ), + ).paddingOnly(top: 5) + : Align( + alignment: Alignment.topLeft, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: -math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.kWhiteColor, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, + ), + ), + ), + ), + ).paddingOnly(top: 5), + !AppState().isArabic(context) + ? Positioned( + right: 0, + bottom: 0, + child: RotatedBox( + quarterTurns: 4, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), + ).paddingAll(isTablet ? 20 : 15), + ) + : Positioned( + bottom: 0, + left: 0, + child: RotatedBox( + quarterTurns: 2, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), + ).paddingAll(isTablet ? 20 : 15), + ), + ], + ).onPress(() async { + int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; - if (remainingTimeInMinutes > 2) { - Utils.showLoading(context); - try { - await provider.initializeVideoPlayer().then((_) { - Utils.hideLoading(context); - provider.startTimerForSponsorVideo(); - Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); - }); - } catch (e) { - if (kDebugMode) { - print("Error in VideoPlayer: ${e.toString()}"); - } - Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); - } - } else { - Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); - } - }), - ) - : const SizedBox(); + if (remainingTimeInMinutes > 2) { + Utils.showLoading(context); + try { + await provider.initializeVideoPlayer().then((_) { + Utils.hideLoading(context); + provider.startTimerForSponsorVideo(); + Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); + }); + } catch (e) { + if (kDebugMode) { + print("Error in VideoPlayer: ${e.toString()}"); + } + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + } + } else { + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + } + }), + ); + // ) + // : const SizedBox(); } } diff --git a/lib/ui/work_list/item_history_screen.dart b/lib/ui/work_list/item_history_screen.dart index 562b59f..a3c34a9 100644 --- a/lib/ui/work_list/item_history_screen.dart +++ b/lib/ui/work_list/item_history_screen.dart @@ -88,7 +88,8 @@ class _ItemHistoryScreenState extends State { children: [ if (moItemHistoryList.isNotEmpty) loadMoItemHistoryData(), if (poItemHistoryList.isNotEmpty) loadPoItemHistoryData(), - if (quotationAnalysisList.isNotEmpty) loadQuotationAnalysisData() + if (quotationAnalysisList.isNotEmpty) loadQuotationAnalysisData(), + if (moItemHistoryList.isEmpty && poItemHistoryList.isEmpty && quotationAnalysisList.isEmpty) Utils.getNoDataWidget(context), ], ), ); From 9602e95fe7b5161a7bd98c06c81a22589bf31b87 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 19 Dec 2022 09:48:25 +0300 Subject: [PATCH 235/302] improvements --- lib/classes/consts.dart | 4 ++-- lib/extensions/widget_extensions.dart | 2 +- lib/ui/profile/personal_info.dart | 13 ++++++------- lib/ui/profile/profile_screen.dart | 17 +++++++---------- lib/ui/profile/widgets/profile_panel.dart | 4 ++-- 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index ac520b1..3d58efd 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -2,9 +2,9 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index b52ef3e..a52f11a 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -58,7 +58,7 @@ extension WidgetExtensions on Widget { ), ], ), - alignment: center == true ? Alignment.center : null, + alignment: center ? Alignment.center : null, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, diff --git a/lib/ui/profile/personal_info.dart b/lib/ui/profile/personal_info.dart index 79d0995..a4a9700 100644 --- a/lib/ui/profile/personal_info.dart +++ b/lib/ui/profile/personal_info.dart @@ -21,25 +21,24 @@ class PersonalInfo extends StatelessWidget { title: LocaleKeys.profile_personalInformation.tr(), ), backgroundColor: MyColors.backgroundColor, - body: SizedBox( - width: MediaQuery.of(context).size.width, + body: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, - // mainAxisSize: MainAxisSize.min, + mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, children: [ LocaleKeys.category.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.eMPLOYMENTCATEGORYMEANING ?? "").toText16(), - 20.height, + 12.height, LocaleKeys.address.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.lOCATIONNAME ?? "").toText16(), - 20.height, + 12.height, LocaleKeys.phoneNumber.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.eMPLOYEEMOBILENUMBER ?? "").toText16(), - 20.height, + 12.height, LocaleKeys.businessGroup.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.bUSINESSGROUPNAME ?? "").toText16(), - 20.height, + 12.height, LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.pAYROLLNAME ?? "").toText16(), ], diff --git a/lib/ui/profile/profile_screen.dart b/lib/ui/profile/profile_screen.dart index 0a78873..6060cbf 100644 --- a/lib/ui/profile/profile_screen.dart +++ b/lib/ui/profile/profile_screen.dart @@ -1,4 +1,3 @@ -import 'dart:convert'; import 'dart:io'; import 'dart:ui'; @@ -76,15 +75,13 @@ class _ProfileScreenState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - IconButton( - onPressed: () { - Navigator.pop(context); - }, - icon: const Icon( - Icons.arrow_back_ios, - color: Colors.white, - ), - ), + CircleAvatar( + radius: 18, + backgroundColor: Colors.black.withOpacity(.21), + child: const Icon(Icons.arrow_back_ios_rounded, color: Colors.white, size: 18).paddingOnly(right: 4), + ).onPress(() { + Navigator.pop(context); + }), InkWell( onTap: () { // startImageSheet(); diff --git a/lib/ui/profile/widgets/profile_panel.dart b/lib/ui/profile/widgets/profile_panel.dart index 440fbb3..3440cc9 100644 --- a/lib/ui/profile/widgets/profile_panel.dart +++ b/lib/ui/profile/widgets/profile_panel.dart @@ -51,8 +51,8 @@ class ProfilePanel extends StatelessWidget { : ClipOval( child: Image.memory( Utils.dataFromBase64String(memberInformationList.eMPLOYEEIMAGE!), - width: 75, - height: 75, + width: 68, + height: 68, fit: BoxFit.fill, ), ); From 3f7e1cd0be4c50293cc1fb82495416a560adb860 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 19 Dec 2022 11:00:45 +0300 Subject: [PATCH 236/302] Pushing before updating API Structure --- assets/lottie/congrats.gif | Bin 0 -> 166778 bytes lib/api/marathon/marathon_api_client.dart | 67 ++++++++++++++++-- lib/classes/utils.dart | 23 ++++-- lib/ui/marathon/marathon_provider.dart | 12 +++- lib/ui/marathon/marathon_screen.dart | 2 +- lib/ui/marathon/widgets/marathon_banner.dart | 3 +- .../widgets/marathon_details_card.dart | 6 +- lib/ui/marathon/widgets/question_card.dart | 6 +- 8 files changed, 98 insertions(+), 21 deletions(-) create mode 100644 assets/lottie/congrats.gif diff --git a/assets/lottie/congrats.gif b/assets/lottie/congrats.gif new file mode 100644 index 0000000000000000000000000000000000000000..f4b0cdb3ca541c304e30b84403129b1512da5f88 GIT binary patch literal 166778 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�f-2pxZ!TC!rpp2{d6^X+=C z>JBRt5;aEpavaz|@NhQ*PoZ80S)!vJZ5xurbt*YH?qW`xldKlMO6@H@wAyOSD3B9N zq{YzuZ#AVTXv>I7AY#txiPUl|;!=^gRaww8r<&*BWVDbzT&kU^ROh*T_aPKs$c7D4 z<>DNzFMSDhLb7*IGhNUiepbl4-ZP$Yn546ZE|XB@3!h|dx6Be@PN~7mkT;9uAXHoI zTNZ@pPS2$p7*5NVCQ|H>@gqWgq0uz1K_m77qson23l|w!8L`G1E>W3ARk$$@ZG^Zf z=yA)LokB05%ygy?Ie z0uG)DgUjayUlNUuMi6Wm{i!88S*K#imdGGPIyUqrK2wrem2l%3$%w9KY3h)VU444d zQPyUG!D@q?J!J_&WY%nsn*>XQ;7)RTaCAozK{ri5Q*R_<8Obzk1kBqJVUy4N(^Gd zNO;OKe99L2OC?dzr{vof4THZt8_+4&&FNi1#MP|aOehJ&2_1tKF&C|5)t&SgFoE9Y zyoSOEP3;ZDiLFNV8N^@!2^5Kl|9MzN#u$V5EmvI##A*PV0^Z<2aEYCCl0jeyFm#eO zsLyUSR^DZZ0y5p-nHVsvMqfmO85x*Pz@0ZS&`>xBj7*0kDbhpq#UBC#Ie0`!G+;y6 z1x@&dP3gpC_{$cxARlgC4ZTN!2qEju;D*#MaOSyFYwV@<=+jKuCu*{p33i2Pbvl~s_Go&w2Cd6=MW7)u`dU2*hX)aBpL z%m(+EUrWe@2&G|h?BEVU;SVZWL2yPO0>k+v#99f2od`xr{ER295Tk9~72Zt$fnK0B zP*BuZh{(zlN+dzR%P{@n|9FT4`gDU%HKgv5Qn~>H9dd_lh|n|enA7lH2pM8uEMfg{ zNf0iFy8NOL+T=~%Boo#mFv?U<2!ne}5Hdi+>gZH4P|!#upI=1>5E6?5x(@8Aqd{~< zX`~i>IFxXuS+MK`ND7-m*hs0Y24I;ZFkC~i^@TZ>h+S+*9>PRhdKGuHl*_;hrA=c@ z_9IDX!&>npNhpM$ZAFQ6i%*!GbVNgIR2NO$UM2bzQ6+>i^cPLwiz%7lVTe*Ol;Q}% zPHcSSKxEUrL6b1pU-m)Y&sZK2_87~k4ya6!5VqoK24%mrVrtr?zu;oaq2SAeSb;#p zF`(cvoERg%g_e|s|IUn1GKj@qt{53z;jC%auvpAQ#@cmZ)grZA7qQoLa1Z z()6(o_j%86dm&6#-$Q#_>Zs<6L|(= z(m;!pea4Dr4|E6xbj%ZWRMZ6tS3_i0_Lv<)oLaZdhPSZ~He5p|HI^R=;>~qZPBBDF z8OBQFiwHecDK)_71_^|gXvq&AO_fQ*iACajRF_*8s5VLDC(Q()(ceR0nUxYmKmY(c D&N2*6 literal 0 HcmV?d00001 diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 9fcdc68..859b23d 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -1,14 +1,19 @@ import 'dart:convert'; +import 'package:flutter/material.dart'; import 'package:http/http.dart'; import 'package:logger/logger.dart' as L; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_generic_model.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/models/marathon/winner_model.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:provider/provider.dart'; import 'package:signalr_netcore/hub_connection.dart'; class MarathonApiClient { @@ -41,6 +46,17 @@ class MarathonApiClient { } } + + // Future getGetMenuEntries() async { + // String url = "${ApiConsts.erpRest}GET_MENU_ENTRIES"; + // Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E"}; + // postParams.addAll(AppState().postParamsJson); + // return await ApiClient().postJsonForObject((json) { + // GenericResponseModel responseData = GenericResponseModel.fromJson(json); + // return responseData; + // }, url, postParams); + // } + Future getProjectId() async { Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonProjectGetUrl, {}, token: AppState().getMarathonToken ?? await getMarathonToken()); @@ -123,12 +139,53 @@ class MarathonApiClient { var json = jsonDecode(response.body); - logger.i("json in NextQuestion: $json"); - var data = json["data"]; + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); + + if (marathonModel.statusCode == 404) { + Utils.confirmDialog( + AppRoutes.navigatorKey.currentContext, + marathonModel.message!, + onTap: () { + AppRoutes.navigatorKey.currentContext!.read().resetValues(); + Navigator.of( + AppRoutes.navigatorKey.currentContext!, + ).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ); + return null; + } + + if (marathonModel.statusCode == 208) { + Utils.confirmDialog( + AppRoutes.navigatorKey.currentContext, + marathonModel.message!, + onTap: () { + AppRoutes.navigatorKey.currentContext!.read().resetValues(); + Navigator.of( + AppRoutes.navigatorKey.currentContext!, + ).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ); + return null; + } + + if (marathonModel.statusCode == 204) { + Utils.confirmDialog( + AppRoutes.navigatorKey.currentContext, + marathonModel.message!, + onTap: () { + AppRoutes.navigatorKey.currentContext!.read().resetValues(); + Navigator.of( + AppRoutes.navigatorKey.currentContext!, + ).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ); + return null; + } - if (data != null) { - QuestionModel newQuestion = QuestionModel.fromJson(data); + if (marathonModel.data != null && marathonModel.isSuccessful == true) { + QuestionModel newQuestion = QuestionModel.fromJson(marathonModel.data); return newQuestion; } else { return null; @@ -136,7 +193,7 @@ class MarathonApiClient { } Future submitSelectedOption({required String marathonId, required String? questionId, required String? selectedAnswerId}) async { - Map jsonObject = {"marathonId": marathonId, "questionId": questionId, "selectedOptionId" : selectedAnswerId}; + Map jsonObject = {"marathonId": marathonId, "questionId": questionId, "selectedOptionId": selectedAnswerId}; Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonSubmitAnswerUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 57bb888..473d57e 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -113,7 +113,7 @@ class Utils { if (!AppState().isAuthenticated) { showDialog( context: cxt, - builder: (cxt) => ConfirmDialog( + builder: (BuildContext cxt) => ConfirmDialog( message: errorMessage, onTap: () { Navigator.pushNamedAndRemoveUntil(cxt, AppRoutes.login, (Route route) => false); @@ -130,11 +130,22 @@ class Utils { } } - static void confirmDialog(cxt, String message) { + static Future showErrorDialog({required BuildContext context, required VoidCallback onOkTapped, required String message}) async { + return showDialog( + context: context, + builder: (BuildContext context) => ConfirmDialog( + message: message, + onTap: onOkTapped, + ), + ); + } + + static void confirmDialog(cxt, String message, {VoidCallback? onTap}) { showDialog( context: cxt, - builder: (cxt) => ConfirmDialog( + builder: (BuildContext cxt) => ConfirmDialog( message: message, + onTap: onTap, ), ); } @@ -317,13 +328,13 @@ class Utils { if (!Platform.isIOS) { await showCupertinoModalPopup( context: context, - builder: (cxt) => Container( + builder: (BuildContext cxt) => Container( height: 250, color: Colors.white, child: CupertinoDatePicker( backgroundColor: Colors.white, mode: CupertinoDatePickerMode.date, - onDateTimeChanged: (value) { + onDateTimeChanged: (DateTime value) { if (value != null && value != selectedDate) { selectedDate = value; } @@ -343,7 +354,7 @@ class Utils { static void readNFc({required Function(String) onRead}) { NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async { - var f; + MifareUltralight f; if (Platform.isAndroid) { f = MifareUltralight(tag: tag, identifier: tag.data["nfca"]["identifier"], type: 2, maxTransceiveLength: 252, timeout: 22); } else { diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 128b634..f87696d 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -31,7 +31,6 @@ class MarathonProvider extends ChangeNotifier { String? selectedOptionId; int? totalQualifiers; - //TODO: THIS BUG NEEDS TO BE FIXED. NOT DONE YET String? gapTimeImage; String? gapTimeText; int? gapTimeType; @@ -173,7 +172,7 @@ class MarathonProvider extends ChangeNotifier { timerForQuestion = Timer.periodic( oneSec, (Timer timer) async { - // This 2 is just to show the color of answer tile for 2 seconds and then update card status + // This 2 is just to show the color of answer tile for 1 and then update card status if (totalCurrentQuestionTime - currentGapTime == 1) { getCorrectAnswerAndUpdateAnswerColor(); } @@ -366,6 +365,8 @@ class MarathonProvider extends ChangeNotifier { } } + void resetProgressColorValues() {} + void resetValues() async { _currentQuestionNumber = 0; cardContentList.clear(); @@ -378,9 +379,14 @@ class MarathonProvider extends ChangeNotifier { totalCurrentQuestionTime = 0; sponsorsSecondsCounter = 0; totalSponsorVideoSeconds = 0; - totalSecondsToWaitForMarathon = 20; + totalSecondsToWaitForMarathon = 0; currentGapTime = 0; currentQuestion = QuestionModel(); + if (answerStatusesList.isNotEmpty) { + for (int i = 0; i < answerStatusesList.length; i++) { + answerStatusesList[i] = QuestionCardStatus.question; + } + } notifyListeners(); } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index c032823..a64b97a 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -123,7 +123,7 @@ class MarathonScreen extends StatelessWidget { width: 150, fit: BoxFit.contain, errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { - return const Center(); + return Image.asset("assets/images/logos/main_mohemm_logo.png", height: 50, width: 150); }, ) ], diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 0487c74..d75322b 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -357,8 +357,7 @@ class MarathonBanner extends StatelessWidget { ], ).onPress(() async { int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; - - if (remainingTimeInMinutes > 2) { + if (remainingTimeInMinutes > 2 && provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) { Utils.showLoading(context); try { await provider.initializeVideoPlayer().then((_) { diff --git a/lib/ui/marathon/widgets/marathon_details_card.dart b/lib/ui/marathon/widgets/marathon_details_card.dart index e8b37a0..3b686ef 100644 --- a/lib/ui/marathon/widgets/marathon_details_card.dart +++ b/lib/ui/marathon/widgets/marathon_details_card.dart @@ -36,9 +36,9 @@ class MarathonDetailsCard extends StatelessWidget { ) ], ), - if (provider.marathonDetailModel.sponsors != null) ...[ + if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ 5.height, - provider.marathonDetailModel.sponsors?.first.sponsorPrizes != null + provider.marathonDetailModel.sponsors!.first.sponsorPrizes != null ? Row( children: [ "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), @@ -64,7 +64,7 @@ class MarathonDetailsCard extends StatelessWidget { width: 150, fit: BoxFit.contain, errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { - return const Center(); + return Image.asset("assets/images/logos/main_mohemm_logo.png", height: 50, width: 150); }, ) ], diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index 5f419c5..6fcb5db 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -126,7 +126,11 @@ class AnswerContent extends StatelessWidget { return AnswerTileForText( index: index, onAnswerTapped: () { - provider.updateCurrentQuestionOptionStatus(QuestionsOptionStatus.selected, index); + if (provider.totalCurrentQuestionTime - provider.currentGapTime <= 1) { + null; + } else { + provider.updateCurrentQuestionOptionStatus(QuestionsOptionStatus.selected, index); + } }, ); }, From 5be9adca31b54bde811b8a22f7bc62b080401830 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 19 Dec 2022 15:00:08 +0300 Subject: [PATCH 237/302] fixes --- lib/classes/date_uitl.dart | 2 +- lib/ui/my_team/team_members.dart | 160 ++++++++++++++++--------------- 2 files changed, 83 insertions(+), 79 deletions(-) diff --git a/lib/classes/date_uitl.dart b/lib/classes/date_uitl.dart index a1e52d9..29edb2f 100644 --- a/lib/classes/date_uitl.dart +++ b/lib/classes/date_uitl.dart @@ -40,7 +40,7 @@ class DateUtil { } static DateTime convertSimpleStringDateToDate(String date) { - return DateFormat("MM/dd/yyyy hh:mm:ss").parse(date); + return DateFormat("MM/dd/yyyy hh:mm:ss a").parse(date.toUpperCase()); } static DateTime convertSimpleStringDateToDateddMMyyyy(String date) { diff --git a/lib/ui/my_team/team_members.dart b/lib/ui/my_team/team_members.dart index f6d33d8..c4defc4 100644 --- a/lib/ui/my_team/team_members.dart +++ b/lib/ui/my_team/team_members.dart @@ -15,6 +15,7 @@ import 'package:url_launcher/url_launcher.dart'; class TeamMembers extends StatefulWidget { final String? selectedEmp; + const TeamMembers({this.selectedEmp, Key? key}) : super(key: key); @override @@ -22,8 +23,8 @@ class TeamMembers extends StatefulWidget { } class _TeamMembersState extends State { - String searchEmpEmail =""; - String searchEmpName =""; + String searchEmpEmail = ""; + String searchEmpName = ""; String searchEmpNo = ""; String? empId; @@ -32,14 +33,14 @@ class _TeamMembersState extends State { void initState() { super.initState(); - employeeSubordinates(); + employeeSubordinates(); } void employeeSubordinates() async { try { Utils.showLoading(context); getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString()); - getEmployeeSubordinatesList = await MyTeamApiClient().employeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString(),getEmployeeSubordinates?.eMPLOYEENUMBER); + getEmployeeSubordinatesList = await MyTeamApiClient().employeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString(), getEmployeeSubordinates?.eMPLOYEENUMBER); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -52,80 +53,83 @@ class _TeamMembersState extends State { Widget build(BuildContext context) { getEmployeeSubordinates ??= ModalRoute.of(context)?.settings.arguments as GetEmployeeSubordinatesList; return Scaffold( - appBar: AppBarWidget( - context, - title: LocaleKeys.teamMembers.tr(), + appBar: AppBarWidget( + context, + title: LocaleKeys.teamMembers.tr(), + ), + backgroundColor: MyColors.backgroundColor, + body: SingleChildScrollView( + scrollDirection: Axis.vertical, + child: Column( + children: [ + getEmployeeSubordinatesList.isEmpty + ? Container(margin: const EdgeInsets.only(top: 100), child: Utils.getNoDataWidget(context)) + : ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.only(top: 12), + separatorBuilder: (BuildContext cxt, int index) => 12.height, + itemCount: getEmployeeSubordinatesList.length, + itemBuilder: (BuildContext context, int index) { + var phoneNumber = Uri.parse('tel:${getEmployeeSubordinatesList[index].eMPLOYEEMOBILENUMBER}'); + return InkWell( + onTap: () async { + Navigator.pushNamed(context, AppRoutes.employeeDetails, arguments: getEmployeeSubordinatesList[index]); + }, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + getEmployeeSubordinatesList[index].eMPLOYEEIMAGE == null + ? SvgPicture.asset( + "assets/images/user.svg", + height: 34, + width: 34, + ).paddingOnly(top: 4) + : Container( + height: 34, + width: 34, + child: CircleAvatar( + radius: 25, + backgroundImage: MemoryImage(Utils.dataFromBase64String(getEmployeeSubordinatesList[index].eMPLOYEEIMAGE!)), + backgroundColor: Colors.black, + ).paddingOnly(top: 4), + ), + 9.width, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // "Present".toText13(color: MyColors.greenColor), + "${getEmployeeSubordinatesList[index].eMPLOYEENAME}".toText16(color: MyColors.grey3AColor), + "${getEmployeeSubordinatesList[index].pOSITIONNAME}".toText10(color: MyColors.grey57Color), + ], + ).expanded, + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + getEmployeeSubordinatesList[index].eMPLOYEEMOBILENUMBER == "" + ? SvgPicture.asset("assets/images/call-disable.svg", width: 22, height: 22) + : InkWell( + onTap: () { + launchUrl(phoneNumber); + }, + child: SvgPicture.asset("assets/images/call.svg", width: 22, height: 22), + ), + 8.height, + const Icon( + Icons.arrow_forward_outlined, + color: MyColors.grey3AColor, + size: 18, + ), + ], + ), + ], + ).paddingOnly(top: 13, bottom: 13, right: 12, left: 14).objectContainerView(radius: 10, disablePadding: true), + ).paddingOnly(left: 16.0, right: 16.0); + }), + ], ), - backgroundColor: MyColors.backgroundColor, - body: SingleChildScrollView( - scrollDirection: Axis.vertical, - child: Column( - children: [ - getEmployeeSubordinatesList.isEmpty - ? Container( - margin: const EdgeInsets.only(top: 100), - child: Utils.getNoDataWidget(context)): - ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - padding: const EdgeInsets.only(top: 12), - separatorBuilder: (BuildContext cxt,int index) => 12.height, - itemCount: getEmployeeSubordinatesList.length, - itemBuilder: (BuildContext context, int index) { - var phoneNumber = Uri.parse('tel:${getEmployeeSubordinatesList[index].eMPLOYEEMOBILENUMBER}'); - return InkWell( - onTap: () async { - Navigator.pushNamed(context, AppRoutes.employeeDetails, arguments: getEmployeeSubordinatesList[index]); - }, - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - getEmployeeSubordinatesList[index].eMPLOYEEIMAGE == null - ? SvgPicture.asset("assets/images/user.svg",height: 34, width: 34, ).paddingOnly(top: 4) - : Container( - height: 34, - width: 34, - child: CircleAvatar( - radius: 25, - backgroundImage: MemoryImage(Utils.dataFromBase64String(getEmployeeSubordinatesList[index].eMPLOYEEIMAGE!)), - backgroundColor: Colors.black, - ).paddingOnly(top: 4), - ), - 9.width, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // "Present".toText13(color: MyColors.greenColor), - "${getEmployeeSubordinatesList[index].eMPLOYEENAME}".toText16(color: MyColors.grey3AColor), - "${getEmployeeSubordinatesList[index].pOSITIONNAME}".toText10( color: MyColors.grey57Color), - ], - ).expanded, - Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - getEmployeeSubordinatesList[index].eMPLOYEEMOBILENUMBER == "" - ? SvgPicture.asset("assets/images/call-disable.svg", width: 22, height: 22) - :InkWell( - onTap: () { - launchUrl(phoneNumber); - }, - child: SvgPicture.asset("assets/images/call.svg", width: 22, height: 22), - ), - 8.height, - const Icon( - Icons.arrow_forward_outlined, - color: MyColors.grey3AColor, - size: 18, - ), - ], - ), - ], - ).paddingOnly(top: 13, bottom: 13, right: 12, left: 14).objectContainerView(radius: 10, disablePadding: true), - ); - }), - ], - ) - )); + ), + ); } } From 0077a876d9f260cc90fcbe75b375fce9839c9751 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 19 Dec 2022 16:29:27 +0300 Subject: [PATCH 238/302] improvements --- lib/generated_plugin_registrant.dart | 2 -- lib/ui/profile/personal_info.dart | 46 +++++++++++++++------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/lib/generated_plugin_registrant.dart b/lib/generated_plugin_registrant.dart index 288ba42..37be8d8 100644 --- a/lib/generated_plugin_registrant.dart +++ b/lib/generated_plugin_registrant.dart @@ -16,7 +16,6 @@ import 'package:image_picker_for_web/image_picker_for_web.dart'; import 'package:shared_preferences_web/shared_preferences_web.dart'; import 'package:url_launcher_web/url_launcher_web.dart'; import 'package:video_player_web/video_player_web.dart'; -import 'package:wakelock_web/wakelock_web.dart'; import 'package:flutter_web_plugins/flutter_web_plugins.dart'; @@ -32,6 +31,5 @@ void registerPlugins(Registrar registrar) { SharedPreferencesPlugin.registerWith(registrar); UrlLauncherPlugin.registerWith(registrar); VideoPlayerPlugin.registerWith(registrar); - WakelockWeb.registerWith(registrar); registrar.registerMessageHandler(); } diff --git a/lib/ui/profile/personal_info.dart b/lib/ui/profile/personal_info.dart index a4a9700..84e45ff 100644 --- a/lib/ui/profile/personal_info.dart +++ b/lib/ui/profile/personal_info.dart @@ -21,28 +21,30 @@ class PersonalInfo extends StatelessWidget { title: LocaleKeys.profile_personalInformation.tr(), ), backgroundColor: MyColors.backgroundColor, - body: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - LocaleKeys.category.tr().toText13(color: MyColors.lightGrayColor), - (memberInformationList.eMPLOYMENTCATEGORYMEANING ?? "").toText16(), - 12.height, - LocaleKeys.address.tr().toText13(color: MyColors.lightGrayColor), - (memberInformationList.lOCATIONNAME ?? "").toText16(), - 12.height, - LocaleKeys.phoneNumber.tr().toText13(color: MyColors.lightGrayColor), - (memberInformationList.eMPLOYEEMOBILENUMBER ?? "").toText16(), - 12.height, - LocaleKeys.businessGroup.tr().toText13(color: MyColors.lightGrayColor), - (memberInformationList.bUSINESSGROUPNAME ?? "").toText16(), - 12.height, - LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor), - (memberInformationList.pAYROLLNAME ?? "").toText16(), - ], - ).objectContainerView().paddingAll(21), + body: ListView( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + LocaleKeys.category.tr().toText13(color: MyColors.lightGrayColor), + (memberInformationList.eMPLOYMENTCATEGORYMEANING ?? "").toText16(), + 12.height, + LocaleKeys.address.tr().toText13(color: MyColors.lightGrayColor), + (memberInformationList.lOCATIONNAME ?? "").toText16(), + 12.height, + LocaleKeys.phoneNumber.tr().toText13(color: MyColors.lightGrayColor), + (memberInformationList.eMPLOYEEMOBILENUMBER ?? "").toText16(), + 12.height, + LocaleKeys.businessGroup.tr().toText13(color: MyColors.lightGrayColor), + (memberInformationList.bUSINESSGROUPNAME ?? "").toText16(), + 12.height, + LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor), + (memberInformationList.pAYROLLNAME ?? "").toText16(), + ], + ).objectContainerView(center: false).paddingAll(21), + ], ), ); } From e40cd2c5c82616367a664f5c5899d38d2c3c4e6f Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 19 Dec 2022 16:49:04 +0300 Subject: [PATCH 239/302] Chat Error Handling & Voice --- lib/api/chat/chat_api_client.dart | 11 +- lib/classes/consts.dart | 4 +- lib/provider/chat_provider_model.dart | 143 +++++++++++++++++++- lib/ui/chat/chat_bubble.dart | 78 ++++++++++- lib/ui/chat/chat_detailed_screen.dart | 186 +++++++++++++++++++------- pubspec.yaml | 4 + 6 files changed, 363 insertions(+), 63 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 5bceb24..409295f 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -33,11 +33,12 @@ class ChatApiClient { }, ); if (!kReleaseMode) { + print("Status Code is ================" + response.statusCode.toString()); logger.i("res: " + response.body); } if (response.statusCode == 200) { userLoginResponse = user.userAutoLoginModelFromJson(response.body); - } else if (response.statusCode == 504) { + } else if (response.statusCode == 501 || response.statusCode == 502 || response.statusCode == 503 || response.statusCode == 504) { getUserLoginToken(); } else { userLoginResponse = user.userAutoLoginModelFromJson(response.body); @@ -141,11 +142,16 @@ class ChatApiClient { // Download File For Chat Future downloadURL({required String fileName, required String fileTypeDescription}) async { + print(fileName); + print(fileTypeDescription); + print("${ApiConsts.chatMediaImageUploadUrl}download"); + print(AppState().chatDetails!.response!.token); Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatMediaImageUploadUrl}download", {"fileType": fileTypeDescription, "fileName": fileName, "fileSource": 1}, token: AppState().chatDetails!.response!.token, ); + Uint8List data = Uint8List.fromList(response.bodyBytes); return data; } @@ -159,11 +165,10 @@ class ChatApiClient { ); if (!kReleaseMode) { logger.i("res: " + response.body); - print("Images Status Coe is ============== " + response.statusCode.toString()); } if (response.statusCode == 200) { imagesData = chatUserImageModelFromJson(response.body); - } else if (response.statusCode == 504 || response.statusCode == 500) { + } else if (response.statusCode == 500 || response.statusCode == 504) { getUsersImages(encryptedEmails: encryptedEmails); } else { Utils.showToast("Something went wrong while loading images"); diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 0559996..c147ea3 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index a62016f..5f28b0b 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -2,18 +2,20 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; +import 'package:audio_waveforms/audio_waveforms.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; import 'package:http/http.dart'; -import 'package:just_audio/just_audio.dart'; +import 'package:just_audio/just_audio.dart' as JustAudio; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/app_permissions.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/encryption.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/main.dart'; -import 'package:mohem_flutter_app/models/chat/chat_count_conversation_model.dart'; import 'package:mohem_flutter_app/models/chat/chat_user_image_model.dart'; import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; @@ -23,6 +25,7 @@ import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/image_picker.dart'; import 'package:open_file/open_file.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:signalr_netcore/hub_connection.dart'; import 'package:signalr_netcore/signalr_client.dart'; import 'package:uuid/uuid.dart'; @@ -37,7 +40,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { bool isLoading = true; bool isChatScreenActive = false; int receiverID = 0; - late File selectedFile; bool isFileSelected = false; String sFileType = ""; @@ -53,9 +55,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future getUserAutoLoginToken() async { userLoginToken.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); + print("======================================= Chat Login Token Check ====================================="); + logger.d(userLoginResponse.toJson()); + print("======================================= Chat Login Token Check ====================================="); if (userLoginResponse.response != null) { AppState().setchatUserDetails = userLoginResponse; } else { + AppState().setchatUserDetails = userLoginResponse; Utils.showToast( userLoginResponse.errorResponses!.first.fieldName.toString() + " Erorr", ); @@ -903,7 +909,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void setMsgTune() async { - AudioPlayer player = AudioPlayer(); + JustAudio.AudioPlayer player = JustAudio.AudioPlayer(); await player.setVolume(1.0); String audioAsset = ""; if (Platform.isAndroid) { @@ -949,4 +955,133 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { logger.d([reciptUser, currentUser]); await chatHubConnection.invoke("UserTypingAsync", args: [reciptUser, currentUser]); } + + // Audio Recoding Work + Timer? _timer; + int _recodeDuration = 0; + bool isRecoding = false; + bool isPause = false; + bool isPlaying = false; + String? path; + String? musicFile; + late Directory appDirectory; + late RecorderController recorderController; + late PlayerController playerController; + + //////// Audio Recoding Work //////////////////// + + Future initAudio() async { + appDirectory = await getApplicationDocumentsDirectory(); + path = "${appDirectory.path}/${AppState().chatDetails!.response!.id}-${DateTime.now().microsecondsSinceEpoch}.aac"; + recorderController = RecorderController() + ..androidEncoder = AndroidEncoder.aac + ..androidOutputFormat = AndroidOutputFormat.mpeg4 + ..iosEncoder = IosEncoder.kAudioFormatMPEG4AAC + ..sampleRate = 8000 + ..bitRate = 32000; + playerController = PlayerController(); + } + + void disposeAudio() { + isRecoding = false; + isPlaying = false; + isPause = false; + recorderController.dispose(); + playerController.dispose(); + } + + void startRecoding() async { + PermissionStatus status = await Permission.microphone.request(); + print(status); + if (status.isDenied == true) { + startRecoding(); + } else { + recorderController.reset(); + await recorderController.record(path); + _recodeDuration = 0; + _startTimer(); + isRecoding = !isRecoding; + notifyListeners(); + } + } + + void _startTimer() { + _timer?.cancel(); + _timer = Timer.periodic(const Duration(seconds: 1), (Timer t) { + _recodeDuration++; + buildTimer(); + notifyListeners(); + }); + } + + Future pauseRecoding() async { + isPause = true; + isPlaying = true; + recorderController.pause(); + path = await recorderController.stop(false); + print(path); + File file = File(path!); + file.readAsBytesSync(); + await playerController.preparePlayer(file.path, 1.0); + var tempDuration = _recodeDuration; + _recodeDuration = tempDuration; + _timer?.cancel(); + notifyListeners(); + } + + void resumeRecoding() { + isPause = false; + isPlaying = false; + isRecoding = true; + recorderController.record(path); + _startTimer(); + } + + Future deleteRecoding() async { + print(path); + _recodeDuration = 0; + _timer?.cancel(); + // path = await recorderController.stop(false); + recorderController.reset(); + print(path); + if (path != null && path!.isNotEmpty) { + File delFile = File(path!); + double fileSizeInKB = delFile.lengthSync() / 1024; + double fileSizeInMB = fileSizeInKB / 1024; + debugPrint("Deleted file size: ${delFile.lengthSync()}"); + debugPrint("Deleted file size in KB: " + fileSizeInKB.toString()); + debugPrint("Deleted file size in MB: " + fileSizeInMB.toString()); + if (await delFile.exists()) { + delFile.delete(); + } + isPause = false; + isRecoding = false; + isPlaying = false; + notifyListeners(); + } + } + + String buildTimer() { + String minutes = _formatNum(_recodeDuration ~/ 60); + String seconds = _formatNum(_recodeDuration % 60); + return '$minutes : $seconds'; + } + + String _formatNum(int number) { + String numberStr = number.toString(); + if (number < 10) { + numberStr = '0' + numberStr; + } + return numberStr; + } + + void playRecoding() async { + isPlaying = true; + await playerController.startPlayer(finishMode: FinishMode.stop); + } + + void playOrPause() async { + playerController.playerState == PlayerState.playing ? await playerController.pausePlayer() : playRecoding(); + notifyListeners(); + } } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 8978ff1..06afecf 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'dart:typed_data'; +import 'package:audio_waveforms/audio_waveforms.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; @@ -120,10 +121,14 @@ class ChatBubble extends StatelessWidget { else Row( children: [ - if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 + // || fileTypeID == 2 + ) SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), (cItem.contant ?? "").toText12().expanded, - if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) const Icon(Icons.remove_red_eye, size: 16) + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 + //|| fileTypeID == 2 + ) const Icon(Icons.remove_red_eye, size: 16) ], ), Align( @@ -217,10 +222,15 @@ class ChatBubble extends StatelessWidget { else Row( children: [ - if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 + // || fileTypeID == 2 + ) SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), (cItem.contant ?? "").toText12(color: Colors.white).expanded, - if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 || fileTypeID == 2) const Icon(Icons.remove_red_eye, color: Colors.white, size: 16) + if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 + //|| fileTypeID == 2 + ) + const Icon(Icons.remove_red_eye, color: Colors.white, size: 16) ], ), Align( @@ -274,3 +284,63 @@ class ChatBubble extends StatelessWidget { } } } + +class WaveBubble extends StatelessWidget { + final PlayerController playerController; + final VoidCallback onTap; + final bool isPlaying; + + const WaveBubble({ + Key? key, + required this.playerController, + required this.onTap, + required this.isPlaying, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.all(10), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(30), + gradient: const LinearGradient( + transform: GradientRotation(.83), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + onPressed: onTap, + icon: Icon(isPlaying ? Icons.stop : Icons.play_arrow), + color: Colors.white, + splashColor: Colors.transparent, + highlightColor: Colors.transparent, + ), + AudioFileWaveforms( + size: Size(MediaQuery.of(context).size.width / 2, 10), + playerController: playerController, + padding: EdgeInsets.zero, + margin: EdgeInsets.zero, + playerWaveStyle: const PlayerWaveStyle( + fixedWaveColor: Colors.white, + liveWaveColor:MyColors.lightGreenColor, + showTop: true, + showBottom: true, + waveCap: StrokeCap.round, + seekLineThickness: 3, + visualizerHeight: 6, + backgroundColor: Colors.transparent + ), + ), + ], + ), + ); + } +} diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 379fe2b..5d3648e 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:convert'; +import 'package:audio_waveforms/audio_waveforms.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -62,6 +63,12 @@ class _ChatDetailScreenState extends State { _rc.loadComplete(); } + @override + void dispose() { + data.disposeAudio(); + super.dispose(); + } + @override Widget build(BuildContext context) { params = ModalRoute.of(context)!.settings.arguments as ChatDetailedScreenParams; @@ -73,6 +80,7 @@ class _ChatDetailScreenState extends State { loadMore: false, isNewChat: params!.isNewChat!, ); + data.initAudio(); } return Scaffold( @@ -181,62 +189,140 @@ class _ChatDetailScreenState extends State { height: 1, color: MyColors.lightGreyEFColor, ), - TextField( - controller: m.message, - decoration: InputDecoration( - hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), - hintStyle: TextStyle(color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14), - border: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, - errorBorder: InputBorder.none, - disabledBorder: InputBorder.none, - filled: true, - fillColor: MyColors.white, - contentPadding: const EdgeInsets.only( - left: 21, - top: 20, - bottom: 20, - ), - prefixIconConstraints: const BoxConstraints(), - prefixIcon: m.sFileType.isNotEmpty - ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 21, right: 15) - : null, - suffixIcon: SizedBox( - width: 100, - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.center, // added line - children: [ - if (m.sFileType.isNotEmpty) - Row( - children: [ - const Icon(Icons.cancel, size: 15, color: MyColors.redA3Color).paddingOnly(right: 5), - ("Clear").toText11(color: MyColors.redA3Color, isUnderLine: true).paddingOnly(left: 0), - ], - ).onPress(() => m.removeAttachment()).paddingOnly(right: 25), - if (m.sFileType.isEmpty) - RotationTransition( - turns: const AlwaysStoppedAnimation(45 / 360), - child: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor).onPress( - () => m.selectImageToUpload(context), + if (m.isRecoding) + Column( + children: [ + Row( + children: [ + Text(m.buildTimer()).paddingAll(10), + if (m.isRecoding && m.isPlaying) + WaveBubble( + playerController: m.playerController, + onTap: () { + m.playOrPause(); + }, + isPlaying: m.playerController.playerState == PlayerState.playing) + .expanded + else + AudioWaveforms( + waveStyle: const WaveStyle( + waveColor: MyColors.lightGreenColor, + middleLineColor: Colors.transparent, + extendWaveform: true, + showBottom: true, + showTop: true, + waveThickness: 2, + showMiddleLine: false, + middleLineThickness: 0, ), - ).paddingOnly(right: 25), - SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26).onPress( + padding: const EdgeInsets.all(5), + shouldCalculateScrolledPosition: false, + margin: EdgeInsets.zero, + size: const Size(double.infinity, 30.0), + recorderController: m.recorderController, + backgroundColor: Colors.white, + ).expanded, + ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Icon( + Icons.delete_outlined, + size: 26, + color: MyColors.lightGreenColor, + ).paddingAll(10).onPress(() { + m.deleteRecoding(); + }), + if (m.isPause) + const Icon( + Icons.mic, + size: 26, + color: MyColors.lightGreenColor, + ).paddingOnly(right: 15).onPress(() { + m.resumeRecoding(); + }), + if (!m.isPause) + const Icon( + Icons.pause_circle_outline, + size: 26, + color: MyColors.lightGreenColor, + ).paddingOnly(right: 15).onPress(() { + m.pauseRecoding(); + }), + SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26) + .onPress( + () => m.sendChatMessage(context, + targetUserId: params!.chatUser!.id!, + userStatus: params!.chatUser!.userStatus ?? 0, + userEmail: params!.chatUser!.email!, + targetUserName: params!.chatUser!.userName!), + ) + .paddingOnly(right: 21), + ], + ), + ], + ).objectContainerView(disablePadding: true, radius: 0), + if (!m.isRecoding) + Row( + children: [ + TextField( + controller: m.message, + decoration: InputDecoration( + hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), + hintStyle: TextStyle(color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14), + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + errorBorder: InputBorder.none, + disabledBorder: InputBorder.none, + filled: true, + fillColor: MyColors.white, + contentPadding: const EdgeInsets.only( + left: 21, + top: 20, + bottom: 20, + ), + prefixIconConstraints: const BoxConstraints(), + prefixIcon: m.sFileType.isNotEmpty + ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 21, right: 15) + : null, + ), + onChanged: (val) { + m.userTypingInvoke(currentUser: AppState().chatDetails!.response!.id!, reciptUser: params!.chatUser!.id!); + }, + ).expanded, + if (m.sFileType.isNotEmpty) + Row( + children: [ + const Icon(Icons.cancel, size: 15, color: MyColors.redA3Color).paddingOnly(right: 5), + ("Clear").toText11(color: MyColors.redA3Color, isUnderLine: true).paddingOnly(left: 0), + ], + ).onPress(() => m.removeAttachment()).paddingOnly(right: 15), + if (m.sFileType.isEmpty) + RotationTransition( + turns: const AlwaysStoppedAnimation(45 / 360), + child: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor).onPress( + () => m.selectImageToUpload(context), + ), + ).paddingOnly(right: 15), + Icon( + Icons.mic, + color: MyColors.lightGreenColor, + ).paddingOnly(right: 15).onPress(() { + m.startRecoding(); + }), + SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26) + .onPress( () => m.sendChatMessage(context, targetUserId: params!.chatUser!.id!, userStatus: params!.chatUser!.userStatus ?? 0, userEmail: params!.chatUser!.email!, targetUserName: params!.chatUser!.userName!), - ), - ], - ), - ).paddingOnly(right: 21), - ), - onChanged: (val) { - m.userTypingInvoke(currentUser: AppState().chatDetails!.response!.id!, reciptUser: params!.chatUser!.id!); - }, - ), + ) + .paddingOnly(right: 21), + ], + ).objectContainerView(disablePadding: true, radius: 0), ], )); }, diff --git a/pubspec.yaml b/pubspec.yaml index baa5e9f..c0b77bb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -92,6 +92,10 @@ dependencies: swipe_to: ^1.0.2 flutter_webrtc: ^0.9.16 camera: ^0.10.0+4 + + #Chat Voice Message Recoding & Play + record: ^4.4.3 + audio_waveforms: ^0.1.5+1 # animated_text_kit: ^4.2.2 #Encryption From 4021eccd9f2486b3acf665621a2fbd45c98adfbf Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 20 Dec 2022 09:11:51 +0300 Subject: [PATCH 240/302] Chat Error Handling --- lib/generated_plugin_registrant.dart | 4 +-- lib/provider/chat_provider_model.dart | 51 +++++++++++++++++++++++---- lib/ui/chat/chat_bubble.dart | 10 +++--- lib/ui/chat/chat_detailed_screen.dart | 4 +-- 4 files changed, 55 insertions(+), 14 deletions(-) diff --git a/lib/generated_plugin_registrant.dart b/lib/generated_plugin_registrant.dart index 288ba42..4a90695 100644 --- a/lib/generated_plugin_registrant.dart +++ b/lib/generated_plugin_registrant.dart @@ -16,7 +16,7 @@ import 'package:image_picker_for_web/image_picker_for_web.dart'; import 'package:shared_preferences_web/shared_preferences_web.dart'; import 'package:url_launcher_web/url_launcher_web.dart'; import 'package:video_player_web/video_player_web.dart'; -import 'package:wakelock_web/wakelock_web.dart'; +//import 'package:wakelock_web/wakelock_web.dart'; import 'package:flutter_web_plugins/flutter_web_plugins.dart'; @@ -32,6 +32,6 @@ void registerPlugins(Registrar registrar) { SharedPreferencesPlugin.registerWith(registrar); UrlLauncherPlugin.registerWith(registrar); VideoPlayerPlugin.registerWith(registrar); - WakelockWeb.registerWith(registrar); + // WakelockWeb.registerWith(registrar); registrar.registerMessageHandler(); } diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 5f28b0b..91d3e7f 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -970,15 +970,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { //////// Audio Recoding Work //////////////////// - Future initAudio() async { + Future initAudio({required int receiverId}) async { appDirectory = await getApplicationDocumentsDirectory(); - path = "${appDirectory.path}/${AppState().chatDetails!.response!.id}-${DateTime.now().microsecondsSinceEpoch}.aac"; + path = "${appDirectory.path}/${AppState().chatDetails!.response!.id}-$receiverID-${DateTime.now().microsecondsSinceEpoch}.aac"; recorderController = RecorderController() ..androidEncoder = AndroidEncoder.aac ..androidOutputFormat = AndroidOutputFormat.mpeg4 ..iosEncoder = IosEncoder.kAudioFormatMPEG4AAC - ..sampleRate = 8000 - ..bitRate = 32000; + ..sampleRate = 6000 + ..bitRate = 18000; playerController = PlayerController(); } @@ -992,7 +992,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void startRecoding() async { PermissionStatus status = await Permission.microphone.request(); - print(status); if (status.isDenied == true) { startRecoding(); } else { @@ -1014,6 +1013,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { }); } + void _pauseTimer() { + _timer?.cancel(); + _timer = Timer.periodic(const Duration(seconds: 1), (Timer t) { + _recodeDuration++; + // buildTimer(); + notifyListeners(); + }); + } + Future pauseRecoding() async { isPause = true; isPlaying = true; @@ -1025,6 +1033,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await playerController.preparePlayer(file.path, 1.0); var tempDuration = _recodeDuration; _recodeDuration = tempDuration; + _pauseTimer(); _timer?.cancel(); notifyListeners(); } @@ -1077,11 +1086,41 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void playRecoding() async { isPlaying = true; - await playerController.startPlayer(finishMode: FinishMode.stop); + await playerController.startPlayer(finishMode: FinishMode.pause); } void playOrPause() async { playerController.playerState == PlayerState.playing ? await playerController.pausePlayer() : playRecoding(); notifyListeners(); } + + void sendVoiceMessage(BuildContext context, {required int targetUserId, required int userStatus, required String userEmail, required String targetUserName}) async { + recorderController.pause(); + path = await recorderController.stop(false); + print(path); + File voiceFile = File(path!); + voiceFile.readAsBytesSync(); + _pauseTimer(); + _timer?.cancel(); + isPause = false; + isPlaying = false; + isRecoding = false; + Utils.showLoading(context); + dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile); + logger.d(value); + String? ext = getFileExtension(voiceFile.path); + Utils.hideLoading(context); + sendChatToServer( + chatEventId: 2, + fileTypeId: getFileType(ext.toString()), + targetUserId: targetUserId, + targetUserName: targetUserName, + isAttachment: true, + chatReplyId: null, + isReply: false, + isImageLoaded: true, + image: voiceFile.readAsBytesSync()); + + notifyListeners(); + } } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 06afecf..ed20c24 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -328,15 +328,17 @@ class WaveBubble extends StatelessWidget { playerController: playerController, padding: EdgeInsets.zero, margin: EdgeInsets.zero, + enableSeekGesture: true, + density: 2, playerWaveStyle: const PlayerWaveStyle( fixedWaveColor: Colors.white, - liveWaveColor:MyColors.lightGreenColor, + liveWaveColor:MyColors.greenColor, showTop: true, showBottom: true, waveCap: StrokeCap.round, - seekLineThickness: 3, - visualizerHeight: 6, - backgroundColor: Colors.transparent + seekLineThickness: 2, + visualizerHeight: 5, + backgroundColor: Colors.transparent, ), ), ], diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 5d3648e..605a922 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -80,7 +80,7 @@ class _ChatDetailScreenState extends State { loadMore: false, isNewChat: params!.isNewChat!, ); - data.initAudio(); + data.initAudio(receiverId: params!.chatUser!.id!); } return Scaffold( @@ -252,7 +252,7 @@ class _ChatDetailScreenState extends State { }), SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26) .onPress( - () => m.sendChatMessage(context, + () => m.sendVoiceMessage(context, targetUserId: params!.chatUser!.id!, userStatus: params!.chatUser!.userStatus ?? 0, userEmail: params!.chatUser!.email!, From f60394cc38146b6b513b9db86ee89604d95d6232 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 20 Dec 2022 10:18:07 +0300 Subject: [PATCH 241/302] chat voice message implementation --- lib/api/chat/chat_api_client.dart | 1 - lib/provider/chat_provider_model.dart | 80 +++++++++++++-------------- lib/ui/chat/chat_detailed_screen.dart | 32 +++++------ 3 files changed, 56 insertions(+), 57 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 409295f..2f08f2f 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -33,7 +33,6 @@ class ChatApiClient { }, ); if (!kReleaseMode) { - print("Status Code is ================" + response.statusCode.toString()); logger.i("res: " + response.body); } if (response.statusCode == 200) { diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 91d3e7f..4e1d421 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -55,9 +55,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future getUserAutoLoginToken() async { userLoginToken.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); - print("======================================= Chat Login Token Check ====================================="); - logger.d(userLoginResponse.toJson()); - print("======================================= Chat Login Token Check ====================================="); if (userLoginResponse.response != null) { AppState().setchatUserDetails = userLoginResponse; } else { @@ -677,7 +674,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String? getFileExtension(String fileName) { try { - print("Ext: " + "." + fileName.split('.').last); + if (kDebugMode) { + print("ext: " + "." + fileName.split('.').last); + } return "." + fileName.split('.').last; } catch (e) { return null; @@ -886,8 +885,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } else { await deleteFile(userID); Uint8List decodedBytes = base64Decode(encodedBytes); - Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); // 1 - late File imageFile = File("${appDocumentsDirectory.path}/$userID.jpg"); + Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); + String dirPath = '${appDocumentsDirectory.path}/chat_images'; + if (!await Directory(dirPath).exists()) { + await Directory(dirPath).create(); + } + late File imageFile = File("$dirPath/$userID.jpg"); imageFile.writeAsBytesSync(decodedBytes); return imageFile; } @@ -895,7 +898,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future deleteFile(String userID) async { Directory appDocumentsDirectory = await getApplicationDocumentsDirectory(); - late File imageFile = File('${appDocumentsDirectory.path}/$userID.jpg'); + String dirPath = '${appDocumentsDirectory.path}/chat_images'; + late File imageFile = File('$dirPath/$userID.jpg'); if (await imageFile.exists()) { await imageFile.delete(); } @@ -972,7 +976,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future initAudio({required int receiverId}) async { appDirectory = await getApplicationDocumentsDirectory(); - path = "${appDirectory.path}/${AppState().chatDetails!.response!.id}-$receiverID-${DateTime.now().microsecondsSinceEpoch}.aac"; + String dirPath = '${appDirectory.path}/chat_audios'; + if (!await Directory(dirPath).exists()) { + await Directory(dirPath).create(); + } + path = "$dirPath/${AppState().chatDetails!.response!.id}-$receiverID-${DateTime.now().microsecondsSinceEpoch}.aac"; recorderController = RecorderController() ..androidEncoder = AndroidEncoder.aac ..androidOutputFormat = AndroidOutputFormat.mpeg4 @@ -996,7 +1004,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { startRecoding(); } else { recorderController.reset(); + logger.d(recorderController.isRecording); await recorderController.record(path); + logger.d(recorderController.isRecording); _recodeDuration = 0; _startTimer(); isRecoding = !isRecoding; @@ -1013,27 +1023,16 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { }); } - void _pauseTimer() { - _timer?.cancel(); - _timer = Timer.periodic(const Duration(seconds: 1), (Timer t) { - _recodeDuration++; - // buildTimer(); - notifyListeners(); - }); - } - Future pauseRecoding() async { isPause = true; isPlaying = true; recorderController.pause(); path = await recorderController.stop(false); - print(path); File file = File(path!); file.readAsBytesSync(); await playerController.preparePlayer(file.path, 1.0); - var tempDuration = _recodeDuration; - _recodeDuration = tempDuration; - _pauseTimer(); + // var tempDuration = _recodeDuration; + // _recodeDuration = tempDuration; _timer?.cancel(); notifyListeners(); } @@ -1047,19 +1046,20 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future deleteRecoding() async { - print(path); _recodeDuration = 0; _timer?.cancel(); - // path = await recorderController.stop(false); + // path = await recorderController.stop(true); recorderController.reset(); print(path); if (path != null && path!.isNotEmpty) { File delFile = File(path!); double fileSizeInKB = delFile.lengthSync() / 1024; double fileSizeInMB = fileSizeInKB / 1024; - debugPrint("Deleted file size: ${delFile.lengthSync()}"); - debugPrint("Deleted file size in KB: " + fileSizeInKB.toString()); - debugPrint("Deleted file size in MB: " + fileSizeInMB.toString()); + if (kDebugMode) { + debugPrint("Deleted file size: ${delFile.lengthSync()}"); + debugPrint("Deleted file size in KB: " + fileSizeInKB.toString()); + debugPrint("Deleted file size in MB: " + fileSizeInMB.toString()); + } if (await delFile.exists()) { delFile.delete(); } @@ -1095,12 +1095,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void sendVoiceMessage(BuildContext context, {required int targetUserId, required int userStatus, required String userEmail, required String targetUserName}) async { - recorderController.pause(); + //recorderController.pause(); path = await recorderController.stop(false); - print(path); + if (kDebugMode) { + print(path); + } File voiceFile = File(path!); voiceFile.readAsBytesSync(); - _pauseTimer(); _timer?.cancel(); isPause = false; isPlaying = false; @@ -1110,17 +1111,16 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { logger.d(value); String? ext = getFileExtension(voiceFile.path); Utils.hideLoading(context); - sendChatToServer( - chatEventId: 2, - fileTypeId: getFileType(ext.toString()), - targetUserId: targetUserId, - targetUserName: targetUserName, - isAttachment: true, - chatReplyId: null, - isReply: false, - isImageLoaded: true, - image: voiceFile.readAsBytesSync()); - + // sendChatToServer( + // chatEventId: 2, + // fileTypeId: getFileType(ext.toString()), + // targetUserId: targetUserId, + // targetUserName: targetUserName, + // isAttachment: true, + // chatReplyId: null, + // isReply: false, + // isImageLoaded: true, + // image: voiceFile.readAsBytesSync()); notifyListeners(); } } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 605a922..c10a8c6 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -234,22 +234,22 @@ class _ChatDetailScreenState extends State { ).paddingAll(10).onPress(() { m.deleteRecoding(); }), - if (m.isPause) - const Icon( - Icons.mic, - size: 26, - color: MyColors.lightGreenColor, - ).paddingOnly(right: 15).onPress(() { - m.resumeRecoding(); - }), - if (!m.isPause) - const Icon( - Icons.pause_circle_outline, - size: 26, - color: MyColors.lightGreenColor, - ).paddingOnly(right: 15).onPress(() { - m.pauseRecoding(); - }), + // if (m.isPause) + // const Icon( + // Icons.mic, + // size: 26, + // color: MyColors.lightGreenColor, + // ).paddingOnly(right: 15).onPress(() { + // m.resumeRecoding(); + // }), + // if (!m.isPause) + // const Icon( + // Icons.pause_circle_outline, + // size: 26, + // color: MyColors.lightGreenColor, + // ).paddingOnly(right: 15).onPress(() { + // m.pauseRecoding(); + // }), SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26) .onPress( () => m.sendVoiceMessage(context, From 696a6881c4ba38a61eff6398089eaf554a87b6cf Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 20 Dec 2022 15:23:03 +0300 Subject: [PATCH 242/302] date fixes & Items of sale updates --- lib/classes/date_uitl.dart | 26 +++++++++++++++++-- .../fragments/my_posted_ads_fragment.dart | 19 ++++++++++---- pubspec.yaml | 2 +- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/lib/classes/date_uitl.dart b/lib/classes/date_uitl.dart index 29edb2f..ec5358d 100644 --- a/lib/classes/date_uitl.dart +++ b/lib/classes/date_uitl.dart @@ -6,7 +6,6 @@ class DateUtil { /// /// - static DateTime convertStringToDateMarathon(String date) { // /Date(1585774800000+0300)/ if (date != null) { @@ -40,7 +39,30 @@ class DateUtil { } static DateTime convertSimpleStringDateToDate(String date) { - return DateFormat("MM/dd/yyyy hh:mm:ss a").parse(date.toUpperCase()); + // print(date.toUpperCase()); + return getDateTimeFromString(date.split(" ")[0], date.toUpperCase().split(" ")[1] + " " + date.toUpperCase().split(" ")[2]); + } + + static DateTime getDateTimeFromString(String date, String time) { + var hours = num.parse(time.split(":")[0]); + var mins = time.split(":")[1]; + var secs = time.split(":")[2].split(" ")[0]; + + String meridium = time.split(" ")[1]; + if (meridium == "PM") { + if (hours != 12) { + hours = hours + 12; + } + } + if (meridium == "AM") { + if (hours == 12) { + hours = 00; + } + } + date = date + " $hours:$mins:$secs"; + DateTime returnDate = DateFormat("MM/dd/yyyy HH:mm:ss").parse(date); + + return returnDate; } static DateTime convertSimpleStringDateToDateddMMyyyy(String date) { diff --git a/lib/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart b/lib/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart index 64b8bf9..02db148 100644 --- a/lib/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart +++ b/lib/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart @@ -141,7 +141,7 @@ class _MyPostedAdsFragmentState extends State { Row( children: [ LocaleKeys.remove.tr().toText12(color: MyColors.redColor).center.onPress(() { - updateItemForSale(employeePostedAdsList[index].itemSaleID!); + updateItemForSale(employeePostedAdsList[index]); }).expanded, Container(width: 1, height: 30, color: MyColors.lightGreyEFColor), LocaleKeys.edit.tr().toText12(color: MyColors.gradiantEndColor).center.onPress(() { @@ -172,7 +172,7 @@ class _MyPostedAdsFragmentState extends State { ); } - void updateItemForSale(int itemSaleID) async { + void updateItemForSale(EmployeePostedAds employeePostedAds) async { Utils.showLoading(context); String? empNum = AppState().memberInformationList?.eMPLOYEENUMBER; @@ -180,15 +180,24 @@ class _MyPostedAdsFragmentState extends State { String? loginTokenID = AppState().postParamsObject?.logInTokenID; String? tokenID = AppState().postParamsObject?.tokenID; - var request = http.MultipartRequest('POST', Uri.parse("${ApiConsts.cocRest}Mohemm_ITG_UpdateItemForSale")); - request.fields['itemSaleID'] = itemSaleID.toString(); + var request = http.MultipartRequest('POST', Uri.parse("${ApiConsts.cocRest}Mohemm_ITG_UpdateItemForSaleMobile")); + request.fields['ItgItemSaleID'] = employeePostedAds.itemSaleID.toString(); + request.fields['ItgCategoryID'] = employeePostedAds.categoryID.toString(); + request.fields['ItgTitle'] = employeePostedAds.title!; + request.fields['ItgDescription'] = employeePostedAds.description!; + request.fields['ItgQuotePrice'] = employeePostedAds.quotePrice.toString(); + request.fields['RegionID'] = employeePostedAds.regionID.toString(); + request.fields['Itg_EndDate'] = employeePostedAds.endDate.toString(); request.fields['Channel'] = "31"; - request.fields['isActive'] = "false"; + request.fields['ItgIsActive'] = "false"; request.fields['LogInToken'] = loginTokenID!; request.fields['Token'] = tokenID!; request.fields['MobileNo'] = empMobNum!; request.fields['EmployeeNumber'] = empNum!; request.fields['employeeNumber'] = empNum; + + // debugPrint(json.encode(request.fields.toString())); + var response = await request.send().catchError((e) { Utils.hideLoading(context); Utils.handleException(e, context, null); diff --git a/pubspec.yaml b/pubspec.yaml index c0b77bb..2f3fffa 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -94,7 +94,7 @@ dependencies: camera: ^0.10.0+4 #Chat Voice Message Recoding & Play - record: ^4.4.3 +# record: ^4.4.3 audio_waveforms: ^0.1.5+1 # animated_text_kit: ^4.2.2 From 4cb7bbee5d8516dff9b5cc44a8ebdf380d60d743 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Wed, 21 Dec 2022 11:01:54 +0300 Subject: [PATCH 243/302] Pushing while testing! --- assets/lottie/loading_lottie.json | 1 + lib/api/marathon/marathon_api_client.dart | 191 ++++++------------ lib/classes/date_uitl.dart | 2 +- lib/classes/lottie_consts.dart | 1 + lib/extensions/string_extensions.dart | 3 +- lib/ui/login/login_screen.dart | 3 + lib/ui/marathon/marathon_provider.dart | 33 ++- lib/ui/marathon/marathon_screen.dart | 160 ++++++++------- lib/ui/marathon/widgets/marathon_footer.dart | 2 +- .../marathon_qualifiers_container.dart | 28 ++- lib/ui/marathon/widgets/question_card.dart | 9 +- 11 files changed, 196 insertions(+), 237 deletions(-) create mode 100644 assets/lottie/loading_lottie.json diff --git a/assets/lottie/loading_lottie.json b/assets/lottie/loading_lottie.json new file mode 100644 index 0000000..8babb66 --- /dev/null +++ b/assets/lottie/loading_lottie.json @@ -0,0 +1 @@ +{"nm":"Comp 1","mn":"","layers":[{"ty":4,"nm":"Shape Layer 1","mn":"","sr":1,"st":0,"op":300.00001221925,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[-70,-0.5,0]},"s":{"a":0,"k":[75,75,100]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[128.594,127.969,0],"t":20},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[128.594,88,0],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[128.594,128,0],"t":40.0000016292334}]},"sa":{"a":0,"k":0},"o":{"a":0,"k":100},"r":{"a":0,"k":0}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[33.75,34.5]}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.2,0.7529,0.6471]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-70.125,-0.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":0},{"ty":4,"nm":"Shape Layer 2","mn":"","sr":1,"st":0,"op":300.00001221925,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[-70,-0.5,0]},"s":{"a":0,"k":[75,75,100]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[168.6,128,0],"t":30},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[168.6,88,0],"t":40},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[168.6,128,0],"t":50.0000020365418}]},"sa":{"a":0,"k":0},"o":{"a":0,"k":100},"r":{"a":0,"k":0}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[33.75,34.5]}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.2,0.7529,0.6471]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-70.125,-0.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"Shape Layer 3","mn":"","sr":1,"st":0,"op":300.00001221925,"ip":0,"hd":true,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[-70,-0.5,0]},"s":{"a":0,"k":[75,75,100]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[208.6,127.969,0],"t":40},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[208.6,88,0],"t":50},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[208.6,128,0],"t":60.0000024438501}]},"sa":{"a":0,"k":0},"o":{"a":0,"k":100},"r":{"a":0,"k":0}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[33.75,34.5]}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.2,0.7529,0.6471]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-70.125,-0.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"Shape Layer 4","mn":"","sr":1,"st":0,"op":300.00001221925,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[-70,-0.5,0]},"s":{"a":0,"k":[75,75,100]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[88.6,127.969,0],"t":10},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[88.6,88,0],"t":20},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[88.6,128,0],"t":30.0000012219251}]},"sa":{"a":0,"k":0},"o":{"a":0,"k":100},"r":{"a":0,"k":0}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[33.75,34.5]}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.2,0.7529,0.6471]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-70.125,-0.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3},{"ty":4,"nm":"Shape Layer 5","mn":"","sr":1,"st":0,"op":300.00001221925,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[-70,-0.5,0]},"s":{"a":0,"k":[75,75,100]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[48.6,127.969,0],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[48.6,88,0],"t":10},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[48.6,128,0],"t":20.0000008146167}]},"sa":{"a":0,"k":0},"o":{"a":0,"k":100},"r":{"a":0,"k":0}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[33.75,34.5]}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.2,0.7529,0.6471]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-70.125,-0.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":4}],"ddd":0,"h":150,"w":200,"meta":{"a":"","k":"","d":"","g":"@lottiefiles/toolkit-js 0.21.1","tc":"#ffffff"},"v":"4.6.8","fr":60,"op":60.0000024438501,"ip":0,"assets":[]} \ No newline at end of file diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 859b23d..a2d684f 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -23,57 +23,28 @@ class MarathonApiClient { Future getMarathonToken() async { String employeeUserName = AppState().getUserName ?? ""; String employeeSession = AppState().postParamsObject?.pSessionId.toString() ?? ""; - Map jsonObject = {"userName": employeeUserName, "password": employeeSession}; - Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonParticipantLoginUrl, jsonObject); - - var json = jsonDecode(response.body); - - MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - - if (marathonModel.statusCode == 200) { - if (marathonModel.data != null && marathonModel.isSuccessful == true) { - AppState().setMarathonToken = marathonModel.data["token"] ?? ""; + return await ApiClient().postJsonForObject( + (json) { + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); return marathonModel.data["token"] ?? ""; - } else { - //TODO : DO ERROR HANDLING HERE - return ""; - } - } else { - //TODO : DO ERROR HANDLING HERE - return ""; - } + }, + ApiConsts.marathonParticipantLoginUrl, + jsonObject, + ); } - - // Future getGetMenuEntries() async { - // String url = "${ApiConsts.erpRest}GET_MENU_ENTRIES"; - // Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E"}; - // postParams.addAll(AppState().postParamsJson); - // return await ApiClient().postJsonForObject((json) { - // GenericResponseModel responseData = GenericResponseModel.fromJson(json); - // return responseData; - // }, url, postParams); - // } - Future getProjectId() async { - Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonProjectGetUrl, {}, token: AppState().getMarathonToken ?? await getMarathonToken()); - - var json = jsonDecode(response.body); - MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - - if (marathonModel.statusCode == 200) { - if (marathonModel.data != null && marathonModel.isSuccessful == true) { - logger.i("message: ${marathonModel.data[0]["id"]}"); - AppState().setMarathonProjectId = marathonModel.data[0]["id"] ?? ""; - return marathonModel.data[0]["id"] ?? ""; - } else { - return ""; - } - } else { - return ""; - } + return await ApiClient().postJsonForObject( + (json) { + MarathonGenericModel responseData = MarathonGenericModel.fromJson(json); + return responseData.data[0]["id"] ?? ""; + }, + ApiConsts.marathonProjectGetUrl, + {}, + token: AppState().getMarathonToken ?? await getMarathonToken(), + ); } Future getMarathonDetails() async { @@ -105,108 +76,60 @@ class MarathonApiClient { "marathonId": AppState().getMarathonProjectId!, }; - Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonJoinParticipantUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); - - var json = jsonDecode(response.body); - - MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - - if (marathonModel.statusCode == 208) { - // means participant is already in the marathon i.e already joined - //TODO: NEED TO LOOK UPON THIS - return marathonModel.data["remainingTime"]; - } - - if (marathonModel.statusCode == 200) { - if (marathonModel.data != null && marathonModel.isSuccessful == true) { - logger.i("joinMarathonAsParticipant: ${marathonModel.data}"); + return await ApiClient().postJsonForObject( + (json) { + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); return marathonModel.data["remainingTime"]; - } else { - return null; - } - } else { - return null; - } + }, + ApiConsts.marathonJoinParticipantUrl, + jsonObject, + token: AppState().getMarathonToken ?? await getMarathonToken(), + ); } - Future getNextQuestion({required String? questionId, required String marathonId}) async { + Future getNextQuestion({required String? questionId, required String marathonId}) async { Map jsonObject = { "previousQuestionId": questionId, "marathonId": marathonId, }; - Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonNextQuestionUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); - - var json = jsonDecode(response.body); - - logger.i("json in NextQuestion: $json"); - MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - - if (marathonModel.statusCode == 404) { - Utils.confirmDialog( - AppRoutes.navigatorKey.currentContext, - marathonModel.message!, - onTap: () { - AppRoutes.navigatorKey.currentContext!.read().resetValues(); - Navigator.of( - AppRoutes.navigatorKey.currentContext!, - ).popUntil(ModalRoute.withName(AppRoutes.dashboard)); - }, - ); - return null; - } - - if (marathonModel.statusCode == 208) { - Utils.confirmDialog( - AppRoutes.navigatorKey.currentContext, - marathonModel.message!, - onTap: () { - AppRoutes.navigatorKey.currentContext!.read().resetValues(); - Navigator.of( - AppRoutes.navigatorKey.currentContext!, - ).popUntil(ModalRoute.withName(AppRoutes.dashboard)); - }, - ); - return null; - } - - if (marathonModel.statusCode == 204) { - Utils.confirmDialog( - AppRoutes.navigatorKey.currentContext, - marathonModel.message!, - onTap: () { - AppRoutes.navigatorKey.currentContext!.read().resetValues(); - Navigator.of( - AppRoutes.navigatorKey.currentContext!, - ).popUntil(ModalRoute.withName(AppRoutes.dashboard)); - }, - ); - return null; - } - - if (marathonModel.data != null && marathonModel.isSuccessful == true) { - QuestionModel newQuestion = QuestionModel.fromJson(marathonModel.data); - return newQuestion; - } else { - return null; - } + return await ApiClient().postJsonForObject( + (json) { + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); + + if (marathonModel.statusCode == 404 || marathonModel.statusCode == 208 || marathonModel.statusCode == 204 || marathonModel.statusCode == 500) { + Utils.confirmDialog( + AppRoutes.navigatorKey.currentContext, + marathonModel.message!, + onTap: () { + AppRoutes.navigatorKey.currentContext!.read().resetValues(); + Navigator.of( + AppRoutes.navigatorKey.currentContext!, + ).popUntil(ModalRoute.withName(AppRoutes.dashboard)); + }, + ); + } + QuestionModel newQuestion = QuestionModel.fromJson(marathonModel.data); + return newQuestion; + }, + ApiConsts.marathonNextQuestionUrl, + jsonObject, + token: AppState().getMarathonToken ?? await getMarathonToken(), + ); } Future submitSelectedOption({required String marathonId, required String? questionId, required String? selectedAnswerId}) async { Map jsonObject = {"marathonId": marathonId, "questionId": questionId, "selectedOptionId": selectedAnswerId}; - Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonSubmitAnswerUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken()); - - var json = jsonDecode(response.body); - logger.i("json in submitSelectedOption : $json"); - - MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - - if (marathonModel.isSuccessful == null) { - return false; - } - - return marathonModel.isSuccessful!; + return await ApiClient().postJsonForObject( + (json) { + MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); + return marathonModel.isSuccessful ?? false; + }, + ApiConsts.marathonSubmitAnswerUrl, + jsonObject, + token: AppState().getMarathonToken ?? await getMarathonToken(), + ); } Future getQualifiers({required String marathonId}) async { diff --git a/lib/classes/date_uitl.dart b/lib/classes/date_uitl.dart index a1e52d9..bb31c56 100644 --- a/lib/classes/date_uitl.dart +++ b/lib/classes/date_uitl.dart @@ -437,7 +437,7 @@ class DateUtil { /// get data formatted like 10:30 according to lang static String formatDateToTimeLang(DateTime date, bool isArabic) { - return DateFormat('HH:mm a', isArabic ? "ar_SA" : "en_US").format(date); + return DateFormat('hh:mm a', isArabic ? "ar_SA" : "en_US").format(date); } /// get data formatted like 26/4/2020 10:30 diff --git a/lib/classes/lottie_consts.dart b/lib/classes/lottie_consts.dart index 7846f6c..58b8a32 100644 --- a/lib/classes/lottie_consts.dart +++ b/lib/classes/lottie_consts.dart @@ -7,4 +7,5 @@ class MyLottieConsts { static const String marathonWaiting = "assets/lottie/marathon_waiting.json"; static const String wrongAnswerGif = "assets/images/wrong_answer.gif"; static const String congratsGif = "assets/images/congrats.gif"; + static const String loadingLottie = "assets/lottie/loading_lottie.json"; } diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index e9e7e93..dbea17a 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -131,8 +131,9 @@ extension EmailValidator on String { style: TextStyle(fontSize: 19, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -1.14), ); - Widget toText20({Color? color, bool isBold = false}) => Text( + Widget toText20({Color? color, bool isBold = false, bool isCentered = false}) => Text( this, + textAlign: isCentered ? TextAlign.center : null, style: TextStyle(fontSize: 20, fontWeight: isBold ? FontWeight.bold : FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.4), ); diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index a0ab3c9..acf9b1e 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -163,6 +163,9 @@ class _LoginScreenState extends State { // username.text = "206535"; // Hashim User // password.text = "Namira786"; + + // 13777 + // Ab12345cd } if (isAppOpenBySystem!) checkFirebaseToken(); } diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index f87696d..a8dde7b 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; @@ -36,6 +35,7 @@ class MarathonProvider extends ChangeNotifier { int? gapTimeType; bool iAmWinner = false; + bool isGettingQualifiers = false; bool isPrivilegedWithMarathon = false; bool _isLoading = false; @@ -172,6 +172,7 @@ class MarathonProvider extends ChangeNotifier { timerForQuestion = Timer.periodic( oneSec, (Timer timer) async { + print("here is the timer: $totalCurrentQuestionTime"); // This 2 is just to show the color of answer tile for 1 and then update card status if (totalCurrentQuestionTime - currentGapTime == 1) { getCorrectAnswerAndUpdateAnswerColor(); @@ -183,11 +184,15 @@ class MarathonProvider extends ChangeNotifier { updateCardStatusToAnswer(); scheduleMicrotask(() async { - await callSubmitOptionApi().then((bool value) async { - if (value) { - await callNextQuestionApi(); - } - }); + if (isUserOutOfGame) { + await callNextQuestionApi(); + } else { + await callSubmitOptionApi().then((bool value) async { + if (value) { + await callNextQuestionApi(); + } + }); + } }); } @@ -197,7 +202,7 @@ class MarathonProvider extends ChangeNotifier { gapTimeType = currentQuestion.gapType; updateCardData(); if (currentQuestionNumber - 1 == marathonDetailModel.totalQuestions!) { - callGetQualifiersApi(); + isGettingQualifiers = true; updateQuestionCardStatus(QuestionCardStatus.findingWinner); timer.cancel(); cancelTimer(); @@ -223,10 +228,14 @@ class MarathonProvider extends ChangeNotifier { timerForWinnerSelection = Timer.periodic( oneSec, (Timer timer) async { - if (totalSecondsToWaitForWinner == 0) { + if (totalSecondsToWaitForWinner == 1) { timer.cancel(); + callGetSelectedWinnersApi(); updateQuestionCardStatus(QuestionCardStatus.winnerFound); return; + } else if (totalSecondsToWaitForWinner == 15) { + totalSecondsToWaitForWinner--; + await callGetQualifiersApi(); } else { totalSecondsToWaitForWinner--; } @@ -244,6 +253,7 @@ class MarathonProvider extends ChangeNotifier { Future callGetQualifiersApi() async { totalQualifiers = await MarathonApiClient().getQualifiers(marathonId: marathonDetailModel.id!); + isGettingQualifiers = false; notifyListeners(); } @@ -264,10 +274,12 @@ class MarathonProvider extends ChangeNotifier { } Future callNextQuestionApi() async { + print("Called callNextQuestionApi!!"); + if (currentQuestionNumber < marathonDetailModel.totalQuestions!) { if (currentQuestionNumber == 0) { Utils.showLoading(AppRoutes.navigatorKey.currentContext!); - currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: null, marathonId: marathonDetailModel.id!))!; + currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: null, marathonId: marathonDetailModel.id!)); gapTimeImage = currentQuestion.gapImage; gapTimeText = currentQuestion.gapText; gapTimeType = currentQuestion.gapType; @@ -279,13 +291,14 @@ class MarathonProvider extends ChangeNotifier { Navigator.pushReplacementNamed(AppRoutes.navigatorKey.currentContext!, AppRoutes.marathonScreen); } else { - currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: currentQuestion.id, marathonId: marathonDetailModel.id!))!; + currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: currentQuestion.id, marathonId: marathonDetailModel.id!)); } notifyListeners(); } } void updateCardData() { + print("Called updateCardData!!"); if (currentQuestionNumber > 0) { swiperController.swipeLeft(); } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index a64b97a..3a257c7 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -50,88 +50,96 @@ class MarathonScreen extends StatelessWidget { width: double.infinity, decoration: MyDecorations.shadowDecoration, padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), - child: Stack( - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SizedBox( - height: 50, - child: Stack( - children: [ - Align( - alignment: Alignment.center, - child: SvgPicture.asset("assets/images/winner_ribbon.svg", height: 50), - ), - Align( - alignment: Alignment.center, - child: LocaleKeys.winners.tr().toText32(color: MyColors.white, isBold: true, isCentered: true).paddingOnly(top: 07), - ) - ], - ), + child: provider.selectedWinners == null || provider.selectedWinners!.isEmpty + //TODO: WE WILL UPDATE THE DESIGN WHEN THERE IS NO WINNER!! + ? Center( + child: "Sad! No one won Today. What you guys are doing?".toText20( + color: MyColors.grey3AColor, + isCentered: true, ), - 16.height, - provider.iAmWinner - ? Column( - children: [ - (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn)!.toText22( - color: MyColors.grey3AColor, - isCentered: true, - ), - 8.height, - AppState().memberInformationList!.eMPLOYEENUMBER!.toText22(color: MyColors.grey57Color), - ], - ) - : const SizedBox(), - 36.height, - if (provider.selectedWinners != null) ...[ - ListView.separated( - shrinkWrap: true, - itemCount: provider.selectedWinners!.length, - separatorBuilder: (BuildContext context, int index) { - return const Divider(); - }, - itemBuilder: (BuildContext context, int index) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (AppState().isArabic(context) ? provider.selectedWinners![index].nameEn : provider.selectedWinners![index].nameEn)!.toText16( - color: MyColors.grey3AColor, - ), - provider.selectedWinners!.first.employeeId!.toText16(color: MyColors.grey57Color), - ], - ); - }, - ), - ], - 60.height, - if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ - Row( + ) + : Stack( + children: [ + Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - "${LocaleKeys.sponsoredBy.tr()} ".toText14(color: MyColors.grey77Color), - (AppState().isArabic(context) ? provider.marathonDetailModel.sponsors!.first.nameAr ?? "" : provider.marathonDetailModel.sponsors!.first.nameEn ?? "").toText14( - color: MyColors.darkTextColor, - isBold: true, + SizedBox( + height: 50, + child: Stack( + children: [ + Align( + alignment: Alignment.center, + child: SvgPicture.asset("assets/images/winner_ribbon.svg", height: 50), + ), + Align( + alignment: Alignment.center, + child: LocaleKeys.winners.tr().toText32(color: MyColors.white, isBold: true, isCentered: true).paddingOnly(top: 07), + ) + ], + ), ), + 16.height, + provider.iAmWinner + ? Column( + children: [ + (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn)!.toText22( + color: MyColors.grey3AColor, + isCentered: true, + ), + 8.height, + AppState().memberInformationList!.eMPLOYEENUMBER!.toText22(color: MyColors.grey57Color), + ], + ) + : const SizedBox(), + 36.height, + if (provider.selectedWinners != null) ...[ + ListView.separated( + shrinkWrap: true, + itemCount: provider.selectedWinners!.length, + separatorBuilder: (BuildContext context, int index) { + return const Divider(); + }, + itemBuilder: (BuildContext context, int index) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (AppState().isArabic(context) ? provider.selectedWinners![index].nameEn : provider.selectedWinners![index].nameEn)!.toText16( + color: MyColors.grey3AColor, + ), + provider.selectedWinners!.first.employeeId!.toText16(color: MyColors.grey57Color), + ], + ); + }, + ), + ], + 60.height, + if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + "${LocaleKeys.sponsoredBy.tr()} ".toText14(color: MyColors.grey77Color), + (AppState().isArabic(context) ? provider.marathonDetailModel.sponsors!.first.nameAr ?? "" : provider.marathonDetailModel.sponsors!.first.nameEn ?? "").toText14( + color: MyColors.darkTextColor, + isBold: true, + ), + ], + ), + 5.height, + Image.network( + ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.image!, + height: 50, + width: 150, + fit: BoxFit.contain, + errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + return Image.asset("assets/images/logos/main_mohemm_logo.png", height: 50, width: 150); + }, + ) + ], ], ), - 5.height, - Image.network( - ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.image!, - height: 50, - width: 150, - fit: BoxFit.contain, - errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { - return Image.asset("assets/images/logos/main_mohemm_logo.png", height: 50, width: 150); - }, - ) + Lottie.asset(MyLottieConsts.celebrate1Lottie), ], - ], - ), - Lottie.asset(MyLottieConsts.celebrate1Lottie), - ], - ), + ), ); } @@ -202,7 +210,7 @@ class MarathonScreen extends StatelessWidget { children: [ ListView( children: [ - 20.height, + 10.height, if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ QualifiersContainer(provider: provider).paddingOnly(left: 21, right: 21), ] else if (provider.questionCardStatus == QuestionCardStatus.winnerFound) diff --git a/lib/ui/marathon/widgets/marathon_footer.dart b/lib/ui/marathon/widgets/marathon_footer.dart index fea076e..cd23ce1 100644 --- a/lib/ui/marathon/widgets/marathon_footer.dart +++ b/lib/ui/marathon/widgets/marathon_footer.dart @@ -43,7 +43,7 @@ class MarathonFooter extends StatelessWidget { Widget build(BuildContext context) { return DefaultButton( LocaleKeys.joinMarathon.tr(), - !provider.itsMarathonTime ? () => provider.onJoinMarathonPressed(context) : null, + provider.itsMarathonTime ? () => provider.onJoinMarathonPressed(context) : null, ).insideContainer; } } diff --git a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart index 7463f37..ed5132e 100644 --- a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart +++ b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart @@ -1,7 +1,9 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:lottie/lottie.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; +import 'package:mohem_flutter_app/classes/lottie_consts.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; @@ -20,7 +22,6 @@ class _QualifiersContainerState extends State { @override void initState() { widget.provider.startTimerForWinnerSelection(); - widget.provider.callGetSelectedWinnersApi(); super.initState(); } @@ -42,14 +43,23 @@ class _QualifiersContainerState extends State { ], ), 10.height, - Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - widget.provider.totalQualifiers != null ? widget.provider.totalQualifiers.toString().toText30(color: MyColors.greenColor, isBold: true) : const SizedBox(), - 2.width, - LocaleKeys.qualifiers.tr().toText16(color: MyColors.greenColor), - ], - ), + widget.provider.isGettingQualifiers + ? Container( + alignment: Alignment.centerLeft, + child: Lottie.asset( + MyLottieConsts.loadingLottie, + width: 60, + fit: BoxFit.fill, + ), + ) + : Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + widget.provider.totalQualifiers != null ? widget.provider.totalQualifiers.toString().toText30(color: MyColors.greenColor, isBold: true) : const SizedBox(), + 2.width, + LocaleKeys.qualifiers.tr().toText16(color: MyColors.greenColor), + ], + ), ], ), ); diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index 6fcb5db..5246426 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -65,7 +65,6 @@ class CardContent extends StatelessWidget { child: Column( children: [ Container( - height: 78, width: double.infinity, decoration: const BoxDecoration( gradient: LinearGradient( @@ -84,9 +83,9 @@ class CardContent extends StatelessWidget { ), child: Center( child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 13), + padding: const EdgeInsets.symmetric(horizontal: 13, vertical: 15), child: Text( - AppState().isArabic(context) ? provider.currentQuestion.titleAr ?? "" : provider.currentQuestion.titleEn ?? "", + AppState().isArabic(context) ? "${provider.currentQuestion.titleAr}" ?? "" : provider.currentQuestion.titleEn ?? "", style: const TextStyle( color: MyColors.white, fontSize: 16, @@ -110,7 +109,7 @@ class AnswerContent extends StatelessWidget { Widget build(BuildContext context) { MarathonProvider provider = context.watch(); return Container( - padding: const EdgeInsets.symmetric(vertical: 31, horizontal: 13), + padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 13), decoration: const BoxDecoration( color: MyColors.kWhiteColor, borderRadius: BorderRadius.only( @@ -173,7 +172,7 @@ class AnswerTileForText extends StatelessWidget { child: Center( child: (AppState().isArabic(context) ? provider.currentQuestion.questionOptions![index].titleAr! : provider.currentQuestion.questionOptions![index].titleEn!) .toText16(color: provider.isUserOutOfGame ? MyColors.darkTextColor : getAnswerTextColor(provider.currentQuestion.questionOptions![index].optionStatus!)) - .paddingOnly(top: 17, bottom: 17), + .paddingOnly(top: 13, bottom: 13), ), ), ); From fe02776a69223e0e55e83b69beca2de9d180ae7f Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 21 Dec 2022 12:29:29 +0300 Subject: [PATCH 244/302] leave balance issues fixed. --- lib/api/dashboard_api_client.dart | 10 +- lib/api/leave_balance_api_client.dart | 61 ++++----- lib/api/my_attendance_api_client.dart | 28 +--- lib/classes/consts.dart | 4 +- .../add_leave_balance_screen.dart | 121 +++++++++--------- .../leave_balance/leave_balance_screen.dart | 111 ++++++++-------- .../dynamic_screens/dynamic_input_screen.dart | 19 ++- .../dynamic_listview_screen.dart | 7 +- .../services_menu_list_screen.dart | 9 +- lib/ui/my_team/create_request.dart | 3 +- lib/widgets/balances_dashboard_widget.dart | 19 ++- 11 files changed, 171 insertions(+), 221 deletions(-) diff --git a/lib/api/dashboard_api_client.dart b/lib/api/dashboard_api_client.dart index 5f2ad7e..95631a9 100644 --- a/lib/api/dashboard_api_client.dart +++ b/lib/api/dashboard_api_client.dart @@ -1,12 +1,10 @@ import 'dart:async'; import 'dart:convert'; -import 'package:http/http.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; -import 'package:mohem_flutter_app/models/chat/chat_count_conversation_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_accrual_balances_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/get_attendance_tracking_list_model.dart'; import 'package:mohem_flutter_app/models/dashboard/itg_forms_model.dart'; @@ -14,7 +12,6 @@ import 'package:mohem_flutter_app/models/dashboard/list_menu.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/itg/itg_main_response.dart'; import 'package:mohem_flutter_app/models/itg/itg_response_model.dart'; - import 'package:uuid/uuid.dart'; class DashboardApiClient { @@ -47,7 +44,6 @@ class DashboardApiClient { Future getCOCNotifications() async { String url = "${ApiConsts.cocRest}Mohemm_ITG_ReviewerAdmin_Pending_Tasks"; Map postParams = {"Date": DateUtil.getISODateFormat(DateTime.now()), "EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER}; - postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); @@ -69,9 +65,7 @@ class DashboardApiClient { String url = "${ApiConsts.erpRest}GET_ACCRUAL_BALANCES"; Map postParams = {"P_EFFECTIVE_DATE": effectiveDate}; postParams.addAll(AppState().postParamsJson); - if (empID != null && empID.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.getAccrualBalancesList ?? []; @@ -205,8 +199,6 @@ class DashboardApiClient { }, url, postParams); } - - // Future setAdvertisementViewed(String masterID, int advertisementId) async { // String url = "${ApiConsts.cocRest}Mohemm_ITG_UpdateAdvertisementAsViewed"; // diff --git a/lib/api/leave_balance_api_client.dart b/lib/api/leave_balance_api_client.dart index f9c5e21..ae855ee 100644 --- a/lib/api/leave_balance_api_client.dart +++ b/lib/api/leave_balance_api_client.dart @@ -17,13 +17,11 @@ class LeaveBalanceApiClient { factory LeaveBalanceApiClient() => _instance; - Future> getAbsenceTransactions(int pSelectedResopID, {String? empID}) async { + Future> getAbsenceTransactions(int pSelectedResopID, String? empID) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceTransactionList ?? []; @@ -34,16 +32,15 @@ class LeaveBalanceApiClient { String url = "${ApiConsts.erpRest}GET_ABSENCE_ATTENDANCE_TYPES"; Map postParams = {}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; + return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceAttendanceTypesList ?? []; }, url, postParams); } - Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID, {String? empID}) async { + Future calculateAbsenceDuration(int pAbsenceAttendanceTypeID, String pDateStart, String pDateEnd, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}CALCULATE_ABSENCE_DURATION"; Map postParams = { "P_ABSENCE_ATTENDANCE_TYPE_ID": pAbsenceAttendanceTypeID, @@ -52,25 +49,26 @@ class LeaveBalanceApiClient { "P_SELECTED_RESP_ID": pSelectedResopID, "P_MENU_TYPE": "E", "P_TIME_END": null, - "P_TIME_START": null, + "P_TIME_START": null }; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.calculateAbsenceDuration!; }, url, postParams); } - Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID, {String? empID}) async { + Future> getAbsenceDffStructure(String pDescFlexContextCode, String pFunctionName, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}GET_ABSENCE_DFF_STRUCTURE"; - Map postParams = {"P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_FUNCTION_NAME": pFunctionName, "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": pSelectedResopID}; + Map postParams = { + "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, + "P_FUNCTION_NAME": pFunctionName, + "P_MENU_TYPE": "E", + "P_SELECTED_RESP_ID": pSelectedResopID, + }; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getAbsenceDffStructureList ?? []; @@ -79,7 +77,7 @@ class LeaveBalanceApiClient { Future validateAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = "", String? empID}) async { + {String comments = "", String? empID}) async { String url = "${ApiConsts.erpRest}VALIDATE_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -94,13 +92,11 @@ class LeaveBalanceApiClient { "P_SELECTED_RESP_ID": pSelectedResopID, "P_MENU_TYPE": "E", "P_TIME_END": null, - "P_TIME_START": null, + "P_TIME_START": null }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; @@ -109,7 +105,7 @@ class LeaveBalanceApiClient { Future submitAbsenceTransaction( String pDescFlexContextCode, String pFunctionName, int pAbsenceAttendanceTypeID, String pReplacementUserName, String pDateStart, String pDateEnd, int pSelectedResopID, Map data, - {String comments = "", String? empID}) async { + {String comments = "", String? empID}) async { String url = "${ApiConsts.erpRest}SUBMIT_ABSENCE_TRANSACTION"; Map postParams = { "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, @@ -124,13 +120,11 @@ class LeaveBalanceApiClient { "P_SELECTED_RESP_ID": pSelectedResopID, "P_MENU_TYPE": "E", "P_TIME_END": null, - "P_TIME_START": null, + "P_TIME_START": null }; postParams.addAll(data); postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.sumbitAbsenceTransactionList!; @@ -147,18 +141,11 @@ class LeaveBalanceApiClient { }, url, postParams); } - Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID,{String? empID}) async { + Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}START_ABSENCE_APPROVAL_PROCESS"; - Map postParams = { - "P_TRANSACTION_ID": pTransactionID, - "P_SELECTED_RESP_ID": pSelectedResopID, - "P_COMMENTS": comments, - "P_MENU_TYPE": "E", - }; + Map postParams = {"P_TRANSACTION_ID": pTransactionID, "P_SELECTED_RESP_ID": pSelectedResopID, "P_COMMENTS": comments, "P_MENU_TYPE": "E", 'P_SELECTED_EMPLOYEE_NUMBER': empID}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.startAbsenceApprovalProccess!; diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart index 0f078a2..78742a3 100644 --- a/lib/api/my_attendance_api_client.dart +++ b/lib/api/my_attendance_api_client.dart @@ -22,11 +22,7 @@ class MyAttendanceApiClient { String url = "${ApiConsts.erpRest}GET_EIT_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName}; postParams.addAll(AppState().postParamsJson); - // postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - // AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getEITTransactionList ?? []; @@ -37,9 +33,7 @@ class MyAttendanceApiClient { String url = "${ApiConsts.erpRest}GET_EIT_DFF_STRUCTURE"; Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName}; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; @@ -53,16 +47,14 @@ class MyAttendanceApiClient { "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 1000, "P_PAGE_NUM": 1, - "P_PARENT_VALUE": empID!.isNotEmpty ? parentValue : null, + "P_PARENT_VALUE": empID != null ? parentValue : null, "P_SEGMENT_NAME": pSegmentName, "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_DESC_FLEX_NAME": pDescFlexName, "GetValueSetValuesTBL": list, }; postParams.addAll(AppState().postParamsJson); - if (empID.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.getValueSetValuesList ?? []; @@ -81,9 +73,7 @@ class MyAttendanceApiClient { "GetValueSetValuesTBL": list, }; postParams.addAll(AppState().postParamsJson); - if (empID != null && empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); @@ -100,9 +90,7 @@ class MyAttendanceApiClient { "EITTransactionTBL": list, }; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); @@ -120,9 +108,7 @@ class MyAttendanceApiClient { "EITTransactionTBLModel": list, }; postParams.addAll(AppState().postParamsJson); - if (empID!.isNotEmpty) { - postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - } + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.submitEITTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index c147ea3..52d0407 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index 5ef03f4..71404a9 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -4,7 +4,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -25,8 +24,7 @@ import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; class AddLeaveBalanceScreen extends StatefulWidget { - final String selectedEmp; - AddLeaveBalanceScreen({this.selectedEmp = '', Key? key}) : super(key: key); + AddLeaveBalanceScreen({Key? key}) : super(key: key); @override _AddLeaveBalanceScreenState createState() { @@ -44,15 +42,21 @@ class _AddLeaveBalanceScreenState extends State { int? totalDays; String comment = ""; ReplacementList? selectedReplacementEmployee; - dynamic dynamicParams; - String selectedEmp = ""; + String? selectedEmp; DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); @override void initState() { super.initState(); - //getAbsenceAttendanceTypes(); + + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + var dynamicParam = ModalRoute.of(context)!.settings.arguments; + if (dynamicParam != null) { + selectedEmp = dynamicParam.toString(); + } + getAbsenceAttendanceTypes(); + }); } void getAbsenceAttendanceTypes() async { @@ -85,7 +89,6 @@ class _AddLeaveBalanceScreenState extends State { Utils.showLoading(context); CalculateAbsenceDuration duration = await LeaveBalanceApiClient() .calculateAbsenceDuration(selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, Utils.getMonthNamedFormat(startDateTime!), Utils.getMonthNamedFormat(endDateTime!), -999, empID: selectedEmp); - totalDays = duration.pABSENCEDAYS?.toInt(); Utils.hideLoading(context); setState(() {}); @@ -95,56 +98,56 @@ class _AddLeaveBalanceScreenState extends State { } } - void validateAbsenceTransaction(selectedID) async { + void validateAbsenceTransaction(String? selectedID) async { try { - Utils.showLoading(context); - Map dffDataMap = {}; - for (int i = 1; i <= 20; i++) { - dffDataMap["P_ATTRIBUTE$i"] = null; - for (int dffIndex = 0; dffIndex < getabsenceDffStructureList.length; dffIndex++) { - if ("ATTRIBUTE$i" == getabsenceDffStructureList[dffIndex].aPPLICATIONCOLUMNNAME) { - if (getabsenceDffStructureList[dffIndex].fORMATTYPE == "X") { - dffDataMap["P_ATTRIBUTE$i"] = - getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME != null ? Utils.formatDate(getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME!) : ""; - } else { - dffDataMap["P_ATTRIBUTE$i"] = getabsenceDffStructureList[dffIndex].eSERVICESDV?.pIDCOLUMNNAME; + Utils.showLoading(context); + Map dffDataMap = {}; + for (int i = 1; i <= 20; i++) { + dffDataMap["P_ATTRIBUTE$i"] = null; + for (int dffIndex = 0; dffIndex < getabsenceDffStructureList.length; dffIndex++) { + if ("ATTRIBUTE$i" == getabsenceDffStructureList[dffIndex].aPPLICATIONCOLUMNNAME) { + if (getabsenceDffStructureList[dffIndex].fORMATTYPE == "X") { + dffDataMap["P_ATTRIBUTE$i"] = + getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME != null ? Utils.formatDate(getabsenceDffStructureList[dffIndex].eSERVICESDV!.pIDCOLUMNNAME!) : ""; + } else { + dffDataMap["P_ATTRIBUTE$i"] = getabsenceDffStructureList[dffIndex].eSERVICESDV?.pIDCOLUMNNAME; + } + break; } - break; } } - } - await LeaveBalanceApiClient().validateAbsenceTransaction( - selectedAbsenceType!.dESCFLEXCONTEXTCODE!, - "HR_LOA_SS", - selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, - selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", - DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), - DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), - -999, - dffDataMap, - comments: comment, - empID: selectedEmp); + await LeaveBalanceApiClient().validateAbsenceTransaction( + selectedAbsenceType!.dESCFLEXCONTEXTCODE!, + "HR_LOA_SS", + selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, + selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", + DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), + DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), + -999, + dffDataMap, + comments: comment, + empID: selectedID); - SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( - selectedAbsenceType!.dESCFLEXCONTEXTCODE!, - "HR_LOA_SS", - selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, - selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", - DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), - DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), - -999, - dffDataMap, - comments: comment, - empID: selectedEmp); + SumbitAbsenceTransactionList submit = await LeaveBalanceApiClient().submitAbsenceTransaction( + selectedAbsenceType!.dESCFLEXCONTEXTCODE!, + "HR_LOA_SS", + selectedAbsenceType!.aBSENCEATTENDANCETYPEID!, + selectedReplacementEmployee != null ? selectedReplacementEmployee!.userName! : "", + DateUtil.getFormattedDate(startDateTime!, "MM/dd/yyyy"), + DateUtil.getFormattedDate(endDateTime!, "MM/dd/yyyy"), + -999, + dffDataMap, + comments: comment, + empID: selectedID); - Utils.hideLoading(context); + Utils.hideLoading(context); - var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance")); - if (res != null && res == true) { - Utils.showLoading(context); - } - await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); - Utils.hideLoading(context); + var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance")); + if (res != null && res == true) { + Utils.showLoading(context); + } + await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); + Utils.hideLoading(context); } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); @@ -158,16 +161,6 @@ class _AddLeaveBalanceScreenState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute.of(context)!.settings.arguments; - if (dynamicParams!= null && dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp = dynamicParams; - getAbsenceAttendanceTypes(); - } else { - getAbsenceAttendanceTypes(); - } - } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( @@ -187,13 +180,13 @@ class _AddLeaveBalanceScreenState extends State { isPopup: true, ), itemBuilder: (_) => >[ - for (int i = 0; i < absenceList.length; i++) PopupMenuItem(value: i, child: Text(absenceList[i].aBSENCEATTENDANCETYPENAME!)), + for (int i = 0; i < (absenceList?.length ?? 0); i++) PopupMenuItem(value: i, child: Text(absenceList![i].aBSENCEATTENDANCETYPENAME!)), ], onSelected: (int popupIndex) { - if (selectedAbsenceType == absenceList[popupIndex]) { + if (selectedAbsenceType == absenceList![popupIndex]) { return; } - selectedAbsenceType = absenceList[popupIndex]; + selectedAbsenceType = absenceList![popupIndex]; setState(() {}); getAbsenceDffStructure(); }, @@ -285,7 +278,7 @@ class _AddLeaveBalanceScreenState extends State { validateFieldData() ? null : () { - validateAbsenceTransaction(selectedEmp); + validateAbsenceTransaction(selectedEmp!.isEmpty ? null : selectedEmp); }, ).insideContainer ], diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 8c346bc..881828e 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -1,7 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -14,8 +13,7 @@ import 'package:mohem_flutter_app/widgets/balances_dashboard_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; class LeaveBalance extends StatefulWidget { - final String selectedEmp; - LeaveBalance({this.selectedEmp = '', Key? key}) : super(key: key); + LeaveBalance({Key? key}) : super(key: key); @override _LeaveBalanceState createState() { @@ -27,13 +25,18 @@ class _LeaveBalanceState extends State { List? absenceTransList; DateTime accrualDateTime = DateTime.now(); - dynamic dynamicParams; - String selectedEmp = ""; + String? employeeId; @override void initState() { super.initState(); - absenceTransList = []; + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + var dynamicParam = ModalRoute.of(context)!.settings.arguments; + if (dynamicParam != null) { + employeeId = dynamicParam.toString(); + } + getAbsenceTransactions(); + }); } @override @@ -44,7 +47,7 @@ class _LeaveBalanceState extends State { void getAbsenceTransactions() async { try { Utils.showLoading(context); - absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999, empID: selectedEmp); + absenceTransList = await LeaveBalanceApiClient().getAbsenceTransactions(-999, employeeId); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -55,63 +58,53 @@ class _LeaveBalanceState extends State { @override Widget build(BuildContext context) { - if (dynamicParams == null) { - dynamicParams = ModalRoute.of(context)!.settings.arguments; - if (dynamicParams!= null && dynamicParams.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams; - selectedEmp = dynamicParams; - getAbsenceTransactions(); - } else { - getAbsenceTransactions(); - } - } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( context, title: LocaleKeys.leaveBalance.tr(), ), - body: ListView( - physics: const BouncingScrollPhysics(), - padding: const EdgeInsets.all(21), - children: [ - BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true, selectedEmp), - 12.height, - absenceTransList == null - ? const SizedBox() - : (absenceTransList!.isEmpty - ? Utils.getNoDataWidget(context).paddingOnly(top: 50) - : ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - padding: EdgeInsets.zero, - itemBuilder: (cxt, int index) => Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - ItemDetailGrid( - ItemDetailViewCol(LocaleKeys.startDateT.tr(), absenceTransList![index].sTARTDATE ?? ""), - ItemDetailViewCol(LocaleKeys.endDateT.tr(), absenceTransList![index].eNDDATE ?? ""), - ), - ItemDetailGrid( - ItemDetailViewCol(LocaleKeys.absenceType.tr(), absenceTransList![index].aBSENCETYPE ?? ""), - ItemDetailViewCol(LocaleKeys.absenceCategory.tr(), absenceTransList![index].aBSENCECATEGORY ?? ""), - ), - ItemDetailGrid( - ItemDetailViewCol(LocaleKeys.days.tr(), absenceTransList![index].aBSENCEDAYS?.toString() ?? ""), - ItemDetailViewCol(LocaleKeys.hours.tr(), absenceTransList![index].aBSENCEHOURS?.toString() ?? ""), - ), - ItemDetailGrid( - ItemDetailViewCol(LocaleKeys.approvalStatus.tr(), absenceTransList![index].aPPROVALSTATUS ?? ""), - ItemDetailViewCol(LocaleKeys.absenceStatus.tr(), absenceTransList![index].aBSENCESTATUS ?? ""), - isItLast: true, - ), - ], - ).objectContainerView(), - separatorBuilder: (cxt, index) => 12.height, - itemCount: absenceTransList!.length)), - ], - ), + body: absenceTransList == null + ? const SizedBox() + : (absenceTransList!.isEmpty + ? Utils.getNoDataWidget(context).paddingOnly(top: 50) + : ListView( + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.all(21), + children: [ + BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true, selectedEmp: employeeId), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: EdgeInsets.zero, + itemBuilder: (cxt, int index) => Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.startDateT.tr(), absenceTransList![index].sTARTDATE ?? ""), + ItemDetailViewCol(LocaleKeys.endDateT.tr(), absenceTransList![index].eNDDATE ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.absenceType.tr(), absenceTransList![index].aBSENCETYPE ?? ""), + ItemDetailViewCol(LocaleKeys.absenceCategory.tr(), absenceTransList![index].aBSENCECATEGORY ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.days.tr(), absenceTransList![index].aBSENCEDAYS?.toString() ?? ""), + ItemDetailViewCol(LocaleKeys.hours.tr(), absenceTransList![index].aBSENCEHOURS?.toString() ?? ""), + ), + ItemDetailGrid( + ItemDetailViewCol(LocaleKeys.approvalStatus.tr(), absenceTransList![index].aPPROVALSTATUS ?? ""), + ItemDetailViewCol(LocaleKeys.absenceStatus.tr(), absenceTransList![index].aBSENCESTATUS ?? ""), + isItLast: true, + ), + ], + ).objectContainerView(), + separatorBuilder: (cxt, index) => 12.height, + itemCount: absenceTransList!.length), + ], + )), floatingActionButton: Container( height: 54, width: 54, @@ -124,7 +117,7 @@ class _LeaveBalanceState extends State { ), child: const Icon(Icons.add, color: Colors.white, size: 30), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: selectedEmp ?? ''); + Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: employeeId); }), ); } diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 228f1d6..9c0c51b 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -5,7 +5,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -431,9 +430,6 @@ class _DynamicInputScreenState extends State { Widget build(BuildContext context) { if (dynamicParams == null) { dynamicParams = ModalRoute.of(context)!.settings.arguments as DynamicListViewParams; - if (dynamicParams!.selectedEmp.isNotEmpty) { - AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams!.selectedEmp; - } getTransactionsStructure(); } return Scaffold( @@ -627,12 +623,15 @@ class _DynamicInputScreenState extends State { ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ if (model.rEADONLY != "Y") - for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(value: i, child: Column( - children: [ - Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), - const PopupMenuDivider(), - ], - )), + for (int i = 0; i < model.eSERVICESVS!.length; i++) + PopupMenuItem( + value: i, + child: Column( + children: [ + Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), + const PopupMenuDivider(), + ], + )), ], onSelected: (int popipIndex) async { ESERVICESDV eservicesdv = ESERVICESDV( diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart index 68727e5..a9c9694 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart @@ -21,10 +21,10 @@ class DynamicListViewParams { bool isUpdate; List? collectionNotificationList; - final String selectedEmp; + final String? selectedEmp; DynamicListViewParams(this.title, this.dynamicId, - {this.selectedEmp = '', this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.isUpdate = false, this.collectionNotificationList}); + {this.selectedEmp, this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.isUpdate = false, this.collectionNotificationList}); } class DynamicListViewScreen extends StatefulWidget { @@ -54,7 +54,6 @@ class _DynamicListViewScreenState extends State { getEITTransactionList?.forEach((element) { element.collectionTransaction = element.collectionTransaction?.where((elemen) => elemen.dISPLAYFLAG == "Y").toList() ?? []; }); - getEITTransactionList = getEITTransactionList?.where((element) => element.collectionTransaction?.isNotEmpty ?? false).toList() ?? []; Utils.hideLoading(context); setState(() {}); @@ -94,7 +93,7 @@ class _DynamicListViewScreenState extends State { padding: const EdgeInsets.all(21), children: [ // HMG_TKT_NEW_EIT_SS Id used for ticket balance dashboard - if (isTicketRequest) ...[const BalancesDashboardWidget("Current Ticket Balance", false, ""), 12.height], + if (isTicketRequest) ...[const BalancesDashboardWidget("Current Ticket Balance", false, showLoading: false), 12.height], getEITTransactionList == null ? const SizedBox() : (getEITTransactionList!.isEmpty diff --git a/lib/ui/my_attendance/services_menu_list_screen.dart b/lib/ui/my_attendance/services_menu_list_screen.dart index 7a61029..097a63a 100644 --- a/lib/ui/my_attendance/services_menu_list_screen.dart +++ b/lib/ui/my_attendance/services_menu_list_screen.dart @@ -17,9 +17,9 @@ import 'package:provider/provider.dart'; class ServicesMenuListScreenParams { final String title; final List list; - final String selectedEmp; + final String? selectedEmp; GetEmployeeSubordinatesList? getEmployeeSubordinates; - ServicesMenuListScreenParams(this.title, this.list, {this.selectedEmp =''}); + ServicesMenuListScreenParams(this.title, this.list, {this.selectedEmp}); } class ServicesMenuListScreen extends StatelessWidget { @@ -54,11 +54,12 @@ class ServicesMenuListScreen extends StatelessWidget { } return; } else if (servicesMenuData.list[index].requestType == "ABSENCE") { - Navigator.pushNamed(context, AppRoutes.leaveBalance, arguments: servicesMenuData?.selectedEmp ??''); + Navigator.pushNamed(context, AppRoutes.leaveBalance, arguments: servicesMenuData.selectedEmp); return; } if (servicesMenuData.list[index].requestType == "EIT") { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(servicesMenuData.list[index].prompt!, servicesMenuData.list[index].functionName!, selectedEmp: servicesMenuData.selectedEmp)); + Navigator.pushNamed(context, AppRoutes.dynamicScreen, + arguments: DynamicListViewParams(servicesMenuData.list[index].prompt!, servicesMenuData.list[index].functionName!, selectedEmp: servicesMenuData.selectedEmp)); } else { if (servicesMenuData.list[index].requestType == "TERMINATION") { Navigator.pushNamed(context, AppRoutes.endEmploymentScreen, diff --git a/lib/ui/my_team/create_request.dart b/lib/ui/my_team/create_request.dart index 2b3e063..94ac415 100644 --- a/lib/ui/my_team/create_request.dart +++ b/lib/ui/my_team/create_request.dart @@ -68,7 +68,8 @@ class _CreateRequestState extends State { void handleOnPress(context, Menus menu) { if (menu.menuEntry.menuEntryType == "FUNCTION") { if (menu.menuEntry.requestType == "EIT") { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER ?? '')); + Navigator.pushNamed(context, AppRoutes.dynamicScreen, + arguments: DynamicListViewParams(menu.menuEntry.prompt!, menu.menuEntry.functionName!, selectedEmp: getEmployeeSubordinates?.eMPLOYEENUMBER ?? '')); } else {} } else { Navigator.pushNamed(context, AppRoutes.servicesMenuListScreen, diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index 9689de4..aaac793 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -31,9 +31,10 @@ class BalancesDashboardWidget extends StatefulWidget { final String title; final List chartModelList; final bool isLeaveBalance; - final String selectedEmp; + final String? selectedEmp; + final bool showLoading; - const BalancesDashboardWidget(this.title, this.isLeaveBalance, this.selectedEmp, {Key? key, this.chartModelList = const []}) : super(key: key); + const BalancesDashboardWidget(this.title, this.isLeaveBalance, {Key? key, this.selectedEmp, this.showLoading = true, this.chartModelList = const []}) : super(key: key); @override _BalancesDashboardWidgetState createState() { @@ -46,14 +47,12 @@ class _BalancesDashboardWidgetState extends State { late DateTime accrualDateTime; GetAccrualBalancesList? leaveBalanceAccrual; List? ticketBalanceAccrualList; - dynamic dynamicParams; - String selectedEmp = ""; @override void initState() { super.initState(); accrualDateTime = DateTime.now(); - changeAccrualDate(); + changeAccrualDate(widget.showLoading); } @override @@ -61,9 +60,9 @@ class _BalancesDashboardWidgetState extends State { super.dispose(); } - void changeAccrualDate() async { + void changeAccrualDate(bool showLoading) async { try { - // Utils.showLoading(context); + if (showLoading) Utils.showLoading(context); List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy").format(accrualDateTime), empID: widget.selectedEmp); if (accrualList.isNotEmpty) { if (widget.isLeaveBalance) { @@ -80,10 +79,10 @@ class _BalancesDashboardWidgetState extends State { ]; } } - // Utils.hideLoading(context); + if (showLoading) Utils.hideLoading(context); setState(() {}); } catch (ex) { - Utils.hideLoading(context); + if (showLoading) Utils.hideLoading(context); Utils.handleException(ex, context, null); } } @@ -125,7 +124,7 @@ class _BalancesDashboardWidgetState extends State { DateTime selectedDate = await Utils.selectDate(context, accrualDateTime); if (selectedDate != accrualDateTime) { accrualDateTime = selectedDate; - changeAccrualDate(); + changeAccrualDate(true); } }), ], From 3a6d1c3273bb3c09b5ec25b64ae3db5865b1bec2 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 21 Dec 2022 15:28:45 +0300 Subject: [PATCH 245/302] leave balance issues fixed-2. --- lib/api/leave_balance_api_client.dart | 4 +- lib/api/worklist/worklist_api_client.dart | 2 +- .../add_leave_balance_screen.dart | 5 +- lib/ui/misc/request_submit_screen.dart | 16 ++-- .../dynamic_screens/dynamic_input_screen.dart | 8 +- lib/ui/my_team/employee_details.dart | 89 +++++++++---------- 6 files changed, 56 insertions(+), 68 deletions(-) diff --git a/lib/api/leave_balance_api_client.dart b/lib/api/leave_balance_api_client.dart index ae855ee..e0330fb 100644 --- a/lib/api/leave_balance_api_client.dart +++ b/lib/api/leave_balance_api_client.dart @@ -143,9 +143,9 @@ class LeaveBalanceApiClient { Future startAbsenceApprovalProcess(int pTransactionID, String comments, int pSelectedResopID, {String? empID}) async { String url = "${ApiConsts.erpRest}START_ABSENCE_APPROVAL_PROCESS"; - Map postParams = {"P_TRANSACTION_ID": pTransactionID, "P_SELECTED_RESP_ID": pSelectedResopID, "P_COMMENTS": comments, "P_MENU_TYPE": "E", 'P_SELECTED_EMPLOYEE_NUMBER': empID}; + Map postParams = {"P_TRANSACTION_ID": pTransactionID, "P_SELECTED_RESP_ID": pSelectedResopID, "P_COMMENTS": comments, "P_MENU_TYPE": "E"}; postParams.addAll(AppState().postParamsJson); - + if (empID != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = empID; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); return responseData.startAbsenceApprovalProccess!; diff --git a/lib/api/worklist/worklist_api_client.dart b/lib/api/worklist/worklist_api_client.dart index dcbb415..82b865c 100644 --- a/lib/api/worklist/worklist_api_client.dart +++ b/lib/api/worklist/worklist_api_client.dart @@ -157,7 +157,7 @@ class WorkListApiClient { "P_PAGE_NUM": 1, }; postParams.addAll(AppState().postParamsJson); - postParams["P_SELECTED_EMPLOYEE_NUMBER"] = selectedEmployeeNumber; + if (selectedEmployeeNumber != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = selectedEmployeeNumber; return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.memberInformationList![0]; diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index 71404a9..9eefc62 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -142,7 +142,8 @@ class _AddLeaveBalanceScreenState extends State { Utils.hideLoading(context); - var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance")); + var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance", selectedEmployeeID: selectedID)); if (res != null && res == true) { Utils.showLoading(context); } @@ -278,7 +279,7 @@ class _AddLeaveBalanceScreenState extends State { validateFieldData() ? null : () { - validateAbsenceTransaction(selectedEmp!.isEmpty ? null : selectedEmp); + validateAbsenceTransaction(selectedEmp); }, ).insideContainer ], diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index 170e288..50096c7 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -31,13 +31,13 @@ class RequestSubmitScreenParams { int transactionId; String pItemId; String approvalFlag; + String? selectedEmployeeID; - RequestSubmitScreenParams(this.title, this.transactionId, this.pItemId, this.approvalFlag); + RequestSubmitScreenParams(this.title, this.transactionId, this.pItemId, this.approvalFlag, {this.selectedEmployeeID}); } class RequestSubmitScreen extends StatefulWidget { - final String selectedEmp; - RequestSubmitScreen({this.selectedEmp ='',Key? key}) : super(key: key); + RequestSubmitScreen({Key? key}) : super(key: key); @override _RequestSubmitScreenState createState() { @@ -53,7 +53,7 @@ class _RequestSubmitScreenState extends State { List attachmentFiles = []; List attachments = []; dynamic dynamicParams; - String selectedEmp =""; + String selectedEmp = ""; @override void initState() { @@ -64,7 +64,6 @@ class _RequestSubmitScreenState extends State { try { Utils.showLoading(context); approverList = await MyAttendanceApiClient().getApproversList("SSHRMS", params!.transactionId); - Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -123,12 +122,7 @@ class _RequestSubmitScreenState extends State { params!.transactionId, ); } else if (params!.approvalFlag == 'add_leave_balance') { - await LeaveBalanceApiClient().startAbsenceApprovalProcess( - params!.transactionId, - comments.text, - -999, - empID: widget.selectedEmp - ); + await LeaveBalanceApiClient().startAbsenceApprovalProcess(params!.transactionId, comments.text, -999, empID: params!.selectedEmployeeID); } else if (params!.approvalFlag == 'eit') { await MyAttendanceApiClient().startEitApprovalProcess( "SUBMIT", diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 9c0c51b..fe7a6f3 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -43,7 +43,6 @@ class _DynamicInputScreenState extends State { void getTransactionsStructure() async { try { Utils.showLoading(context); - genericResponseModel = await MyAttendanceApiClient().getEitDffStructure(dynamicParams!.dynamicId, dynamicParams!.selectedEmp); dESCFLEXCONTEXTCODE = genericResponseModel!.pDESCFLEXCONTEXTCODE ?? ""; descFlexConTextTitle = genericResponseModel!.pDESCFLEXCONTEXTNAME ?? ""; @@ -91,9 +90,8 @@ class _DynamicInputScreenState extends State { values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); - genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp ?? ''); - SubmitEITTransactionList submitEITTransactionList = - await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp ?? ''); + genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp); + SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp); Utils.hideLoading(context); await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); @@ -130,7 +128,7 @@ class _DynamicInputScreenState extends State { .toList(); List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values, - empID: dynamicParams!.selectedEmp ?? '', parentValue: structureList.eSERVICESDV!.pVALUECOLUMNNAME); + empID: dynamicParams!.selectedEmp, parentValue: structureList.eSERVICESDV!.pVALUECOLUMNNAME); List abc = genericResponseModel?.getEITDFFStructureList ?? []; getEitDffStructureList = abc; int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); diff --git a/lib/ui/my_team/employee_details.dart b/lib/ui/my_team/employee_details.dart index 9fc0070..1412641 100644 --- a/lib/ui/my_team/employee_details.dart +++ b/lib/ui/my_team/employee_details.dart @@ -67,23 +67,25 @@ class _EmployeeDetailsState extends State { } return Scaffold( - extendBody: true, - backgroundColor: MyColors.lightGreyEFColor, - body: Stack(children: [ - getEmployeeSubordinates!.eMPLOYEEIMAGE != null ? - Container( - height: 200, - margin: EdgeInsets.only(top: 30), - decoration: BoxDecoration(image: DecorationImage(image: MemoryImage(Utils.dataFromBase64String(getEmployeeSubordinates!.eMPLOYEEIMAGE!)), fit: BoxFit.cover)), - child: new BackdropFilter( - filter: new ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: new Container( - decoration: new BoxDecoration(color: Colors.white.withOpacity(0.0)), - ), - ), - ) : Container( - decoration: BoxDecoration(color: Colors.white.withOpacity(0.0)), - ), + extendBody: true, + backgroundColor: MyColors.lightGreyEFColor, + body: Stack( + children: [ + getEmployeeSubordinates!.eMPLOYEEIMAGE != null + ? Container( + height: 200, + margin: EdgeInsets.only(top: 30), + decoration: BoxDecoration(image: DecorationImage(image: MemoryImage(Utils.dataFromBase64String(getEmployeeSubordinates!.eMPLOYEEIMAGE!)), fit: BoxFit.cover)), + child: new BackdropFilter( + filter: new ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: new Container( + decoration: new BoxDecoration(color: Colors.white.withOpacity(0.0)), + ), + ), + ) + : Container( + decoration: BoxDecoration(color: Colors.white.withOpacity(0.0)), + ), SingleChildScrollView( scrollDirection: Axis.vertical, child: Column( @@ -95,15 +97,13 @@ class _EmployeeDetailsState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ - IconButton( - onPressed: () { - Navigator.pop(context); - }, - icon: Icon( - Icons.arrow_back_ios, - color: Colors.white, - ), - ), + CircleAvatar( + radius: 18, + backgroundColor: Colors.black.withOpacity(.21), + child: const Icon(Icons.arrow_back_ios_rounded, color: Colors.white, size: 18).paddingOnly(right: 4), + ).onPress(() { + Navigator.pop(context); + }), ], ), ), @@ -111,7 +111,9 @@ class _EmployeeDetailsState extends State { ], ), ) - ])); + ], + ), + ); } Widget myTeamInfo() { @@ -202,16 +204,8 @@ class _EmployeeDetailsState extends State { } Widget ProfileImage() => getEmployeeSubordinates?.eMPLOYEEIMAGE == null - ? SvgPicture.asset( - "assets/images/user.svg", - height: 68, - width: 68, - ) - : CircleAvatar( - radius: 68, - backgroundImage: MemoryImage(Utils.getPostBytes(getEmployeeSubordinates?.eMPLOYEEIMAGE)), - backgroundColor: Colors.black, - ); + ? SvgPicture.asset("assets/images/user.svg", height: 68, width: 68) + : CircleAvatar(radius: 68, backgroundImage: MemoryImage(Utils.getPostBytes(getEmployeeSubordinates?.eMPLOYEEIMAGE)), backgroundColor: Colors.black); void setMenu() { menu = [ @@ -256,16 +250,17 @@ class _EmployeeDetailsState extends State { child: Column( children: [ Text(LocaleKeys.addFavoriteList).tr(namedArgs: {'name': '${getEmployeeSubordinates!.eMPLOYEENAME}'}), - getEmployeeSubordinates!.eMPLOYEEIMAGE == null - ? SvgPicture.asset( - "assets/images/user.svg", - height: 68, - width: 68,) - : CircleAvatar( - radius: 68, - backgroundImage: MemoryImage(Utils.dataFromBase64String(getEmployeeSubordinates!.eMPLOYEEIMAGE!)), - backgroundColor: Colors.black, - ), + getEmployeeSubordinates!.eMPLOYEEIMAGE == null + ? SvgPicture.asset( + "assets/images/user.svg", + height: 68, + width: 68, + ) + : CircleAvatar( + radius: 68, + backgroundImage: MemoryImage(Utils.dataFromBase64String(getEmployeeSubordinates!.eMPLOYEEIMAGE!)), + backgroundColor: Colors.black, + ), // Image.memory( // Utils.getPostBytes( // getEmployeeSubordinates!.eMPLOYEEIMAGE ?? "", From abd1fa93756ea164fae672f26dd07a26258f0433 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 21 Dec 2022 16:30:02 +0300 Subject: [PATCH 246/302] chat voice message implementation --- assets/icons/chat/aac.svg | 54 ++++ assets/icons/chat/mp3.svg | 57 ++++ lib/api/chat/chat_api_client.dart | 19 +- .../chat/get_single_user_chat_list_model.dart | 58 ++-- lib/provider/chat_provider_model.dart | 269 +++++++++++++++--- lib/ui/chat/chat_bubble.dart | 134 +++++++-- lib/ui/chat/chat_detailed_screen.dart | 8 +- 7 files changed, 503 insertions(+), 96 deletions(-) create mode 100644 assets/icons/chat/aac.svg create mode 100644 assets/icons/chat/mp3.svg diff --git a/assets/icons/chat/aac.svg b/assets/icons/chat/aac.svg new file mode 100644 index 0000000..61d50bb --- /dev/null +++ b/assets/icons/chat/aac.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/icons/chat/mp3.svg b/assets/icons/chat/mp3.svg new file mode 100644 index 0000000..ed8e31e --- /dev/null +++ b/assets/icons/chat/mp3.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 2f08f2f..46dcce7 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -96,6 +96,7 @@ class ChatApiClient { } return response; } catch (e) { + getSingleUserChatHistory(senderUID: senderUID, receiverUID: receiverUID, loadMore: loadMore, paginationVal: paginationVal); throw e; } } @@ -119,7 +120,6 @@ class ChatApiClient { if (!kReleaseMode) { logger.i("res: " + response.body); } - fav.FavoriteChatUser favoriteChatUser = fav.FavoriteChatUser.fromRawJson(response.body); return favoriteChatUser; } catch (e) { @@ -128,29 +128,28 @@ class ChatApiClient { } } - Future uploadMedia(String userId, File file) async { + Future uploadMedia(String userId, File file) async { + print("${ApiConsts.chatMediaImageUploadUrl}upload"); + print(AppState().chatDetails!.response!.token); dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatMediaImageUploadUrl}upload')); request.fields.addAll({'userId': userId, 'fileSource': '1'}); request.files.add(await MultipartFile.fromPath('files', file.path)); request.headers.addAll({'Authorization': 'Bearer ${AppState().chatDetails!.response!.token}'}); StreamedResponse response = await request.send(); - if (!kReleaseMode) {} - return response; + String data = await response.stream.bytesToString(); + if (!kReleaseMode) { + logger.i("res: " + data); + } + return jsonDecode(data); } // Download File For Chat - Future downloadURL({required String fileName, required String fileTypeDescription}) async { - print(fileName); - print(fileTypeDescription); - print("${ApiConsts.chatMediaImageUploadUrl}download"); - print(AppState().chatDetails!.response!.token); Response response = await ApiClient().postJsonForResponse( "${ApiConsts.chatMediaImageUploadUrl}download", {"fileType": fileTypeDescription, "fileName": fileName, "fileSource": 1}, token: AppState().chatDetails!.response!.token, ); - Uint8List data = Uint8List.fromList(response.bodyBytes); return data; } diff --git a/lib/models/chat/get_single_user_chat_list_model.dart b/lib/models/chat/get_single_user_chat_list_model.dart index 246a515..c585af7 100644 --- a/lib/models/chat/get_single_user_chat_list_model.dart +++ b/lib/models/chat/get_single_user_chat_list_model.dart @@ -32,7 +32,8 @@ class SingleUserChatModel { this.userChatReplyResponse, this.isReplied, this.isImageLoaded, - this.image}); + this.image, + this.voice}); int? userChatHistoryId; int? userChatHistoryLineId; @@ -58,6 +59,7 @@ class SingleUserChatModel { bool? isReplied; bool? isImageLoaded; Uint8List? image; + Uint8List? voice; factory SingleUserChatModel.fromJson(Map json) => SingleUserChatModel( userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], @@ -83,7 +85,8 @@ class SingleUserChatModel { userChatReplyResponse: json["userChatReplyResponse"] == null ? null : UserChatReplyResponse.fromJson(json["userChatReplyResponse"]), isReplied: false, isImageLoaded: false, - image: null); + image: null, + voice: null); Map toJson() => { "userChatHistoryId": userChatHistoryId == null ? null : userChatHistoryId, @@ -143,19 +146,19 @@ class FileTypeResponse { } class UserChatReplyResponse { - UserChatReplyResponse({ - this.userChatHistoryId, - this.chatEventId, - this.contant, - this.contantNo, - this.fileTypeId, - this.createdDate, - this.targetUserId, - this.targetUserName, - this.fileTypeResponse, - this.isImageLoaded, - this.image, - }); + UserChatReplyResponse( + {this.userChatHistoryId, + this.chatEventId, + this.contant, + this.contantNo, + this.fileTypeId, + this.createdDate, + this.targetUserId, + this.targetUserName, + this.fileTypeResponse, + this.isImageLoaded, + this.image, + this.voice}); int? userChatHistoryId; int? chatEventId; @@ -168,19 +171,22 @@ class UserChatReplyResponse { FileTypeResponse? fileTypeResponse; bool? isImageLoaded; Uint8List? image; + Uint8List? voice; factory UserChatReplyResponse.fromJson(Map json) => UserChatReplyResponse( - userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], - chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], - contant: json["contant"] == null ? null : json["contant"], - contantNo: json["contantNo"] == null ? null : json["contantNo"], - fileTypeId: json["fileTypeId"], - createdDate: json["createdDate"] == null ? null : DateTime.parse(json["createdDate"]), - targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], - targetUserName: json["targetUserName"] == null ? null : json["targetUserName"], - fileTypeResponse: json["fileTypeResponse"] == null ? null : FileTypeResponse.fromJson(json["fileTypeResponse"]), - isImageLoaded: false, - image: null); + userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], + chatEventId: json["chatEventId"] == null ? null : json["chatEventId"], + contant: json["contant"] == null ? null : json["contant"], + contantNo: json["contantNo"] == null ? null : json["contantNo"], + fileTypeId: json["fileTypeId"], + createdDate: json["createdDate"] == null ? null : DateTime.parse(json["createdDate"]), + targetUserId: json["targetUserId"] == null ? null : json["targetUserId"], + targetUserName: json["targetUserName"] == null ? null : json["targetUserName"], + fileTypeResponse: json["fileTypeResponse"] == null ? null : FileTypeResponse.fromJson(json["fileTypeResponse"]), + isImageLoaded: false, + image: null, + voice: null, + ); Map toJson() => { "userChatHistoryId": userChatHistoryId == null ? null : userChatHistoryId, diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 4e1d421..974bc30 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -85,12 +85,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void registerEvents() { chatHubConnection.on("OnUpdateUserStatusAsync", changeStatus); // chatHubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); - // hubConnection.on("OnSeenChatUserAsync", onChatSeen); + chatHubConnection.on("OnSubmitChatAsync", OnSubmitChatAsync); chatHubConnection.on("OnUserTypingAsync", onUserTyping); chatHubConnection.on("OnUserCountAsync", userCountAsync); - // hubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); + // chatHubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); chatHubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); chatHubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); + print("Alll Registered"); } void getUserRecentChats() async { @@ -107,9 +108,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (favUList.response != null && recentChat.response != null) { favUsersList = favUList.response!; favUsersList.sort( - (ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo( - b.userName!.toLowerCase(), - ), + (ChatUser a, ChatUser b) => a.userName!.toLowerCase().compareTo(b.userName!.toLowerCase()), ); for (dynamic user in recentChat.response!) { for (dynamic favUser in favUList.response!) { @@ -230,16 +229,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future uploadAttachments(String userId, File file) async { dynamic result; try { - StreamedResponse response = await ChatApiClient().uploadMedia(userId, file); - if (response.statusCode == 200) { - result = jsonDecode(await response.stream.bytesToString()); + Object? response = await ChatApiClient().uploadMedia(userId, file); + if (response != null) { + result = response; } else { result = []; } } catch (e) { throw e; } - return result; } @@ -365,6 +363,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ChatUser( id: data.first.currentUserId, userName: data.first.currentUserName, + email: data.first.currentUserEmail, unreadMessageCount: 0, isImageLoading: false, image: chatImages!.first.profilePicture ?? "", @@ -404,6 +403,28 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { notifyListeners(); } + void OnSubmitChatAsync(List? parameters) { + logger.d(parameters); + List data = [], temp = []; + for (dynamic msg in parameters!) { + data = getSingleUserChatModel(jsonEncode(msg)); + temp = getSingleUserChatModel(jsonEncode(msg)); + data.first.targetUserId = temp.first.currentUserId; + data.first.targetUserName = temp.first.currentUserName; + data.first.targetUserEmail = temp.first.currentUserEmail; + data.first.currentUserId = temp.first.targetUserId; + data.first.currentUserName = temp.first.targetUserName; + data.first.currentUserEmail = temp.first.targetUserEmail; + } + if (isChatScreenActive && data.first.currentUserId == receiverID) { + int index = userChatHistory.indexWhere((SingleUserChatModel element) => element.userChatHistoryId == 0); + logger.d(index); + userChatHistory[index] = data.first; + } + + notifyListeners(); + } + void sort() { searchedChats!.sort( (ChatUser a, ChatUser b) => b.unreadMessageCount!.compareTo(a.unreadMessageCount!), @@ -454,6 +475,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return 2; case ".rar": return 2; + case ".aac": + return 13; + case ".mp3": + return 14; default: return 0; } @@ -487,6 +512,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return "application/octet-stream"; case ".rar": return "application/octet-stream"; + case ".aac": + return "audio/aac"; + case ".mp3": + return "audio/mp3"; default: return ""; } @@ -501,11 +530,13 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { required bool isAttachment, required bool isReply, Uint8List? image, + Uint8List? voice, required bool isImageLoaded}) async { Uuid uuid = const Uuid(); String contentNo = uuid.v4(); String msg = message.text; SingleUserChatModel data = SingleUserChatModel( + userChatHistoryId: 0, chatEventId: chatEventId, chatSource: 1, contant: msg, @@ -530,7 +561,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { : null, image: image, isImageLoaded: isImageLoaded, + voice: voice, ); + print("Model data---------------------------"); + logger.d(data.toJson()); userChatHistory.insert(0, data); isFileSelected = false; isMsgReply = false; @@ -569,9 +603,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isReply: false, isImageLoaded: true, image: selectedFile.readAsBytesSync()); - } // normal attachemnt msg + } if (!isFileSelected && isMsgReply) { - print("Normal Text To Text Reply"); + if (kDebugMode) { + print("Normal Text To Text Reply"); + } if (message.text == null || message.text.isEmpty) { return; } @@ -723,6 +759,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return "assets/icons/chat/zip.svg"; case ".rar": return "assets/icons/chat/zip.svg"; + case ".aac": + return "assets/icons/chat/aac.svg"; + case ".mp3": + return "assets/icons/chat/zip.mp3"; default: return "assets/images/thumb.svg"; } @@ -889,6 +929,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String dirPath = '${appDocumentsDirectory.path}/chat_images'; if (!await Directory(dirPath).exists()) { await Directory(dirPath).create(); + await File('$dirPath/.nomedia').create(); } late File imageFile = File("$dirPath/$userID.jpg"); imageFile.writeAsBytesSync(decodedBytes); @@ -956,11 +997,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void userTypingInvoke({required int currentUser, required int reciptUser}) async { - logger.d([reciptUser, currentUser]); await chatHubConnection.invoke("UserTypingAsync", args: [reciptUser, currentUser]); } - // Audio Recoding Work +// Audio Recoding Work Timer? _timer; int _recodeDuration = 0; bool isRecoding = false; @@ -972,13 +1012,18 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { late RecorderController recorderController; late PlayerController playerController; - //////// Audio Recoding Work //////////////////// +//////// Audio Recoding Work //////////////////// Future initAudio({required int receiverId}) async { + // final dir = Directory((Platform.isAndroid + // ? await getExternalStorageDirectory() //FOR ANDROID + // : await getApplicationSupportDirectory() //FOR IOS + // )! appDirectory = await getApplicationDocumentsDirectory(); String dirPath = '${appDirectory.path}/chat_audios'; if (!await Directory(dirPath).exists()) { await Directory(dirPath).create(); + await File('$dirPath/.nomedia').create(); } path = "$dirPath/${AppState().chatDetails!.response!.id}-$receiverID-${DateTime.now().microsecondsSinceEpoch}.aac"; recorderController = RecorderController() @@ -986,6 +1031,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ..androidOutputFormat = AndroidOutputFormat.mpeg4 ..iosEncoder = IosEncoder.kAudioFormatMPEG4AAC ..sampleRate = 6000 + ..updateFrequency = const Duration(milliseconds: 100) ..bitRate = 18000; playerController = PlayerController(); } @@ -1014,15 +1060,23 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } - void _startTimer() { + Future _startTimer() async { _timer?.cancel(); - _timer = Timer.periodic(const Duration(seconds: 1), (Timer t) { + _timer = Timer.periodic(const Duration(seconds: 1), (Timer t) async { _recodeDuration++; - buildTimer(); - notifyListeners(); + if (_recodeDuration <= 59) { + applyCounter(); + } else { + pauseRecoding(); + } }); } + void applyCounter() { + buildTimer(); + notifyListeners(); + } + Future pauseRecoding() async { isPause = true; isPlaying = true; @@ -1030,27 +1084,16 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { path = await recorderController.stop(false); File file = File(path!); file.readAsBytesSync(); + path = file.path; await playerController.preparePlayer(file.path, 1.0); - // var tempDuration = _recodeDuration; - // _recodeDuration = tempDuration; _timer?.cancel(); notifyListeners(); } - void resumeRecoding() { - isPause = false; - isPlaying = false; - isRecoding = true; - recorderController.record(path); - _startTimer(); - } - Future deleteRecoding() async { _recodeDuration = 0; _timer?.cancel(); - // path = await recorderController.stop(true); - recorderController.reset(); - print(path); + recorderController.stop(true); if (path != null && path!.isNotEmpty) { File delFile = File(path!); double fileSizeInKB = delFile.lengthSync() / 1024; @@ -1095,8 +1138,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void sendVoiceMessage(BuildContext context, {required int targetUserId, required int userStatus, required String userEmail, required String targetUserName}) async { - //recorderController.pause(); - path = await recorderController.stop(false); + if (!isPause) { + path = await recorderController.stop(false); + } if (kDebugMode) { print(path); } @@ -1110,17 +1154,156 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile); logger.d(value); String? ext = getFileExtension(voiceFile.path); + logger.d(voiceFile.path!.split("/").last); Utils.hideLoading(context); - // sendChatToServer( - // chatEventId: 2, - // fileTypeId: getFileType(ext.toString()), - // targetUserId: targetUserId, - // targetUserName: targetUserName, - // isAttachment: true, - // chatReplyId: null, - // isReply: false, - // isImageLoaded: true, - // image: voiceFile.readAsBytesSync()); + sendVoiceMessageToServer( + msgText: voiceFile.path!.split("/").last, + chatEventId: 2, + fileTypeId: getFileType(ext.toString()), + targetUserId: targetUserId, + targetUserName: targetUserName, + isVoiceAttached: true, + voice: voiceFile.readAsBytesSync(), + userEmail: userEmail, + userStatus: userStatus, + chatReplyId: null, + isAttachment: true, + isReply: false, + voicFile: voiceFile, + ); notifyListeners(); } + + Future sendVoiceMessageToServer( + {String? msgText, + int? chatEventId, + int? fileTypeId, + int? targetUserId, + String? targetUserName, + bool? isVoiceAttached, + Uint8List? voice, + String? userEmail, + int? userStatus, + bool? isReply, + bool? isAttachment, + int? chatReplyId, + File? voicFile}) async { + Uuid uuid = const Uuid(); + String contentNo = uuid.v4(); + String msg = msgText!; + SingleUserChatModel data = SingleUserChatModel( + chatEventId: chatEventId, + chatSource: 1, + contant: msg, + contantNo: contentNo, + conversationId: chatCID, + createdDate: DateTime.now(), + currentUserId: AppState().chatDetails!.response!.id, + currentUserName: AppState().chatDetails!.response!.userName, + targetUserId: targetUserId, + targetUserName: targetUserName, + isReplied: false, + fileTypeId: fileTypeId, + userChatReplyResponse: isReply! ? UserChatReplyResponse.fromJson(repliedMsg.first.toJson()) : null, + fileTypeResponse: isAttachment! + ? FileTypeResponse( + fileTypeId: fileTypeId, + fileTypeName: getFileExtension(voicFile!.path).toString(), + fileKind: "file", + fileName: msgText, + fileTypeDescription: getFileTypeDescription(getFileExtension(voicFile!.path).toString()), + ) + : null, + image: null, + isImageLoaded: false, + voice: voice, + ); + userChatHistory.insert(0, data); + notifyListeners(); + String chatData = + '{"contant":"$msg","contantNo":"$contentNo","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"$chatCID"}'; + await chatHubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); + + if (searchedChats != null) { + dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); + if (contain.isEmpty) { + List emails = []; + emails.add(await EmailImageEncryption().encrypt(val: userEmail!)); + List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); + searchedChats!.add( + ChatUser( + id: targetUserId, + userName: targetUserName, + unreadMessageCount: 0, + email: userEmail, + isImageLoading: false, + image: chatImages.first.profilePicture ?? "", + isImageLoaded: true, + isTyping: false, + isFav: false, + userStatus: userStatus, + userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), + ), + ); + notifyListeners(); + } + } else { + List emails = []; + emails.add(await EmailImageEncryption().encrypt(val: userEmail!)); + List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); + searchedChats!.add( + ChatUser( + id: targetUserId, + userName: targetUserName, + unreadMessageCount: 0, + email: userEmail, + isImageLoading: false, + image: chatImages.first.profilePicture ?? "", + isImageLoaded: true, + isTyping: false, + isFav: false, + userStatus: userStatus, + userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), + ), + ); + notifyListeners(); + } + } + + void playVoice( + BuildContext context, { + required SingleUserChatModel data, + }) async { + Utils.showLoading(context); + Uint8List encodedString = await ChatApiClient().downloadURL(fileName: data.contant!, fileTypeDescription: getFileTypeDescription(data.fileTypeResponse!.fileTypeName ?? "")); + try { + String path = await downChatVoice(encodedString, data.fileTypeResponse!.fileTypeName ?? "", data); + logger.d(path); + File file = File(path!); + file.readAsBytesSync(); + Utils.hideLoading(context); + await playerController.preparePlayer(file.path, 1.0); + notifyListeners(); + playerController.startPlayer(finishMode: FinishMode.pause); + } catch (e) { + Utils.showToast("Cannot open file."); + } + } + + Future downChatVoice(Uint8List bytes, String ext, SingleUserChatModel data) async { + String dirPath = '${(await getApplicationDocumentsDirectory()).path}/chat_audios'; + if (!await Directory(dirPath).exists()) { + await Directory(dirPath).create(); + await File('$dirPath/.nomedia').create(); + } + File file = File("$dirPath/${data.currentUserId}-${data.targetUserId}-${DateTime.now().microsecondsSinceEpoch}." + ext); + await file.writeAsBytes(bytes); + return file.path; + } + +// data.scrollController.animateTo( +// data.scrollController.position.maxScrollExtent, +// duration: const Duration(milliseconds: 100), +// curve: Curves.easeOut, +// ); } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index ed20c24..ea87450 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -20,8 +20,6 @@ import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:open_file/open_file.dart'; import 'package:provider/provider.dart'; -// todo: @aamir use extension methods, and use correct widgets. - class ChatBubble extends StatelessWidget { ChatBubble({Key? key, required this.dateTime, required this.cItem}) : super(key: key); final String dateTime; @@ -102,7 +100,8 @@ class ChatBubble extends StatelessWidget { ], ), ), - ).paddingOnly(bottom: 7), + ).paddingOnly(bottom: 7).onPress(() { + }), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) ClipRRect( borderRadius: BorderRadius.circular(5.0), @@ -117,18 +116,23 @@ class ChatBubble extends StatelessWidget { ); }), ), - ).paddingOnly(bottom: 4) + ).paddingOnly(bottom: 4), + if (fileTypeID == 13) + currentWaveBubble(context).onPress(() { + data.playVoice(context, data: cItem); + }) else Row( children: [ if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 - // || fileTypeID == 2 + // || fileTypeID == 2 ) SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), (cItem.contant ?? "").toText12().expanded, if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 - //|| fileTypeID == 2 - ) const Icon(Icons.remove_red_eye, size: 16) + //|| fileTypeID == 2 + ) + const Icon(Icons.remove_red_eye, size: 16) ], ), Align( @@ -157,10 +161,7 @@ class ChatBubble extends StatelessWidget { transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, - colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, - ], + colors: [MyColors.gradiantEndColor, MyColors.gradiantStartColor], ), ), child: Column( @@ -203,7 +204,8 @@ class ChatBubble extends StatelessWidget { ], ), ), - ).paddingOnly(bottom: 7), + ).paddingOnly(bottom: 7).onPress(() { + }), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) ClipRRect( borderRadius: BorderRadius.circular(5.0), @@ -218,7 +220,11 @@ class ChatBubble extends StatelessWidget { ); }), ), - ).paddingOnly(bottom: 4) + ).paddingOnly(bottom: 4), + if (fileTypeID == 13) + recipetWaveBubble(context).onPress(() { + data.playVoice(context, data: cItem); + }) else Row( children: [ @@ -283,6 +289,102 @@ class ChatBubble extends StatelessWidget { ); } } + + Widget currentWaveBubble(BuildContext context) { + return Container( + margin: const EdgeInsets.all(0), + decoration: BoxDecoration( + border: Border( + left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), + ), + color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), + // gradient: const LinearGradient( + // transform: GradientRotation(.83), + // begin: Alignment.topRight, + // end: Alignment.bottomLeft, + // colors: [ + // MyColors.gradiantEndColor, + // MyColors.gradiantStartColor, + // ], + // ), + ), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + const Icon( + Icons.play_arrow, + color: MyColors.lightGreenColor, + ).paddingAll(10), + AudioFileWaveforms( + size: Size(MediaQuery.of(context).size.width * 0.3, 10), + playerController: data.playerController, + padding: EdgeInsets.zero, + margin: EdgeInsets.zero, + enableSeekGesture: true, + density: 1, + playerWaveStyle: const PlayerWaveStyle( + fixedWaveColor: Colors.white, + liveWaveColor: MyColors.greenColor, + showTop: true, + showBottom: true, + waveCap: StrokeCap.round, + seekLineThickness: 2, + visualizerHeight: 4, + backgroundColor: Colors.transparent, + ), + ).expanded, + ], + ), + ).circle(5); + } + + Widget recipetWaveBubble(BuildContext context) { + return Container( + margin: const EdgeInsets.all(0), + decoration: BoxDecoration( + border: Border( + left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), + ), + color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), + // gradient: const LinearGradient( + // transform: GradientRotation(.83), + // begin: Alignment.topRight, + // end: Alignment.bottomLeft, + // colors: [ + // MyColors.gradiantEndColor, + // MyColors.gradiantStartColor, + // ], + // ), + ), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + const Icon( + Icons.play_arrow, + color: MyColors.white, + ).paddingAll(10), + AudioFileWaveforms( + size: Size(MediaQuery.of(context).size.width * 0.3, 10), + playerController: data.playerController, + padding: EdgeInsets.zero, + margin: EdgeInsets.zero, + enableSeekGesture: true, + density: 1, + playerWaveStyle: const PlayerWaveStyle( + fixedWaveColor: Colors.white, + liveWaveColor: MyColors.greenColor, + showTop: true, + showBottom: true, + waveCap: StrokeCap.round, + seekLineThickness: 2, + visualizerHeight: 4, + backgroundColor: Colors.transparent, + ), + ).expanded, + ], + ), + ).circle(5); + } } class WaveBubble extends StatelessWidget { @@ -329,15 +431,15 @@ class WaveBubble extends StatelessWidget { padding: EdgeInsets.zero, margin: EdgeInsets.zero, enableSeekGesture: true, - density: 2, + density: 1, playerWaveStyle: const PlayerWaveStyle( fixedWaveColor: Colors.white, - liveWaveColor:MyColors.greenColor, + liveWaveColor: MyColors.greenColor, showTop: true, showBottom: true, waveCap: StrokeCap.round, seekLineThickness: 2, - visualizerHeight: 5, + visualizerHeight: 4, backgroundColor: Colors.transparent, ), ), diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index c10a8c6..1ec1bcf 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -144,7 +144,13 @@ class _ChatDetailScreenState extends State { ); }, ).onPress(() async { - if (m.userChatHistory[i].fileTypeResponse != null) { + logger.d(m.userChatHistory[i].toJson()); + if (m.userChatHistory[i].fileTypeResponse != null && m.userChatHistory[i].fileTypeId! == 1 || + m.userChatHistory[i].fileTypeId! == 5 || + m.userChatHistory[i].fileTypeId! == 7 || + m.userChatHistory[i].fileTypeId! == 6 || + m.userChatHistory[i].fileTypeId! == 8 || + m.userChatHistory[i].fileTypeId! == 2) { m.getChatMedia(context, fileTypeName: m.userChatHistory[i].fileTypeResponse!.fileTypeName ?? "", fileTypeID: m.userChatHistory[i].fileTypeId!, fileName: m.userChatHistory[i].contant!); } From bcf67895b9928c5e1ca5227cbbfe7b48057dc22d Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 21 Dec 2022 19:11:17 +0300 Subject: [PATCH 247/302] Dynamic forms & my team fixes --- assets/icons/chat/chat.svg | 26 +- assets/icons/create_req.svg | 10 +- assets/icons/home.svg | 8 +- assets/icons/item_for_sale.svg | 12 +- assets/icons/work_list.svg | 17 +- lib/classes/utils.dart | 13 +- lib/ui/marathon/widgets/marathon_banner.dart | 374 +++++++++--------- .../dynamic_screens/dynamic_input_screen.dart | 2 +- .../services_menu_list_screen.dart | 1 + lib/ui/my_team/create_request.dart | 10 +- lib/ui/my_team/employee_details.dart | 10 +- lib/ui/my_team/team_members.dart | 9 +- 12 files changed, 247 insertions(+), 245 deletions(-) diff --git a/assets/icons/chat/chat.svg b/assets/icons/chat/chat.svg index 29d4471..bf8977d 100644 --- a/assets/icons/chat/chat.svg +++ b/assets/icons/chat/chat.svg @@ -1,23 +1,13 @@ - - - - - + + + + + - - - - - - - - - - - - - + + + diff --git a/assets/icons/create_req.svg b/assets/icons/create_req.svg index a87e809..76f414f 100644 --- a/assets/icons/create_req.svg +++ b/assets/icons/create_req.svg @@ -1,7 +1,5 @@ - - - - - - + + + + diff --git a/assets/icons/home.svg b/assets/icons/home.svg index fb67997..91992ad 100644 --- a/assets/icons/home.svg +++ b/assets/icons/home.svg @@ -1,7 +1,7 @@ - - - - + + + + diff --git a/assets/icons/item_for_sale.svg b/assets/icons/item_for_sale.svg index 0a87567..a908b3f 100644 --- a/assets/icons/item_for_sale.svg +++ b/assets/icons/item_for_sale.svg @@ -1,3 +1,11 @@ - - + + + + + + + + + + diff --git a/assets/icons/work_list.svg b/assets/icons/work_list.svg index a802c53..becb368 100644 --- a/assets/icons/work_list.svg +++ b/assets/icons/work_list.svg @@ -1,15 +1,6 @@ - - - - - - - - - - - - - + + + + diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 57bb888..572c09e 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -310,7 +310,18 @@ class Utils { } static String formatDateDefault(String date) { - return DateFormat('yyyy-MM-dd').format(DateFormat('dd-MMM-yyyy').parseLoose(date)); + if (date.toLowerCase().contains("t")) { + date = date.toLowerCase().split("t")[0]; + // return DateFormat('yyyy-MM-dd').format(DateFormat('dd-MM-yyyy').parseLoose(date)); + return DateFormat('dd-MM-yyyy').format(DateFormat('yyyy-MM-dd').parseLoose(date)); + } else { + if(date.toLowerCase().split("-")[1].length == 3) { + return DateFormat('dd-MM-yyyy').format(DateFormat('dd-MMM-yyyy').parseLoose(date)); + } else { + return DateFormat('dd-MM-yyyy').format(DateFormat('yyyy-MM-dd').parseLoose(date)); + } + // return DateFormat('yyyy-MM-dd').format(DateFormat('dd-MM-yyyy').parseLoose(date)); + } } static Future selectDate(BuildContext context, DateTime selectedDate) async { diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 1b5533b..29c4fd3 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -184,202 +184,200 @@ class MarathonBanner extends StatelessWidget { Widget build(BuildContext context) { MarathonProvider provider = context.read(); - return - // !provider.isPrivilegedWithMarathon - // ? getUnPrivilegedMarathon(context) - // : provider.marathonDetailModel.startTime != null - // ? - Container( - decoration: MyDecorations.shadowDecoration, - height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, - clipBehavior: Clip.antiAlias, - child: Stack( - children: [ - Transform( - alignment: Alignment.center, - transform: Matrix4.rotationY( - AppState().isArabic(context) ? math.pi : 0, - ), - child: SvgPicture.asset( - "assets/images/marathon_banner_bg.svg", - fit: BoxFit.fill, - width: double.infinity, - ), - ), - AppState().isArabic(context) - ? Positioned( - right: -15, - top: -10, - child: Transform.rotate( - angle: 10, - child: Container( - width: isTablet ? 70 : 65, - height: isTablet ? 40 : 32, - color: MyColors.darkDigitColor, - ), - ), - ) - : Positioned( - left: -20, - top: -10, - child: Transform.rotate( - angle: 15, - child: Container( - width: isTablet ? 70 : 65, - height: isTablet ? 40 : 32, - color: MyColors.darkDigitColor, + return provider.isPrivilegedWithMarathon + ? getUnPrivilegedMarathon(context) + : provider.marathonDetailModel.startTime != null + ? Container( + decoration: MyDecorations.shadowDecoration, + height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, + clipBehavior: Clip.antiAlias, + child: Stack( + children: [ + Transform( + alignment: Alignment.center, + transform: Matrix4.rotationY( + AppState().isArabic(context) ? math.pi : 0, + ), + child: SvgPicture.asset( + "assets/images/marathon_banner_bg.svg", + fit: BoxFit.fill, + width: double.infinity, + ), ), - ), - ), - SizedBox( - width: double.infinity, - height: double.infinity, - child: Row( - children: [ - const Expanded( - flex: 3, - child: SizedBox( - width: double.infinity, - height: double.infinity, - ), - ), - Expanded( - flex: AppState().isArabic(context) ? 4 : 5, - child: SizedBox( - width: double.infinity, - height: double.infinity, - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - AppState().isArabic(context) ? 0.height : 5.height, - Text( - LocaleKeys.getReadyForContest.tr(), - style: TextStyle( - fontSize: isTablet ? 20 : 11, - fontStyle: FontStyle.italic, - fontWeight: FontWeight.w600, - color: MyColors.white.withOpacity(0.83), - letterSpacing: -0.4, + AppState().isArabic(context) + ? Positioned( + right: -15, + top: -10, + child: Transform.rotate( + angle: 10, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, ), ), - Text( - AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", - style: TextStyle( - fontStyle: FontStyle.italic, - fontSize: isTablet ? 30 : 19, - fontWeight: FontWeight.bold, - color: MyColors.white.withOpacity(0.83), - height: 32 / 22, + ) + : Positioned( + left: -20, + top: -10, + child: Transform.rotate( + angle: 15, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, ), ), - isTablet ? 10.height : 3.height, - BuildCountdownTimer( - timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, - provider: provider, - screenFlag: 0, + ), + SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + children: [ + const Expanded( + flex: 3, + child: SizedBox( + width: double.infinity, + height: double.infinity, ), - ], - ).paddingOnly( - left: AppState().isArabic(context) ? 12 : 3, - right: AppState().isArabic(context) ? 3 : 12, - ) - ], - ), - ), - ), - ], - ), - ), - AppState().isArabic(context) - ? Align( - alignment: Alignment.topRight, - child: SizedBox( - height: isTablet ? 30 : 20, - width: isTablet ? 45 : 35, - child: Transform.rotate( - angle: math.pi / 4.5, - child: Text( - LocaleKeys.brainMarathon.tr(), - textAlign: TextAlign.center, - maxLines: 2, - style: TextStyle( - color: MyColors.white, - fontWeight: FontWeight.bold, - fontSize: isTablet ? 8 : 6, - height: 1.2, - ), - ), - ), - ), - ).paddingOnly(top: 5) - : Align( - alignment: Alignment.topLeft, - child: SizedBox( - height: isTablet ? 30 : 20, - width: isTablet ? 45 : 35, - child: Transform.rotate( - angle: -math.pi / 4.5, - child: Text( - LocaleKeys.brainMarathon.tr(), - textAlign: TextAlign.center, - maxLines: 2, - style: TextStyle( - color: MyColors.kWhiteColor, - fontWeight: FontWeight.bold, - fontSize: isTablet ? 8 : 6, - height: 1.2, - ), + ), + Expanded( + flex: AppState().isArabic(context) ? 4 : 5, + child: SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + AppState().isArabic(context) ? 0.height : 5.height, + Text( + LocaleKeys.getReadyForContest.tr(), + style: TextStyle( + fontSize: isTablet ? 20 : 11, + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w600, + color: MyColors.white.withOpacity(0.83), + letterSpacing: -0.4, + ), + ), + Text( + AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: isTablet ? 30 : 19, + fontWeight: FontWeight.bold, + color: MyColors.white.withOpacity(0.83), + height: 32 / 22, + ), + ), + isTablet ? 10.height : 3.height, + BuildCountdownTimer( + timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, + provider: provider, + screenFlag: 0, + ), + ], + ).paddingOnly( + left: AppState().isArabic(context) ? 12 : 3, + right: AppState().isArabic(context) ? 3 : 12, + ) + ], + ), + ), + ), + ], ), ), - ), - ).paddingOnly(top: 5), - !AppState().isArabic(context) - ? Positioned( - right: 0, - bottom: 0, - child: RotatedBox( - quarterTurns: 4, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(isTablet ? 20 : 15), - ) - : Positioned( - bottom: 0, - left: 0, - child: RotatedBox( - quarterTurns: 2, - child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), - ).paddingAll(isTablet ? 20 : 15), - ), - ], - ).onPress(() async { - int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; + AppState().isArabic(context) + ? Align( + alignment: Alignment.topRight, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.white, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, + ), + ), + ), + ), + ).paddingOnly(top: 5) + : Align( + alignment: Alignment.topLeft, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: -math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.kWhiteColor, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, + ), + ), + ), + ), + ).paddingOnly(top: 5), + !AppState().isArabic(context) + ? Positioned( + right: 0, + bottom: 0, + child: RotatedBox( + quarterTurns: 4, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), + ).paddingAll(isTablet ? 20 : 15), + ) + : Positioned( + bottom: 0, + left: 0, + child: RotatedBox( + quarterTurns: 2, + child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), + ).paddingAll(isTablet ? 20 : 15), + ), + ], + ).onPress(() async { + int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; - if (remainingTimeInMinutes > 2) { - Utils.showLoading(context); - try { - await provider.initializeVideoPlayer().then((_) { - Utils.hideLoading(context); - provider.startTimerForSponsorVideo(); - Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); - }); - } catch (e) { - if (kDebugMode) { - print("Error in VideoPlayer: ${e.toString()}"); - } - Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); - } - } else { - Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); - } - }), - ); - // ) - // : const SizedBox(); + if (remainingTimeInMinutes > 2) { + Utils.showLoading(context); + try { + await provider.initializeVideoPlayer().then((_) { + Utils.hideLoading(context); + provider.startTimerForSponsorVideo(); + Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); + }); + } catch (e) { + if (kDebugMode) { + print("Error in VideoPlayer: ${e.toString()}"); + } + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + } + } else { + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + } + }), + // ); + ) + : const SizedBox(); } } diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index fe7a6f3..a94a6e2 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -188,7 +188,7 @@ class _DynamicInputScreenState extends State { // Utils.hideLoading(context); } } else if (values.isNotEmpty) { - ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); + ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values, empID: dynamicParams!.selectedEmp); int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); getEitDffStructureList![index].eSERVICESDV = defaultValue; } diff --git a/lib/ui/my_attendance/services_menu_list_screen.dart b/lib/ui/my_attendance/services_menu_list_screen.dart index 097a63a..8e44324 100644 --- a/lib/ui/my_attendance/services_menu_list_screen.dart +++ b/lib/ui/my_attendance/services_menu_list_screen.dart @@ -19,6 +19,7 @@ class ServicesMenuListScreenParams { final List list; final String? selectedEmp; GetEmployeeSubordinatesList? getEmployeeSubordinates; + ServicesMenuListScreenParams(this.title, this.list, {this.selectedEmp}); } diff --git a/lib/ui/my_team/create_request.dart b/lib/ui/my_team/create_request.dart index 94ac415..b77ac30 100644 --- a/lib/ui/my_team/create_request.dart +++ b/lib/ui/my_team/create_request.dart @@ -38,13 +38,13 @@ class _CreateRequestState extends State { @override void initState() { super.initState(); - employeeSubRequest(); + // employeeSubRequest(); } void employeeSubRequest() async { try { Utils.showLoading(context); - getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString()); + // getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString()); getMenuEntriesList = await MyTeamApiClient().employeeSubordinatesRequest(getEmployeeSubordinates?.eMPLOYEENUMBER); homeMenus = parseMenus(getMenuEntriesList); Utils.hideLoading(context); @@ -80,8 +80,10 @@ class _CreateRequestState extends State { @override Widget build(BuildContext context) { - getEmployeeSubordinates ??= ModalRoute.of(context)?.settings.arguments as GetEmployeeSubordinatesList; - + if (getEmployeeSubordinates == null) { + getEmployeeSubordinates ??= ModalRoute.of(context)?.settings.arguments as GetEmployeeSubordinatesList; + employeeSubRequest(); + } return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget( diff --git a/lib/ui/my_team/employee_details.dart b/lib/ui/my_team/employee_details.dart index 1412641..e78c304 100644 --- a/lib/ui/my_team/employee_details.dart +++ b/lib/ui/my_team/employee_details.dart @@ -74,12 +74,12 @@ class _EmployeeDetailsState extends State { getEmployeeSubordinates!.eMPLOYEEIMAGE != null ? Container( height: 200, - margin: EdgeInsets.only(top: 30), + margin: const EdgeInsets.only(top: 30), decoration: BoxDecoration(image: DecorationImage(image: MemoryImage(Utils.dataFromBase64String(getEmployeeSubordinates!.eMPLOYEEIMAGE!)), fit: BoxFit.cover)), - child: new BackdropFilter( - filter: new ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), - child: new Container( - decoration: new BoxDecoration(color: Colors.white.withOpacity(0.0)), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0), + child: Container( + decoration: BoxDecoration(color: Colors.white.withOpacity(0.0)), ), ), ) diff --git a/lib/ui/my_team/team_members.dart b/lib/ui/my_team/team_members.dart index c4defc4..8847c36 100644 --- a/lib/ui/my_team/team_members.dart +++ b/lib/ui/my_team/team_members.dart @@ -33,13 +33,13 @@ class _TeamMembersState extends State { void initState() { super.initState(); - employeeSubordinates(); + // employeeSubordinates(); } void employeeSubordinates() async { try { Utils.showLoading(context); - getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString()); + // getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString()); getEmployeeSubordinatesList = await MyTeamApiClient().employeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString(), getEmployeeSubordinates?.eMPLOYEENUMBER); Utils.hideLoading(context); setState(() {}); @@ -51,7 +51,10 @@ class _TeamMembersState extends State { @override Widget build(BuildContext context) { - getEmployeeSubordinates ??= ModalRoute.of(context)?.settings.arguments as GetEmployeeSubordinatesList; + if (getEmployeeSubordinates == null) { + getEmployeeSubordinates ??= ModalRoute.of(context)?.settings.arguments as GetEmployeeSubordinatesList; + employeeSubordinates(); + } return Scaffold( appBar: AppBarWidget( context, From 5d93451c13fe967b9ac66d590fbdbdb476f32b99 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 22 Dec 2022 09:41:12 +0300 Subject: [PATCH 248/302] chat voice message implementation --- lib/api/chat/chat_api_client.dart | 14 ++++++-- lib/provider/chat_provider_model.dart | 46 +++++++++++++++------------ lib/ui/chat/chat_bubble.dart | 6 ++-- lib/ui/chat/chat_detailed_screen.dart | 23 ++++++++------ 4 files changed, 53 insertions(+), 36 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 46dcce7..43e9f6c 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -57,6 +57,7 @@ class ChatApiClient { return List.from(json.decode(response.body).map((x) => ChatUser.fromJson(x))); } + //Get User Recent Chats Future getRecentChats() async { try { Response response = await ApiClient().getJsonForResponse( @@ -74,6 +75,7 @@ class ChatApiClient { } } + // Get Favorite Users Future getFavUsers() async { Response favRes = await ApiClient().getJsonForResponse( "${ApiConsts.chatFavUser}getFavUserById/${AppState().chatDetails!.response!.id}", @@ -85,6 +87,7 @@ class ChatApiClient { return ChatUserModel.fromJson(json.decode(favRes.body)); } + //Get User Chat History Future getSingleUserChatHistory({required int senderUID, required int receiverUID, required bool loadMore, bool isNewChat = false, required int paginationVal}) async { try { Response response = await ApiClient().getJsonForResponse( @@ -101,6 +104,7 @@ class ChatApiClient { } } +//Favorite Users Future favUser({required int userID, required int targetUserID}) async { Response response = await ApiClient().postJsonForResponse("${ApiConsts.chatFavUser}addFavUser", {"targetUserId": targetUserID, "userId": userID}, token: AppState().chatDetails!.response!.token); if (!kReleaseMode) { @@ -110,6 +114,7 @@ class ChatApiClient { return favoriteChatUser; } + //UnFavorite Users Future unFavUser({required int userID, required int targetUserID}) async { try { Response response = await ApiClient().postJsonForResponse( @@ -128,9 +133,13 @@ class ChatApiClient { } } +// Upload Chat Media Future uploadMedia(String userId, File file) async { - print("${ApiConsts.chatMediaImageUploadUrl}upload"); - print(AppState().chatDetails!.response!.token); + if (kDebugMode) { + print("${ApiConsts.chatMediaImageUploadUrl}upload"); + print(AppState().chatDetails!.response!.token); + } + dynamic request = MultipartRequest('POST', Uri.parse('${ApiConsts.chatMediaImageUploadUrl}upload')); request.fields.addAll({'userId': userId, 'fileSource': '1'}); request.files.add(await MultipartFile.fromPath('files', file.path)); @@ -154,6 +163,7 @@ class ChatApiClient { return data; } + //Get Chat Users & Favorite Images Future> getUsersImages({required List encryptedEmails}) async { List imagesData = []; Response response = await ApiClient().postJsonForResponse( diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 974bc30..16bf327 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -68,7 +68,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future buildHubConnection() async { chatHubConnection = await getHubConnection(); await chatHubConnection.start(); - print("Startedddddddd"); + if (kDebugMode) { + logger.i("Hub Conn: Startedddddddd"); + } chatHubConnection.on("OnDeliveredChatUserAsync", onMsgReceived); chatHubConnection.on("OnGetChatConversationCount", onNewChatConversion); } @@ -91,7 +93,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // chatHubConnection.on("OnUpdateUserChatHistoryWindowsAsync", updateChatHistoryWindow); chatHubConnection.on("OnGetUserChatHistoryNotDeliveredAsync", chatNotDelivered); chatHubConnection.on("OnUpdateUserChatHistoryStatusAsync", updateUserChatStatus); - print("Alll Registered"); + if (kDebugMode) { + logger.i("All listeners registered"); + } } void getUserRecentChats() async { @@ -279,7 +283,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void updateChatHistoryWindow(List? args) { dynamic items = args!.toList(); - print("---------------------------------Update Chat History Windows Async -------------------------------------"); + if (kDebugMode) { + logger.i("---------------------------------Update Chat History Windows Async -------------------------------------"); + } logger.d(items); // for (var user in searchedChats!) { // if (user.id == items.first["id"]) { @@ -404,7 +410,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void OnSubmitChatAsync(List? parameters) { - logger.d(parameters); + logger.i(parameters); List data = [], temp = []; for (dynamic msg in parameters!) { data = getSingleUserChatModel(jsonEncode(msg)); @@ -563,8 +569,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isImageLoaded: isImageLoaded, voice: voice, ); - print("Model data---------------------------"); - logger.d(data.toJson()); + if (kDebugMode) { + logger.i("model data: " + jsonEncode(data)); + } userChatHistory.insert(0, data); isFileSelected = false; isMsgReply = false; @@ -579,16 +586,19 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void sendChatMessage(BuildContext context, {required int targetUserId, required int userStatus, required String userEmail, required String targetUserName}) async { if (!isFileSelected && !isMsgReply) { - print("Normal Text Msg"); + if (kDebugMode) { + print("Normal Text Msg"); + } if (message.text == null || message.text.isEmpty) { return; } sendChatToServer( chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: false, chatReplyId: null, isReply: false, isImageLoaded: false, image: null); - } // normal Text msg + } if (isFileSelected && !isMsgReply) { - bool isImage = false; - print("Normal Attachment Msg"); + if (kDebugMode) { + logger.i("Normal Attachment Msg"); + } Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); @@ -623,7 +633,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { image: repliedMsg.first.image); } // reply msg over image && normal if (isFileSelected && isMsgReply) { - print("Reply With File"); + if (kDebugMode) { + print("Reply With File"); + } Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); @@ -711,7 +723,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { String? getFileExtension(String fileName) { try { if (kDebugMode) { - print("ext: " + "." + fileName.split('.').last); + logger.i("ext: " + "." + fileName.split('.').last); } return "." + fileName.split('.').last; } catch (e) { @@ -836,7 +848,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void clearAll() { - print("----------------- Disposed ---------------------------"); searchedChats = pChatHistory; search.clear(); isChatScreenActive = false; @@ -1050,9 +1061,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { startRecoding(); } else { recorderController.reset(); - logger.d(recorderController.isRecording); await recorderController.record(path); - logger.d(recorderController.isRecording); _recodeDuration = 0; _startTimer(); isRecoding = !isRecoding; @@ -1142,7 +1151,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { path = await recorderController.stop(false); } if (kDebugMode) { - print(path); + logger.i("path:" + path!); } File voiceFile = File(path!); voiceFile.readAsBytesSync(); @@ -1152,9 +1161,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isRecoding = false; Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile); - logger.d(value); String? ext = getFileExtension(voiceFile.path); - logger.d(voiceFile.path!.split("/").last); Utils.hideLoading(context); sendVoiceMessageToServer( msgText: voiceFile.path!.split("/").last, @@ -1168,7 +1175,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { userStatus: userStatus, chatReplyId: null, isAttachment: true, - isReply: false, + isReply: isMsgReply, voicFile: voiceFile, ); notifyListeners(); @@ -1278,7 +1285,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Uint8List encodedString = await ChatApiClient().downloadURL(fileName: data.contant!, fileTypeDescription: getFileTypeDescription(data.fileTypeResponse!.fileTypeName ?? "")); try { String path = await downChatVoice(encodedString, data.fileTypeResponse!.fileTypeName ?? "", data); - logger.d(path); File file = File(path!); file.readAsBytesSync(); Utils.hideLoading(context); diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index ea87450..bb67365 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -100,8 +100,7 @@ class ChatBubble extends StatelessWidget { ], ), ), - ).paddingOnly(bottom: 7).onPress(() { - }), + ).paddingOnly(bottom: 7).onPress(() {}), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) ClipRRect( borderRadius: BorderRadius.circular(5.0), @@ -204,8 +203,7 @@ class ChatBubble extends StatelessWidget { ], ), ), - ).paddingOnly(bottom: 7).onPress(() { - }), + ).paddingOnly(bottom: 7).onPress(() {}), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) ClipRRect( borderRadius: BorderRadius.circular(5.0), diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 1ec1bcf..7b3a72b 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -130,7 +130,7 @@ class _ChatDetailScreenState extends State { reverse: true, itemCount: m.userChatHistory.length, padding: const EdgeInsets.all(21), - separatorBuilder: (cxt, index) => 8.height, + separatorBuilder: (BuildContext cxt, int index) => 8.height, itemBuilder: (BuildContext context, int i) { return SwipeTo( iconColor: MyColors.lightGreenColor, @@ -145,14 +145,17 @@ class _ChatDetailScreenState extends State { }, ).onPress(() async { logger.d(m.userChatHistory[i].toJson()); - if (m.userChatHistory[i].fileTypeResponse != null && m.userChatHistory[i].fileTypeId! == 1 || - m.userChatHistory[i].fileTypeId! == 5 || - m.userChatHistory[i].fileTypeId! == 7 || - m.userChatHistory[i].fileTypeId! == 6 || - m.userChatHistory[i].fileTypeId! == 8 || - m.userChatHistory[i].fileTypeId! == 2) { - m.getChatMedia(context, - fileTypeName: m.userChatHistory[i].fileTypeResponse!.fileTypeName ?? "", fileTypeID: m.userChatHistory[i].fileTypeId!, fileName: m.userChatHistory[i].contant!); + if (m.userChatHistory[i].fileTypeResponse != null && m.userChatHistory[i].fileTypeId != null) { + if (m.userChatHistory[i].fileTypeId! == 1 || + m.userChatHistory[i].fileTypeId! == 5 || + m.userChatHistory[i].fileTypeId! == 7 || + m.userChatHistory[i].fileTypeId! == 6 || + m.userChatHistory[i].fileTypeId! == 8 + // || m.userChatHistory[i].fileTypeId! == 2 + ) { + m.getChatMedia(context, + fileTypeName: m.userChatHistory[i].fileTypeResponse!.fileTypeName ?? "", fileTypeID: m.userChatHistory[i].fileTypeId!, fileName: m.userChatHistory[i].contant!); + } } }); }, @@ -312,7 +315,7 @@ class _ChatDetailScreenState extends State { () => m.selectImageToUpload(context), ), ).paddingOnly(right: 15), - Icon( + const Icon( Icons.mic, color: MyColors.lightGreenColor, ).paddingOnly(right: 15).onPress(() { From b3782f634222830f676521a1d2a335bcc2ca9d70 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 22 Dec 2022 10:02:50 +0300 Subject: [PATCH 249/302] updates & fixes --- lib/classes/utils.dart | 24 +++++++++++++++--------- lib/provider/chat_provider_model.dart | 2 +- lib/ui/login/new_password_screen.dart | 8 ++++---- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 572c09e..09fab3f 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -310,17 +310,23 @@ class Utils { } static String formatDateDefault(String date) { - if (date.toLowerCase().contains("t")) { - date = date.toLowerCase().split("t")[0]; - // return DateFormat('yyyy-MM-dd').format(DateFormat('dd-MM-yyyy').parseLoose(date)); - return DateFormat('dd-MM-yyyy').format(DateFormat('yyyy-MM-dd').parseLoose(date)); - } else { - if(date.toLowerCase().split("-")[1].length == 3) { - return DateFormat('dd-MM-yyyy').format(DateFormat('dd-MMM-yyyy').parseLoose(date)); + if (date.isNotEmpty) { + if (date.toLowerCase().contains("t")) { + date = date.toLowerCase().split("t")[0]; + if (!date.contains("00:00:00")) { + date = date + ' 00:00:00'; + } + return date; } else { - return DateFormat('dd-MM-yyyy').format(DateFormat('yyyy-MM-dd').parseLoose(date)); + if (date.toLowerCase().split("-")[1].length == 3) { + return DateFormat('dd-MM-yyyy').format(DateFormat('dd-MMM-yyyy').parseLoose(date)); + } else { + return DateFormat('dd-MM-yyyy').format(DateFormat('yyyy-MM-dd').parseLoose(date)); + } + // return DateFormat('yyyy-MM-dd').format(DateFormat('dd-MM-yyyy').parseLoose(date)); } - // return DateFormat('yyyy-MM-dd').format(DateFormat('dd-MM-yyyy').parseLoose(date)); + } else { + return date; } } diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 5f28b0b..a96080b 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -828,7 +828,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void deleteData() { List exists = [], unique = []; - exists.addAll(searchedChats!); + if(searchedChats != null) exists.addAll(searchedChats!); exists.addAll(favUsersList!); Map profileMap = {}; for (ChatUser item in exists) { diff --git a/lib/ui/login/new_password_screen.dart b/lib/ui/login/new_password_screen.dart index 8bb1443..217e049 100644 --- a/lib/ui/login/new_password_screen.dart +++ b/lib/ui/login/new_password_screen.dart @@ -102,8 +102,8 @@ class _NewPasswordScreenState extends State { passwordConstraintsUI(LocaleKeys.minimum8Characters.tr(), password.text.length >= 8), 8.height, passwordConstraintsUI(LocaleKeys.doNotAddRepeatingLetters.tr(), checkRepeatedChars(password.text)), - 8.height, - passwordConstraintsUI(LocaleKeys.itShouldContainSpecialCharacter.tr(), checkRegEx(r'[!@#$%^&*(),.?":{}|<>]')), + // 8.height, + // passwordConstraintsUI(LocaleKeys.itShouldContainSpecialCharacter.tr(), checkRegEx(r'[!@#$%^&*(),.?":{}|<>]')), 8.height, passwordConstraintsUI(LocaleKeys.confirmPasswordMustMatch.tr(), password.text.isNotEmpty && password.text == confirmPassword.text), ], @@ -146,11 +146,11 @@ class _NewPasswordScreenState extends State { bool hasUppercase = password.contains(RegExp(r'[A-Z]')); bool hasDigits = password.contains(RegExp(r'[0-9]')); bool hasLowercase = password.contains(RegExp(r'[a-z]')); - bool hasSpecialCharacters = password.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]')); + // bool hasSpecialCharacters = password.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]')); bool hasMinLength = password.length >= minLength; bool isMatched = password == confirmPassword.text; - return hasDigits && hasUppercase && hasLowercase && hasSpecialCharacters && hasMinLength && isMatched && checkRepeatedChars(password); + return hasDigits && hasUppercase && hasLowercase && hasMinLength && isMatched && checkRepeatedChars(password); } bool checkRepeatedChars(String password) { From 02fdfc746cc7ce576744270ee5aba689150c62b9 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Thu, 22 Dec 2022 10:04:15 +0300 Subject: [PATCH 250/302] Pushing stable (acc to me :p) marathon --- lib/api/marathon/marathon_api_client.dart | 32 ++++++++++++++----- lib/ui/marathon/marathon_provider.dart | 22 +++++-------- lib/ui/marathon/marathon_screen.dart | 14 +++++--- .../widgets/marathon_details_card.dart | 2 +- lib/ui/marathon/widgets/marathon_footer.dart | 2 +- 5 files changed, 43 insertions(+), 29 deletions(-) diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index a2d684f..5b1dfc8 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -28,6 +28,7 @@ class MarathonApiClient { return await ApiClient().postJsonForObject( (json) { MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); + AppState().setMarathonToken = marathonModel.data["token"] ?? ""; return marathonModel.data["token"] ?? ""; }, ApiConsts.marathonParticipantLoginUrl, @@ -43,14 +44,17 @@ class MarathonApiClient { }, ApiConsts.marathonProjectGetUrl, {}, - token: AppState().getMarathonToken ?? await getMarathonToken(), + token: AppState().getMarathonToken == null || AppState().getMarathonToken == "" ? await getMarathonToken() : AppState().getMarathonToken, ); } Future getMarathonDetails() async { String payrollString = AppState().postParamsObject?.payrollCodeStr.toString() ?? "CS"; - Response response = await ApiClient().getJsonForResponse(ApiConsts.marathonUpcomingUrl + payrollString, token: AppState().getMarathonToken ?? await getMarathonToken()); + Response response = await ApiClient().getJsonForResponse( + ApiConsts.marathonUpcomingUrl + payrollString, + token: AppState().getMarathonToken == null || AppState().getMarathonToken == "" ? await getMarathonToken() : AppState().getMarathonToken, + ); var json = jsonDecode(response.body); logger.i("json in getMarathonDetails: $json"); @@ -83,7 +87,7 @@ class MarathonApiClient { }, ApiConsts.marathonJoinParticipantUrl, jsonObject, - token: AppState().getMarathonToken ?? await getMarathonToken(), + token: AppState().getMarathonToken == null || AppState().getMarathonToken == "" ? await getMarathonToken() : AppState().getMarathonToken, ); } @@ -114,7 +118,7 @@ class MarathonApiClient { }, ApiConsts.marathonNextQuestionUrl, jsonObject, - token: AppState().getMarathonToken ?? await getMarathonToken(), + token: AppState().getMarathonToken == null || AppState().getMarathonToken == "" ? await getMarathonToken() : AppState().getMarathonToken, ); } @@ -124,17 +128,25 @@ class MarathonApiClient { return await ApiClient().postJsonForObject( (json) { MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - return marathonModel.isSuccessful ?? false; + if (marathonModel.data != null) { + bool isOptionCorrect = marathonModel.data["isCorrect"]; + return isOptionCorrect; + } + return false; }, ApiConsts.marathonSubmitAnswerUrl, jsonObject, - token: AppState().getMarathonToken ?? await getMarathonToken(), + token: AppState().getMarathonToken == null || AppState().getMarathonToken == "" ? await getMarathonToken() : AppState().getMarathonToken, ); } Future getQualifiers({required String marathonId}) async { Map params = {"marathonId": marathonId}; - Response response = await ApiClient().getJsonForResponse(ApiConsts.marathonQualifiersUrl, queryParameters: params, token: AppState().getMarathonToken ?? await getMarathonToken()); + Response response = await ApiClient().getJsonForResponse( + ApiConsts.marathonQualifiersUrl, + queryParameters: params, + token: AppState().getMarathonToken == null || AppState().getMarathonToken == "" ? await getMarathonToken() : AppState().getMarathonToken, + ); var json = jsonDecode(response.body); logger.i("json in getQualifiers: $json"); @@ -149,7 +161,11 @@ class MarathonApiClient { Future?> getSelectedWinner({required String marathonId}) async { Map params = {"marathonId": marathonId}; - Response response = await ApiClient().getJsonForResponse(ApiConsts.marathonSelectedWinner, queryParameters: params, token: AppState().getMarathonToken ?? await getMarathonToken()); + Response response = await ApiClient().getJsonForResponse( + ApiConsts.marathonSelectedWinner, + queryParameters: params, + token: AppState().getMarathonToken == null || AppState().getMarathonToken == "" ? await getMarathonToken() : AppState().getMarathonToken, + ); var json = jsonDecode(response.body); logger.i("json in getSelectedWinner: $json"); diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index a8dde7b..ebf8af7 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -172,7 +172,6 @@ class MarathonProvider extends ChangeNotifier { timerForQuestion = Timer.periodic( oneSec, (Timer timer) async { - print("here is the timer: $totalCurrentQuestionTime"); // This 2 is just to show the color of answer tile for 1 and then update card status if (totalCurrentQuestionTime - currentGapTime == 1) { getCorrectAnswerAndUpdateAnswerColor(); @@ -188,9 +187,8 @@ class MarathonProvider extends ChangeNotifier { await callNextQuestionApi(); } else { await callSubmitOptionApi().then((bool value) async { - if (value) { - await callNextQuestionApi(); - } + updateIsUserOutOfGame = !value; + await callNextQuestionApi(); }); } }); @@ -229,9 +227,8 @@ class MarathonProvider extends ChangeNotifier { oneSec, (Timer timer) async { if (totalSecondsToWaitForWinner == 1) { + await callGetSelectedWinnersApi().whenComplete(() => updateQuestionCardStatus(QuestionCardStatus.winnerFound)); timer.cancel(); - callGetSelectedWinnersApi(); - updateQuestionCardStatus(QuestionCardStatus.winnerFound); return; } else if (totalSecondsToWaitForWinner == 15) { totalSecondsToWaitForWinner--; @@ -274,8 +271,6 @@ class MarathonProvider extends ChangeNotifier { } Future callNextQuestionApi() async { - print("Called callNextQuestionApi!!"); - if (currentQuestionNumber < marathonDetailModel.totalQuestions!) { if (currentQuestionNumber == 0) { Utils.showLoading(AppRoutes.navigatorKey.currentContext!); @@ -298,7 +293,6 @@ class MarathonProvider extends ChangeNotifier { } void updateCardData() { - print("Called updateCardData!!"); if (currentQuestionNumber > 0) { swiperController.swipeLeft(); } @@ -337,14 +331,15 @@ class MarathonProvider extends ChangeNotifier { currentQuestion.questionOptions![i].optionStatus = QuestionsOptionStatus.unSelected; } currentQuestion.questionOptions![index].optionStatus = status; + selectedOptionId = currentQuestion.questionOptions![index].id; selectedOptionIndex = index; notifyListeners(); } void updateQuestionCardStatus(QuestionCardStatus status) { - if (status == QuestionCardStatus.wrongAnswer || status == QuestionCardStatus.skippedAnswer) { - updateIsUserOutOfGame = true; - } + // if (status == QuestionCardStatus.wrongAnswer || status == QuestionCardStatus.skippedAnswer) { + // updateIsUserOutOfGame = true; + // } questionCardStatus = status; notifyListeners(); } @@ -378,8 +373,6 @@ class MarathonProvider extends ChangeNotifier { } } - void resetProgressColorValues() {} - void resetValues() async { _currentQuestionNumber = 0; cardContentList.clear(); @@ -392,6 +385,7 @@ class MarathonProvider extends ChangeNotifier { totalCurrentQuestionTime = 0; sponsorsSecondsCounter = 0; totalSponsorVideoSeconds = 0; + totalSecondsToWaitForWinner = 30; totalSecondsToWaitForMarathon = 0; currentGapTime = 0; currentQuestion = QuestionModel(); diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index 3a257c7..dffc4b8 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -36,11 +36,11 @@ class MarathonScreen extends StatelessWidget { } return gapText.toText18(color: MyColors.darkTextColor, isCentered: true); } - if (gapType == 2) { + if (gapType == 0) { if (gapImage == null) { return Image.asset(MyLottieConsts.congratsGif, height: 200); } - return Image.network(gapImage, height: 200); + return Image.network(ApiConsts.marathonBaseUrlServices + gapImage, height: 200); } return Image.asset(MyLottieConsts.congratsGif, height: 200); } @@ -50,7 +50,7 @@ class MarathonScreen extends StatelessWidget { width: double.infinity, decoration: MyDecorations.shadowDecoration, padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), - child: provider.selectedWinners == null || provider.selectedWinners!.isEmpty + child: provider.selectedWinners == null || (provider.selectedWinners!.isEmpty && !provider.iAmWinner) //TODO: WE WILL UPDATE THE DESIGN WHEN THERE IS NO WINNER!! ? Center( child: "Sad! No one won Today. What you guys are doing?".toText20( @@ -73,7 +73,11 @@ class MarathonScreen extends StatelessWidget { ), Align( alignment: Alignment.center, - child: LocaleKeys.winners.tr().toText32(color: MyColors.white, isBold: true, isCentered: true).paddingOnly(top: 07), + child: ((provider.selectedWinners!.length == 1 && !provider.iAmWinner) || (provider.selectedWinners!.isEmpty && provider.iAmWinner) + ? LocaleKeys.winner.tr() + : LocaleKeys.winners.tr()) + .toText32(color: MyColors.white, isBold: true, isCentered: true) + .paddingOnly(top: 07), ) ], ), @@ -126,7 +130,7 @@ class MarathonScreen extends StatelessWidget { ), 5.height, Image.network( - ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.image!, + ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.logo!, height: 50, width: 150, fit: BoxFit.contain, diff --git a/lib/ui/marathon/widgets/marathon_details_card.dart b/lib/ui/marathon/widgets/marathon_details_card.dart index 3b686ef..b888915 100644 --- a/lib/ui/marathon/widgets/marathon_details_card.dart +++ b/lib/ui/marathon/widgets/marathon_details_card.dart @@ -59,7 +59,7 @@ class MarathonDetailsCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Image.network( - ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.image!, + ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.logo!, height: 50, width: 150, fit: BoxFit.contain, diff --git a/lib/ui/marathon/widgets/marathon_footer.dart b/lib/ui/marathon/widgets/marathon_footer.dart index cd23ce1..fea076e 100644 --- a/lib/ui/marathon/widgets/marathon_footer.dart +++ b/lib/ui/marathon/widgets/marathon_footer.dart @@ -43,7 +43,7 @@ class MarathonFooter extends StatelessWidget { Widget build(BuildContext context) { return DefaultButton( LocaleKeys.joinMarathon.tr(), - provider.itsMarathonTime ? () => provider.onJoinMarathonPressed(context) : null, + !provider.itsMarathonTime ? () => provider.onJoinMarathonPressed(context) : null, ).insideContainer; } } From 47a697f352e4452729d15628399eaa5afaf56615 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 22 Dec 2022 11:13:26 +0300 Subject: [PATCH 251/302] chat voice message implementation --- .../chat/get_single_user_chat_list_model.dart | 8 ++++++-- lib/provider/chat_provider_model.dart | 6 +++++- lib/ui/chat/chat_bubble.dart | 14 ++++++++------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/models/chat/get_single_user_chat_list_model.dart b/lib/models/chat/get_single_user_chat_list_model.dart index c585af7..7ca60a8 100644 --- a/lib/models/chat/get_single_user_chat_list_model.dart +++ b/lib/models/chat/get_single_user_chat_list_model.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'dart:typed_data'; +import 'package:audio_waveforms/audio_waveforms.dart'; import 'package:flutter/foundation.dart'; List singleUserChatModelFromJson(String str) => List.from(json.decode(str).map((x) => SingleUserChatModel.fromJson(x))); @@ -33,7 +34,8 @@ class SingleUserChatModel { this.isReplied, this.isImageLoaded, this.image, - this.voice}); + this.voice, + this.voiceController}); int? userChatHistoryId; int? userChatHistoryLineId; @@ -60,6 +62,7 @@ class SingleUserChatModel { bool? isImageLoaded; Uint8List? image; Uint8List? voice; + PlayerController? voiceController; factory SingleUserChatModel.fromJson(Map json) => SingleUserChatModel( userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], @@ -86,7 +89,8 @@ class SingleUserChatModel { isReplied: false, isImageLoaded: false, image: null, - voice: null); + voice: null, + voiceController: json["fileTypeId"] == 13 ? PlayerController() : null); Map toJson() => { "userChatHistoryId": userChatHistoryId == null ? null : userChatHistoryId, diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 16bf327..5f7bf0e 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1102,7 +1102,11 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { Future deleteRecoding() async { _recodeDuration = 0; _timer?.cancel(); - recorderController.stop(true); + if (path == null) { + path = await recorderController.stop(true); + } else { + await recorderController.stop(true); + } if (path != null && path!.isNotEmpty) { File delFile = File(path!); double fileSizeInKB = delFile.lengthSync() / 1024; diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index bb67365..9f0396a 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -117,7 +117,7 @@ class ChatBubble extends StatelessWidget { ), ).paddingOnly(bottom: 4), if (fileTypeID == 13) - currentWaveBubble(context).onPress(() { + currentWaveBubble(context, cItem).onPress(() { data.playVoice(context, data: cItem); }) else @@ -220,7 +220,7 @@ class ChatBubble extends StatelessWidget { ), ).paddingOnly(bottom: 4), if (fileTypeID == 13) - recipetWaveBubble(context).onPress(() { + recipetWaveBubble(context, cItem).onPress(() { data.playVoice(context, data: cItem); }) else @@ -288,7 +288,8 @@ class ChatBubble extends StatelessWidget { } } - Widget currentWaveBubble(BuildContext context) { + Widget currentWaveBubble(BuildContext context, SingleUserChatModel data) { + PlayerController cunController = PlayerController(); return Container( margin: const EdgeInsets.all(0), decoration: BoxDecoration( @@ -315,7 +316,7 @@ class ChatBubble extends StatelessWidget { ).paddingAll(10), AudioFileWaveforms( size: Size(MediaQuery.of(context).size.width * 0.3, 10), - playerController: data.playerController, + playerController: data.voiceController!, padding: EdgeInsets.zero, margin: EdgeInsets.zero, enableSeekGesture: true, @@ -336,7 +337,8 @@ class ChatBubble extends StatelessWidget { ).circle(5); } - Widget recipetWaveBubble(BuildContext context) { + Widget recipetWaveBubble(BuildContext context, SingleUserChatModel data) { + PlayerController repController = PlayerController(); return Container( margin: const EdgeInsets.all(0), decoration: BoxDecoration( @@ -363,7 +365,7 @@ class ChatBubble extends StatelessWidget { ).paddingAll(10), AudioFileWaveforms( size: Size(MediaQuery.of(context).size.width * 0.3, 10), - playerController: data.playerController, + playerController: data.voiceController!, padding: EdgeInsets.zero, margin: EdgeInsets.zero, enableSeekGesture: true, From 091abc68bfc748a4eadfc0d90c9c96aa9139c342 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 22 Dec 2022 12:03:54 +0300 Subject: [PATCH 252/302] IOS Fixes --- lib/classes/consts.dart | 4 ++-- lib/provider/chat_provider_model.dart | 11 ++++++++--- lib/ui/chat/chat_bubble.dart | 25 +++++++++++++++++-------- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 52d0407..4a7d7fe 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 5f7bf0e..becf4dd 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; + import 'package:audio_waveforms/audio_waveforms.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; @@ -11,7 +12,6 @@ import 'package:http/http.dart'; import 'package:just_audio/just_audio.dart' as JustAudio; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; -import 'package:mohem_flutter_app/classes/app_permissions.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/encryption.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; @@ -1292,14 +1292,19 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { File file = File(path!); file.readAsBytesSync(); Utils.hideLoading(context); - await playerController.preparePlayer(file.path, 1.0); + await data.voiceController!.preparePlayer(file.path, 1.0); + data.voiceController!.startPlayer(finishMode: FinishMode.pause); notifyListeners(); - playerController.startPlayer(finishMode: FinishMode.pause); } catch (e) { Utils.showToast("Cannot open file."); } } + void stopPlaying(BuildContext context, {required SingleUserChatModel data}) async { + data.voiceController!.stopPlayer(); + notifyListeners(); + } + Future downChatVoice(Uint8List bytes, String ext, SingleUserChatModel data) async { String dirPath = '${(await getApplicationDocumentsDirectory()).path}/chat_audios'; if (!await Directory(dirPath).exists()) { diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 9f0396a..d6a6abe 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -118,7 +118,11 @@ class ChatBubble extends StatelessWidget { ).paddingOnly(bottom: 4), if (fileTypeID == 13) currentWaveBubble(context, cItem).onPress(() { - data.playVoice(context, data: cItem); + if(cItem.voiceController!.playerState == PlayerState.playing){ + data.stopPlaying(context, data: cItem); + }else{ + data.playVoice(context, data: cItem); + } }) else Row( @@ -203,7 +207,8 @@ class ChatBubble extends StatelessWidget { ], ), ), - ).paddingOnly(bottom: 7).onPress(() {}), + ).paddingOnly(bottom: 7).onPress(() { + }), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) ClipRRect( borderRadius: BorderRadius.circular(5.0), @@ -221,7 +226,12 @@ class ChatBubble extends StatelessWidget { ).paddingOnly(bottom: 4), if (fileTypeID == 13) recipetWaveBubble(context, cItem).onPress(() { - data.playVoice(context, data: cItem); + if(cItem.voiceController!.playerState == PlayerState.playing){ + data.stopPlaying(context, data: cItem); + }else{ + data.playVoice(context, data: cItem); + } + }) else Row( @@ -310,8 +320,8 @@ class ChatBubble extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.max, children: [ - const Icon( - Icons.play_arrow, + Icon( + data.voiceController!.playerState == PlayerState.playing ? Icons.stop_circle : Icons.play_arrow, color: MyColors.lightGreenColor, ).paddingAll(10), AudioFileWaveforms( @@ -338,7 +348,6 @@ class ChatBubble extends StatelessWidget { } Widget recipetWaveBubble(BuildContext context, SingleUserChatModel data) { - PlayerController repController = PlayerController(); return Container( margin: const EdgeInsets.all(0), decoration: BoxDecoration( @@ -359,8 +368,8 @@ class ChatBubble extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.max, children: [ - const Icon( - Icons.play_arrow, + Icon( + data.voiceController!.playerState == PlayerState.playing ? Icons.stop_circle : Icons.play_arrow, color: MyColors.white, ).paddingAll(10), AudioFileWaveforms( From 8a393c1e73fdfab997d3827964ccbc54357fbfc7 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 22 Dec 2022 13:17:09 +0300 Subject: [PATCH 253/302] App update screen implemented --- lib/api/api_client.dart | 11 +++---- lib/app_state/app_state.dart | 2 +- lib/classes/utils.dart | 50 +++++++++++++++++-------------- lib/config/routes.dart | 3 ++ lib/ui/app_update_screen.dart | 56 +++++++++++++++++++++++++++++++++++ 5 files changed, 93 insertions(+), 29 deletions(-) create mode 100644 lib/ui/app_update_screen.dart diff --git a/lib/api/api_client.dart b/lib/api/api_client.dart index 1e66d45..ff26054 100644 --- a/lib/api/api_client.dart +++ b/lib/api/api_client.dart @@ -14,11 +14,12 @@ typedef FactoryConstructor = U Function(dynamic); class APIError { int? errorCode; + int? errorType; String? errorMessage; - APIError(this.errorCode, this.errorMessage); + APIError(this.errorCode, this.errorMessage, this.errorType); - Map toJson() => {'errorCode': errorCode, 'errorMessage': errorMessage}; + Map toJson() => {'errorCode': errorCode, 'errorMessage': errorMessage, 'errorType': errorType,}; @override String toString() { @@ -33,14 +34,14 @@ APIException _throwAPIException(Response response) { if (response.body != null && response.body.isNotEmpty) { var jsonError = jsonDecode(response.body); print(jsonError); - apiError = APIError(jsonError['ErrorCode'], jsonError['ErrorMessage']); + apiError = APIError(jsonError['ErrorCode'], jsonError['ErrorMessage'], jsonError['ErrorType']); } return APIException(APIException.BAD_REQUEST, error: apiError); case 400: APIError? apiError; if (response.body != null && response.body.isNotEmpty) { var jsonError = jsonDecode(response.body); - apiError = APIError(jsonError['ErrorCode'], jsonError['ErrorMessage']); + apiError = APIError(jsonError['ErrorCode'], jsonError['ErrorMessage'], jsonError['ErrorType']); } return APIException(APIException.BAD_REQUEST, error: apiError); case 401: @@ -90,7 +91,7 @@ class ApiClient { return factoryConstructor(jsonData); } else { APIError? apiError; - apiError = APIError(jsonData['ErrorCode'], jsonData['ErrorEndUserMessage']); + apiError = APIError(jsonData['ErrorCode'], jsonData['ErrorEndUserMessage'], jsonData['ErrorType']); throw APIException(APIException.BAD_REQUEST, error: apiError); } // } catch (ex) { diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 5060195..7d175b5 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -64,7 +64,7 @@ class AppState { String? get getMarathonProjectId => _projectID; - final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 5.0, mobileType: Platform.isAndroid ? "android" : "ios"); + final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 3.8, mobileType: Platform.isAndroid ? "android" : "ios"); void setPostParamsInitConfig() { isAuthenticated = false; diff --git a/lib/classes/utils.dart b/lib/classes/utils.dart index 09fab3f..bac8616 100644 --- a/lib/classes/utils.dart +++ b/lib/classes/utils.dart @@ -98,33 +98,37 @@ class Utils { static void handleException(dynamic exception, cxt, Function(String)? onErrorMessage) { String errorMessage; - if (exception is APIException) { - if (exception.message == APIException.UNAUTHORIZED) { - return; + if (exception.error.errorType != null && exception.error.errorType == 4) { + Navigator.pushNamedAndRemoveUntil(cxt, AppRoutes.appUpdateScreen, (_) => false, arguments: exception.error?.errorMessage); + } else { + if (exception is APIException) { + if (exception.message == APIException.UNAUTHORIZED) { + return; + } else { + errorMessage = exception.error?.errorMessage ?? exception.message; + } } else { - errorMessage = exception.error?.errorMessage ?? exception.message; + errorMessage = APIException.UNKNOWN; } - } else { - errorMessage = APIException.UNKNOWN; - } - if (onErrorMessage != null) { - onErrorMessage(errorMessage); - } else { - if (!AppState().isAuthenticated) { - showDialog( - context: cxt, - builder: (cxt) => ConfirmDialog( - message: errorMessage, - onTap: () { - Navigator.pushNamedAndRemoveUntil(cxt, AppRoutes.login, (Route route) => false); - }, - ), - ); + if (onErrorMessage != null) { + onErrorMessage(errorMessage); } else { - if (cxt != null) { - confirmDialog(cxt, errorMessage); + if (!AppState().isAuthenticated) { + showDialog( + context: cxt, + builder: (cxt) => ConfirmDialog( + message: errorMessage, + onTap: () { + Navigator.pushNamedAndRemoveUntil(cxt, AppRoutes.login, (Route route) => false); + }, + ), + ); } else { - showToast(errorMessage); + if (cxt != null) { + confirmDialog(cxt, errorMessage); + } else { + showToast(errorMessage); + } } } } diff --git a/lib/config/routes.dart b/lib/config/routes.dart index dc6b553..905f4de 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/ui/app_update_screen.dart'; import 'package:mohem_flutter_app/ui/attendance/add_vacation_rule_screen.dart'; import 'package:mohem_flutter_app/ui/attendance/monthly_attendance_screen.dart'; import 'package:mohem_flutter_app/ui/attendance/vacation_rule_screen.dart'; @@ -191,6 +192,7 @@ class AppRoutes { static const String marathonWaitingScreen = "/marathonWaitingScreen"; static const String unsafeDeviceScreen = "/unsafeDeviceScreen"; + static const String appUpdateScreen = "/appUpdateScreen"; static final Map routes = { login: (BuildContext context) => LoginScreen(), @@ -302,5 +304,6 @@ class AppRoutes { marathonWaitingScreen: (BuildContext context) => const MarathonWaitingScreen(), unsafeDeviceScreen: (BuildContext context) => const UnsafeDeviceScreen(), + appUpdateScreen: (BuildContext context) => const AppUpdateScreen(), }; } diff --git a/lib/ui/app_update_screen.dart b/lib/ui/app_update_screen.dart new file mode 100644 index 0000000..4a769c3 --- /dev/null +++ b/lib/ui/app_update_screen.dart @@ -0,0 +1,56 @@ +import 'dart:io'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class AppUpdateScreen extends StatefulWidget { + const AppUpdateScreen({Key? key}) : super(key: key); + + @override + State createState() => _UnsafeDeviceScreenState(); +} + +class _UnsafeDeviceScreenState extends State { + String? dynamicParams; + + @override + Widget build(BuildContext context) { + dynamicParams ??= ModalRoute.of(context)!.settings.arguments as String; + return Scaffold( + body: SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + 21.height, + Center(child: Image.asset("assets/images/logos/main_mohemm_logo.png", width: 200, height: 50)), + 50.height, + "Please Update Your App".toText24(isBold: true), + 48.height, + dynamicParams.toString().toText14(isCenter: true).paddingOnly(left: 20.0, right: 20.0), + 21.height, + DefaultButton(LocaleKeys.ok.tr(), () async { + if (Platform.isAndroid || Platform.isIOS) { + var appId = Platform.isAndroid ? 'hmg.cloudSolutions.mohem' : '1468856602'; + var url = Uri.parse( + Platform.isAndroid ? "market://details?id=$appId" : "https://apps.apple.com/app/id$appId", + ); + launchUrl( + url, + mode: LaunchMode.externalApplication, + ); + } + }).paddingAll(24) + ], + ), + ), + ); + } +} From 97dd82aff79986afef3c37430961b10a758e487b Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 22 Dec 2022 14:39:11 +0300 Subject: [PATCH 254/302] chat voice message implementation --- lib/provider/chat_provider_model.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index becf4dd..d9de168 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1301,7 +1301,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void stopPlaying(BuildContext context, {required SingleUserChatModel data}) async { - data.voiceController!.stopPlayer(); + await data.voiceController!.pausePlayer(); notifyListeners(); } From 5eec9dc07b27e7314fd909e52c25840f0db29d75 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 22 Dec 2022 15:18:02 +0300 Subject: [PATCH 255/302] chat voice message implementation --- lib/provider/chat_provider_model.dart | 38 +++++++++++++++++++-------- lib/ui/chat/chat_bubble.dart | 22 +++++++++------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index d9de168..7ffc0e7 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -32,6 +32,7 @@ import 'package:uuid/uuid.dart'; class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ScrollController scrollController = ScrollController(); + TextEditingController message = TextEditingController(); TextEditingController search = TextEditingController(); List userChatHistory = []; @@ -1180,7 +1181,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { chatReplyId: null, isAttachment: true, isReply: isMsgReply, - voicFile: voiceFile, + voiceFile: voiceFile, ); notifyListeners(); } @@ -1198,7 +1199,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { bool? isReply, bool? isAttachment, int? chatReplyId, - File? voicFile}) async { + File? voiceFile}) async { Uuid uuid = const Uuid(); String contentNo = uuid.v4(); String msg = msgText!; @@ -1219,10 +1220,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { fileTypeResponse: isAttachment! ? FileTypeResponse( fileTypeId: fileTypeId, - fileTypeName: getFileExtension(voicFile!.path).toString(), + fileTypeName: getFileExtension(voiceFile!.path).toString(), fileKind: "file", fileName: msgText, - fileTypeDescription: getFileTypeDescription(getFileExtension(voicFile!.path).toString()), + fileTypeDescription: getFileTypeDescription(getFileExtension(voiceFile!.path).toString()), ) : null, image: null, @@ -1293,7 +1294,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { file.readAsBytesSync(); Utils.hideLoading(context); await data.voiceController!.preparePlayer(file.path, 1.0); - data.voiceController!.startPlayer(finishMode: FinishMode.pause); + data.voiceController!.startPlayer(finishMode: FinishMode.stop); notifyListeners(); } catch (e) { Utils.showToast("Cannot open file."); @@ -1301,7 +1302,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void stopPlaying(BuildContext context, {required SingleUserChatModel data}) async { - await data.voiceController!.pausePlayer(); + await data.voiceController!.stopPlayer(); notifyListeners(); } @@ -1316,9 +1317,24 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return file.path; } -// data.scrollController.animateTo( -// data.scrollController.position.maxScrollExtent, -// duration: const Duration(milliseconds: 100), -// curve: Curves.easeOut, -// ); + void scrollToMsg(SingleUserChatModel data) { + if (data.userChatReplyResponse != null && data.userChatReplyResponse!.userChatHistoryId != null) { + int index = userChatHistory.indexWhere((SingleUserChatModel element) => element.userChatHistoryId == data.userChatReplyResponse!.userChatHistoryId); + double contentSize = scrollController.position.viewportDimension + scrollController.position.maxScrollExtent; + double target = contentSize * index / userChatHistory.length; + scrollController.position.animateTo( + target, + duration: const Duration(seconds: 1), + curve: Curves.easeInOut, + ); + + // scrollController.scrollTo(index: 150, duration: Duration(seconds: 1)); + // scrollController.animateTo(offset, duration: duration, curve: curve); + } + // scrollController.animateTo( + // scrollController.position.maxScrollExtent, + // duration: const Duration(milliseconds: 100), + // curve: Curves.easeOut, + // ); + } } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index d6a6abe..3b81d91 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -100,7 +100,9 @@ class ChatBubble extends StatelessWidget { ], ), ), - ).paddingOnly(bottom: 7).onPress(() {}), + ).paddingOnly(bottom: 7).onPress(() { + data.scrollToMsg(cItem); + }), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) ClipRRect( borderRadius: BorderRadius.circular(5.0), @@ -118,9 +120,9 @@ class ChatBubble extends StatelessWidget { ).paddingOnly(bottom: 4), if (fileTypeID == 13) currentWaveBubble(context, cItem).onPress(() { - if(cItem.voiceController!.playerState == PlayerState.playing){ + if (cItem.voiceController!.playerState == PlayerState.playing) { data.stopPlaying(context, data: cItem); - }else{ + } else { data.playVoice(context, data: cItem); } }) @@ -208,6 +210,7 @@ class ChatBubble extends StatelessWidget { ), ), ).paddingOnly(bottom: 7).onPress(() { + data.scrollToMsg(cItem); }), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) ClipRRect( @@ -226,12 +229,11 @@ class ChatBubble extends StatelessWidget { ).paddingOnly(bottom: 4), if (fileTypeID == 13) recipetWaveBubble(context, cItem).onPress(() { - if(cItem.voiceController!.playerState == PlayerState.playing){ + if (cItem.voiceController!.playerState == PlayerState.playing) { data.stopPlaying(context, data: cItem); - }else{ + } else { data.playVoice(context, data: cItem); } - }) else Row( @@ -320,8 +322,8 @@ class ChatBubble extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.max, children: [ - Icon( - data.voiceController!.playerState == PlayerState.playing ? Icons.stop_circle : Icons.play_arrow, + Icon( + data.voiceController!.playerState == PlayerState.playing ? Icons.stop_circle : Icons.play_arrow, color: MyColors.lightGreenColor, ).paddingAll(10), AudioFileWaveforms( @@ -368,8 +370,8 @@ class ChatBubble extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.max, children: [ - Icon( - data.voiceController!.playerState == PlayerState.playing ? Icons.stop_circle : Icons.play_arrow, + Icon( + data.voiceController!.playerState == PlayerState.playing ? Icons.stop_circle : Icons.play_arrow, color: MyColors.white, ).paddingAll(10), AudioFileWaveforms( From dd6b0c09029f3f5bc0af64f4fb94ef1517b660b0 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Thu, 22 Dec 2022 15:38:35 +0300 Subject: [PATCH 256/302] Scroll to Message --- lib/provider/chat_provider_model.dart | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 7ffc0e7..40e9327 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1320,21 +1320,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void scrollToMsg(SingleUserChatModel data) { if (data.userChatReplyResponse != null && data.userChatReplyResponse!.userChatHistoryId != null) { int index = userChatHistory.indexWhere((SingleUserChatModel element) => element.userChatHistoryId == data.userChatReplyResponse!.userChatHistoryId); - double contentSize = scrollController.position.viewportDimension + scrollController.position.maxScrollExtent; - double target = contentSize * index / userChatHistory.length; - scrollController.position.animateTo( - target, - duration: const Duration(seconds: 1), - curve: Curves.easeInOut, - ); - - // scrollController.scrollTo(index: 150, duration: Duration(seconds: 1)); - // scrollController.animateTo(offset, duration: duration, curve: curve); + if (index >= 1) { + double contentSize = scrollController.position.viewportDimension + scrollController.position.maxScrollExtent; + double target = contentSize * index / userChatHistory.length; + scrollController.position.animateTo( + target, + duration: const Duration(seconds: 1), + curve: Curves.easeInOut, + ); + } } - // scrollController.animateTo( - // scrollController.position.maxScrollExtent, - // duration: const Duration(milliseconds: 100), - // curve: Curves.easeOut, - // ); } } From 47732d67cbde1cc1250356cd151a4bb4b9500a13 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 25 Dec 2022 12:01:21 +0300 Subject: [PATCH 257/302] drawer item align issue fixed on arabic. --- lib/extensions/string_extensions.dart | 4 +- lib/provider/chat_provider_model.dart | 4 +- lib/ui/dialogs/success_dialog.dart | 3 + lib/ui/landing/widget/app_drawer.dart | 8 +-- lib/ui/landing/widget/drawer_item.dart | 60 ------------------- .../dynamic_screens/dynamic_input_screen.dart | 10 ++-- lib/widgets/mark_attendance_widget.dart | 2 - 7 files changed, 14 insertions(+), 77 deletions(-) delete mode 100644 lib/ui/landing/widget/drawer_item.dart diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index e9e7e93..e323487 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -90,9 +90,9 @@ extension EmailValidator on String { style: TextStyle(fontSize: 13, fontWeight: FontWeight.w600, color: color ?? MyColors.darkTextColor, letterSpacing: -0.52, decoration: isUnderLine ? TextDecoration.underline : null), ); - Widget toText14({Color? color, bool isUnderLine = false, bool isBold = false, FontWeight? weight, int? maxlines, bool isCenter = false}) => Text( + Widget toText14({Color? color, bool isUnderLine = false, bool isBold = false, FontWeight? weight, int? maxlines, TextAlign? textAlign, bool isCenter = false}) => Text( this, - textAlign: isCenter ? TextAlign.center : TextAlign.left, + textAlign: isCenter ? TextAlign.center : (textAlign ?? TextAlign.left), maxLines: maxlines, style: TextStyle( color: color ?? MyColors.darkTextColor, diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index a96080b..ec4aa0c 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -820,8 +820,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sFileType = ""; deleteData(); favUsersList.clear(); - searchedChats!.clear(); - pChatHistory!.clear(); + searchedChats?.clear(); + pChatHistory?.clear(); chatHubConnection.stop(); AppState().chatDetails = null; } diff --git a/lib/ui/dialogs/success_dialog.dart b/lib/ui/dialogs/success_dialog.dart index a5df64f..65c6ec3 100644 --- a/lib/ui/dialogs/success_dialog.dart +++ b/lib/ui/dialogs/success_dialog.dart @@ -48,6 +48,9 @@ class _SuccessDialogState extends State with TickerProviderStateM width: size, height: size, child: Card( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(25.0), + ), child: Lottie.asset( 'assets/lottie/lt_success.json', repeat: false, diff --git a/lib/ui/landing/widget/app_drawer.dart b/lib/ui/landing/widget/app_drawer.dart index 4b4219d..7df697c 100644 --- a/lib/ui/landing/widget/app_drawer.dart +++ b/lib/ui/landing/widget/app_drawer.dart @@ -150,13 +150,9 @@ class _AppDrawerState extends State { Widget menuItem(String icon, String title, String routeName, {Color? color, bool closeDrawer = true, VoidCallback? onPress}) { return Row( children: [ - SvgPicture.asset( - icon, - height: 20, - width: 20, - ), + SvgPicture.asset(icon, height: 20, width: 20), 9.width, - title.toText14(color: color).expanded + title.toText14(color: color, textAlign: AppState().isArabic(context) ? TextAlign.right : null).expanded, ], ).paddingOnly(left: 21, top: 10, bottom: 10, right: 21).onPress(closeDrawer ? () async { diff --git a/lib/ui/landing/widget/drawer_item.dart b/lib/ui/landing/widget/drawer_item.dart deleted file mode 100644 index 4654e5b..0000000 --- a/lib/ui/landing/widget/drawer_item.dart +++ /dev/null @@ -1,60 +0,0 @@ -import 'dart:ui'; - -import 'package:flutter/material.dart'; - -class DrawerItem extends StatefulWidget { - final String title; - final String subTitle; - final IconData icon; - final Color color; - final dynamic assetLink; - - const DrawerItem(this.title, {required this.icon, required this.color, this.subTitle = '', this.assetLink}); - - @override - _DrawerItemState createState() => _DrawerItemState(); -} - -class _DrawerItemState extends State { - @override - Widget build(BuildContext context) { - return Container( - margin: EdgeInsets.only(top: 0, bottom: 5, left: 0, right: 0), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (widget.assetLink != null) - Container( - height: 20, - width: 20, - child: Image.asset(widget.assetLink), - ), - if (widget.assetLink == null) - Icon( - widget.icon, - color: widget.color, - size: 25, - ), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Container( - width: MediaQuery.of(context).size.width * 0.45, - child: Text(widget.title, - style: TextStyle( - color: widget.color ?? Color(0xFF2E303A), - fontSize: 14, - fontFamily: 'Poppins', - fontWeight: FontWeight.w600, - letterSpacing: -0.84, - )), - ), - ], - ), - ), - ], - )); - } -} diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index a94a6e2..1ec79a0 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -57,7 +57,7 @@ class _DynamicInputScreenState extends State { } void validateTransaction() async { - try { + // try { Utils.showLoading(context); List> values = getEitDffStructureList!.map((e) { String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; @@ -98,10 +98,10 @@ class _DynamicInputScreenState extends State { Utils.showLoading(context); await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); Utils.hideLoading(context); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } } String dESCFLEXCONTEXTCODE = ""; diff --git a/lib/widgets/mark_attendance_widget.dart b/lib/widgets/mark_attendance_widget.dart index cbf70ad..a599c79 100644 --- a/lib/widgets/mark_attendance_widget.dart +++ b/lib/widgets/mark_attendance_widget.dart @@ -170,7 +170,6 @@ class _MarkAttendanceWidgetState extends State { ); } } catch (ex) { - print(ex); Utils.hideLoading(context); Utils.handleException(ex, context, (msg) { Utils.confirmDialog(context, msg); @@ -239,7 +238,6 @@ class _MarkAttendanceWidgetState extends State { child: SuccessDialog(widget.isFromDashboard), ); } catch (ex) { - print("performWifiAttendance: " + ex.toString()); await closeWifiRequest(); Utils.hideLoading(context); Utils.handleException(ex, context, (msg) { From 47b712d132d080073af10be56f099bb8538ba670 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 25 Dec 2022 15:41:04 +0300 Subject: [PATCH 258/302] monthly attendance & ticket balance chart fix. --- lib/ui/attendance/monthly_attendance_screen.dart | 4 ++-- lib/widgets/balances_dashboard_widget.dart | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/ui/attendance/monthly_attendance_screen.dart b/lib/ui/attendance/monthly_attendance_screen.dart index b6407a8..9e48c81 100644 --- a/lib/ui/attendance/monthly_attendance_screen.dart +++ b/lib/ui/attendance/monthly_attendance_screen.dart @@ -85,8 +85,8 @@ class _MonthlyAttendanceScreenState extends State { @override Widget build(BuildContext context) { Map dataMap = { - "Present": getTimeCardSummaryList?.aTTENDEDDAYS?.toDouble() ?? 75, - "Absent": getTimeCardSummaryList?.aBSENTDAYS?.toDouble() ?? 25, + "Present": getTimeCardSummaryList?.aTTENDEDDAYS?.toDouble() ?? 0, + "Absent": getTimeCardSummaryList?.aBSENTDAYS?.toDouble() ?? 0, }; return Scaffold( backgroundColor: Colors.white, diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index aaac793..8909dab 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -73,7 +73,7 @@ class _BalancesDashboardWidgetState extends State { ]; } else { chartModelList = [ - PieChartModel(LocaleKeys.adult.tr(), accrualList[1].accrualNetEntitlement ?? 0, MyColors.textMixColor, titleAppend: ""), + PieChartModel(LocaleKeys.adult.tr(), accrualList[1].accrualNetEntitlement?.toDouble() ?? 0, MyColors.textMixColor, titleAppend: ""), PieChartModel(LocaleKeys.child.tr(), accrualList[2].accrualNetEntitlement?.toDouble() ?? 0, MyColors.backgroundBlackColor, titleAppend: ""), PieChartModel(LocaleKeys.infants.tr(), accrualList[3].accrualNetEntitlement?.toDouble() ?? 0, MyColors.pinkColor, titleAppend: ""), ]; @@ -101,7 +101,7 @@ class _BalancesDashboardWidgetState extends State { ticketBalanceAccrualList = Provider.of(context, listen: false).accrualList ?? []; if (ticketBalanceAccrualList!.isNotEmpty) { chartModelList = [ - PieChartModel(LocaleKeys.adult.tr(), ticketBalanceAccrualList![1].accrualNetEntitlement ?? 0, MyColors.textMixColor, titleAppend: ""), + PieChartModel(LocaleKeys.adult.tr(), ticketBalanceAccrualList![1].accrualNetEntitlement?.toDouble() ?? 0, MyColors.textMixColor, titleAppend: ""), PieChartModel(LocaleKeys.child.tr(), ticketBalanceAccrualList![2].accrualNetEntitlement?.toDouble() ?? 0, MyColors.backgroundBlackColor, titleAppend: ""), PieChartModel(LocaleKeys.infants.tr(), ticketBalanceAccrualList![3].accrualNetEntitlement?.toDouble() ?? 0, MyColors.pinkColor, titleAppend: ""), ]; @@ -185,7 +185,7 @@ class _BalancesDashboardWidgetState extends State { Widget getChart(List chartModelList) { List _colorList = chartModelList.map((e) => e.color).toList(); return PieChart( - dataMap: {for (var e in chartModelList) e.title: e.parsedValue}, + dataMap: {for (var e in chartModelList) e.title: e.value}, animationDuration: const Duration(milliseconds: 800), chartRadius: MediaQuery.of(context).size.width / 3.2, colorList: _colorList, From 705adbc17ebae09b03457e05de1592148a6017df Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 25 Dec 2022 15:51:35 +0300 Subject: [PATCH 259/302] code format monthly attendance --- .../attendance/monthly_attendance_screen.dart | 403 +++++++++--------- 1 file changed, 202 insertions(+), 201 deletions(-) diff --git a/lib/ui/attendance/monthly_attendance_screen.dart b/lib/ui/attendance/monthly_attendance_screen.dart index 9e48c81..46d4d40 100644 --- a/lib/ui/attendance/monthly_attendance_screen.dart +++ b/lib/ui/attendance/monthly_attendance_screen.dart @@ -112,7 +112,8 @@ class _MonthlyAttendanceScreenState extends State { ], ).onPress(() async { showMonthPicker( - context: context, //locale: EasyLocalization.of(context)?.locale, + context: context, + //locale: EasyLocalization.of(context)?.locale, initialDate: formattedDate, firstDate: DateTime(searchYear - 2), lastDate: DateTime.now(), @@ -419,211 +420,211 @@ class _MonthlyAttendanceScreenState extends State { } if (details.date!.month == formattedDate.month && details.date!.year == formattedDate.year) { int val = details.date!.day; - getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'Y' ? - showModalBottomSheet( - context: context, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(25)), - isScrollControlled: true, - backgroundColor: MyColors.backgroundBlackColor, - builder: (_) { - return DraggableScrollableSheet( - maxChildSize: 0.9, - expand: false, - builder: (_, controller) { - dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE; - DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss").parse(dmyString); - return Column( - children: [ - Container( - width: 49, - height: 7, - margin: const EdgeInsets.symmetric(vertical: 10), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(25), - color: MyColors.darkGreyColor, - ), - ), - Expanded( - child: ListView.builder( - controller: controller, - itemCount: 1, - itemBuilder: (_, i) => - Container( - decoration: const BoxDecoration( - borderRadius: BorderRadius.vertical( - top: Radius.circular(25.0), + getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'Y' + ? showModalBottomSheet( + context: context, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(25)), + isScrollControlled: true, + backgroundColor: MyColors.backgroundBlackColor, + builder: (_) { + return DraggableScrollableSheet( + maxChildSize: 0.9, + expand: false, + builder: (_, controller) { + dynamic dmyString = getScheduleShiftsDetailsList!.sCHEDULEDATE; + DateTime dateTime1 = DateFormat("MM/dd/yyyy hh:mm:ss").parse(dmyString); + return Column( + children: [ + Container( + width: 49, + height: 7, + margin: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(25), + color: MyColors.darkGreyColor, + ), + ), + Expanded( + child: ListView.builder( + controller: controller, + itemCount: 1, + itemBuilder: (_, i) => Container( + decoration: const BoxDecoration( + borderRadius: BorderRadius.vertical( + top: Radius.circular(25.0), + ), + color: MyColors.backgroundBlackColor, ), - color: MyColors.backgroundBlackColor, - ), - child: Column( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "${DateFormat("MMMM-dd-yyyy").format(dateTime1).replaceAll('-', " ")}".toText24(isBold: true, color: Colors.white), - LocaleKeys.attendanceDetails.tr().toText16(color: MyColors.greyACColor), - 12.height, - CircularStepProgressBar( - totalSteps: 16 * 4, - currentStep: percentage, - width: 224, - height: 236, - selectedColor: MyColors.gradiantEndColor, - unselectedColor: MyColors.grey70Color, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - "${getScheduleShiftsDetailsList!.pERCENTAGE}".toText44(color: Colors.white, isBold: true), - LocaleKeys.completed.tr().toText11(color: MyColors.greyACColor), - 28.height, - LocaleKeys.shiftTime.tr().toText11(color: MyColors.greyACColor), - "${getScheduleShiftsDetailsList!.sHTNAME}".toText22(color: Colors.white, isBold: true), - ], + child: Column( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + "${DateFormat("MMMM-dd-yyyy").format(dateTime1).replaceAll('-', " ")}".toText24(isBold: true, color: Colors.white), + LocaleKeys.attendanceDetails.tr().toText16(color: MyColors.greyACColor), + 12.height, + CircularStepProgressBar( + totalSteps: 16 * 4, + currentStep: percentage, + width: 224, + height: 236, + selectedColor: MyColors.gradiantEndColor, + unselectedColor: MyColors.grey70Color, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + "${getScheduleShiftsDetailsList!.pERCENTAGE}".toText44(color: Colors.white, isBold: true), + LocaleKeys.completed.tr().toText11(color: MyColors.greyACColor), + 28.height, + LocaleKeys.shiftTime.tr().toText11(color: MyColors.greyACColor), + "${getScheduleShiftsDetailsList!.sHTNAME}".toText22(color: Colors.white, isBold: true), + ], + ).center, ).center, - ).center, - ], - ).paddingOnly(left: 21, right: 21, top: 27, bottom: 37), - Stack( - children: [ - Container( - width: double.infinity, - decoration: const BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white), - padding: const EdgeInsets.only(left: 31, right: 31, top: 30, bottom: 29), - child: Column( - children: [ - Row( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.actualCheckIn.tr().toText11( - color: MyColors.grey67Color, - ), - "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}" != "" - ? "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true) - : "__".toText22(color: Colors.black, isBold: true), - ], - ).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.actualCheckOut.tr().toText11( - color: MyColors.grey67Color, - ), - "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}" != "" - ? "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true) - : "__".toText22(color: Colors.black, isBold: true), - ], - ).expanded, - ], - ), - 25.height, - const Divider( - height: 1, - thickness: 1, - color: MyColors.lightGreyEFColor, - ), - 25.height, - Row( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.approvedCheckIn.tr().toText11( - color: MyColors.grey67Color, - ), - "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}" != "" - ? "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true) - : "__".toText22(color: MyColors.greenColor, isBold: true), - ], - ).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.approvedCheckOut.tr().toText11( - color: MyColors.grey67Color, - ), - "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}" != "" - ? "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true) - : "__".toText22(color: MyColors.greenColor, isBold: true), - ], - ).expanded, - ], - ), - 25.height, - const Divider( - height: 1, - thickness: 1, - color: MyColors.lightGreyEFColor, - ), - 25.height, - Row( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.lateIn.tr().toText11( - color: MyColors.grey67Color, - ), - "${getDayHoursTypeDetailsList[index].lATEINHRS}".toText22(color: MyColors.redColor, isBold: true), - ], - ).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.excess.tr().toText11( - color: MyColors.grey67Color, - ), - "${getDayHoursTypeDetailsList[index].eXCESSHRS}".toText22(color: MyColors.backgroundBlackColor, isBold: true), - ], - ).expanded, - ], - ), - 25.height, - const Divider( - height: 1, - thickness: 1, - color: MyColors.lightGreyEFColor, - ), - 25.height, - Row( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.shortage.tr().toText11( - color: MyColors.grey67Color, - ), - "${getDayHoursTypeDetailsList[index].sHORTAGEHRS}".toText22(color: MyColors.backgroundBlackColor, isBold: true), - ], - ).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.earlyOut.tr().toText11( - color: MyColors.grey67Color, - ), - "${getDayHoursTypeDetailsList[index].eARLYOUTHRS}".toText22(color: Colors.black, isBold: true), - ], - ).expanded, - ], - ), - ], + ], + ).paddingOnly(left: 21, right: 21, top: 27, bottom: 37), + Stack( + children: [ + Container( + width: double.infinity, + decoration: const BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white), + padding: const EdgeInsets.only(left: 31, right: 31, top: 30, bottom: 29), + child: Column( + children: [ + Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.actualCheckIn.tr().toText11( + color: MyColors.grey67Color, + ), + "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}" != "" + ? "${getScheduleShiftsDetailsList!.sHTACTUALSTARTTIME}".toText22(color: Colors.black, isBold: true) + : "__".toText22(color: Colors.black, isBold: true), + ], + ).expanded, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.actualCheckOut.tr().toText11( + color: MyColors.grey67Color, + ), + "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}" != "" + ? "${getScheduleShiftsDetailsList!.sHTACTUALENDTIME}".toText22(color: Colors.black, isBold: true) + : "__".toText22(color: Colors.black, isBold: true), + ], + ).expanded, + ], + ), + 25.height, + const Divider( + height: 1, + thickness: 1, + color: MyColors.lightGreyEFColor, + ), + 25.height, + Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.approvedCheckIn.tr().toText11( + color: MyColors.grey67Color, + ), + "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}" != "" + ? "${getScheduleShiftsDetailsList!.aPPROVEDSTARTTIME}".toText22(color: MyColors.greenColor, isBold: true) + : "__".toText22(color: MyColors.greenColor, isBold: true), + ], + ).expanded, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.approvedCheckOut.tr().toText11( + color: MyColors.grey67Color, + ), + "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}" != "" + ? "${getScheduleShiftsDetailsList!.aPPROVEDENDTIME}".toText22(color: MyColors.greenColor, isBold: true) + : "__".toText22(color: MyColors.greenColor, isBold: true), + ], + ).expanded, + ], + ), + 25.height, + const Divider( + height: 1, + thickness: 1, + color: MyColors.lightGreyEFColor, + ), + 25.height, + Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.lateIn.tr().toText11( + color: MyColors.grey67Color, + ), + "${getDayHoursTypeDetailsList[index].lATEINHRS}".toText22(color: MyColors.redColor, isBold: true), + ], + ).expanded, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.excess.tr().toText11( + color: MyColors.grey67Color, + ), + "${getDayHoursTypeDetailsList[index].eXCESSHRS}".toText22(color: MyColors.backgroundBlackColor, isBold: true), + ], + ).expanded, + ], + ), + 25.height, + const Divider( + height: 1, + thickness: 1, + color: MyColors.lightGreyEFColor, + ), + 25.height, + Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.shortage.tr().toText11( + color: MyColors.grey67Color, + ), + "${getDayHoursTypeDetailsList[index].sHORTAGEHRS}".toText22(color: MyColors.backgroundBlackColor, isBold: true), + ], + ).expanded, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.earlyOut.tr().toText11( + color: MyColors.grey67Color, + ), + "${getDayHoursTypeDetailsList[index].eARLYOUTHRS}".toText22(color: Colors.black, isBold: true), + ], + ).expanded, + ], + ), + ], + ), ), - ), - ], - ), - ], + ], + ), + ], + ), ), ), - ), - ), - ], - ); - }, - ); - }, - ):null; + ), + ], + ); + }, + ); + }, + ) + : null; } } From 45a5fdad0246b573d274e935dba67d5c6b9c9937 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 25 Dec 2022 16:48:11 +0300 Subject: [PATCH 260/302] ios nfc mark attendance confirmation dialog issue fix. --- lib/widgets/mark_attendance_widget.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/widgets/mark_attendance_widget.dart b/lib/widgets/mark_attendance_widget.dart index a599c79..dfe3b79 100644 --- a/lib/widgets/mark_attendance_widget.dart +++ b/lib/widgets/mark_attendance_widget.dart @@ -161,11 +161,12 @@ class _MarkAttendanceWidgetState extends State { ); } else { bool status = await model.fetchAttendanceTracking(context); + if (Platform.isIOS) await Future.delayed(const Duration(seconds: 3)); Utils.hideLoading(context); showMDialog( context, backgroundColor: Colors.transparent, - isDismissable: false, + isDismissable: true, child: SuccessDialog(widget.isFromDashboard), ); } @@ -272,7 +273,7 @@ class _MarkAttendanceWidgetState extends State { showMDialog( context, backgroundColor: Colors.transparent, - isDismissable: false, + isDismissable: true, child: SuccessDialog(widget.isFromDashboard), ); } catch (ex) { From dd8da2cdfe40284a71bd82fc40afb928d9b38fe4 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 25 Dec 2022 16:58:26 +0300 Subject: [PATCH 261/302] upper case check removed from forgot & change password. --- lib/ui/login/change_password_screen.dart | 8 ++++---- lib/ui/login/new_password_screen.dart | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/ui/login/change_password_screen.dart b/lib/ui/login/change_password_screen.dart index e2d292e..4db3ae8 100644 --- a/lib/ui/login/change_password_screen.dart +++ b/lib/ui/login/change_password_screen.dart @@ -100,8 +100,8 @@ class _ChangePasswordScreenState extends State { passwordConstraintsUI(LocaleKeys.doNotUseRecentPassword.tr(), true), 8.height, passwordConstraintsUI(LocaleKeys.atLeastOneLowercase.tr(), checkRegEx(r'[a-z]')), - 8.height, - passwordConstraintsUI(LocaleKeys.atLeastOneUppercase.tr(), checkRegEx(r'[A-Z]')), + // 8.height, + // passwordConstraintsUI(LocaleKeys.atLeastOneUppercase.tr(), checkRegEx(r'[A-Z]')), 8.height, passwordConstraintsUI(LocaleKeys.atLeastOneNumeric.tr(), checkRegEx(r'[0-9]')), 8.height, @@ -131,14 +131,14 @@ class _ChangePasswordScreenState extends State { return false; } - bool hasUppercase = password.contains(RegExp(r'[A-Z]')); + // bool hasUppercase = password.contains(RegExp(r'[A-Z]')); bool hasDigits = password.contains(RegExp(r'[0-9]')); bool hasLowercase = password.contains(RegExp(r'[a-z]')); bool hasSpecialCharacters = password.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]')); bool hasMinLength = password.length >= minLength; bool isMatched = password == confirmPassword.text; - return hasDigits && hasUppercase && hasLowercase && hasSpecialCharacters && hasMinLength && isMatched && checkRepeatedChars(password); + return hasDigits && hasLowercase && hasSpecialCharacters && hasMinLength && isMatched && checkRepeatedChars(password); } bool checkRepeatedChars(String password) { diff --git a/lib/ui/login/new_password_screen.dart b/lib/ui/login/new_password_screen.dart index 217e049..9efee64 100644 --- a/lib/ui/login/new_password_screen.dart +++ b/lib/ui/login/new_password_screen.dart @@ -94,8 +94,8 @@ class _NewPasswordScreenState extends State { passwordConstraintsUI(LocaleKeys.doNotUseRecentPassword.tr(), true), 8.height, passwordConstraintsUI(LocaleKeys.atLeastOneLowercase.tr(), checkRegEx(r'[a-z]')), - 8.height, - passwordConstraintsUI(LocaleKeys.atLeastOneUppercase.tr(), checkRegEx(r'[A-Z]')), + // 8.height, + // passwordConstraintsUI(LocaleKeys.atLeastOneUppercase.tr(), checkRegEx(r'[A-Z]')), 8.height, passwordConstraintsUI(LocaleKeys.atLeastOneNumeric.tr(), checkRegEx(r'[0-9]')), 8.height, @@ -143,14 +143,14 @@ class _NewPasswordScreenState extends State { return false; } - bool hasUppercase = password.contains(RegExp(r'[A-Z]')); + // bool hasUppercase = password.contains(RegExp(r'[A-Z]')); bool hasDigits = password.contains(RegExp(r'[0-9]')); bool hasLowercase = password.contains(RegExp(r'[a-z]')); // bool hasSpecialCharacters = password.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]')); bool hasMinLength = password.length >= minLength; bool isMatched = password == confirmPassword.text; - return hasDigits && hasUppercase && hasLowercase && hasMinLength && isMatched && checkRepeatedChars(password); + return hasDigits && hasLowercase && hasMinLength && isMatched && checkRepeatedChars(password); } bool checkRepeatedChars(String password) { From 7131706998ce541b4cd8d7072f682be3ed711ec2 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 25 Dec 2022 17:05:25 +0300 Subject: [PATCH 262/302] password requirement check improvement. --- lib/ui/login/change_password_screen.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/ui/login/change_password_screen.dart b/lib/ui/login/change_password_screen.dart index 4db3ae8..e96901b 100644 --- a/lib/ui/login/change_password_screen.dart +++ b/lib/ui/login/change_password_screen.dart @@ -108,8 +108,8 @@ class _ChangePasswordScreenState extends State { passwordConstraintsUI(LocaleKeys.minimum8Characters.tr(), password.text.length >= 8), 8.height, passwordConstraintsUI(LocaleKeys.doNotAddRepeatingLetters.tr(), checkRepeatedChars(password.text)), - 8.height, - passwordConstraintsUI(LocaleKeys.itShouldContainSpecialCharacter.tr(), checkRegEx(r'[!@#$%^&*(),.?":{}|<>]')), + // 8.height, + // passwordConstraintsUI(LocaleKeys.itShouldContainSpecialCharacter.tr(), checkRegEx(r'[!@#$%^&*(),.?":{}|<>]')), 8.height, passwordConstraintsUI(LocaleKeys.confirmPasswordMustMatch.tr(), password.text.isNotEmpty && password.text == confirmPassword.text), ], @@ -134,11 +134,11 @@ class _ChangePasswordScreenState extends State { // bool hasUppercase = password.contains(RegExp(r'[A-Z]')); bool hasDigits = password.contains(RegExp(r'[0-9]')); bool hasLowercase = password.contains(RegExp(r'[a-z]')); - bool hasSpecialCharacters = password.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]')); + // bool hasSpecialCharacters = password.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]')); bool hasMinLength = password.length >= minLength; bool isMatched = password == confirmPassword.text; - return hasDigits && hasLowercase && hasSpecialCharacters && hasMinLength && isMatched && checkRepeatedChars(password); + return hasDigits && hasLowercase && hasMinLength && isMatched && checkRepeatedChars(password); } bool checkRepeatedChars(String password) { From fb3b3e8e4671839ab84b39b2eba236ac1842bf13 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 25 Dec 2022 17:12:06 +0300 Subject: [PATCH 263/302] Voice Chat Fixes & Audio Player Implementation --- .../chat/get_single_user_chat_list_model.dart | 10 +- lib/provider/chat_provider_model.dart | 498 +++++++++--------- lib/ui/chat/chat_bubble.dart | 168 +++--- lib/ui/chat/chat_detailed_screen.dart | 54 +- 4 files changed, 346 insertions(+), 384 deletions(-) diff --git a/lib/models/chat/get_single_user_chat_list_model.dart b/lib/models/chat/get_single_user_chat_list_model.dart index 7ca60a8..3722c09 100644 --- a/lib/models/chat/get_single_user_chat_list_model.dart +++ b/lib/models/chat/get_single_user_chat_list_model.dart @@ -1,8 +1,8 @@ import 'dart:convert'; +import 'dart:io'; import 'dart:typed_data'; - -import 'package:audio_waveforms/audio_waveforms.dart'; import 'package:flutter/foundation.dart'; +import 'package:just_audio/just_audio.dart'; List singleUserChatModelFromJson(String str) => List.from(json.decode(str).map((x) => SingleUserChatModel.fromJson(x))); @@ -61,8 +61,8 @@ class SingleUserChatModel { bool? isReplied; bool? isImageLoaded; Uint8List? image; - Uint8List? voice; - PlayerController? voiceController; + File? voice; + AudioPlayer? voiceController; factory SingleUserChatModel.fromJson(Map json) => SingleUserChatModel( userChatHistoryId: json["userChatHistoryId"] == null ? null : json["userChatHistoryId"], @@ -90,7 +90,7 @@ class SingleUserChatModel { isImageLoaded: false, image: null, voice: null, - voiceController: json["fileTypeId"] == 13 ? PlayerController() : null); + voiceController: json["fileTypeId"] == 13 ? AudioPlayer() : null); Map toJson() => { "userChatHistoryId": userChatHistoryId == null ? null : userChatHistoryId, diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 40e9327..6383082 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -10,6 +10,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:http/http.dart'; import 'package:just_audio/just_audio.dart' as JustAudio; +import 'package:just_audio/just_audio.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; @@ -35,22 +36,21 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { TextEditingController message = TextEditingController(); TextEditingController search = TextEditingController(); - List userChatHistory = []; + List userChatHistory = [], repliedMsg = []; List? pChatHistory, searchedChats; String chatCID = ''; bool isLoading = true; bool isChatScreenActive = false; int receiverID = 0; late File selectedFile; - bool isFileSelected = false; String sFileType = ""; - bool isMsgReply = false; - List repliedMsg = []; + List favUsersList = []; int paginationVal = 0; - bool currentUserTyping = false; int? cTypingUserId = 0; + bool isTextMsg = false, isReplyMsg = false, isAttachmentMsg = false, isVoiceMsg = false; + //Chat Home Page Counter int chatUConvCounter = 0; @@ -411,6 +411,9 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void OnSubmitChatAsync(List? parameters) { + print(isChatScreenActive); + print(receiverID); + print(isChatScreenActive); logger.i(parameters); List data = [], temp = []; for (dynamic msg in parameters!) { @@ -537,45 +540,56 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { required bool isAttachment, required bool isReply, Uint8List? image, - Uint8List? voice, - required bool isImageLoaded}) async { + required bool isImageLoaded, + String? userEmail, + int? userStatus, + File? voiceFile, + required bool isVoiceAttached}) async { Uuid uuid = const Uuid(); String contentNo = uuid.v4(); - String msg = message.text; + String msg; + if (isVoiceAttached) { + msg = voiceFile!.path.split("/").last; + } else { + msg = message.text; + } + logger.w(jsonEncode(repliedMsg)); SingleUserChatModel data = SingleUserChatModel( - userChatHistoryId: 0, - chatEventId: chatEventId, - chatSource: 1, - contant: msg, - contantNo: contentNo, - conversationId: chatCID, - createdDate: DateTime.now(), - currentUserId: AppState().chatDetails!.response!.id, - currentUserName: AppState().chatDetails!.response!.userName, - targetUserId: targetUserId, - targetUserName: targetUserName, - isReplied: false, - fileTypeId: fileTypeId, - userChatReplyResponse: isReply ? UserChatReplyResponse.fromJson(repliedMsg.first.toJson()) : null, - fileTypeResponse: isAttachment - ? FileTypeResponse( - fileTypeId: fileTypeId, - fileTypeName: getFileExtension(selectedFile.path).toString(), - fileKind: "file", - fileName: selectedFile.path.split("/").last, - fileTypeDescription: getFileTypeDescription(getFileExtension(selectedFile.path).toString()), - ) - : null, - image: image, - isImageLoaded: isImageLoaded, - voice: voice, - ); + userChatHistoryId: 0, + chatEventId: chatEventId, + chatSource: 1, + contant: msg, + contantNo: contentNo, + conversationId: chatCID, + createdDate: DateTime.now(), + currentUserId: AppState().chatDetails!.response!.id, + currentUserName: AppState().chatDetails!.response!.userName, + targetUserId: targetUserId, + targetUserName: targetUserName, + isReplied: false, + fileTypeId: fileTypeId, + userChatReplyResponse: isReply ? UserChatReplyResponse.fromJson(repliedMsg.first.toJson()) : null, + fileTypeResponse: isAttachment + ? FileTypeResponse( + fileTypeId: fileTypeId, + fileTypeName: isVoiceMsg ? getFileExtension(voiceFile!.path).toString() : getFileExtension(selectedFile.path).toString(), + fileKind: "file", + fileName: isVoiceMsg ? msg : selectedFile.path.split("/").last, + fileTypeDescription: isVoiceMsg ? getFileTypeDescription(getFileExtension(voiceFile!.path).toString()) : getFileTypeDescription(getFileExtension(selectedFile.path).toString()), + ) + : null, + image: image, + isImageLoaded: isImageLoaded, + voice: isVoiceMsg ? voiceFile! : null, + voiceController: isVoiceMsg ? AudioPlayer() : null); if (kDebugMode) { logger.i("model data: " + jsonEncode(data)); } userChatHistory.insert(0, data); - isFileSelected = false; - isMsgReply = false; + isTextMsg = false; + isReplyMsg = false; + isAttachmentMsg = false; + isVoiceMsg = false; sFileType = ""; message.clear(); notifyListeners(); @@ -586,20 +600,55 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void sendChatMessage(BuildContext context, {required int targetUserId, required int userStatus, required String userEmail, required String targetUserName}) async { - if (!isFileSelected && !isMsgReply) { - if (kDebugMode) { - print("Normal Text Msg"); + if (kDebugMode) { + print("====================== Values ============================"); + print("Is Text " + isTextMsg.toString()); + print("isReply " + isReplyMsg.toString()); + print("isAttachment " + isAttachmentMsg.toString()); + print("isVoice " + isVoiceMsg.toString()); + } + //Text + if (isTextMsg && !isAttachmentMsg && !isVoiceMsg && !isReplyMsg) { + logger.d("// Normal Text Message"); + if (message.text == null || message.text.isEmpty) { + return; } + sendChatToServer( + chatEventId: 1, + fileTypeId: null, + targetUserId: targetUserId, + targetUserName: targetUserName, + isAttachment: false, + chatReplyId: null, + isReply: false, + isImageLoaded: false, + image: null, + isVoiceAttached: false, + userEmail: userEmail, + userStatus: userStatus); + } else if (isTextMsg && !isAttachmentMsg && !isVoiceMsg && isReplyMsg) { + logger.d("// Text Message as Reply"); if (message.text == null || message.text.isEmpty) { return; } sendChatToServer( - chatEventId: 1, fileTypeId: null, targetUserId: targetUserId, targetUserName: targetUserName, isAttachment: false, chatReplyId: null, isReply: false, isImageLoaded: false, image: null); + chatEventId: 1, + fileTypeId: null, + targetUserId: targetUserId, + targetUserName: targetUserName, + chatReplyId: repliedMsg.first.userChatHistoryId, + isAttachment: false, + isReply: true, + isImageLoaded: repliedMsg.first.isImageLoaded!, + image: repliedMsg.first.image, + isVoiceAttached: false, + voiceFile: null, + userEmail: userEmail, + userStatus: userStatus); } - if (isFileSelected && !isMsgReply) { - if (kDebugMode) { - logger.i("Normal Attachment Msg"); - } + // Attachment + else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && !isReplyMsg) { + logger.d("// Normal Image Message"); Utils.showLoading(context); dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); String? ext = getFileExtension(selectedFile.path); @@ -613,46 +662,100 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { chatReplyId: null, isReply: false, isImageLoaded: true, - image: selectedFile.readAsBytesSync()); + image: selectedFile.readAsBytesSync(), + isVoiceAttached: false, + userEmail: userEmail, + userStatus: userStatus); + } else if (!isTextMsg && isAttachmentMsg && !isVoiceMsg && isReplyMsg) { + logger.d("// Image as Reply Msg"); + Utils.showLoading(context); + dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); + String? ext = getFileExtension(selectedFile.path); + Utils.hideLoading(context); + sendChatToServer( + chatEventId: 2, + fileTypeId: getFileType(ext.toString()), + targetUserId: targetUserId, + targetUserName: targetUserName, + isAttachment: true, + chatReplyId: repliedMsg.first.userChatHistoryId, + isReply: true, + isImageLoaded: true, + image: selectedFile.readAsBytesSync(), + isVoiceAttached: false, + userEmail: userEmail, + userStatus: userStatus); } - if (!isFileSelected && isMsgReply) { - if (kDebugMode) { - print("Normal Text To Text Reply"); + //Voice + + else if (!isTextMsg && !isAttachmentMsg && isVoiceMsg && !isReplyMsg) { + logger.d("// Normal Voice Message"); + + if (!isPause) { + path = await recorderController.stop(false); } - if (message.text == null || message.text.isEmpty) { - return; + if (kDebugMode) { + logger.i("path:" + path!); } + File voiceFile = File(path!); + voiceFile.readAsBytesSync(); + _timer?.cancel(); + isPause = false; + isPlaying = false; + isRecoding = false; + Utils.showLoading(context); + dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile); + String? ext = getFileExtension(voiceFile.path); + Utils.hideLoading(context); sendChatToServer( - chatEventId: 1, - fileTypeId: null, + chatEventId: 2, + fileTypeId: getFileType(ext.toString()), targetUserId: targetUserId, targetUserName: targetUserName, - chatReplyId: repliedMsg.first.userChatHistoryId, - isAttachment: false, - isReply: true, - isImageLoaded: repliedMsg.first.isImageLoaded!, - image: repliedMsg.first.image); - } // reply msg over image && normal - if (isFileSelected && isMsgReply) { + chatReplyId: null, + isAttachment: true, + isReply: isReplyMsg, + isImageLoaded: false, + voiceFile: voiceFile, + isVoiceAttached: true, + userEmail: userEmail, + userStatus: userStatus); + notifyListeners(); + } else if (!isTextMsg && !isAttachmentMsg && isVoiceMsg && isReplyMsg) { + logger.d("// Voice as Reply Msg"); + + if (!isPause) { + path = await recorderController.stop(false); + } if (kDebugMode) { - print("Reply With File"); + logger.i("path:" + path!); } + File voiceFile = File(path!); + voiceFile.readAsBytesSync(); + _timer?.cancel(); + isPause = false; + isPlaying = false; + isRecoding = false; + Utils.showLoading(context); - dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), selectedFile); - String? ext = getFileExtension(selectedFile.path); + dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile); + String? ext = getFileExtension(voiceFile.path); Utils.hideLoading(context); sendChatToServer( chatEventId: 2, fileTypeId: getFileType(ext.toString()), targetUserId: targetUserId, targetUserName: targetUserName, + chatReplyId: null, isAttachment: true, - chatReplyId: repliedMsg.first.userChatHistoryId, - isReply: true, - isImageLoaded: true, - image: selectedFile.readAsBytesSync()); + isReply: isReplyMsg, + isImageLoaded: false, + voiceFile: voiceFile, + isVoiceAttached: true, + userEmail: userEmail, + userStatus: userStatus); + notifyListeners(); } - if (searchedChats != null) { dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); if (contain.isEmpty) { @@ -676,34 +779,36 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); notifyListeners(); } - } else { - List emails = []; - emails.add(await EmailImageEncryption().encrypt(val: userEmail)); - List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); - searchedChats!.add( - ChatUser( - id: targetUserId, - userName: targetUserName, - unreadMessageCount: 0, - email: userEmail, - isImageLoading: false, - image: chatImages.first.profilePicture ?? "", - isImageLoaded: true, - isTyping: false, - isFav: false, - userStatus: userStatus, - userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), - ), - ); - notifyListeners(); } + // else { + // List emails = []; + // emails.add(await EmailImageEncryption().encrypt(val: userEmail)); + // List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); + // searchedChats!.add( + // ChatUser( + // id: targetUserId, + // userName: targetUserName, + // unreadMessageCount: 0, + // email: userEmail, + // isImageLoading: false, + // image: chatImages.first.profilePicture ?? "", + // isImageLoaded: true, + // isTyping: false, + // isFav: false, + // userStatus: userStatus, + // userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), + // ), + // ); + // notifyListeners(); + // } } void selectImageToUpload(BuildContext context) { ImageOptions.showImageOptionsNew(context, true, (String image, File file) async { if (checkFileSize(file.path)) { selectedFile = file; - isFileSelected = true; + isAttachmentMsg = true; + isTextMsg = false; sFileType = getFileExtension(file.path)!; message.text = file.path.split("/").last; Navigator.of(context).pop(); @@ -715,7 +820,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void removeAttachment() { - isFileSelected = false; + isAttachmentMsg = false; sFileType = ""; message.text = ''; notifyListeners(); @@ -784,14 +889,14 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void chatReply(SingleUserChatModel data) { repliedMsg = []; data.isReplied = true; - isMsgReply = true; + isReplyMsg = true; repliedMsg.add(data); notifyListeners(); } void closeMe() { repliedMsg = []; - isMsgReply = false; + isReplyMsg = false; notifyListeners(); } @@ -841,10 +946,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { receiverID = 0; paginationVal = 0; message.text = ''; - isFileSelected = false; + isAttachmentMsg = false; repliedMsg = []; sFileType = ""; - isMsgReply = false; + isReplyMsg = false; + isTextMsg = false; + isVoiceMsg = false; notifyListeners(); } @@ -855,7 +962,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { receiverID = 0; paginationVal = 0; message.text = ''; - isFileSelected = false; + isTextMsg = false; + isAttachmentMsg = false; + isVoiceMsg = false; + isReplyMsg = false; repliedMsg = []; sFileType = ""; } @@ -866,7 +976,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { receiverID = 0; paginationVal = 0; message.text = ''; - isFileSelected = false; + isTextMsg = false; + isAttachmentMsg = false; + isVoiceMsg = false; + isReplyMsg = false; repliedMsg = []; sFileType = ""; deleteData(); @@ -1052,6 +1165,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isRecoding = false; isPlaying = false; isPause = false; + isVoiceMsg = false; recorderController.dispose(); playerController.dispose(); } @@ -1061,6 +1175,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (status.isDenied == true) { startRecoding(); } else { + isVoiceMsg = true; recorderController.reset(); await recorderController.record(path); _recodeDuration = 0; @@ -1123,6 +1238,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isPause = false; isRecoding = false; isPlaying = false; + isVoiceMsg = false; notifyListeners(); } } @@ -1141,169 +1257,49 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return numberStr; } - void playRecoding() async { - isPlaying = true; - await playerController.startPlayer(finishMode: FinishMode.pause); - } - - void playOrPause() async { - playerController.playerState == PlayerState.playing ? await playerController.pausePlayer() : playRecoding(); - notifyListeners(); - } - - void sendVoiceMessage(BuildContext context, {required int targetUserId, required int userStatus, required String userEmail, required String targetUserName}) async { - if (!isPause) { - path = await recorderController.stop(false); - } - if (kDebugMode) { - logger.i("path:" + path!); - } - File voiceFile = File(path!); - voiceFile.readAsBytesSync(); - _timer?.cancel(); - isPause = false; - isPlaying = false; - isRecoding = false; - Utils.showLoading(context); - dynamic value = await uploadAttachments(AppState().chatDetails!.response!.id.toString(), voiceFile); - String? ext = getFileExtension(voiceFile.path); - Utils.hideLoading(context); - sendVoiceMessageToServer( - msgText: voiceFile.path!.split("/").last, - chatEventId: 2, - fileTypeId: getFileType(ext.toString()), - targetUserId: targetUserId, - targetUserName: targetUserName, - isVoiceAttached: true, - voice: voiceFile.readAsBytesSync(), - userEmail: userEmail, - userStatus: userStatus, - chatReplyId: null, - isAttachment: true, - isReply: isMsgReply, - voiceFile: voiceFile, - ); - notifyListeners(); - } - - Future sendVoiceMessageToServer( - {String? msgText, - int? chatEventId, - int? fileTypeId, - int? targetUserId, - String? targetUserName, - bool? isVoiceAttached, - Uint8List? voice, - String? userEmail, - int? userStatus, - bool? isReply, - bool? isAttachment, - int? chatReplyId, - File? voiceFile}) async { - Uuid uuid = const Uuid(); - String contentNo = uuid.v4(); - String msg = msgText!; - SingleUserChatModel data = SingleUserChatModel( - chatEventId: chatEventId, - chatSource: 1, - contant: msg, - contantNo: contentNo, - conversationId: chatCID, - createdDate: DateTime.now(), - currentUserId: AppState().chatDetails!.response!.id, - currentUserName: AppState().chatDetails!.response!.userName, - targetUserId: targetUserId, - targetUserName: targetUserName, - isReplied: false, - fileTypeId: fileTypeId, - userChatReplyResponse: isReply! ? UserChatReplyResponse.fromJson(repliedMsg.first.toJson()) : null, - fileTypeResponse: isAttachment! - ? FileTypeResponse( - fileTypeId: fileTypeId, - fileTypeName: getFileExtension(voiceFile!.path).toString(), - fileKind: "file", - fileName: msgText, - fileTypeDescription: getFileTypeDescription(getFileExtension(voiceFile!.path).toString()), - ) - : null, - image: null, - isImageLoaded: false, - voice: voice, - ); - userChatHistory.insert(0, data); - notifyListeners(); - String chatData = - '{"contant":"$msg","contantNo":"$contentNo","chatEventId":$chatEventId,"fileTypeId": $fileTypeId,"currentUserId":${AppState().chatDetails!.response!.id},"chatSource":1,"userChatHistoryLineRequestList":[{"isSeen":false,"isDelivered":false,"targetUserId":$targetUserId,"targetUserStatus":1}],"chatReplyId":$chatReplyId,"conversationId":"$chatCID"}'; - await chatHubConnection.invoke("AddChatUserAsync", args: [json.decode(chatData)]); - - if (searchedChats != null) { - dynamic contain = searchedChats!.where((ChatUser element) => element.id == targetUserId); - if (contain.isEmpty) { - List emails = []; - emails.add(await EmailImageEncryption().encrypt(val: userEmail!)); - List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); - searchedChats!.add( - ChatUser( - id: targetUserId, - userName: targetUserName, - unreadMessageCount: 0, - email: userEmail, - isImageLoading: false, - image: chatImages.first.profilePicture ?? "", - isImageLoaded: true, - isTyping: false, - isFav: false, - userStatus: userStatus, - userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), - ), - ); - notifyListeners(); - } - } else { - List emails = []; - emails.add(await EmailImageEncryption().encrypt(val: userEmail!)); - List chatImages = await ChatApiClient().getUsersImages(encryptedEmails: emails); - searchedChats!.add( - ChatUser( - id: targetUserId, - userName: targetUserName, - unreadMessageCount: 0, - email: userEmail, - isImageLoading: false, - image: chatImages.first.profilePicture ?? "", - isImageLoaded: true, - isTyping: false, - isFav: false, - userStatus: userStatus, - userLocalDownlaodedImage: await downloadImageLocal(chatImages.first.profilePicture, targetUserId.toString()), - ), - ); - notifyListeners(); - } - } + // void playRecoding() async { + // isPlaying = true; + // await playerController.startPlayer(finishMode: FinishMode.pause); + //} void playVoice( BuildContext context, { required SingleUserChatModel data, }) async { - Utils.showLoading(context); - Uint8List encodedString = await ChatApiClient().downloadURL(fileName: data.contant!, fileTypeDescription: getFileTypeDescription(data.fileTypeResponse!.fileTypeName ?? "")); - try { - String path = await downChatVoice(encodedString, data.fileTypeResponse!.fileTypeName ?? "", data); - File file = File(path!); - file.readAsBytesSync(); - Utils.hideLoading(context); - await data.voiceController!.preparePlayer(file.path, 1.0); - data.voiceController!.startPlayer(finishMode: FinishMode.stop); - notifyListeners(); - } catch (e) { - Utils.showToast("Cannot open file."); + if (data.voice != null && data.voice!.existsSync()) { + print("Heree"); + await data.voiceController!.setFilePath(data!.voice!.path); + await data.voiceController!.setLoopMode(LoopMode.off); + Duration? duration = await data.voiceController!.load(); + await data.voiceController!.seek(duration); + await data.voiceController!.play(); + } else { + Utils.showLoading(context); + Uint8List encodedString = await ChatApiClient().downloadURL(fileName: data.contant!, fileTypeDescription: getFileTypeDescription(data.fileTypeResponse!.fileTypeName ?? "")); + try { + String path = await downChatVoice(encodedString, data.fileTypeResponse!.fileTypeName ?? "", data); + File file = File(path!); + await file.readAsBytes(); + data.voice = file; + Duration? duration = await data.voiceController!.setFilePath(file.path); + await data.voiceController!.setLoopMode(LoopMode.off); + await data.voiceController!.seek(duration); + await data.voiceController!.setVolume(1.0); + await data.voiceController!.load(); + Utils.hideLoading(context); + await data.voiceController!.play(); + } catch (e) { + Utils.showToast("Cannot open file."); + } } } - void stopPlaying(BuildContext context, {required SingleUserChatModel data}) async { - await data.voiceController!.stopPlayer(); - notifyListeners(); + void pausePlaying(BuildContext context, {required SingleUserChatModel data}) async { + await data.voiceController!.pause(); + } + + void resumePlaying(BuildContext context, {required SingleUserChatModel data}) async { + await data.voiceController!.play(); } Future downChatVoice(Uint8List bytes, String ext, SingleUserChatModel data) async { diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 3b81d91..b54dc3f 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -1,23 +1,18 @@ import 'dart:convert'; import 'dart:typed_data'; - -import 'package:audio_waveforms/audio_waveforms.dart'; +import 'package:audio_waveforms/audio_waveforms.dart' as awf; +import 'package:just_audio/just_audio.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; -import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/chat_full_image_preview.dart'; -import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; -import 'package:open_file/open_file.dart'; import 'package:provider/provider.dart'; class ChatBubble extends StatelessWidget { @@ -29,7 +24,7 @@ class ChatBubble extends StatelessWidget { bool isReplied = false; int? fileTypeID; String? fileTypeName; - late ChatProviderModel data; + late ChatProviderModel provider; String? fileTypeDescription; bool isDelivered = false; @@ -52,7 +47,7 @@ class ChatBubble extends StatelessWidget { Size windowSize = MediaQuery.of(context).size; screenOffset = Offset(windowSize.width / 2, windowSize.height / 2); makeAssign(); - data = Provider.of(context, listen: false); + provider = Provider.of(context, listen: false); return isCurrentUser ? currentUser(context) : receiptUser(context); } @@ -101,7 +96,7 @@ class ChatBubble extends StatelessWidget { ), ), ).paddingOnly(bottom: 7).onPress(() { - data.scrollToMsg(cItem); + provider.scrollToMsg(cItem); }), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) ClipRRect( @@ -119,20 +114,14 @@ class ChatBubble extends StatelessWidget { ), ).paddingOnly(bottom: 4), if (fileTypeID == 13) - currentWaveBubble(context, cItem).onPress(() { - if (cItem.voiceController!.playerState == PlayerState.playing) { - data.stopPlaying(context, data: cItem); - } else { - data.playVoice(context, data: cItem); - } - }) + currentWaveBubble(context, cItem) else Row( children: [ if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 // || fileTypeID == 2 ) - SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), + SvgPicture.asset(provider.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), (cItem.contant ?? "").toText12().expanded, if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 //|| fileTypeID == 2 @@ -210,7 +199,7 @@ class ChatBubble extends StatelessWidget { ), ), ).paddingOnly(bottom: 7).onPress(() { - data.scrollToMsg(cItem); + provider.scrollToMsg(cItem); }), if (fileTypeID == 12 || fileTypeID == 4 || fileTypeID == 3) ClipRRect( @@ -228,20 +217,14 @@ class ChatBubble extends StatelessWidget { ), ).paddingOnly(bottom: 4), if (fileTypeID == 13) - recipetWaveBubble(context, cItem).onPress(() { - if (cItem.voiceController!.playerState == PlayerState.playing) { - data.stopPlaying(context, data: cItem); - } else { - data.playVoice(context, data: cItem); - } - }) + recipetWaveBubble(context, cItem) else Row( children: [ if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 // || fileTypeID == 2 ) - SvgPicture.asset(data.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), + SvgPicture.asset(provider.getType(fileTypeName ?? ""), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 0, right: 10), (cItem.contant ?? "").toText12(color: Colors.white).expanded, if (fileTypeID == 1 || fileTypeID == 5 || fileTypeID == 7 || fileTypeID == 6 || fileTypeID == 8 //|| fileTypeID == 2 @@ -261,8 +244,6 @@ class ChatBubble extends StatelessWidget { } Widget showImage({required bool isReplyPreview, required String fileName, required String fileTypeDescription}) { - if (isReplyPreview) {} - if (cItem.isImageLoaded! && cItem.image != null) { return Image.memory( cItem.image!, @@ -301,7 +282,6 @@ class ChatBubble extends StatelessWidget { } Widget currentWaveBubble(BuildContext context, SingleUserChatModel data) { - PlayerController cunController = PlayerController(); return Container( margin: const EdgeInsets.all(0), decoration: BoxDecoration( @@ -309,40 +289,18 @@ class ChatBubble extends StatelessWidget { left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), ), color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), - // gradient: const LinearGradient( - // transform: GradientRotation(.83), - // begin: Alignment.topRight, - // end: Alignment.bottomLeft, - // colors: [ - // MyColors.gradiantEndColor, - // MyColors.gradiantStartColor, - // ], - // ), ), child: Row( - mainAxisSize: MainAxisSize.max, children: [ - Icon( - data.voiceController!.playerState == PlayerState.playing ? Icons.stop_circle : Icons.play_arrow, - color: MyColors.lightGreenColor, - ).paddingAll(10), - AudioFileWaveforms( - size: Size(MediaQuery.of(context).size.width * 0.3, 10), - playerController: data.voiceController!, - padding: EdgeInsets.zero, - margin: EdgeInsets.zero, - enableSeekGesture: true, - density: 1, - playerWaveStyle: const PlayerWaveStyle( - fixedWaveColor: Colors.white, - liveWaveColor: MyColors.greenColor, - showTop: true, - showBottom: true, - waveCap: StrokeCap.round, - seekLineThickness: 2, - visualizerHeight: 4, - backgroundColor: Colors.transparent, - ), + getPlayer(player: data.voiceController!, modelData: data), + Slider( + activeColor: Colors.white, + inactiveColor: Colors.grey, + value: 0.toDouble(), + max: 50.toDouble(), + onChanged: (double value) { + // Add code to track the music duration. + }, ).expanded, ], ), @@ -357,49 +315,71 @@ class ChatBubble extends StatelessWidget { left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), ), color: isCurrentUser ? MyColors.black.withOpacity(0.10) : MyColors.black.withOpacity(0.30), - // gradient: const LinearGradient( - // transform: GradientRotation(.83), - // begin: Alignment.topRight, - // end: Alignment.bottomLeft, - // colors: [ - // MyColors.gradiantEndColor, - // MyColors.gradiantStartColor, - // ], - // ), ), child: Row( mainAxisSize: MainAxisSize.max, children: [ - Icon( - data.voiceController!.playerState == PlayerState.playing ? Icons.stop_circle : Icons.play_arrow, - color: MyColors.white, - ).paddingAll(10), - AudioFileWaveforms( - size: Size(MediaQuery.of(context).size.width * 0.3, 10), - playerController: data.voiceController!, - padding: EdgeInsets.zero, - margin: EdgeInsets.zero, - enableSeekGesture: true, - density: 1, - playerWaveStyle: const PlayerWaveStyle( - fixedWaveColor: Colors.white, - liveWaveColor: MyColors.greenColor, - showTop: true, - showBottom: true, - waveCap: StrokeCap.round, - seekLineThickness: 2, - visualizerHeight: 4, - backgroundColor: Colors.transparent, - ), + getPlayer(player: data.voiceController!, modelData: data), + Slider( + activeColor: Colors.white, + inactiveColor: Colors.grey, + value: 0.toDouble(), + max: 50.toDouble(), + onChanged: (double value) { + // Add code to track the music duration. + }, ).expanded, ], ), ).circle(5); } + + Widget getPlayer({required AudioPlayer player, required SingleUserChatModel modelData}) { + return StreamBuilder( + stream: player!.playerStateStream, + builder: (BuildContext context, AsyncSnapshot snapshot) { + PlayerState? playerState = snapshot.data; + ProcessingState? processingState = playerState?.processingState; + bool? playing = playerState?.playing; + if (processingState == ProcessingState.loading || processingState == ProcessingState.buffering) { + return Container( + margin: const EdgeInsets.all(8.0), + width: 30.0, + height: 30.0, + child: const CircularProgressIndicator(), + ); + } else if (playing != true) { + return Icon( + Icons.play_arrow, + size: 30, + color: MyColors.lightGreenColor, + ).onPress(() { + provider.playVoice(context, data: modelData); + }); + } else if (processingState != ProcessingState.completed) { + return Icon( + Icons.pause, + size: 30, + color: MyColors.lightGreenColor, + ).onPress(() { + provider.pausePlaying(context, data: modelData); + }); + } else { + return Icon( + Icons.replay, + size: 30, + color: MyColors.lightGreenColor, + ).onPress(() { + player!.seek(Duration.zero); + }); + } + }, + ); + } } class WaveBubble extends StatelessWidget { - final PlayerController playerController; + final awf.PlayerController playerController; final VoidCallback onTap; final bool isPlaying; @@ -436,14 +416,14 @@ class WaveBubble extends StatelessWidget { splashColor: Colors.transparent, highlightColor: Colors.transparent, ), - AudioFileWaveforms( + awf.AudioFileWaveforms( size: Size(MediaQuery.of(context).size.width / 2, 10), playerController: playerController, padding: EdgeInsets.zero, margin: EdgeInsets.zero, enableSeekGesture: true, density: 1, - playerWaveStyle: const PlayerWaveStyle( + playerWaveStyle: const awf.PlayerWaveStyle( fixedWaveColor: Colors.white, liveWaveColor: MyColors.greenColor, showTop: true, diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 7b3a72b..c4c1eed 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -144,7 +144,7 @@ class _ChatDetailScreenState extends State { ); }, ).onPress(() async { - logger.d(m.userChatHistory[i].toJson()); + logger.w(m.userChatHistory[i].toJson()); if (m.userChatHistory[i].fileTypeResponse != null && m.userChatHistory[i].fileTypeId != null) { if (m.userChatHistory[i].fileTypeId! == 1 || m.userChatHistory[i].fileTypeId! == 5 || @@ -161,7 +161,7 @@ class _ChatDetailScreenState extends State { }, ), ).expanded, - if (m.isMsgReply) + if (m.isReplyMsg) SizedBox( height: 82, child: Row( @@ -183,7 +183,7 @@ class _ChatDetailScreenState extends State { ], ).expanded, 12.width, - if (m.isMsgReply && m.repliedMsg.isNotEmpty) showReplyImage(m.repliedMsg, m), + if (m.isReplyMsg && m.repliedMsg.isNotEmpty) showReplyImage(m.repliedMsg, m), 12.width, const Icon(Icons.cancel, size: 23, color: MyColors.grey7BColor).onPress(m.closeMe), ], @@ -192,12 +192,9 @@ class _ChatDetailScreenState extends State { ], ), ), - if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") + if (m.isAttachmentMsg && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") SizedBox(height: 200, width: double.infinity, child: Image.file(m.selectedFile, fit: BoxFit.cover)).paddingOnly(left: 21, right: 21, top: 21), - const Divider( - height: 1, - color: MyColors.lightGreyEFColor, - ), + const Divider(height: 1, color: MyColors.lightGreyEFColor), if (m.isRecoding) Column( children: [ @@ -206,12 +203,11 @@ class _ChatDetailScreenState extends State { Text(m.buildTimer()).paddingAll(10), if (m.isRecoding && m.isPlaying) WaveBubble( - playerController: m.playerController, - onTap: () { - m.playOrPause(); - }, - isPlaying: m.playerController.playerState == PlayerState.playing) - .expanded + playerController: m.playerController, + isPlaying: m.playerController.playerState == PlayerState.playing, + onTap: () { + }, + ).expanded else AudioWaveforms( waveStyle: const WaveStyle( @@ -243,25 +239,9 @@ class _ChatDetailScreenState extends State { ).paddingAll(10).onPress(() { m.deleteRecoding(); }), - // if (m.isPause) - // const Icon( - // Icons.mic, - // size: 26, - // color: MyColors.lightGreenColor, - // ).paddingOnly(right: 15).onPress(() { - // m.resumeRecoding(); - // }), - // if (!m.isPause) - // const Icon( - // Icons.pause_circle_outline, - // size: 26, - // color: MyColors.lightGreenColor, - // ).paddingOnly(right: 15).onPress(() { - // m.pauseRecoding(); - // }), SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26) .onPress( - () => m.sendVoiceMessage(context, + () => m.sendChatMessage(context, targetUserId: params!.chatUser!.id!, userStatus: params!.chatUser!.userStatus ?? 0, userEmail: params!.chatUser!.email!, @@ -278,8 +258,8 @@ class _ChatDetailScreenState extends State { TextField( controller: m.message, decoration: InputDecoration( - hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), - hintStyle: TextStyle(color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14), + hintText: m.isAttachmentMsg ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), + hintStyle: TextStyle(color: m.isAttachmentMsg ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14), border: InputBorder.none, focusedBorder: InputBorder.none, enabledBorder: InputBorder.none, @@ -297,7 +277,13 @@ class _ChatDetailScreenState extends State { ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover).paddingOnly(left: 21, right: 15) : null, ), - onChanged: (val) { + onChanged: (String val) { + print(val.length); + if (val.isNotEmpty) { + m.isTextMsg = true; + } else { + m.isTextMsg = false; + } m.userTypingInvoke(currentUser: AppState().chatDetails!.response!.id!, reciptUser: params!.chatUser!.id!); }, ).expanded, From 642fee73314edc9b82d921d4c9898ceb651d83f3 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 26 Dec 2022 09:20:22 +0300 Subject: [PATCH 264/302] worklist setting update data payload issue fixed. --- lib/models/worklist/update_user_type_list.dart | 8 ++++---- lib/ui/work_list/worklist_settings.dart | 7 +++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/models/worklist/update_user_type_list.dart b/lib/models/worklist/update_user_type_list.dart index 1637880..d5763ff 100644 --- a/lib/models/worklist/update_user_type_list.dart +++ b/lib/models/worklist/update_user_type_list.dart @@ -8,16 +8,16 @@ class UpdateUserTypesList { UpdateUserTypesList.fromJson(Map json) { itemID = json['ItemID']; - pFYAENABLEDFALG = json['P_FYAENABLED_FALG']; - pFYIENABLEDFALG = json['P_FYIENABLED_FALG']; + pFYAENABLEDFALG = json['P_FYA_ENABLED_FALG']; + pFYIENABLEDFALG = json['P_FYI_ENABLED_FLAG']; pITEMTYPE = json['P_ITEM_TYPE']; } Map toJson() { Map data = new Map(); data['ItemID'] = this.itemID; - data['P_FYAENABLED_FALG'] = this.pFYAENABLEDFALG; - data['P_FYIENABLED_FALG'] = this.pFYIENABLEDFALG; + data['P_FYA_ENABLED_FALG'] = this.pFYAENABLEDFALG; + data['P_FYI_ENABLED_FLAG'] = this.pFYIENABLEDFALG; data['P_ITEM_TYPE'] = this.pITEMTYPE; return data; } diff --git a/lib/ui/work_list/worklist_settings.dart b/lib/ui/work_list/worklist_settings.dart index 77c1d81..7362028 100644 --- a/lib/ui/work_list/worklist_settings.dart +++ b/lib/ui/work_list/worklist_settings.dart @@ -47,13 +47,12 @@ class _WorklistSettingsState extends State { try { Utils.showLoading(context); List> itemList = []; - for (var element in getUserItemTypesList) { - itemList.add(UpdateUserTypesList(itemID: element.uSERITEMTYPEID, pITEMTYPE: element.iTEMTYPE, pFYAENABLEDFALG: element.fYAENABLEDFALG, pFYIENABLEDFALG: element.fYIENABLEDFLAG).toJson()); + for (int index=0;index Date: Mon, 26 Dec 2022 09:35:14 +0300 Subject: [PATCH 265/302] worklist setting ui improvements. --- lib/ui/work_list/worklist_settings.dart | 137 ++++++++++++------------ 1 file changed, 68 insertions(+), 69 deletions(-) diff --git a/lib/ui/work_list/worklist_settings.dart b/lib/ui/work_list/worklist_settings.dart index 7362028..4fc9424 100644 --- a/lib/ui/work_list/worklist_settings.dart +++ b/lib/ui/work_list/worklist_settings.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; @@ -26,6 +25,7 @@ class _WorklistSettingsState extends State { List getUserItemTypesList = []; UpdateUserItemTypesList? updateUserItemTypesList; + @override void initState() { super.initState(); userItemTypesList(); @@ -47,8 +47,13 @@ class _WorklistSettingsState extends State { try { Utils.showLoading(context); List> itemList = []; - for (int index=0;index { @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Colors.white, - appBar: AppBarWidget( - context, - title: LocaleKeys.worklistSettings.tr(), - ), - body: Column( - children: [ - ListView( - padding: const EdgeInsets.only(top: 21, left: 21, right: 21), - children: [ - LocaleKeys.TurnNotificationsFor.tr().toText22(color: MyColors.blackColor), - 16.height, - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.itemType.tr().toText14(color: MyColors.blackColor), - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: ["FYA".tr().toText14(color: MyColors.blackColor), 30.width, "FYI".tr().toText14(color: MyColors.blackColor), 30.width], - ) - ], - ), - const Divider(color: MyColors.greyA5Color), - SingleChildScrollView( - scrollDirection: Axis.vertical, - child: ListView.builder( - scrollDirection: Axis.vertical, - shrinkWrap: true, - physics: ScrollPhysics(), - itemCount: getUserItemTypesList == null ? 0 : getUserItemTypesList.length, - itemBuilder: (BuildContext context, int index) { - return Column(children: [ - customSwitch(getUserItemTypesList[index]), - Divider( - color: MyColors.greyC4Color, - thickness: 0.5, - ), - ]); - }), - ), - ], - ).expanded, - DefaultButton(LocaleKeys.save.tr(), () async { - updateUserItem(); - }).insideContainer, - ], - )); + backgroundColor: Colors.white, + appBar: AppBarWidget( + context, + title: LocaleKeys.worklistSettings.tr(), + ), + body: Column( + children: [ + ListView( + padding: const EdgeInsets.only(top: 21, left: 21, right: 21), + children: [ + LocaleKeys.TurnNotificationsFor.tr().toText22(color: MyColors.blackColor), + 16.height, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.itemType.tr().toText14(color: MyColors.blackColor), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: ["FYA".tr().toText14(color: MyColors.blackColor), 30.width, "FYI".tr().toText14(color: MyColors.blackColor), 30.width], + ) + ], + ), + const Divider(color: MyColors.greyA5Color), + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: getUserItemTypesList.length, + separatorBuilder: (cxt, index) => 1.divider, + itemBuilder: (BuildContext context, int index) => customSwitch(getUserItemTypesList[index]), + ), + ], + ).expanded, + DefaultButton(LocaleKeys.save.tr(), () async { + updateUserItem(); + }).insideContainer, + ], + ), + ); } Widget customSwitch(GetUserItemTypesList list) { return Padding( - padding: const EdgeInsets.only(top: 21), + padding: const EdgeInsets.only(top: 8, bottom: 8), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - list.iTEMTYPE.toString(), - style: TextStyle(fontSize: 16, fontWeight: FontWeight.w600, color: MyColors.blackColor), - ), + list.iTEMTYPE!.toText16(), const Spacer(), Row( children: [ - CupertinoSwitch( - trackColor: MyColors.grey57Color, - activeColor: MyColors.textMixColor, - value: list?.fYAENABLEDFALG == 'Y' ? true : false, - onChanged: (value) { - setState(() { - list?.fYAENABLEDFALG = value == true ? 'Y' : 'N'; - }); - }), - CupertinoSwitch( + Transform.scale( + scale: 0.8, + child: CupertinoSwitch( + trackColor: MyColors.grey57Color, + activeColor: MyColors.textMixColor, + value: list.fYAENABLEDFALG == 'Y', + onChanged: (value) { + setState(() { + list.fYAENABLEDFALG = value ? 'Y' : 'N'; + }); + }), + ), + Transform.scale( + scale: 0.8, + child: CupertinoSwitch( trackColor: MyColors.grey57Color, activeColor: MyColors.textMixColor, - value: list?.fYIENABLEDFLAG == 'Y' ? true : false, + value: list.fYIENABLEDFLAG == 'Y', onChanged: (value) { setState(() { - // list.isFYI = value; - list?.fYIENABLEDFLAG = value == true ? 'Y' : 'N'; + list.fYIENABLEDFLAG = value ? 'Y' : 'N'; }); - }), + }, + ), + ), ], ) ], From 09c401a157958d902bdef9e9fdd2aa168a96533f Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 26 Dec 2022 11:08:28 +0300 Subject: [PATCH 266/302] Voice Chat Fixes & Audio Player Implementation --- lib/provider/chat_provider_model.dart | 47 +----- lib/ui/chat/chat_bubble.dart | 221 +++++++++++++------------- lib/ui/chat/chat_detailed_screen.dart | 4 +- lib/ui/chat/chat_home.dart | 2 + lib/ui/chat/common.dart | 189 ++++++++++++++++++++++ pubspec.yaml | 4 +- 6 files changed, 306 insertions(+), 161 deletions(-) create mode 100644 lib/ui/chat/common.dart diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 6383082..7cb7b96 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -552,8 +552,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { msg = voiceFile!.path.split("/").last; } else { msg = message.text; + logger.w(msg); } - logger.w(jsonEncode(repliedMsg)); SingleUserChatModel data = SingleUserChatModel( userChatHistoryId: 0, chatEventId: chatEventId, @@ -1257,51 +1257,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return numberStr; } - // void playRecoding() async { - // isPlaying = true; - // await playerController.startPlayer(finishMode: FinishMode.pause); - //} - - void playVoice( - BuildContext context, { - required SingleUserChatModel data, - }) async { - if (data.voice != null && data.voice!.existsSync()) { - print("Heree"); - await data.voiceController!.setFilePath(data!.voice!.path); - await data.voiceController!.setLoopMode(LoopMode.off); - Duration? duration = await data.voiceController!.load(); - await data.voiceController!.seek(duration); - await data.voiceController!.play(); - } else { - Utils.showLoading(context); - Uint8List encodedString = await ChatApiClient().downloadURL(fileName: data.contant!, fileTypeDescription: getFileTypeDescription(data.fileTypeResponse!.fileTypeName ?? "")); - try { - String path = await downChatVoice(encodedString, data.fileTypeResponse!.fileTypeName ?? "", data); - File file = File(path!); - await file.readAsBytes(); - data.voice = file; - Duration? duration = await data.voiceController!.setFilePath(file.path); - await data.voiceController!.setLoopMode(LoopMode.off); - await data.voiceController!.seek(duration); - await data.voiceController!.setVolume(1.0); - await data.voiceController!.load(); - Utils.hideLoading(context); - await data.voiceController!.play(); - } catch (e) { - Utils.showToast("Cannot open file."); - } - } - } - - void pausePlaying(BuildContext context, {required SingleUserChatModel data}) async { - await data.voiceController!.pause(); - } - - void resumePlaying(BuildContext context, {required SingleUserChatModel data}) async { - await data.voiceController!.play(); - } - Future downChatVoice(Uint8List bytes, String ext, SingleUserChatModel data) async { String dirPath = '${(await getApplicationDocumentsDirectory()).path}/chat_audios'; if (!await Directory(dirPath).exists()) { diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index b54dc3f..824ab48 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -1,34 +1,48 @@ import 'dart:convert'; +import 'dart:io'; import 'dart:typed_data'; +import 'package:flutter/services.dart'; import 'package:audio_waveforms/audio_waveforms.dart' as awf; -import 'package:just_audio/just_audio.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/chat_full_image_preview.dart'; +import 'package:mohem_flutter_app/ui/chat/common.dart'; import 'package:provider/provider.dart'; +import 'package:rxdart/rxdart.dart'; +import 'package:just_audio/just_audio.dart'; class ChatBubble extends StatelessWidget { ChatBubble({Key? key, required this.dateTime, required this.cItem}) : super(key: key); final String dateTime; final SingleUserChatModel cItem; + bool isCurrentUser = false; + bool isSeen = false; + bool isReplied = false; + int? fileTypeID; + String? fileTypeName; + late ChatProviderModel provider; String? fileTypeDescription; + bool isDelivered = false; + String userName = ''; + late Offset screenOffset; void makeAssign() { @@ -42,6 +56,51 @@ class ChatBubble extends StatelessWidget { userName = AppState().chatDetails!.response!.userName == cItem.currentUserName.toString() ? "You" : cItem.currentUserName.toString(); } + void playVoice( + BuildContext context, { + required SingleUserChatModel data, + }) async { + if (data.voice != null && data.voice!.existsSync()) { + await data.voiceController!.setFilePath(data!.voice!.path); + await data.voiceController!.setLoopMode(LoopMode.off); + Duration? duration = await data.voiceController!.load(); + await data.voiceController!.seek(duration); + await data.voiceController!.play(); + } else { + Utils.showLoading(context); + Uint8List encodedString = await ChatApiClient().downloadURL(fileName: data.contant!, fileTypeDescription: provider.getFileTypeDescription(data.fileTypeResponse!.fileTypeName ?? "")); + try { + String path = await provider.downChatVoice(encodedString, data.fileTypeResponse!.fileTypeName ?? "", data); + File file = File(path!); + await file.readAsBytes(); + data.voice = file; + Duration? duration = await data.voiceController!.setFilePath(file.path); + await data.voiceController!.setLoopMode(LoopMode.off); + await data.voiceController!.seek(duration); + await data.voiceController!.setVolume(1.0); + await data.voiceController!.load(); + Utils.hideLoading(context); + await data.voiceController!.play(); + } catch (e) { + Utils.showToast("Cannot open file."); + } + } + } + + void pausePlaying(BuildContext context, {required SingleUserChatModel data}) async { + await data.voiceController!.pause(); + } + + void rePlay(BuildContext context, {required SingleUserChatModel data}) async { + if (data.voice != null && data.voice!.existsSync()) { + await data.voiceController!.seek(Duration.zero); + await data.voiceController!.play(); + } + } + + Stream get _positionDataStream => Rx.combineLatest3(cItem.voiceController!.positionStream, cItem.voiceController!.bufferedPositionStream, + cItem.voiceController!.durationStream, (Duration position, Duration bufferedPosition, Duration? duration) => PositionData(position, bufferedPosition, duration ?? Duration.zero)); + @override Widget build(BuildContext context) { Size windowSize = MediaQuery.of(context).size; @@ -77,21 +136,18 @@ class ChatBubble extends StatelessWidget { .paddingOnly(right: 5, top: 5, bottom: 8, left: 5), ], ).expanded, - if (cItem.userChatReplyResponse != null && cItem.userChatReplyResponse!.fileTypeId == 12 || - cItem.userChatReplyResponse!.fileTypeId == 3 || - cItem.userChatReplyResponse!.fileTypeId == 4) - ClipRRect( - borderRadius: BorderRadius.circular(8.0), - child: SizedBox( - height: 32, - width: 32, - child: showImage( - isReplyPreview: true, + if (cItem.userChatReplyResponse != null) + if (cItem.userChatReplyResponse!.fileTypeId == 12 || cItem.userChatReplyResponse!.fileTypeId == 3 || cItem.userChatReplyResponse!.fileTypeId == 4) + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: SizedBox( + height: 32, + width: 32, + child: showImage( + isReplyPreview: false, fileName: cItem.userChatReplyResponse!.contant!, - fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg") - .paddingOnly(left: 10, right: 10, bottom: 16, top: 16), - ), - ), + fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg")), + ).paddingOnly(left: 10, right: 10, bottom: 16, top: 16), ], ), ), @@ -113,7 +169,7 @@ class ChatBubble extends StatelessWidget { }), ), ).paddingOnly(bottom: 4), - if (fileTypeID == 13) + if (fileTypeID == 13 && cItem.voiceController != null) currentWaveBubble(context, cItem) else Row( @@ -181,20 +237,19 @@ class ChatBubble extends StatelessWidget { .paddingOnly(right: 5, top: 5, bottom: 8, left: 5), ], ).expanded, - if (cItem.userChatReplyResponse != null && cItem.userChatReplyResponse!.fileTypeId == 12 || - cItem.userChatReplyResponse!.fileTypeId == 3 || - cItem.userChatReplyResponse!.fileTypeId == 4) - ClipRRect( - borderRadius: BorderRadius.circular(8.0), - child: SizedBox( - height: 32, - width: 32, - child: showImage( - isReplyPreview: true, - fileName: cItem.userChatReplyResponse!.contant!, - fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg"), - ), - ).paddingOnly(left: 10, right: 10, bottom: 16, top: 16) + if (cItem.userChatReplyResponse != null) + if (cItem.userChatReplyResponse!.fileTypeId == 12 || cItem.userChatReplyResponse!.fileTypeId == 3 || cItem.userChatReplyResponse!.fileTypeId == 4) + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: SizedBox( + height: 32, + width: 32, + child: showImage( + isReplyPreview: true, + fileName: cItem.userChatReplyResponse!.contant!, + fileTypeDescription: cItem.userChatReplyResponse!.fileTypeResponse!.fileTypeDescription ?? "image/jpg"), + ), + ).paddingOnly(left: 10, right: 10, bottom: 16, top: 16) ], ), ), @@ -216,7 +271,7 @@ class ChatBubble extends StatelessWidget { }), ), ).paddingOnly(bottom: 4), - if (fileTypeID == 13) + if (fileTypeID == 13 && cItem.voiceController != null) recipetWaveBubble(context, cItem) else Row( @@ -293,15 +348,18 @@ class ChatBubble extends StatelessWidget { child: Row( children: [ getPlayer(player: data.voiceController!, modelData: data), - Slider( - activeColor: Colors.white, - inactiveColor: Colors.grey, - value: 0.toDouble(), - max: 50.toDouble(), - onChanged: (double value) { - // Add code to track the music duration. + StreamBuilder( + stream: _positionDataStream, + builder: (BuildContext context, AsyncSnapshot snapshot) { + PositionData? positionData = snapshot.data; + return SeekBar( + duration: positionData?.duration ?? Duration.zero, + position: positionData?.position ?? Duration.zero, + bufferedPosition: positionData?.bufferedPosition ?? Duration.zero, + onChangeEnd: data.voiceController!.seek, + ).expanded; }, - ).expanded, + ), ], ), ).circle(5); @@ -320,15 +378,18 @@ class ChatBubble extends StatelessWidget { mainAxisSize: MainAxisSize.max, children: [ getPlayer(player: data.voiceController!, modelData: data), - Slider( - activeColor: Colors.white, - inactiveColor: Colors.grey, - value: 0.toDouble(), - max: 50.toDouble(), - onChanged: (double value) { - // Add code to track the music duration. + StreamBuilder( + stream: _positionDataStream, + builder: (BuildContext context, AsyncSnapshot snapshot) { + PositionData? positionData = snapshot.data; + return SeekBar( + duration: positionData?.duration ?? Duration.zero, + position: positionData?.position ?? Duration.zero, + bufferedPosition: positionData?.bufferedPosition ?? Duration.zero, + onChangeEnd: data.voiceController!.seek, + ).expanded; }, - ).expanded, + ), ], ), ).circle(5); @@ -354,7 +415,7 @@ class ChatBubble extends StatelessWidget { size: 30, color: MyColors.lightGreenColor, ).onPress(() { - provider.playVoice(context, data: modelData); + playVoice(context, data: modelData); }); } else if (processingState != ProcessingState.completed) { return Icon( @@ -362,7 +423,7 @@ class ChatBubble extends StatelessWidget { size: 30, color: MyColors.lightGreenColor, ).onPress(() { - provider.pausePlaying(context, data: modelData); + pausePlaying(context, data: modelData); }); } else { return Icon( @@ -370,7 +431,7 @@ class ChatBubble extends StatelessWidget { size: 30, color: MyColors.lightGreenColor, ).onPress(() { - player!.seek(Duration.zero); + rePlay(context, data: modelData); }); } }, @@ -378,64 +439,4 @@ class ChatBubble extends StatelessWidget { } } -class WaveBubble extends StatelessWidget { - final awf.PlayerController playerController; - final VoidCallback onTap; - final bool isPlaying; - - const WaveBubble({ - Key? key, - required this.playerController, - required this.onTap, - required this.isPlaying, - }) : super(key: key); - @override - Widget build(BuildContext context) { - return Container( - margin: const EdgeInsets.all(10), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(30), - gradient: const LinearGradient( - transform: GradientRotation(.83), - begin: Alignment.topRight, - end: Alignment.bottomLeft, - colors: [ - MyColors.gradiantEndColor, - MyColors.gradiantStartColor, - ], - ), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - onPressed: onTap, - icon: Icon(isPlaying ? Icons.stop : Icons.play_arrow), - color: Colors.white, - splashColor: Colors.transparent, - highlightColor: Colors.transparent, - ), - awf.AudioFileWaveforms( - size: Size(MediaQuery.of(context).size.width / 2, 10), - playerController: playerController, - padding: EdgeInsets.zero, - margin: EdgeInsets.zero, - enableSeekGesture: true, - density: 1, - playerWaveStyle: const awf.PlayerWaveStyle( - fixedWaveColor: Colors.white, - liveWaveColor: MyColors.greenColor, - showTop: true, - showBottom: true, - waveCap: StrokeCap.round, - seekLineThickness: 2, - visualizerHeight: 4, - backgroundColor: Colors.transparent, - ), - ), - ], - ), - ); - } -} diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index c4c1eed..dcbda22 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -1,6 +1,4 @@ import 'dart:async'; -import 'dart:convert'; - import 'package:audio_waveforms/audio_waveforms.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -18,7 +16,7 @@ import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.da import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; -import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/ui/chat/common.dart'; import 'package:mohem_flutter_app/widgets/chat_app_bar_widge.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:provider/provider.dart'; diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index af243e5..8973f6b 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -81,6 +81,7 @@ class _ChatHomeState extends State { children: [ myTab(LocaleKeys.mychats.tr(), 0), myTab(LocaleKeys.favorite.tr(), 1), + myTab("My Team", 2), ], ), ), @@ -95,6 +96,7 @@ class _ChatHomeState extends State { children: [ ChatHomeScreen(), ChatFavoriteUsersScreen(), + ChatFavoriteUsersScreen(), ], ).expanded, ], diff --git a/lib/ui/chat/common.dart b/lib/ui/chat/common.dart new file mode 100644 index 0000000..e0cb4d0 --- /dev/null +++ b/lib/ui/chat/common.dart @@ -0,0 +1,189 @@ +import 'dart:math'; +import 'package:audio_waveforms/audio_waveforms.dart'; +import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; + +class SeekBar extends StatefulWidget { + final Duration duration; + final Duration position; + final Duration bufferedPosition; + final ValueChanged? onChanged; + final ValueChanged? onChangeEnd; + + const SeekBar({ + Key? key, + required this.duration, + required this.position, + required this.bufferedPosition, + this.onChanged, + this.onChangeEnd, + }) : super(key: key); + + @override + SeekBarState createState() => SeekBarState(); +} + +class SeekBarState extends State { + double? _dragValue; + late SliderThemeData _sliderThemeData; + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + _sliderThemeData = SliderTheme.of(context).copyWith( + // trackHeight: 2.0, + thumbColor: MyColors.lightGreenColor, + activeTrackColor: MyColors.lightGreenColor, + inactiveTrackColor: MyColors.grey57Color.withOpacity(0.4), + ); + } + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + SliderTheme( + data: _sliderThemeData.copyWith( + thumbShape: HiddenThumbComponentShape(), + ), + child: ExcludeSemantics( + child: Slider( + min: 0.0, + max: widget.duration.inMilliseconds.toDouble(), + value: min(widget.bufferedPosition.inMilliseconds.toDouble(), widget.duration.inMilliseconds.toDouble()), + onChanged: (value) { + setState(() { + _dragValue = value; + }); + if (widget.onChanged != null) { + widget.onChanged!(Duration(milliseconds: value.round())); + } + }, + onChangeEnd: (value) { + if (widget.onChangeEnd != null) { + widget.onChangeEnd!(Duration(milliseconds: value.round())); + } + _dragValue = null; + }, + ), + ), + ), + SliderTheme( + data: _sliderThemeData.copyWith( + inactiveTrackColor: Colors.transparent, + ), + child: Slider( + min: 0.0, + max: widget.duration.inMilliseconds.toDouble(), + value: min(_dragValue ?? widget.position.inMilliseconds.toDouble(), widget.duration.inMilliseconds.toDouble()), + onChanged: (value) { + setState(() { + _dragValue = value; + }); + if (widget.onChanged != null) { + widget.onChanged!(Duration(milliseconds: value.round())); + } + }, + onChangeEnd: (value) { + if (widget.onChangeEnd != null) { + widget.onChangeEnd!(Duration(milliseconds: value.round())); + } + _dragValue = null; + }, + ), + ), + ], + ); + } +} + +class PositionData { + final Duration position; + final Duration bufferedPosition; + final Duration duration; + + PositionData(this.position, this.bufferedPosition, this.duration); +} + +class HiddenThumbComponentShape extends SliderComponentShape { + @override + Size getPreferredSize(bool isEnabled, bool isDiscrete) => Size.zero; + + @override + void paint( + PaintingContext context, + Offset center, { + required Animation activationAnimation, + required Animation enableAnimation, + required bool isDiscrete, + required TextPainter labelPainter, + required RenderBox parentBox, + required SliderThemeData sliderTheme, + required TextDirection textDirection, + required double value, + required double textScaleFactor, + required Size sizeWithOverflow, + }) {} +} + +class WaveBubble extends StatelessWidget { + final PlayerController playerController; + final VoidCallback onTap; + final bool isPlaying; + + const WaveBubble({ + Key? key, + required this.playerController, + required this.onTap, + required this.isPlaying, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + margin: const EdgeInsets.all(10), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(30), + gradient: const LinearGradient( + transform: GradientRotation(.83), + begin: Alignment.topRight, + end: Alignment.bottomLeft, + colors: [ + MyColors.gradiantEndColor, + MyColors.gradiantStartColor, + ], + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + onPressed: onTap, + icon: Icon(isPlaying ? Icons.stop : Icons.play_arrow), + color: Colors.white, + splashColor: Colors.transparent, + highlightColor: Colors.transparent, + ), + AudioFileWaveforms( + size: Size(MediaQuery.of(context).size.width / 2, 10), + playerController: playerController, + padding: EdgeInsets.zero, + margin: EdgeInsets.zero, + enableSeekGesture: true, + density: 1, + playerWaveStyle: const PlayerWaveStyle( + fixedWaveColor: Colors.white, + liveWaveColor: MyColors.greenColor, + showTop: true, + showBottom: true, + waveCap: StrokeCap.round, + seekLineThickness: 2, + visualizerHeight: 4, + backgroundColor: Colors.transparent, + ), + ), + ], + ), + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 2f3fffa..e2092b0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -94,9 +94,8 @@ dependencies: camera: ^0.10.0+4 #Chat Voice Message Recoding & Play -# record: ^4.4.3 audio_waveforms: ^0.1.5+1 -# animated_text_kit: ^4.2.2 + rxdart: ^0.27.7 #Encryption flutter_des: ^2.1.0 @@ -106,6 +105,7 @@ dependencies: safe_device: ^1.1.2 flutter_layout_grid: ^2.0.1 + dev_dependencies: flutter_test: sdk: flutter From 78f6ebf6225cddc095edb89cfcb338ac1b4f3f3e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 26 Dec 2022 11:54:08 +0300 Subject: [PATCH 267/302] bug fixes --- lib/provider/chat_provider_model.dart | 8 ++++---- lib/provider/dashboard_provider_model.dart | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index a96080b..7b551d0 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; + import 'package:audio_waveforms/audio_waveforms.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; @@ -11,7 +12,6 @@ import 'package:http/http.dart'; import 'package:just_audio/just_audio.dart' as JustAudio; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; -import 'package:mohem_flutter_app/classes/app_permissions.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/encryption.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; @@ -820,15 +820,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { sFileType = ""; deleteData(); favUsersList.clear(); - searchedChats!.clear(); - pChatHistory!.clear(); + if (searchedChats != null) searchedChats!.clear(); + if (pChatHistory != null) pChatHistory!.clear(); chatHubConnection.stop(); AppState().chatDetails = null; } void deleteData() { List exists = [], unique = []; - if(searchedChats != null) exists.addAll(searchedChats!); + if (searchedChats != null) exists.addAll(searchedChats!); exists.addAll(favUsersList!); Map profileMap = {}; for (ChatUser item in exists) { diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index c1a186a..ff860b3 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -107,7 +107,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { DrawerMenuItem("assets/images/drawer/performance_evaluation.svg", LocaleKeys.performanceEvaluation.tr(), AppRoutes.performanceEvaluation), DrawerMenuItem("assets/images/drawer/mowadhafi.svg", LocaleKeys.mowadhafhi.tr(), AppRoutes.mowadhafhi), DrawerMenuItem("assets/images/drawer/pending_trasactions.svg", LocaleKeys.pendingTransactions.tr(), AppRoutes.pendingTransactions), - DrawerMenuItem("assets/images/drawer/drawer_marathon.svg", LocaleKeys.brainMarathon.tr(), AppRoutes.marathonIntroScreen), + // DrawerMenuItem("assets/images/drawer/drawer_marathon.svg", LocaleKeys.brainMarathon.tr(), AppRoutes.marathonIntroScreen), DrawerMenuItem("assets/images/drawer/change_password.svg", LocaleKeys.changePassword.tr(), AppRoutes.changePassword), ]; From 5261f3e416a9d327c731b1fee18d2d612539450e Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 26 Dec 2022 11:58:08 +0300 Subject: [PATCH 268/302] marathon placement change, worklist type list improvement. --- lib/ui/landing/dashboard_screen.dart | 203 +++++++++---------- lib/ui/login/login_screen.dart | 2 + lib/ui/work_list/work_list_screen.dart | 263 +++++++++++++------------ 3 files changed, 243 insertions(+), 225 deletions(-) diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 22768e6..4172cc7 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'dart:io'; - import 'dart:ui' as ui; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; @@ -323,12 +323,104 @@ class _DashboardScreenState extends State { ], ), ], - ).paddingOnly(left: 21, right: 21, top: 7), - context.watch().isLoading - ? const MarathonBannerShimmer().paddingAll(20) - : MarathonBanner(isMarathonUpcoming: context.watch().isUpComingMarathon).paddingAll(20), - ServicesWidget(), - 8.height, + ).paddingOnly(left: 21, right: 21, top: 7, bottom: 21), + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + LocaleKeys.offers.tr().toText12(), + Row( + children: [ + LocaleKeys.discounts.tr().toText24(isBold: true), + 6.width, + Container( + padding: const EdgeInsets.only(left: 8, right: 8), + decoration: BoxDecoration( + color: MyColors.yellowColor, + borderRadius: BorderRadius.circular(10), + ), + child: LocaleKeys.newString.tr().toText10(isBold: true)), + ], + ), + ], + ), + ), + LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true).onPress(() { + Navigator.pushNamed(context, AppRoutes.offersAndDiscounts); + }) + ], + ).paddingOnly(left: 21, right: 21), + Consumer( + builder: (BuildContext context, DashboardProviderModel model, Widget? child) { + return SizedBox( + height: 103 + 33, + child: ListView.separated( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.only(left: 21, right: 21, top: 13), + scrollDirection: Axis.horizontal, + itemBuilder: (BuildContext cxt, int index) { + return model.isOffersLoading + ? const OffersShimmerWidget() + : InkWell( + onTap: () { + navigateToDetails(data.getOffersList[index]); + }, + child: SizedBox( + width: 73, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + width: 73, + height: 73, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: const BorderRadius.all( + Radius.circular(100), + ), + border: Border.all(color: MyColors.lightGreyE3Color, width: 1), + ), + child: ClipRRect( + borderRadius: const BorderRadius.all( + Radius.circular(50), + ), + child: Hero( + tag: "ItemImage" + data.getOffersList[index].rowID!, + transitionOnUserGestures: true, + child: Image.network( + data.getOffersList[index].bannerImage!, + fit: BoxFit.contain, + ), + ), + ), + ), + 4.height, + Expanded( + child: AppState().isArabic(context) + ? data.getOffersList[index].titleAR!.toText12(isCenter: true, maxLine: 1) + : data.getOffersList[index].title!.toText12(isCenter: true, maxLine: 1), + ), + ], + ), + ), + ); + }, + separatorBuilder: (BuildContext cxt, int index) => 8.width, + itemCount: 6), + ); + }, + ), + ], + ), Container( width: double.infinity, padding: const EdgeInsets.only(top: 31), @@ -339,101 +431,14 @@ class _DashboardScreenState extends State { ), child: Column( mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - LocaleKeys.offers.tr().toText12(), - Row( - children: [ - LocaleKeys.discounts.tr().toText24(isBold: true), - 6.width, - Container( - padding: const EdgeInsets.only(left: 8, right: 8), - decoration: BoxDecoration( - color: MyColors.yellowColor, - borderRadius: BorderRadius.circular(10), - ), - child: LocaleKeys.newString.tr().toText10(isBold: true)), - ], - ), - ], - ), - ), - LocaleKeys.viewAllOffers.tr().toText12(isUnderLine: true).onPress(() { - Navigator.pushNamed(context, AppRoutes.offersAndDiscounts); - }) - ], - ).paddingOnly(left: 21, right: 21), - Consumer( - builder: (BuildContext context, DashboardProviderModel model, Widget? child) { - return SizedBox( - height: 103 + 33, - child: ListView.separated( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - padding: const EdgeInsets.only(left: 21, right: 21, top: 13), - scrollDirection: Axis.horizontal, - itemBuilder: (BuildContext cxt, int index) { - return model.isOffersLoading - ? const OffersShimmerWidget() - : InkWell( - onTap: () { - navigateToDetails(data.getOffersList[index]); - }, - child: SizedBox( - width: 73, - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Container( - width: 73, - height: 73, - decoration: BoxDecoration( - borderRadius: const BorderRadius.all( - Radius.circular(100), - ), - border: Border.all(color: MyColors.lightGreyE3Color, width: 1), - ), - child: ClipRRect( - borderRadius: const BorderRadius.all( - Radius.circular(50), - ), - child: Hero( - tag: "ItemImage" + data.getOffersList[index].rowID!, - transitionOnUserGestures: true, - child: Image.network( - data.getOffersList[index].bannerImage!, - fit: BoxFit.contain, - ), - ), - ), - ), - 4.height, - Expanded( - child: AppState().isArabic(context) - ? data.getOffersList[index].titleAR!.toText12(isCenter: true, maxLine: 1) - : data.getOffersList[index].title!.toText12(isCenter: true, maxLine: 1), - ), - ], - ), - ), - ); - }, - separatorBuilder: (BuildContext cxt, int index) => 8.width, - itemCount: 6), - ); - }, - ), + ServicesWidget(), + context.watch().isLoading + ? const MarathonBannerShimmer().paddingAll(20) + : MarathonBanner(isMarathonUpcoming: context.watch().isUpComingMarathon).paddingOnly(left: 21, right: 21, bottom: 21, top: 8), ], ), - ) + ), ], ), ), diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 04c3077..3cc74b1 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -95,6 +95,8 @@ class _LoginScreenState extends State { firebaseToken = await _firebaseMessaging.getToken(); loginInfo = await LoginApiClient().getMobileLoginInfoNEW(firebaseToken ?? "", Platform.isAndroid ? "android" : "ios"); if (loginInfo == null) { + await checkPrefs(); + _autoLogin = false; Utils.hideLoading(context); return; } else { diff --git a/lib/ui/work_list/work_list_screen.dart b/lib/ui/work_list/work_list_screen.dart index 69fb7f3..9b7fbe5 100644 --- a/lib/ui/work_list/work_list_screen.dart +++ b/lib/ui/work_list/work_list_screen.dart @@ -81,7 +81,7 @@ class _WorkListScreenState extends State { value: 0, name: 'COC', fullName: LocaleKeys.itemCreation.tr(), active: false, color: [Color(0xff787299), Color(0xff1AB170)], icon: "assets/images/miss_swipe.svg", key: 'COC', disable: true) ]; - int workListItemIndex = 0; + int? workListItemIndex; List? workList; int pageNumber = 1; @@ -99,7 +99,7 @@ class _WorkListScreenState extends State { super.initState(); providerData = Provider.of(context, listen: false); calculateCounter(); - getWorkList(); + if (workListItemIndex != null) getWorkList(); } void calculateCounter() { @@ -115,11 +115,17 @@ class _WorkListScreenState extends State { } } }); + workListItemTypes.removeWhere((element) => element.value == 0); + if (workListItemTypes.isNotEmpty) { + workListItemIndex = 0; + } else { + workListItemIndex = null; + } } void verifyWorkListCounter() { workListItemTypes.forEach((workListElement) { - if (workListElement.key == "ITG" && workListItemTypes[workListItemIndex].key == "ITG") { + if (workListElement.key == "ITG" && workListItemTypes[workListItemIndex!].key == "ITG") { workListElement.value = providerData.itgFormsModel?.totalCount ?? 0; if ((AppState().requestAllList?.length ?? 0) != workListElement.value) { workListElement.value = AppState().requestAllList?.length ?? 0; @@ -132,7 +138,7 @@ class _WorkListScreenState extends State { workListElement.value = providerData.cocFinalCount; } else { providerData.getOpenNotificationsList?.forEach((element) { - if ((element.itemType == workListItemTypes[workListItemIndex].key) && element.itemType == workListElement.key) { + if ((element.itemType == workListItemTypes[workListItemIndex!].key) && element.itemType == workListElement.key) { if ((AppState().workList?.length ?? 0) != (element.openNtfNumber ?? 0)) { workListElement.value = AppState().workList?.length ?? 0; providerData.workListCounter = providerData.workListCounter - ((element.openNtfNumber ?? 0) - (AppState().workList?.length ?? 0)); @@ -162,7 +168,7 @@ class _WorkListScreenState extends State { Future getWorkList({bool showLoading = true}) async { try { if (showLoading) Utils.showLoading(context); - if (workListItemTypes[workListItemIndex].key == "ITG") { + if (workListItemTypes[workListItemIndex!].key == "ITG") { itgFormsModel = await WorkListApiClient().getITGTaskCountRequestType(); List requestAllList = []; for (int i = 0; i < (itgFormsModel?.requestType!.length ?? 0); i++) { @@ -178,7 +184,7 @@ class _WorkListScreenState extends State { } } else { itgRequestTypeIndex = null; - workList = await WorkListApiClient().getWorkList(pageNumber, workListItemTypes[workListItemIndex].key, pNotificationType.toString()); + workList = await WorkListApiClient().getWorkList(pageNumber, workListItemTypes[workListItemIndex!].key, pNotificationType.toString()); AppState().setWorkList = workList; } if (showLoading) Utils.hideLoading(context); @@ -216,127 +222,129 @@ class _WorkListScreenState extends State { return Scaffold( backgroundColor: Colors.white, appBar: AppBarWidget(context, title: LocaleKeys.workList.tr(), showWorkListSettingButton: true), - body: SizedBox( - width: double.infinity, - height: double.infinity, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox( - height: 40, - child: ListView.separated( - controller: _controller, - itemBuilder: (context, index) { - return Container( - padding: const EdgeInsets.only(left: 21, right: 21, top: 8, bottom: 8), - alignment: Alignment.center, - decoration: BoxDecoration(borderRadius: BorderRadius.circular(6), color: workListItemIndex == index ? MyColors.darkIconColor : MyColors.lightGreyEAColor), - child: ("${workListItemTypes[index].name} ${workListItemTypes[index].value > 0 ? "(${workListItemTypes[index].value})" : ""}") - .toText12(color: workListItemIndex == index ? MyColors.white : MyColors.black), - ).onPress(() { - if (pNotificationType != 1) { - pNotificationType = 1; - } - if (workListItemIndex != index && !workListItemTypes[index].disable) { - workListItemIndex = index; - if (workListItemTypes[index].value == 0) { - workList = []; - itgRequestTypeIndex = null; - } else { - workList = null; - } - setState(() {}); - if (workListItemTypes[index].value > 0) { - getWorkList(); - } - } - }); - }, - separatorBuilder: (context, index) => 8.width, - shrinkWrap: true, - itemCount: workListItemTypes.length, - scrollDirection: Axis.horizontal, - padding: const EdgeInsets.only(left: 21, right: 21), + body: workListItemIndex == null + ? Utils.getNoDataWidget(context) + : SizedBox( + width: double.infinity, + height: double.infinity, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 40, + child: ListView.separated( + controller: _controller, + itemBuilder: (context, index) { + return Container( + padding: const EdgeInsets.only(left: 21, right: 21, top: 8, bottom: 8), + alignment: Alignment.center, + decoration: BoxDecoration(borderRadius: BorderRadius.circular(6), color: workListItemIndex == index ? MyColors.darkIconColor : MyColors.lightGreyEAColor), + child: ("${workListItemTypes[index].name} ${workListItemTypes[index].value > 0 ? "(${workListItemTypes[index].value})" : ""}") + .toText12(color: workListItemIndex == index ? MyColors.white : MyColors.black), + ).onPress(() { + if (pNotificationType != 1) { + pNotificationType = 1; + } + if (workListItemIndex != index && !workListItemTypes[index].disable) { + workListItemIndex = index; + if (workListItemTypes[index].value == 0) { + workList = []; + itgRequestTypeIndex = null; + } else { + workList = null; + } + setState(() {}); + if (workListItemTypes[index].value > 0) { + getWorkList(); + } + } + }); + }, + separatorBuilder: (context, index) => 8.width, + shrinkWrap: true, + itemCount: workListItemTypes.length, + scrollDirection: Axis.horizontal, + padding: const EdgeInsets.only(left: 21, right: 21), + ), + ).paddingOnly(top: 21, bottom: 21), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + workListItemTypes[workListItemIndex!].fullName.toSectionHeading().paddingOnly(left: 21, right: 21), + LocaleKeys.advancedSearch.tr().toText14(isUnderLine: true, color: MyColors.textMixColor).onPress(() { + openBottomSheet(context); + }).paddingOnly(left: 21, right: 21) + ], + ), + SmartRefresher( + enablePullDown: true, + enablePullUp: false, + header: const MaterialClassicHeader( + color: MyColors.gradiantEndColor, + ), + controller: _refreshController, + onRefresh: _onRefresh, + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: itgRequestTypeIndex != null + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // todo this is commented for temporary purpose, have issue when selecting any itg category and click any item showing wrong details + // SizedBox( + // height: 40, + // child: ListView.separated( + // itemBuilder: (context, index) { + // RequestType type = itgFormsModel!.requestType![index]; + // return Container( + // padding: const EdgeInsets.only(left: 21, right: 21, top: 8, bottom: 8), + // alignment: Alignment.center, + // decoration: BoxDecoration(borderRadius: BorderRadius.circular(30), color: itgRequestTypeIndex == index ? MyColors.darkIconColor : MyColors.lightGreyEAColor), + // child: ("${type.requestTypeName}").toText12(color: itgRequestTypeIndex == index ? MyColors.white : MyColors.black), + // ).onPress(() { + // if (itgRequestTypeIndex != index) { + // itgRequestTypeIndex = index; + // setState(() {}); + // } + // }); + // }, + // separatorBuilder: (context, index) => 8.width, + // shrinkWrap: true, + // itemCount: itgFormsModel?.requestType?.length ?? 0, + // scrollDirection: Axis.horizontal, + // padding: const EdgeInsets.only(left: 21, right: 21), + // ), + // ).paddingOnly(top: 16, bottom: 16), + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + return itgRowItem(workListItemTypes[workListItemIndex!], itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails![index], index); + }, + separatorBuilder: (context, index) => 12.height, + itemCount: itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails?.length ?? 0, + padding: const EdgeInsets.all(21), + ), + ], + ) + : workList != null + ? ((workList!).isEmpty + ? Utils.getNoDataWidget(context).paddingOnly(top: 100) + : ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + return rowItem(workListItemTypes[workListItemIndex!], workList![index], index); + }, + separatorBuilder: (context, index) => 12.height, + itemCount: workList?.length ?? 0, + padding: const EdgeInsets.all(21), + )) + : const SizedBox(), + )).expanded, + ], ), - ).paddingOnly(top: 21, bottom: 21), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - workListItemTypes[workListItemIndex].fullName.toSectionHeading().paddingOnly(left: 21, right: 21), - LocaleKeys.advancedSearch.tr().toText14(isUnderLine: true, color: MyColors.textMixColor).onPress(() { - openBottomSheet(context); - }).paddingOnly(left: 21, right: 21) - ], ), - SmartRefresher( - enablePullDown: true, - enablePullUp: false, - header: const MaterialClassicHeader( - color: MyColors.gradiantEndColor, - ), - controller: _refreshController, - onRefresh: _onRefresh, - child: SingleChildScrollView( - physics: const BouncingScrollPhysics(), - child: itgRequestTypeIndex != null - ? Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // todo this is commented for temporary purpose, have issue when selecting any itg category and click any item showing wrong details - // SizedBox( - // height: 40, - // child: ListView.separated( - // itemBuilder: (context, index) { - // RequestType type = itgFormsModel!.requestType![index]; - // return Container( - // padding: const EdgeInsets.only(left: 21, right: 21, top: 8, bottom: 8), - // alignment: Alignment.center, - // decoration: BoxDecoration(borderRadius: BorderRadius.circular(30), color: itgRequestTypeIndex == index ? MyColors.darkIconColor : MyColors.lightGreyEAColor), - // child: ("${type.requestTypeName}").toText12(color: itgRequestTypeIndex == index ? MyColors.white : MyColors.black), - // ).onPress(() { - // if (itgRequestTypeIndex != index) { - // itgRequestTypeIndex = index; - // setState(() {}); - // } - // }); - // }, - // separatorBuilder: (context, index) => 8.width, - // shrinkWrap: true, - // itemCount: itgFormsModel?.requestType?.length ?? 0, - // scrollDirection: Axis.horizontal, - // padding: const EdgeInsets.only(left: 21, right: 21), - // ), - // ).paddingOnly(top: 16, bottom: 16), - ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - itemBuilder: (context, index) { - return itgRowItem(workListItemTypes[workListItemIndex], itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails![index], index); - }, - separatorBuilder: (context, index) => 12.height, - itemCount: itgFormsModel!.requestType![itgRequestTypeIndex!].requestDetails?.length ?? 0, - padding: const EdgeInsets.all(21), - ), - ], - ) - : workList != null - ? ((workList!).isEmpty - ? Utils.getNoDataWidget(context).paddingOnly(top: 100) - : ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - itemBuilder: (context, index) { - return rowItem(workListItemTypes[workListItemIndex], workList![index], index); - }, - separatorBuilder: (context, index) => 12.height, - itemCount: workList?.length ?? 0, - padding: const EdgeInsets.all(21), - )) - : const SizedBox(), - )).expanded, - ], - ), - ), ); } @@ -350,7 +358,10 @@ class _WorkListScreenState extends State { if (shouldReloadData.toString() == "delegate_reload") { providerData.itgFormsModel!.totalCount = providerData.itgFormsModel!.totalCount! - 1; calculateCounter(); - getWorkList(); + setState(() {}); + if (workListItemIndex != null) { + getWorkList(); + } } // workList!.remove(data); // AppState().setWorkList = workList; From d9749fc4027d44e035afb84376b9af062ab502f4 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 26 Dec 2022 12:07:44 +0300 Subject: [PATCH 269/302] Updated NoWinnerFoundDesign and some Logical Up gradations --- assets/langs/ar-SA.json | 4 +- assets/langs/en-US.json | 4 +- assets/lottie/no_winner.json | 1 + lib/classes/consts.dart | 1 + lib/classes/lottie_consts.dart | 1 + lib/config/routes.dart | 2 - lib/generated/codegen_loader.g.dart | 2062 ++++++++--------- lib/generated/locale_keys.g.dart | 2 + lib/main.dart | 1 + lib/models/marathon/marathon_model.dart | 83 +- lib/ui/landing/dashboard_screen.dart | 2 + lib/ui/marathon/marathon_provider.dart | 56 +- lib/ui/marathon/marathon_screen.dart | 21 +- lib/ui/marathon/marathon_waiting_screen.dart | 30 +- .../countdown_timer_detail_screen.dart | 202 ++ ....dart => countdown_timer_main_screen.dart} | 20 +- lib/ui/marathon/widgets/marathon_banner.dart | 194 +- lib/ui/marathon/widgets/marathon_footer.dart | 2 +- .../widgets/marathon_progress_container.dart | 4 + .../marathon/widgets/marathon_timer_card.dart | 9 +- lib/ui/marathon/winner_screen.dart | 93 - .../shimmer/dashboard_shimmer_widget.dart | 2 +- 22 files changed, 1538 insertions(+), 1258 deletions(-) create mode 100644 assets/lottie/no_winner.json create mode 100644 lib/ui/marathon/widgets/countdown_timer_detail_screen.dart rename lib/ui/marathon/widgets/{countdown_timer.dart => countdown_timer_main_screen.dart} (90%) delete mode 100644 lib/ui/marathon/winner_screen.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index ac320f7..f5f734d 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -514,5 +514,7 @@ "startingIn": "يبدأ في", "youAreOutOfContest": "أنت خارج المسابقة.", "winners": "الفائزين!!!", - "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية" + "noUpcoming": "لا يوجد قادم", + "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية", + "noWinner": "حزين! لم يفز أحد اليوم." } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 1e6025c..7f67e89 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -514,5 +514,7 @@ "startingIn": "Starting in", "youAreOutOfContest": "You are out of the contest.", "winners": "WINNERS!!!", - "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified." + "noUpcoming": "There is no upcoming", + "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified.", + "noWinner": "Sad! No one won today." } \ No newline at end of file diff --git a/assets/lottie/no_winner.json b/assets/lottie/no_winner.json new file mode 100644 index 0000000..65e1949 --- /dev/null +++ b/assets/lottie/no_winner.json @@ -0,0 +1 @@ +{"nm":"Comp 2","mn":"","layers":[{"ty":4,"nm":"Frontground","mn":"","sr":1,"st":0,"op":48,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[-81.096,431.984,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[638.904,943.984,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-68.574,-1.085],[34.042,0],[52.954,0],[128.751,5.51],[39.715,0],[48.62,-2.288],[19.543,-4.113],[53.584,0],[14.709,-27.968],[-63.04,0],[-71.1,2.059],[-92.132,0],[-85.024,1.627]],"o":[[-9.552,-15.19],[-51.063,0],[-52.954,0],[-128.751,-5.51],[-39.715,0],[-48.62,2.288],[-19.542,4.113],[-35.723,0],[-20.494,15.19],[23.209,0],[40.125,-1.162],[43.498,0],[56.682,-1.085]],"v":[[207.197,420.467],[141.807,397.683],[46.901,370.126],[-102.986,260.472],[-242.305,321.091],[-351.995,290.976],[-439.77,370.126],[-498.398,355.73],[-574.046,397.683],[-510.226,420.467],[-351.995,411.008],[-146.484,431.984],[19.312,420.467]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1686,0.7216,0.6588],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-","ix":2,"cix":2,"np":12,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.512,-0.207],[0.207,-0.512],[0,0],[0.512,0.207],[-0.207,0.512]],"o":[[0.207,-0.512],[0.512,0.207],[0,0],[-0.207,0.512],[-0.512,-0.207],[0,0]],"v":[[194.164,326.338],[195.466,325.785],[196.019,327.087],[160.602,414.746],[159.3,415.299],[158.748,413.997]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.072,-4.129],[5.799,0.101],[-0.072,4.129],[-5.799,-0.101]],"o":[[-0.072,4.129],[-5.799,-0.101],[0.072,-4.129],[5.799,0.101]],"v":[[214.315,400.648],[203.685,407.941],[167.31,399.828],[203.946,392.989]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.643,-3.649],[5.124,-0.904],[0.643,3.649],[-5.124,0.904]],"o":[[0.643,3.649],[-5.124,0.904],[-0.643,-3.649],[5.124,-0.904]],"v":[[216.523,375.851],[208.409,384.094],[174.982,383.176],[206.079,370.88]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":4,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.899,-3.134],[4.401,-1.262],[0.899,3.134],[-4.401,1.262]],"o":[[0.899,3.134],[-4.401,1.262],[-0.899,-3.134],[4.401,-1.262]],"v":[[218.455,353.847],[212.114,361.806],[182.783,364.076],[208.861,350.458]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.024,-2.669],[3.748,-1.439],[1.024,2.669],[-3.748,1.439]],"o":[[1.024,2.669],[-3.748,1.439],[-1.024,-2.669],[3.748,-1.439]],"v":[[219.854,335.575],[214.923,343.012],[189.475,347.236],[211.213,333.348]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":6,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.31,-1.871],[2.628,-1.84],[1.31,1.871],[-2.628,1.84]],"o":[[1.31,1.871],[-2.628,1.84],[-1.31,-1.871],[2.628,-1.84]],"v":[[216.891,317.026],[214.506,323.746],[195.588,331.942],[209.761,316.969]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.816,3.02],[-4.241,-3.955],[2.816,-3.02],[4.241,3.955]],"o":[[2.816,-3.02],[4.241,3.955],[-2.816,3.02],[-4.241,-3.955]],"v":[[129.393,366.338],[142.173,368.031],[163.776,398.4],[131.973,378.968]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":8,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.998,2.178],[-3.059,-4.21],[2.998,-2.178],[3.059,4.21]],"o":[[2.998,-2.178],[3.059,4.21],[-2.998,2.178],[-3.059,-4.21]],"v":[[145.031,346.966],[155.997,350.645],[169.824,381.092],[145.141,358.532]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.823,1.63],[-2.289,-3.965],[2.823,-1.63],[2.289,3.965]],"o":[[2.823,-1.63],[2.289,3.965],[-2.823,1.63],[-2.289,-3.965]],"v":[[158.925,329.796],[168.182,334.023],[177.48,361.933],[157.958,339.925]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":10,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.591,1.208],[-1.696,-3.638],[2.591,-1.208],[1.696,3.638]],"o":[[2.591,-1.208],[1.696,3.638],[-2.591,1.208],[-1.696,-3.638]],"v":[[170.612,315.68],[178.375,320.08],[184.365,345.172],[168.993,324.455]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.243,0.436],[-0.612,-3.149],[2.243,-0.436],[0.612,3.149]],"o":[[2.243,-0.436],[0.612,3.149],[-2.243,0.436],[-0.612,-3.149]],"v":[[185.629,304.395],[190.798,309.308],[190.591,329.923],[182.677,310.886]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":12,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.103,-0.893],[1.254,-2.953],[2.103,0.893],[-1.254,2.953]],"o":[[2.103,0.893],[-1.254,2.953],[-2.103,-0.893],[1.254,-2.953]],"v":[[207.209,296.754],[208.747,303.717],[197.048,320.692],[201.132,300.484]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-","ix":3,"cix":2,"np":12,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.552,0],[0,-0.552],[0,0],[0.552,0],[0,0.552]],"o":[[0,-0.552],[0.552,0],[0,0],[0,0.552],[-0.552,0],[0,0]],"v":[[92.553,282.336],[93.553,281.336],[94.553,282.336],[94.553,414.836],[93.553,415.836],[92.553,414.836]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.074,-5.403],[7.588,-2.913],[2.074,5.403],[-7.588,2.913]],"o":[[2.074,5.403],[-7.588,2.913],[-2.074,-5.403],[7.588,-2.913]],"v":[[157.449,368.317],[147.465,383.375],[95.939,391.929],[139.954,363.808]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.752,-4.404],[6.184,-3.865],[2.752,4.404],[-6.184,3.865]],"o":[[2.752,4.404],[-6.184,3.865],[-2.752,-4.404],[6.184,-3.865]],"v":[[147.299,334.936],[141.084,349.907],[97.166,366.263],[131.118,333.959]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":4,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.813,-3.6],[5.056,-3.95],[2.813,3.6],[-5.056,3.95]],"o":[[2.813,3.6],[-5.056,3.95],[-2.813,-3.6],[5.056,-3.95]],"v":[[138.259,305.329],[134.197,319],[97.276,337.349],[124.012,305.963]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.732,-2.93],[4.114,-3.837],[2.732,2.93],[-4.114,3.837]],"o":[[2.732,2.93],[-4.114,3.837],[-2.732,-2.93],[4.114,-3.837]],"v":[[130.483,280.852],[127.98,293.104],[97.13,311.954],[118.086,282.494]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":6,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.685,-1.744],[2.449,-3.771],[2.685,1.744],[-2.449,3.771]],"o":[[2.685,1.744],[-2.449,3.771],[-2.685,-1.744],[2.449,-3.771]],"v":[[116.895,258.304],[117.323,268.289],[97.045,288.871],[107.6,261.974]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.074,5.403],[-7.588,-2.913],[2.074,-5.403],[7.588,2.913]],"o":[[2.074,-5.403],[7.588,2.913],[-2.074,5.403],[-7.588,-2.913]],"v":[[29.087,368.317],[46.582,363.808],[90.597,391.929],[39.071,383.375]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":8,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.752,4.404],[-6.184,-3.865],[2.752,-4.404],[6.184,3.865]],"o":[[2.752,-4.404],[6.184,3.865],[-2.752,4.404],[-6.184,-3.865]],"v":[[39.237,334.936],[55.418,333.959],[89.37,366.263],[45.452,349.907]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.813,3.6],[-5.056,-3.95],[2.813,-3.6],[5.056,3.95]],"o":[[2.813,-3.6],[5.056,3.95],[-2.813,3.6],[-5.056,-3.95]],"v":[[48.277,305.329],[62.524,305.963],[89.26,337.349],[52.338,319]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":10,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.732,2.93],[-4.114,-3.837],[2.732,-2.93],[4.114,3.837]],"o":[[2.732,-2.93],[4.114,3.837],[-2.732,2.93],[-4.114,-3.837]],"v":[[56.053,280.852],[68.45,282.494],[89.406,311.954],[58.556,293.104]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.685,1.744],[-2.449,-3.771],[2.685,-1.744],[2.449,3.771]],"o":[[2.685,-1.744],[2.449,3.771],[-2.685,1.744],[-2.449,-3.771]],"v":[[69.641,258.304],[78.936,261.974],[89.491,288.871],[69.213,268.289]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":12,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.201,-0.056],[0.078,-4.495],[3.201,0.056],[-0.078,4.495]],"o":[[3.201,0.056],[-0.078,4.495],[-3.201,-0.056],[0.078,-4.495]],"v":[[93.671,237.045],[99.325,245.286],[93.035,273.486],[87.733,245.083]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves","ix":4,"cix":2,"np":4,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-74.739,-47.961],[0.617,-1.077],[1.293,0.83],[14.829,62.855],[-1.396,0.021],[-0.321,-1.36]],"o":[[1.293,0.83],[-0.617,1.077],[-76.08,-48.821],[-0.321,-1.36],[1.396,-0.02],[14.447,61.235]],"v":[[-213.998,334.407],[-212.775,337.86],[-216.233,338.309],[-352.715,170.742],[-350.768,168.243],[-347.659,170.668]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":2,"cix":2,"np":13,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.993,1.92],[-1.299,3.609],[-3.993,-1.92],[1.299,-3.609]],"o":[[-3.993,-1.92],[1.299,-3.609],[3.993,1.92],[-1.299,3.609]],"v":[[-262.381,297.487],[-267.257,287.476],[-251.848,268.23],[-252.799,294.429]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":2,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.15,1.284],[-0.563,3.899],[-4.15,-1.284],[0.563,-3.899]],"o":[[-4.15,-1.284],[0.563,-3.899],[4.15,1.284],[-0.563,3.899]],"v":[[-280.357,279.238],[-286.852,269.853],[-275.791,247.633],[-271.822,274.504]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 3","ix":3,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.173,1.085],[-0.338,3.963],[-4.173,-1.085],[0.338,-3.963]],"o":[[-4.173,-1.085],[0.338,-3.963],[4.173,1.085],[-0.338,3.963]],"v":[[-301.137,256.733],[-308.081,247.593],[-298.396,224.609],[-292.968,251.522]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":4,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.116,1.48],[-0.787,3.824],[-4.116,-1.48],[0.787,-3.824]],"o":[[-4.116,-1.48],[0.787,-3.824],[4.116,1.48],[-0.787,3.824]],"v":[[-319.263,228.581],[-325.291,218.977],[-312.884,197.583],[-310.385,224.337]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 5","ix":5,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.129,1.415],[-0.713,3.85],[-4.129,-1.415],[0.713,-3.85]],"o":[[-4.129,-1.415],[0.713,-3.85],[4.129,1.415],[-0.713,3.85]],"v":[[-332.964,201.812],[-339.15,192.279],[-327.188,170.602],[-324.198,197.403]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 6","ix":6,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.779,2.388],[-1.861,3.298],[-3.779,-2.388],[1.861,-3.298]],"o":[[-3.779,-2.388],[1.861,-3.298],[3.779,2.388],[-1.861,3.298]],"v":[[-345.301,169.599],[-348.774,159.305],[-330.217,142.865],[-335.09,167.951]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 7","ix":7,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.635,-1.788],[2.936,5.019],[-4.635,1.788],[-2.936,-5.019]],"o":[[-4.635,1.788],[-2.936,-5.019],[4.635,-1.788],[2.936,5.019]],"v":[[-360.473,174.431],[-374.181,168.58],[-384.272,133.742],[-357.397,162.104]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 8","ix":8,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.308,-3.411],[4.457,4.024],[-3.308,3.411],[-4.457,-4.024]],"o":[[-3.308,3.411],[-4.457,-4.024],[3.308,-3.411],[4.457,4.024]],"v":[[-350.231,204.974],[-364.291,203.864],[-386.359,172.355],[-352.31,191.513]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 9","ix":9,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.36,-4.661],[5.438,2.327],[-1.36,4.661],[-5.438,-2.327]],"o":[[-1.36,4.661],[-5.438,-2.327],[1.36,-4.661],[5.438,2.327]],"v":[[-330.64,231.996],[-342.949,236.222],[-374.722,213.13],[-338.025,219.342]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 10","ix":10,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.33,-5.006],[5.606,1.366],[-0.33,5.006],[-5.606,-1.366]],"o":[[-0.33,5.006],[-5.606,-1.366],[0.33,-5.006],[5.606,1.366]],"v":[[-310.795,256.433],[-321.544,263.024],[-356.24,245.363],[-320.348,244.897]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 11","ix":11,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.144,-5.102],[5.614,0.91],[0.144,5.102],[-5.614,-0.91]],"o":[[0.144,5.102],[-5.614,-0.91],[-0.144,-5.102],[5.614,0.91]],"v":[[-290.321,281.884],[-300.227,289.474],[-335.834,274.509],[-300.747,270.999]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 12","ix":12,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.899,-5.175],[5.539,0.167],[0.899,5.175],[-5.539,-0.167]],"o":[[0.899,5.175],[-5.539,-0.167],[-0.899,-5.175],[5.539,0.167]],"v":[[-266.639,304.045],[-275.041,313.112],[-311.541,302.689],[-278.296,294.373]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1373,0.6157,0.5608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-111.56,-55.092],[0.458,-1.199],[1.368,0.675],[26.349,62.451],[-1.326,0.293],[-0.567,-1.344]],"o":[[1.368,0.675],[-0.458,1.199],[-112.835,-55.721],[-0.567,-1.344],[1.326,-0.293],[25.647,60.787]],"v":[[-298.287,322.808],[-296.64,326.202],[-299.946,327.15],[-508.81,149.971],[-507.437,147.007],[-504.008,148.911]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":4,"cix":2,"np":17,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.229,1.016],[-0.28,4.013],[-4.229,-1.016],[0.28,-4.013]],"o":[[-4.229,-1.016],[0.28,-4.013],[4.229,1.016],[-0.28,4.013]],"v":[[-348.281,295.246],[-355.431,286.139],[-346.011,262.715],[-340.118,289.82]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":2,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.15,1.551],[-0.881,3.829],[-4.15,-1.551],[0.881,-3.829]],"o":[[-4.15,-1.551],[0.881,-3.829],[4.15,1.551],[-0.881,3.829]],"v":[[-376.038,276.969],[-381.956,267.227],[-368.897,245.931],[-366.929,272.845]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 3","ix":3,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.209,1.22],[-0.507,3.953],[-4.209,-1.22],[0.507,-3.953]],"o":[[-4.209,-1.22],[0.507,-3.953],[4.209,1.22],[-0.507,3.953]],"v":[[-397.381,263.549],[-404.084,254.183],[-393.274,231.505],[-388.843,258.6]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 4","ix":4,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.23,0.532],[0.25,4.11],[-4.23,-0.532],[-0.25,-4.11]],"o":[[-4.23,-0.532],[-0.25,-4.11],[4.23,0.532],[0.25,4.11]],"v":[[-418.115,248.204],[-426.228,239.799],[-420.145,214.886],[-410.908,241.725]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 5","ix":5,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.212,0.321],[0.477,4.133],[-4.212,-0.321],[-0.477,-4.133]],"o":[[-4.212,-0.321],[-0.477,-4.133],[4.212,0.321],[0.477,4.133]],"v":[[-442.362,229.007],[-450.852,220.941],[-446.23,195.503],[-435.6,222.105]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 6","ix":6,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.237,0.741],[0.023,4.076],[-4.237,-0.741],[-0.023,-4.076]],"o":[[-4.237,-0.741],[-0.023,-4.076],[4.237,0.741],[0.023,4.076]],"v":[[-465.21,203.457],[-472.924,194.735],[-465.397,170.416],[-457.579,197.418]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 7","ix":7,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.236,0.671],[0.099,4.089],[-4.236,-0.671],[-0.099,-4.089]],"o":[[-4.236,-0.671],[-0.099,-4.089],[4.236,0.671],[0.099,4.089]],"v":[[-483.575,178.478],[-491.425,169.86],[-484.377,145.335],[-476.084,172.291]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 8","ix":8,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[4.223,1.085],[-0.356,3.994],[-4.223,-1.085],[0.356,-3.994]],"o":[[-4.223,-1.085],[0.356,-3.994],[4.223,1.085],[-0.356,3.994]],"v":[[-500.286,150.581],[-507.289,141.385],[-497.402,118.203],[-491.995,145.313]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 9","ix":9,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.891,-3.868],[4.802,3.642],[-2.891,3.868],[-4.802,-3.642]],"o":[[-2.891,3.868],[-4.802,-3.642],[2.891,-3.868],[4.802,3.642]],"v":[[-510.111,159.153],[-524.041,159.561],[-549.037,129.629],[-513.57,145.555]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 10","ix":10,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.764,-4.567],[5.346,2.657],[-1.764,4.567],[-5.346,-2.657]],"o":[[-1.764,4.567],[-5.346,-2.657],[1.764,-4.567],[5.346,2.657]],"v":[[-494.833,186.913],[-507.707,190.373],[-538.169,165.379],[-501.319,173.833]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 11","ix":11,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.355,-5.082],[5.632,1.354],[-0.355,5.082],[-5.632,-1.354]],"o":[[-0.355,5.082],[-5.632,-1.354],[0.355,-5.082],[5.632,1.354]],"v":[[-475.393,209.333],[-486.233,216.084],[-521.048,198.359],[-484.949,197.679]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 12","ix":12,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.7,-5.241],[5.598,0.334],[0.7,5.241],[-5.598,-0.334]],"o":[[0.7,5.241],[-5.598,-0.334],[-0.7,-5.241],[5.598,0.334]],"v":[[-451.659,230.735],[-460.528,239.619],[-497.038,228.024],[-463.062,220.641]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 13","ix":13,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.173,-5.249],[5.514,-0.135],[1.173,5.249],[-5.514,0.135]],"o":[[1.173,5.249],[-5.514,0.135],[-1.173,-5.249],[5.514,-0.135]],"v":[[-427.12,253.047],[-434.981,262.796],[-471.819,254.143],[-439.228,243.787]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 14","ix":14,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.91,-5.18],[5.293,-0.883],[1.91,5.18],[-5.293,0.883]],"o":[[1.91,5.18],[-5.293,0.883],[-1.91,-5.18],[5.293,-0.883]],"v":[[-400.189,271.344],[-406.315,282.321],[-443.096,278.503],[-413.23,263.564]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 15","ix":15,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.694,-4.981],[4.922,-1.703],[2.694,4.981],[-4.922,1.703]],"o":[[2.694,4.981],[-4.922,1.703],[-2.694,-4.981],[4.922,-1.703]],"v":[[-374.527,289.405],[-378.561,301.508],[-414.423,303.212],[-388.316,283.47]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 16","ix":16,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.694,-4.981],[4.922,-1.703],[2.694,4.981],[-4.922,1.703]],"o":[[2.694,4.981],[-4.922,1.703],[-2.694,-4.981],[4.922,-1.703]],"v":[[-345.374,306.561],[-349.408,318.664],[-385.27,320.368],[-359.163,300.626]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1686,0.7216,0.6588],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[35.574,17.45],[32.96,0],[51.271,0],[47.802,25.025],[93.386,8.545],[38.453,0],[23.624,3.576],[17.701,3.662],[52.582,0],[12.818,-7.859],[17.701,-31.129],[25.781,0],[3.255,-36.862],[-40.899,-1.343],[-76.121,-3.085],[-109.319,0],[-83.461,7.457],[-47.902,3.08]],"o":[[-17.09,-45.981],[-49.44,0],[-33.377,0],[-49.286,-25.802],[-93.386,-8.545],[-27.694,0],[-23.624,-3.576],[-21.566,-4.462],[-52.582,0],[-12.818,7.859],[-17.701,31.129],[-31.412,0],[2.314,11.284],[61.348,2.014],[76.121,3.085],[109.319,0],[83.461,-7.457],[26.238,-1.687]],"v":[[388.686,400.45],[313.611,331.478],[236.733,259.086],[155.555,274.354],[64,195.5],[-46.386,274.354],[-99.488,226.745],[-144.045,248.719],[-210.055,207.205],[-257.573,286.637],[-304.571,299.379],[-317.389,345.156],[-369.39,400.45],[-304.571,419.39],[-164.341,407.183],[34,407.183],[207.372,424.273],[402.689,429.156]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1373,0.6157,0.5608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":0},{"ty":4,"nm":"hand mag","mn":"","sr":1,"st":0,"op":48,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[223.738,-50.724,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[943.738,461.276,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-10],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":31.846},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":35},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-10],"t":42}],"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"-Magnifier-base","ix":1,"cix":2,"np":5,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Eye","ix":1,"cix":2,"np":4,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[147,-62.5],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[147,-62.5],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[147,-62.5],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[160,-62.5],"t":14.995},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[160,-62.5],"t":18.365},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[126,-62.5],"t":25.104},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[126,-62.5],"t":28.475},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[147,-62.5],"t":31.846},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[147,-62.5],"t":35},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[147,-62.5],"t":42}],"ix":3},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[19,19],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[15,15],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[15,15],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[7,7],"t":14.995},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[7,7],"t":18.365},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[7,7],"t":25.104},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[7,7],"t":28.475},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[15,15],"t":31.846},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[15,15],"t":35},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[19,19],"t":42}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[1.595,-7.836],"ix":2},"r":{"a":0,"k":0.019,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[148.5,-54],"t":14.995},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[148.5,-54],"t":18.365},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[116.5,-54],"t":25.104},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[116.5,-54],"t":28.475},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":31.846},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":35},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":42}],"ix":3},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[20,20],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[20,20],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[20,20],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[20,20],"t":42}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1098,0.1333,0.1608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[147.5,-54],"t":14.995},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[147.5,-54],"t":18.365},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[117.5,-54],"t":25.104},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[117.5,-54],"t":28.475},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":31.846},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":35},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[133.5,-54],"t":42}],"ix":3},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[40,40],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[40,40],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[40,40],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[40,40],"t":42}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":4,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[132.5,-55],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[132.5,-55],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[132.5,-55],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[132.5,-55],"t":35},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[132.5,-55],"t":42}],"ix":3},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[78,78],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[78,49],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[78,49],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[78,49],"t":35},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[78,78],"t":42}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,-21],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0],"t":8.256},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0],"t":11.625},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0],"t":31.846},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0],"t":35},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,-21],"t":42}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-9.474,-28.386],[23.037,-27.331],[7.391,0],[0,39.488],[-39.488,0]],"o":[[-5.89,27.685],[-6.706,2.082],[-39.488,0],[0,-39.488],[31.571,0]],"v":[[199.837,-68.152],[153.226,22.797],[132,26],[60.5,-45.5],[132,-117]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6667,0.5137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":3,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[132,-45.5],"ix":3},"s":{"a":0,"k":[143,143],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":4,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[132,-46.5],"ix":3},"s":{"a":0,"k":[161,161],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[108.996,24.74],[133.449,29.938],[125.475,68.593],[101.022,63.396]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1686,0.7216,0.6588],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Hand-base","ix":2,"cix":2,"np":7,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[6.908,8.516],[1.917,7.291],[0.392,2.656],[-0.03,2.002],[-0.683,3.647],[-1.873,5.201],[-1.899,2.745],[-6.307,6.307],[-9.346,-4.417],[-8.962,5.368],[-3.473,0],[-4.048,-3.077],[2.864,-36.977],[17.34,3.618]],"o":[[-4.777,-5.888],[-0.66,-2.51],[-0.291,-1.974],[0.053,-3.56],[0.6,-3.203],[1.873,-5.201],[1.51,-2.183],[6.307,-6.307],[-2.858,17.874],[2.263,-1.355],[2.918,0],[23.812,18.102],[-1.429,18.455],[-9.993,-2.085]],"v":[[66.5,120.694],[61.372,105.238],[63.335,96.096],[60.043,89.266],[63.335,78.549],[61.372,67.551],[70.359,59.039],[70.359,47.331],[104.753,43.074],[126.787,56.596],[131.805,44.253],[146.381,47.331],[174.963,115.334],[104.753,133.435]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6667,0.5137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.599,1.545],[4.023,21.44],[-4.45,6.006],[-1.331,-0.986],[0.986,-1.331],[-5.8,-21.935],[4.383,-11.3],[1.545,0.599]],"o":[[3.885,-10.017],[-6.253,-23.643],[0.986,-1.331],[1.331,0.986],[-2.868,3.871],[4.231,22.496],[-0.599,1.545],[-1.545,-0.599]],"v":[[178.59,206.103],[178.459,158.856],[175.448,114.923],[179.644,114.299],[180.268,118.495],[184.335,157.64],[184.184,208.273],[180.302,209.985]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9294,0.3412,0.2196],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,1.657],[0,0],[-1.657,0],[0,-1.657],[0,0],[1.657,0]],"o":[[0,0],[0,-1.657],[1.657,0],[0,0],[0,1.657],[-1.657,0]],"v":[[126.852,149.158],[126.852,136.843],[129.852,133.843],[132.852,136.843],[132.852,149.158],[129.852,152.158]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9294,0.3412,0.2196],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":4,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.369,1.615],[-5.801,7.729],[-1.325,-0.995],[0.995,-1.325],[4.77,-20.909],[1.615,0.369]],"o":[[4.945,-21.677],[0.995,-1.325],[1.325,0.995],[-5.157,6.871],[-0.369,1.615],[-1.615,-0.369]],"v":[[136.906,75.005],[152.937,30.981],[157.137,30.383],[157.736,34.583],[142.756,76.34],[139.164,78.597]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1765,0.1843,0.2235],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.276,-1.057],[37.123,33.477],[-1.11,1.23],[-1.23,-1.11],[-39.602,32.8],[-1.057,-1.276]],"o":[[-41.825,34.641],[-1.23,-1.11],[1.11,-1.23],[34.837,31.415],[1.276,-1.057],[1.057,1.276]],"v":[[245.831,79.719],[126.869,81.549],[126.65,77.312],[130.887,77.093],[242.004,75.098],[246.228,75.495]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 6","ix":6,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.845,-27.348],[-0.135,-40.171],[8.767,70.349],[-33.263,0]],"o":[[0.829,26.814],[0.135,40.171],[-8.767,-70.349],[33.263,0]],"v":[[246.31,-37.01],[251.976,74.063],[129.562,74.063],[192.962,-66.062]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 7","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.981,-27.334],[43.988,-68.438],[7.179,-11.665],[0,82.277],[-3.549,18.591],[-28.367,19.481]],"o":[[0.774,21.578],[-9.639,14.996],[-27.745,45.081],[0,-20.714],[12.15,-63.647],[36.653,-25.171]],"v":[[247.498,-4.692],[193.725,199.418],[179.47,233.878],[105.12,205.089],[125.049,147.744],[193.725,-33.981]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6667,0.5137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"head","mn":"","sr":1,"st":0,"op":48,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[131.333,-141.84,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[851.333,370.16,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Hair","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.376,27.891],[0,0],[-0.88,2.146],[-2.146,-0.88],[0,0],[0,0],[-1.577,1.701],[-1.701,-1.577],[0,0],[-0.457,0.882],[-27.864,-12.066],[-20.204,-57.367],[-19.093,-12.545],[0,0],[-2.02,-1.14],[1.14,-2.02],[0,0],[-3.064,-3.99],[0,0],[-1.319,-1.908],[1.908,-1.319],[0,0],[-0.064,-0.103],[0,0],[-0.731,-2.201],[2.201,-0.731],[0,0],[-1.068,-3.862],[89.905,-36.498],[18.977,11.088],[16.232,-0.522],[-2.591,11.221],[-2.053,24.658],[27.951,-4.348],[12.455,17.65],[13.018,-26.256],[6.41,6.416],[5.014,-1.868]],"o":[[0,0],[-2.146,-0.88],[0.88,-2.146],[0,0],[0,0],[-1.701,-1.577],[1.577,-1.701],[0,0],[0.386,-0.928],[14.387,-27.794],[48.022,-109.698],[28.334,-35.529],[0,0],[1.14,-2.02],[2.02,1.14],[0,0],[3.823,3.346],[0,0],[1.908,-1.319],[1.319,1.908],[0,0],[0.065,0.103],[0,0],[2.201,-0.731],[0.731,2.201],[0,0],[2.209,4.441],[73.793,-11.295],[6.399,42.344],[-1.118,36.995],[3.628,-5.792],[-5.66,-20.736],[-16.455,10.94],[-12.441,1.935],[-4.285,18.561],[-10.557,3.47],[-7.543,-7.551],[-2.801,-7.092]],"v":[[-47.065,-190.633],[-59.894,-195.891],[-62.187,-201.37],[-56.708,-203.663],[-51.862,-201.677],[-55.953,-205.47],[-56.178,-211.406],[-50.242,-211.63],[-43.655,-205.523],[-42.391,-208.238],[9.253,-231.243],[151.077,-270.601],[224.399,-293.207],[228.965,-301.294],[234.687,-302.887],[236.28,-297.164],[231.139,-288.059],[241.493,-276.929],[263.791,-292.346],[269.634,-291.28],[268.568,-285.436],[246.288,-270.031],[246.482,-269.721],[262.926,-275.186],[268.236,-272.524],[265.575,-267.214],[250.654,-262.256],[255.599,-249.639],[269.749,-164.081],[204.164,-120.138],[155.794,-62.611],[168.339,-97.064],[160.457,-148.446],[85.712,-130.283],[19.995,-150.741],[2.588,-86.55],[-9.514,-123.541],[-32.017,-120.338]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1451,0.1961,0.2196],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":2,"cix":2,"np":7,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.498,-0.808],[0.808,-3.498],[3.498,0.808],[-0.808,3.498]],"o":[[3.498,0.808],[-0.808,3.498],[-3.498,-0.808],[0.808,-3.498]],"v":[[121.758,-86.538],[126.629,-78.742],[118.833,-73.871],[113.962,-81.667]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1098,0.1333,0.1608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.627,0.315],[0,0],[0,0],[-0.894,1.395],[-1.395,-0.894],[0,0],[2.659,-0.514],[0,0],[0.315,1.627]],"o":[[0,0],[0,0],[-1.395,-0.894],[0.894,-1.395],[0,0],[2.279,1.462],[0,0],[-1.627,0.315],[-0.315,-1.627]],"v":[[28.833,-94.462],[44.395,-97.471],[31.631,-105.656],[30.725,-109.801],[34.87,-110.707],[53.945,-98.474],[52.895,-93.004],[29.972,-88.571],[26.457,-90.947]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1098,0.1333,0.1608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.141,27.766],[-1.574,0.518],[-0.518,-1.574],[-20.67,-4.772],[-19.385,21.537],[-1.231,-1.108],[1.108,-1.232],[22.944,5.297]],"o":[[-0.518,-1.574],[1.574,-0.518],[8.525,25.896],[20.601,4.756],[1.108,-1.231],[1.232,1.108],[-20.735,23.038],[-22.875,-5.281]],"v":[[2.795,-20.952],[4.706,-24.739],[8.494,-22.828],[52.228,22.973],[112.072,-2.002],[116.309,-2.225],[116.532,2.012],[50.878,28.819]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9294,0.3412,0.2196],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":4,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[18.979,0.348],[-0.03,1.657],[-1.657,-0.03],[-7.907,-20.888],[1.55,-0.587],[0.587,1.55]],"o":[[-1.657,-0.03],[0.03,-1.657],[21.468,0.394],[0.587,1.55],[-1.55,0.587],[-7.051,-18.625]],"v":[[38.734,-26.931],[35.789,-29.986],[38.844,-32.93],[83.149,-0.802],[81.405,3.066],[77.537,1.322]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9294,0.3412,0.2196],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-5.193,-5.519],[-4.776,-1.103],[5.931,-0.791],[-8.915,5.275]],"o":[[-8.146,19.721],[5.193,5.519],[-7.194,6.26],[-8.897,1.186],[0,0]],"v":[[87.784,-104.74],[83.354,-66.88],[98.307,-56.947],[78.62,-46.372],[64.832,-57.342]]},"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"d":[],"c":{"a":0,"k":[0.9294,0.3412,0.2196],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 6","ix":6,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.713,1.041],[0,0],[-1.041,-2.713],[2.713,-1.041],[0,0],[1.041,2.713]],"o":[[0,0],[2.713,-1.041],[1.041,2.713],[0,0],[-2.713,1.041],[-1.041,-2.713]],"v":[[116.46,-115.808],[138.011,-124.081],[144.809,-121.054],[141.782,-114.256],[120.232,-105.983],[113.433,-109.01]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1451,0.1961,0.2196],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 7","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.125,-1.982],[0,0],[1.982,-2.125],[2.125,1.982],[0,0],[-1.982,2.125]],"o":[[0,0],[2.125,1.982],[-1.982,2.125],[0,0],[-2.125,-1.982],[1.982,-2.125]],"v":[[41.059,-129.456],[57.941,-113.713],[58.201,-106.276],[50.764,-106.016],[33.882,-121.759],[33.622,-129.196]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1451,0.1961,0.2196],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-12.916,3.879],[-0.477,-1.587],[1.587,-0.477],[-4.877,-7.48],[1.388,-0.905],[0.905,1.388]],"o":[[1.587,-0.477],[0.477,1.587],[-9.171,2.754],[0.905,1.388],[-1.388,0.905],[-7.12,-10.919]],"v":[[-16.79,-117.743],[-13.054,-115.733],[-15.064,-111.996],[-20.982,-97.734],[-21.856,-93.582],[-26.008,-94.457]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9294,0.3412,0.2196],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":4,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.207,44.269],[-3.069,13.293],[-10.412,-2.404],[-0.391,-0.125],[-0.479,2.073],[-49.635,-11.459],[11.238,-48.677],[49.635,11.459]],"o":[[-10.74,-3.405],[3.189,-13.811],[0.405,0.094],[0.355,-2.242],[11.238,-48.677],[49.635,11.459],[-11.238,48.677],[-32.993,-7.617]],"v":[[-11.281,-72.833],[-38.295,-106.572],[-13.668,-127.227],[-12.473,-126.898],[-11.223,-133.376],[98.997,-200.765],[168.52,-91.879],[50.121,25.028]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6667,0.5137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"Body-base","mn":"","sr":1,"st":0,"op":48,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[42.758,101.801,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[762.758,613.801,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-6.324,-20.493],[1.583,-0.489],[0.489,1.583],[-1.159,9.594],[-1.645,-0.199],[0.199,-1.645]],"o":[[0.489,1.583],[-1.583,0.489],[-6.556,-21.246],[0.199,-1.645],[1.645,0.199],[-1.03,8.529]],"v":[[-94.807,90.154],[-96.789,93.905],[-100.54,91.923],[-108.669,45.782],[-105.331,43.163],[-102.713,46.502]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1765,0.1843,0.2235],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5.012,0],[13.216,11.918],[-1.11,1.23],[-1.23,-1.11],[-13.493,-2.828]],"o":[[-13.9,-3.271],[-1.23,-1.11],[1.11,-1.23],[12.931,11.661],[1.148,4.09]],"v":[[-101.801,85.648],[-143.894,62.44],[-144.112,58.203],[-139.875,57.984],[-100.267,79.721]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5.17,62.95],[-2.312,0.19],[-0.19,-2.312],[-31.608,-3.322],[-13.359,18.962],[-0.961,24.141],[-2.318,-0.092],[0.092,-2.318],[12.989,-18.437],[25.547,2.685]],"o":[[-0.19,-2.312],[2.312,-0.19],[4.879,59.414],[22.346,2.349],[11.993,-17.023],[0.092,-2.318],[2.318,0.092],[-1.021,25.671],[-15.029,21.332],[-36.634,-3.85]],"v":[[-9.395,-33.377],[-5.553,-37.906],[-1.023,-34.064],[53.948,59.255],[107.958,33.201],[128.102,-31.865],[132.465,-35.895],[136.495,-31.531],[114.825,38.039],[53.07,67.609]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 4","ix":4,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5.876,31.804],[3.211,22.106],[-31.068,31.876],[-8.302,-0.427],[-30.301,-0.345],[-86.572,-9.099],[-18.613,-3.65],[-6.431,-12.291],[39.279,-71.838],[8.793,-5.271],[77.782,-2.156],[-1.241,15.045],[4.804,30.685]],"o":[[-23.463,1.026],[-6.234,-42.92],[11.161,-11.451],[16.991,-5.864],[24.709,0.281],[109.602,11.52],[48.533,9.518],[14.533,27.778],[-8.546,15.63],[-42.904,25.719],[-77.782,2.156],[1.999,-24.234],[-2.429,-15.518]],"v":[[-95.884,94.651],[-143.151,64.778],[-107.652,-84.87],[-78.354,-100.195],[-4.685,-108.004],[54.035,63.972],[133.262,-93.136],[226.855,-58.506],[169.78,198.874],[186.954,287.99],[38.67,311.553],[-82.799,260.438],[-81.574,169.585]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 5","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-40.762,38.032],[-17.695,-33.822],[49.207,-29.497],[43.699,54.4]],"o":[[40.762,-38.032],[17.695,33.822],[-49.207,29.497],[-43.699,-54.4]],"v":[[-93.119,-92.136],[226.855,-58.506],[143.566,231.338],[-63.888,209.534]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6667,0.5137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3},{"ty":4,"nm":"flame 7","mn":"","sr":1,"st":36,"op":48,"ip":36,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[20,33.5,0],"ix":1},"s":{"a":0,"k":[242.507,242.507,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,343.5,0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,367.5,0],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,351.001,0],"t":34},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,341.5,0],"t":44}],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5,1],[9,2],[-5.237,-2],[0,0],[-2.5,4],[1.652,0]],"o":[[0,5],[-1.539,3.578],[0,0],[5.122,-5.5],[-4.5,1.5],[2,-5.5]],"v":[[-2.48,-10.5],[-10.98,-3.5],[-5.743,10.5],[7.398,10.5],[12.52,-5],[6.02,-1.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.98,56.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":44.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":45.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":46.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g2","ix":2,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.578,-2.984],[-5.374,-11.339]],"o":[[3.181,-11.439],[1.004,-1.602]],"v":[[6.587,3.78],[-4.394,7.659]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[26.441,16.072],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 3","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.593,0],[0,0],[-0.863,3.979],[3.469,4.476],[0.145,1.963],[2.939,-0.459],[4.397,3.662],[2.974,0],[3.246,-4.02],[2.001,3.217],[0.992,0.995],[2.477,-1.492]],"o":[[0,0],[9.316,0],[-2.325,0],[-1.42,-1.831],[-6.715,0],[-4.324,0.676],[-2.66,-2.216],[-3.888,4.973],[-1.366,1.692],[-1.209,-1.946],[-3.469,7.461],[0.495,5.968]],"v":[[-10.498,20.143],[9.846,20.143],[16.684,5.722],[15.693,-4.228],[15.693,-9.202],[7.762,-4.228],[2.806,-16.661],[-4.628,-20.143],[-5.619,-3.465],[-11.071,-6.217],[-15.036,-9.202],[-19,5.722]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,46.857],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":44.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":45.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":46.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f1","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.097,3.085],[7.182,1.022],[-5.236,-2],[0,0],[2.565,4.088],[1.653,0]],"o":[[-5.333,5.111],[-1.539,3.578],[0,0],[5.529,-2.556],[-2.051,2.555],[2.111,-6.309]],"v":[[-0.257,-11.5],[-11.542,-1.789],[-5.59,11.5],[7.553,11.5],[10.516,-4.855],[3.848,-1.789]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.826,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":43.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":43.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":45.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":45.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f2","ix":4,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 5","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-4.37],[0.975,-6.95],[-0.975,-1.6]],"o":[[9.883,-10.822],[-0.278,1.986],[1.002,-1.6]],"v":[[-0.355,7.645],[-9.251,-0.695],[-8.275,4.875]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.459,22.027],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 6","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.577,0],[0,0],[-2.471,4.964],[-1.706,0.993],[1.592,2.665],[0.147,1.959],[2.93,-0.459],[4.383,3.656],[1.977,2.978],[-0.357,-2.497],[1.627,-2.019],[1.976,5.957],[2.471,-1.49]],"o":[[0,0],[11.695,0],[-4.177,2.978],[1.706,-0.993],[-1.484,-2.482],[-6.694,0],[-4.312,0.674],[-2.653,-2.212],[-6.425,6.949],[0.495,3.455],[-2.143,2.656],[-7.413,7.446],[0.494,5.957]],"v":[[-10.028,20.848],[10.258,20.848],[18,4.467],[14.81,0.992],[14.047,-4.964],[14.81,-9.43],[6.139,-4.964],[0.209,-16.48],[-5.227,-20.848],[-6.215,-8.419],[-6.215,-2.715],[-15.605,-6.454],[-18.076,7.445]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,46.152],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":43.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":43.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":45.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":45.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e1","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.167,-1],[1.5,1.5],[6.5,-1],[-2.303,-1],[0,0],[0,2.5],[-1.062,3.186]],"o":[[-1.5,2],[-9.5,1.5],[-1.5,3.5],[0,0],[5.39,-2.5],[-2,2.5],[1.914,-5.741]],"v":[[1.75,-8.5],[-2.75,-11],[-11.25,1.5],[-5.447,11],[7.36,11],[10.75,-4],[5.75,-3]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.75,56],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":41.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":43.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":44}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e2","ix":6,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 8","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.437,0],[2.29,3.928]],"o":[[1.622,3.522],[-1.467,-2.516]],"v":[[0.574,0.252],[0.574,-1.258]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[6.832,18.43],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 9","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.709,0],[0,0],[0.494,6.041],[-6.623,7.033],[-0.731,3.128],[-2.962,-1.777],[0.494,3.502],[-1.847,6.039],[1.533,2.148],[9.729,-10.065],[-6.34,1.006],[-9.651,2.51],[-1.481,-2.515],[1.886,-2.1],[-4.173,3.02]],"o":[[0,0],[-1.865,0],[5.43,0],[0.988,2.013],[0.352,-1.51],[1.597,0.958],[-0.357,-2.531],[6.898,7.045],[5.989,-10.06],[-9.888,-7.548],[2.927,-0.465],[0.145,1.986],[1.59,2.702],[-2.492,2.773],[-2.469,5.034]],"v":[[9.791,26.674],[-10.473,26.674],[-19.5,17.111],[-17.032,2.008],[-10.473,4.027],[-6.664,2.784],[-4.69,-2.999],[-8.626,-15.098],[-3.767,-16.613],[7.666,-8.053],[6.171,2.008],[14.34,-5.508],[14.34,-0.504],[15.057,7.549],[19.5,11.072]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,40.326],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 10","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.975,-3.02],[0,-5.032]],"o":[[0,-4.529],[-2.468,-2.013]],"v":[[-1.727,1.794],[1.727,1.794]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[31.842,1.794],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":41.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":43.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":44}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d1","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.5,2],[4,1.28],[5.303,0],[-1.803,-1],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-1,4],[-12.5,-4],[0,3],[0,0],[3.89,-2],[-3.5,2.5],[1.914,-5.741]],"v":[[0.5,-11.5],[-2.5,-6],[-9,6],[-3.697,11.5],[9.11,11.5],[13.5,2],[8.5,-2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":40},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":40.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":42.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d2","ix":8,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 12","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.526,0],[5.571,4.498]],"o":[[2.026,4.998],[-2.532,-2.044]],"v":[[-1.023,0.023],[-1.023,-2.977]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[7.102,23.997],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 13","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.091,0],[0,0],[-3.546,7.496],[0,3.193],[-3.039,-1.77],[-0.933,3.227],[-2.533,5.997],[1.572,2.133],[9.98,-9.995],[-6.504,0.999],[-7.089,3.499],[-1.519,-2.499],[1.935,-2.085],[-3.269,1.499]],"o":[[0,0],[-4.339,0],[3.039,1.999],[0,-4.227],[1.143,1.499],[0.706,-2.443],[6.584,1.999],[5.36,-5.268],[-7.518,0],[3.003,-0.462],[0.15,1.973],[1.632,2.683],[-2.557,2.755],[-1.013,3.999]],"v":[[10.538,24.124],[-10.252,24.124],[-17.473,7.632],[-13.421,4.633],[-8.356,0.406],[-4.811,-1.365],[-6.33,-12.859],[-3.372,-18.857],[7.265,-8.861],[8.357,0.406],[16.231,-5.337],[16.231,-0.365],[15.955,8.131],[19.5,13.128]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,42.875],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 14","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.026,-2.999],[-1.29,-5.497]],"o":[[0,-6.997],[-2.533,-1.999]],"v":[[-2.847,3.998],[2.847,1.499]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[32.608,6.028],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":40},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":40.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":42.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c1","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.61,-1],[0.5,3.5],[3.5,2.5],[-11.803,-10.5],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-0.5,-5.5],[-0.5,4],[-5,0.5],[0,0],[3.89,-2],[-2.5,1],[0.5,-1.5]],"v":[[8.5,-4.5],[2,-12],[-2,-5],[-3.197,12],[9.61,12],[13.5,4.5],[11,-2]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[17.5,55],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":38.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":38.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":40.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":40.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c2","ix":10,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 16","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.491,0],[5.515,4.509]],"o":[[4.238,6.012],[-5.497,2.004]],"v":[[-0.052,0.751],[-0.052,-6.764]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.463,33.174],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 17","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.295,0],[0,0],[1.505,3.005],[-2.531,2.762],[1.615,2.69],[0.148,1.978],[2.417,-1.79],[-6.196,6.283],[5.305,-5.281],[0.643,-3.965],[1.337,-2.167],[2.005,0.746],[1.316,-1.052],[0.312,-1.983]],"o":[[0,0],[7.02,0],[-2.153,0],[1.916,-2.09],[-1.504,-2.504],[-7.02,3.508],[-2.03,1.503],[9.88,-10.019],[1.556,2.138],[-0.713,4.397],[-2.005,3.251],[-2.507,2.505],[-1.971,1.576],[-0.78,4.951]],"v":[[-10.99,24.188],[9.592,24.188],[17.382,16.163],[16.611,7.646],[17.382,-0.872],[15.229,-5.354],[8.357,3.137],[6.352,-8.887],[-4.178,-18.907],[-3.21,-8.887],[-6.184,0.402],[-14.206,2.135],[-15.227,7.646],[-18.217,12.656]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.639,42.812],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 18","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.006,-3.006],[-2.006,-8.516]],"o":[[-1.504,-9.52],[-4.513,-3.006]],"v":[[-2.758,5.761],[4.262,2.755]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.6,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.748,8.635],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":38.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":38.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":40.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":40.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b1","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[3,2],[3.697,3],[-8.303,-6.5],[0,0],[-3.5,4.5]],"o":[[1.5,-5.5],[0,3.5],[-3.419,3.049],[0,0],[8.89,-6.5],[-1.5,-0.5]],"v":[[4,-1.75],[-1.5,-10.75],[-6.697,-4.75],[-6.697,10.75],[6.11,10.75],[8,-3.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,56.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":36.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":37.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":38.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":39.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":12,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.542,-1.555],[5.567,4.5]],"o":[[4.555,2],[-5.728,3.772]],"v":[[-0.022,3.5],[-0.022,-5.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.545,37.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-6.072,0],[0,0],[1.366,5.271],[-2.554,2.756],[1.63,2.685],[0,4],[2.44,-1.787],[-5.06,7.245],[3.818,-1],[2.567,-4.115],[2.024,0.745],[0.588,-1.578]],"o":[[0,0],[2.507,0],[-1.036,-4],[1.934,-2.086],[-1.518,-2.5],[-7.086,3.5],[-2.048,1.5],[7.052,-10.093],[3.312,4.5],[-2.024,3.244],[-2.531,2.5],[-3.543,9.5]],"v":[[-10.162,20.729],[10.612,20.729],[17.697,15.271],[17.697,6.771],[17.697,-2.73],[16.302,-8.474],[10.612,0.5],[7.827,-9.23],[-5.1,-19.729],[-5.967,-1],[-14.44,-3.5],[-16.088,2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.964,46.271],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b4","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.012,-4.5],[-1.012,-11.5]],"o":[[-3.036,-10],[-5.611,-3.5]],"v":[[-2.784,8],[5.82,3.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[27.558,13.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":36.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":37.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":38.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":39.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a1","ix":13,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[4,0.5],[3.303,6.5],[-5.619,-3.5],[0,0],[-3.5,4.5]],"o":[[2.11,-4.5],[2,4.5],[-3.419,3.049],[0,0],[6.89,-5],[-4,-1]],"v":[[4.21,-1.25],[-2.29,-9.75],[-9.79,-4.25],[-6.488,9.75],[6.32,9.75],[11.21,-4.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.791,57.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":36.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":37.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":37.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":14,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.44,-4],[-1.014,-8.998]],"o":[[-4.956,-9.998],[-3.965,-1.499]],"v":[[-1.994,6.999],[6.95,1.999]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[24.472,16.013],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.478,8.498],[-5.452,4.499],[0,-5.742],[-1.982,3.243],[2.478,6.998],[1.464,-6.998],[-2.005,1.5],[-5.451,2.499],[-1.486,-2.499],[0.84,-2.697],[-1.015,-3.999],[2.455,0],[0,0]],"o":[[2.974,-1.499],[0.496,2.999],[0,3.041],[2.514,-4.113],[4.46,-1.5],[-0.971,4.641],[2.39,-1.786],[0,2.999],[1.597,2.684],[-1.015,3.255],[1.337,5.27],[0,0],[-5.946,0]],"v":[[-16.906,2.749],[-13.436,-10.747],[-8.975,-5.249],[-3.525,-3.249],[-4.02,-18.245],[7.38,-8.748],[10.848,-0.75],[15.805,-7.748],[17.786,-2.005],[16.82,5.993],[16.82,12.247],[11.863,19.745],[-8.482,19.745]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.559,47.255],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":36.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":37.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":37.599609375}],"ix":7}}]}],"ind":4},{"ty":4,"nm":"flame 5","mn":"","sr":1,"st":24,"op":36,"ip":24,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[20,33.5,0],"ix":1},"s":{"a":0,"k":[242.507,242.507,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,343.5,0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,367.5,0],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,351.001,0],"t":34},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,341.5,0],"t":44}],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5,1],[9,2],[-5.237,-2],[0,0],[-2.5,4],[1.652,0]],"o":[[0,5],[-1.539,3.578],[0,0],[5.122,-5.5],[-4.5,1.5],[2,-5.5]],"v":[[-2.48,-10.5],[-10.98,-3.5],[-5.743,10.5],[7.398,10.5],[12.52,-5],[6.02,-1.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.98,56.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":32.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":33.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":34.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g2","ix":2,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.578,-2.984],[-5.374,-11.339]],"o":[[3.181,-11.439],[1.004,-1.602]],"v":[[6.587,3.78],[-4.394,7.659]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[26.441,16.072],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 3","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.593,0],[0,0],[-0.863,3.979],[3.469,4.476],[0.145,1.963],[2.939,-0.459],[4.397,3.662],[2.974,0],[3.246,-4.02],[2.001,3.217],[0.992,0.995],[2.477,-1.492]],"o":[[0,0],[9.316,0],[-2.325,0],[-1.42,-1.831],[-6.715,0],[-4.324,0.676],[-2.66,-2.216],[-3.888,4.973],[-1.366,1.692],[-1.209,-1.946],[-3.469,7.461],[0.495,5.968]],"v":[[-10.498,20.143],[9.846,20.143],[16.684,5.722],[15.693,-4.228],[15.693,-9.202],[7.762,-4.228],[2.806,-16.661],[-4.628,-20.143],[-5.619,-3.465],[-11.071,-6.217],[-15.036,-9.202],[-19,5.722]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,46.857],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":32.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":33.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":34.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f1","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.097,3.085],[7.182,1.022],[-5.236,-2],[0,0],[2.565,4.088],[1.653,0]],"o":[[-5.333,5.111],[-1.539,3.578],[0,0],[5.529,-2.556],[-2.051,2.555],[2.111,-6.309]],"v":[[-0.257,-11.5],[-11.542,-1.789],[-5.59,11.5],[7.553,11.5],[10.516,-4.855],[3.848,-1.789]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.826,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":31.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":31.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":33.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":33.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f2","ix":4,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 5","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-4.37],[0.975,-6.95],[-0.975,-1.6]],"o":[[9.883,-10.822],[-0.278,1.986],[1.002,-1.6]],"v":[[-0.355,7.645],[-9.251,-0.695],[-8.275,4.875]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.459,22.027],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 6","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.577,0],[0,0],[-2.471,4.964],[-1.706,0.993],[1.592,2.665],[0.147,1.959],[2.93,-0.459],[4.383,3.656],[1.977,2.978],[-0.357,-2.497],[1.627,-2.019],[1.976,5.957],[2.471,-1.49]],"o":[[0,0],[11.695,0],[-4.177,2.978],[1.706,-0.993],[-1.484,-2.482],[-6.694,0],[-4.312,0.674],[-2.653,-2.212],[-6.425,6.949],[0.495,3.455],[-2.143,2.656],[-7.413,7.446],[0.494,5.957]],"v":[[-10.028,20.848],[10.258,20.848],[18,4.467],[14.81,0.992],[14.047,-4.964],[14.81,-9.43],[6.139,-4.964],[0.209,-16.48],[-5.227,-20.848],[-6.215,-8.419],[-6.215,-2.715],[-15.605,-6.454],[-18.076,7.445]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,46.152],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":31.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":31.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":33.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":33.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e1","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.167,-1],[1.5,1.5],[6.5,-1],[-2.303,-1],[0,0],[0,2.5],[-1.062,3.186]],"o":[[-1.5,2],[-9.5,1.5],[-1.5,3.5],[0,0],[5.39,-2.5],[-2,2.5],[1.914,-5.741]],"v":[[1.75,-8.5],[-2.75,-11],[-11.25,1.5],[-5.447,11],[7.36,11],[10.75,-4],[5.75,-3]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.75,56],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":29.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":31.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":32}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e2","ix":6,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 8","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.437,0],[2.29,3.928]],"o":[[1.622,3.522],[-1.467,-2.516]],"v":[[0.574,0.252],[0.574,-1.258]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[6.832,18.43],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 9","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.709,0],[0,0],[0.494,6.041],[-6.623,7.033],[-0.731,3.128],[-2.962,-1.777],[0.494,3.502],[-1.847,6.039],[1.533,2.148],[9.729,-10.065],[-6.34,1.006],[-9.651,2.51],[-1.481,-2.515],[1.886,-2.1],[-4.173,3.02]],"o":[[0,0],[-1.865,0],[5.43,0],[0.988,2.013],[0.352,-1.51],[1.597,0.958],[-0.357,-2.531],[6.898,7.045],[5.989,-10.06],[-9.888,-7.548],[2.927,-0.465],[0.145,1.986],[1.59,2.702],[-2.492,2.773],[-2.469,5.034]],"v":[[9.791,26.674],[-10.473,26.674],[-19.5,17.111],[-17.032,2.008],[-10.473,4.027],[-6.664,2.784],[-4.69,-2.999],[-8.626,-15.098],[-3.767,-16.613],[7.666,-8.053],[6.171,2.008],[14.34,-5.508],[14.34,-0.504],[15.057,7.549],[19.5,11.072]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,40.326],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 10","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.975,-3.02],[0,-5.032]],"o":[[0,-4.529],[-2.468,-2.013]],"v":[[-1.727,1.794],[1.727,1.794]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[31.842,1.794],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":29.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":31.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":32}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d1","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.5,2],[4,1.28],[5.303,0],[-1.803,-1],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-1,4],[-12.5,-4],[0,3],[0,0],[3.89,-2],[-3.5,2.5],[1.914,-5.741]],"v":[[0.5,-11.5],[-2.5,-6],[-9,6],[-3.697,11.5],[9.11,11.5],[13.5,2],[8.5,-2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":28.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":30.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d2","ix":8,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 12","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.526,0],[5.571,4.498]],"o":[[2.026,4.998],[-2.532,-2.044]],"v":[[-1.023,0.023],[-1.023,-2.977]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[7.102,23.997],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 13","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.091,0],[0,0],[-3.546,7.496],[0,3.193],[-3.039,-1.77],[-0.933,3.227],[-2.533,5.997],[1.572,2.133],[9.98,-9.995],[-6.504,0.999],[-7.089,3.499],[-1.519,-2.499],[1.935,-2.085],[-3.269,1.499]],"o":[[0,0],[-4.339,0],[3.039,1.999],[0,-4.227],[1.143,1.499],[0.706,-2.443],[6.584,1.999],[5.36,-5.268],[-7.518,0],[3.003,-0.462],[0.15,1.973],[1.632,2.683],[-2.557,2.755],[-1.013,3.999]],"v":[[10.538,24.124],[-10.252,24.124],[-17.473,7.632],[-13.421,4.633],[-8.356,0.406],[-4.811,-1.365],[-6.33,-12.859],[-3.372,-18.857],[7.265,-8.861],[8.357,0.406],[16.231,-5.337],[16.231,-0.365],[15.955,8.131],[19.5,13.128]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,42.875],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 14","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.026,-2.999],[-1.29,-5.497]],"o":[[0,-6.997],[-2.533,-1.999]],"v":[[-2.847,3.998],[2.847,1.499]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[32.608,6.028],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":28.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":30.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c1","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.61,-1],[0.5,3.5],[3.5,2.5],[-11.803,-10.5],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-0.5,-5.5],[-0.5,4],[-5,0.5],[0,0],[3.89,-2],[-2.5,1],[0.5,-1.5]],"v":[[8.5,-4.5],[2,-12],[-2,-5],[-3.197,12],[9.61,12],[13.5,4.5],[11,-2]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[17.5,55],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":26.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":26.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":28.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":28.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c2","ix":10,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 16","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.491,0],[5.515,4.509]],"o":[[4.238,6.012],[-5.497,2.004]],"v":[[-0.052,0.751],[-0.052,-6.764]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.463,33.174],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 17","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.295,0],[0,0],[1.505,3.005],[-2.531,2.762],[1.615,2.69],[0.148,1.978],[2.417,-1.79],[-6.196,6.283],[5.305,-5.281],[0.643,-3.965],[1.337,-2.167],[2.005,0.746],[1.316,-1.052],[0.312,-1.983]],"o":[[0,0],[7.02,0],[-2.153,0],[1.916,-2.09],[-1.504,-2.504],[-7.02,3.508],[-2.03,1.503],[9.88,-10.019],[1.556,2.138],[-0.713,4.397],[-2.005,3.251],[-2.507,2.505],[-1.971,1.576],[-0.78,4.951]],"v":[[-10.99,24.188],[9.592,24.188],[17.382,16.163],[16.611,7.646],[17.382,-0.872],[15.229,-5.354],[8.357,3.137],[6.352,-8.887],[-4.178,-18.907],[-3.21,-8.887],[-6.184,0.402],[-14.206,2.135],[-15.227,7.646],[-18.217,12.656]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.639,42.812],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 18","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.006,-3.006],[-2.006,-8.516]],"o":[[-1.504,-9.52],[-4.513,-3.006]],"v":[[-2.758,5.761],[4.262,2.755]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.6,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.748,8.635],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":26.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":26.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":28.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":28.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b1","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[3,2],[3.697,3],[-8.303,-6.5],[0,0],[-3.5,4.5]],"o":[[1.5,-5.5],[0,3.5],[-3.419,3.049],[0,0],[8.89,-6.5],[-1.5,-0.5]],"v":[[4,-1.75],[-1.5,-10.75],[-6.697,-4.75],[-6.697,10.75],[6.11,10.75],[8,-3.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,56.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":24.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":25.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":26.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":27.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":12,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.542,-1.555],[5.567,4.5]],"o":[[4.555,2],[-5.728,3.772]],"v":[[-0.022,3.5],[-0.022,-5.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.545,37.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-6.072,0],[0,0],[1.366,5.271],[-2.554,2.756],[1.63,2.685],[0,4],[2.44,-1.787],[-5.06,7.245],[3.818,-1],[2.567,-4.115],[2.024,0.745],[0.588,-1.578]],"o":[[0,0],[2.507,0],[-1.036,-4],[1.934,-2.086],[-1.518,-2.5],[-7.086,3.5],[-2.048,1.5],[7.052,-10.093],[3.312,4.5],[-2.024,3.244],[-2.531,2.5],[-3.543,9.5]],"v":[[-10.162,20.729],[10.612,20.729],[17.697,15.271],[17.697,6.771],[17.697,-2.73],[16.302,-8.474],[10.612,0.5],[7.827,-9.23],[-5.1,-19.729],[-5.967,-1],[-14.44,-3.5],[-16.088,2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.964,46.271],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b4","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.012,-4.5],[-1.012,-11.5]],"o":[[-3.036,-10],[-5.611,-3.5]],"v":[[-2.784,8],[5.82,3.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[27.558,13.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":24.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":25.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":26.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":27.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a1","ix":13,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[4,0.5],[3.303,6.5],[-5.619,-3.5],[0,0],[-3.5,4.5]],"o":[[2.11,-4.5],[2,4.5],[-3.419,3.049],[0,0],[6.89,-5],[-4,-1]],"v":[[4.21,-1.25],[-2.29,-9.75],[-9.79,-4.25],[-6.488,9.75],[6.32,9.75],[11.21,-4.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.791,57.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":24.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":25.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":25.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":14,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.44,-4],[-1.014,-8.998]],"o":[[-4.956,-9.998],[-3.965,-1.499]],"v":[[-1.994,6.999],[6.95,1.999]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[24.472,16.013],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.478,8.498],[-5.452,4.499],[0,-5.742],[-1.982,3.243],[2.478,6.998],[1.464,-6.998],[-2.005,1.5],[-5.451,2.499],[-1.486,-2.499],[0.84,-2.697],[-1.015,-3.999],[2.455,0],[0,0]],"o":[[2.974,-1.499],[0.496,2.999],[0,3.041],[2.514,-4.113],[4.46,-1.5],[-0.971,4.641],[2.39,-1.786],[0,2.999],[1.597,2.684],[-1.015,3.255],[1.337,5.27],[0,0],[-5.946,0]],"v":[[-16.906,2.749],[-13.436,-10.747],[-8.975,-5.249],[-3.525,-3.249],[-4.02,-18.245],[7.38,-8.748],[10.848,-0.75],[15.805,-7.748],[17.786,-2.005],[16.82,5.993],[16.82,12.247],[11.863,19.745],[-8.482,19.745]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.559,47.255],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":24.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":25.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":25.599609375}],"ix":7}}]}],"ind":5},{"ty":4,"nm":"flame 4","mn":"","sr":1,"st":12,"op":24,"ip":12,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[20,33.5,0],"ix":1},"s":{"a":0,"k":[242.507,242.507,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,343.5,0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,367.5,0],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,351.001,0],"t":34},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,341.5,0],"t":44}],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5,1],[9,2],[-5.237,-2],[0,0],[-2.5,4],[1.652,0]],"o":[[0,5],[-1.539,3.578],[0,0],[5.122,-5.5],[-4.5,1.5],[2,-5.5]],"v":[[-2.48,-10.5],[-10.98,-3.5],[-5.743,10.5],[7.398,10.5],[12.52,-5],[6.02,-1.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.98,56.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":20.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":21.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":22.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g2","ix":2,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.578,-2.984],[-5.374,-11.339]],"o":[[3.181,-11.439],[1.004,-1.602]],"v":[[6.587,3.78],[-4.394,7.659]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[26.441,16.072],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 3","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.593,0],[0,0],[-0.863,3.979],[3.469,4.476],[0.145,1.963],[2.939,-0.459],[4.397,3.662],[2.974,0],[3.246,-4.02],[2.001,3.217],[0.992,0.995],[2.477,-1.492]],"o":[[0,0],[9.316,0],[-2.325,0],[-1.42,-1.831],[-6.715,0],[-4.324,0.676],[-2.66,-2.216],[-3.888,4.973],[-1.366,1.692],[-1.209,-1.946],[-3.469,7.461],[0.495,5.968]],"v":[[-10.498,20.143],[9.846,20.143],[16.684,5.722],[15.693,-4.228],[15.693,-9.202],[7.762,-4.228],[2.806,-16.661],[-4.628,-20.143],[-5.619,-3.465],[-11.071,-6.217],[-15.036,-9.202],[-19,5.722]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,46.857],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":20.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":21.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":22.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f1","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.097,3.085],[7.182,1.022],[-5.236,-2],[0,0],[2.565,4.088],[1.653,0]],"o":[[-5.333,5.111],[-1.539,3.578],[0,0],[5.529,-2.556],[-2.051,2.555],[2.111,-6.309]],"v":[[-0.257,-11.5],[-11.542,-1.789],[-5.59,11.5],[7.553,11.5],[10.516,-4.855],[3.848,-1.789]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.826,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":19.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":19.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":21.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":21.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f2","ix":4,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 5","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-4.37],[0.975,-6.95],[-0.975,-1.6]],"o":[[9.883,-10.822],[-0.278,1.986],[1.002,-1.6]],"v":[[-0.355,7.645],[-9.251,-0.695],[-8.275,4.875]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.459,22.027],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 6","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.577,0],[0,0],[-2.471,4.964],[-1.706,0.993],[1.592,2.665],[0.147,1.959],[2.93,-0.459],[4.383,3.656],[1.977,2.978],[-0.357,-2.497],[1.627,-2.019],[1.976,5.957],[2.471,-1.49]],"o":[[0,0],[11.695,0],[-4.177,2.978],[1.706,-0.993],[-1.484,-2.482],[-6.694,0],[-4.312,0.674],[-2.653,-2.212],[-6.425,6.949],[0.495,3.455],[-2.143,2.656],[-7.413,7.446],[0.494,5.957]],"v":[[-10.028,20.848],[10.258,20.848],[18,4.467],[14.81,0.992],[14.047,-4.964],[14.81,-9.43],[6.139,-4.964],[0.209,-16.48],[-5.227,-20.848],[-6.215,-8.419],[-6.215,-2.715],[-15.605,-6.454],[-18.076,7.445]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,46.152],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":19.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":19.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":21.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":21.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e1","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.167,-1],[1.5,1.5],[6.5,-1],[-2.303,-1],[0,0],[0,2.5],[-1.062,3.186]],"o":[[-1.5,2],[-9.5,1.5],[-1.5,3.5],[0,0],[5.39,-2.5],[-2,2.5],[1.914,-5.741]],"v":[[1.75,-8.5],[-2.75,-11],[-11.25,1.5],[-5.447,11],[7.36,11],[10.75,-4],[5.75,-3]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.75,56],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":17.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":18},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":19.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":20}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e2","ix":6,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 8","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.437,0],[2.29,3.928]],"o":[[1.622,3.522],[-1.467,-2.516]],"v":[[0.574,0.252],[0.574,-1.258]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[6.832,18.43],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 9","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.709,0],[0,0],[0.494,6.041],[-6.623,7.033],[-0.731,3.128],[-2.962,-1.777],[0.494,3.502],[-1.847,6.039],[1.533,2.148],[9.729,-10.065],[-6.34,1.006],[-9.651,2.51],[-1.481,-2.515],[1.886,-2.1],[-4.173,3.02]],"o":[[0,0],[-1.865,0],[5.43,0],[0.988,2.013],[0.352,-1.51],[1.597,0.958],[-0.357,-2.531],[6.898,7.045],[5.989,-10.06],[-9.888,-7.548],[2.927,-0.465],[0.145,1.986],[1.59,2.702],[-2.492,2.773],[-2.469,5.034]],"v":[[9.791,26.674],[-10.473,26.674],[-19.5,17.111],[-17.032,2.008],[-10.473,4.027],[-6.664,2.784],[-4.69,-2.999],[-8.626,-15.098],[-3.767,-16.613],[7.666,-8.053],[6.171,2.008],[14.34,-5.508],[14.34,-0.504],[15.057,7.549],[19.5,11.072]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,40.326],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 10","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.975,-3.02],[0,-5.032]],"o":[[0,-4.529],[-2.468,-2.013]],"v":[[-1.727,1.794],[1.727,1.794]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[31.842,1.794],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":17.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":18},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":19.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":20}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d1","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.5,2],[4,1.28],[5.303,0],[-1.803,-1],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-1,4],[-12.5,-4],[0,3],[0,0],[3.89,-2],[-3.5,2.5],[1.914,-5.741]],"v":[[0.5,-11.5],[-2.5,-6],[-9,6],[-3.697,11.5],[9.11,11.5],[13.5,2],[8.5,-2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":16},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":16.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":18},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":18.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d2","ix":8,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 12","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.526,0],[5.571,4.498]],"o":[[2.026,4.998],[-2.532,-2.044]],"v":[[-1.023,0.023],[-1.023,-2.977]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[7.102,23.997],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 13","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.091,0],[0,0],[-3.546,7.496],[0,3.193],[-3.039,-1.77],[-0.933,3.227],[-2.533,5.997],[1.572,2.133],[9.98,-9.995],[-6.504,0.999],[-7.089,3.499],[-1.519,-2.499],[1.935,-2.085],[-3.269,1.499]],"o":[[0,0],[-4.339,0],[3.039,1.999],[0,-4.227],[1.143,1.499],[0.706,-2.443],[6.584,1.999],[5.36,-5.268],[-7.518,0],[3.003,-0.462],[0.15,1.973],[1.632,2.683],[-2.557,2.755],[-1.013,3.999]],"v":[[10.538,24.124],[-10.252,24.124],[-17.473,7.632],[-13.421,4.633],[-8.356,0.406],[-4.811,-1.365],[-6.33,-12.859],[-3.372,-18.857],[7.265,-8.861],[8.357,0.406],[16.231,-5.337],[16.231,-0.365],[15.955,8.131],[19.5,13.128]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,42.875],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 14","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.026,-2.999],[-1.29,-5.497]],"o":[[0,-6.997],[-2.533,-1.999]],"v":[[-2.847,3.998],[2.847,1.499]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[32.608,6.028],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":16},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":16.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":18},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":18.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c1","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.61,-1],[0.5,3.5],[3.5,2.5],[-11.803,-10.5],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-0.5,-5.5],[-0.5,4],[-5,0.5],[0,0],[3.89,-2],[-2.5,1],[0.5,-1.5]],"v":[[8.5,-4.5],[2,-12],[-2,-5],[-3.197,12],[9.61,12],[13.5,4.5],[11,-2]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[17.5,55],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":14.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":14.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":16.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":16.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c2","ix":10,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 16","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.491,0],[5.515,4.509]],"o":[[4.238,6.012],[-5.497,2.004]],"v":[[-0.052,0.751],[-0.052,-6.764]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.463,33.174],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 17","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.295,0],[0,0],[1.505,3.005],[-2.531,2.762],[1.615,2.69],[0.148,1.978],[2.417,-1.79],[-6.196,6.283],[5.305,-5.281],[0.643,-3.965],[1.337,-2.167],[2.005,0.746],[1.316,-1.052],[0.312,-1.983]],"o":[[0,0],[7.02,0],[-2.153,0],[1.916,-2.09],[-1.504,-2.504],[-7.02,3.508],[-2.03,1.503],[9.88,-10.019],[1.556,2.138],[-0.713,4.397],[-2.005,3.251],[-2.507,2.505],[-1.971,1.576],[-0.78,4.951]],"v":[[-10.99,24.188],[9.592,24.188],[17.382,16.163],[16.611,7.646],[17.382,-0.872],[15.229,-5.354],[8.357,3.137],[6.352,-8.887],[-4.178,-18.907],[-3.21,-8.887],[-6.184,0.402],[-14.206,2.135],[-15.227,7.646],[-18.217,12.656]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.639,42.812],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 18","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.006,-3.006],[-2.006,-8.516]],"o":[[-1.504,-9.52],[-4.513,-3.006]],"v":[[-2.758,5.761],[4.262,2.755]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.6,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.748,8.635],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":14.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":14.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":16.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":16.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b1","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[3,2],[3.697,3],[-8.303,-6.5],[0,0],[-3.5,4.5]],"o":[[1.5,-5.5],[0,3.5],[-3.419,3.049],[0,0],[8.89,-6.5],[-1.5,-0.5]],"v":[[4,-1.75],[-1.5,-10.75],[-6.697,-4.75],[-6.697,10.75],[6.11,10.75],[8,-3.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,56.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":12.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":13.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":14.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":15.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":12,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.542,-1.555],[5.567,4.5]],"o":[[4.555,2],[-5.728,3.772]],"v":[[-0.022,3.5],[-0.022,-5.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.545,37.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-6.072,0],[0,0],[1.366,5.271],[-2.554,2.756],[1.63,2.685],[0,4],[2.44,-1.787],[-5.06,7.245],[3.818,-1],[2.567,-4.115],[2.024,0.745],[0.588,-1.578]],"o":[[0,0],[2.507,0],[-1.036,-4],[1.934,-2.086],[-1.518,-2.5],[-7.086,3.5],[-2.048,1.5],[7.052,-10.093],[3.312,4.5],[-2.024,3.244],[-2.531,2.5],[-3.543,9.5]],"v":[[-10.162,20.729],[10.612,20.729],[17.697,15.271],[17.697,6.771],[17.697,-2.73],[16.302,-8.474],[10.612,0.5],[7.827,-9.23],[-5.1,-19.729],[-5.967,-1],[-14.44,-3.5],[-16.088,2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.964,46.271],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b4","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.012,-4.5],[-1.012,-11.5]],"o":[[-3.036,-10],[-5.611,-3.5]],"v":[[-2.784,8],[5.82,3.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[27.558,13.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":12.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":13.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":14.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":15.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a1","ix":13,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[4,0.5],[3.303,6.5],[-5.619,-3.5],[0,0],[-3.5,4.5]],"o":[[2.11,-4.5],[2,4.5],[-3.419,3.049],[0,0],[6.89,-5],[-4,-1]],"v":[[4.21,-1.25],[-2.29,-9.75],[-9.79,-4.25],[-6.488,9.75],[6.32,9.75],[11.21,-4.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.791,57.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":12.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":13.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":13.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":14,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.44,-4],[-1.014,-8.998]],"o":[[-4.956,-9.998],[-3.965,-1.499]],"v":[[-1.994,6.999],[6.95,1.999]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[24.472,16.013],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.478,8.498],[-5.452,4.499],[0,-5.742],[-1.982,3.243],[2.478,6.998],[1.464,-6.998],[-2.005,1.5],[-5.451,2.499],[-1.486,-2.499],[0.84,-2.697],[-1.015,-3.999],[2.455,0],[0,0]],"o":[[2.974,-1.499],[0.496,2.999],[0,3.041],[2.514,-4.113],[4.46,-1.5],[-0.971,4.641],[2.39,-1.786],[0,2.999],[1.597,2.684],[-1.015,3.255],[1.337,5.27],[0,0],[-5.946,0]],"v":[[-16.906,2.749],[-13.436,-10.747],[-8.975,-5.249],[-3.525,-3.249],[-4.02,-18.245],[7.38,-8.748],[10.848,-0.75],[15.805,-7.748],[17.786,-2.005],[16.82,5.993],[16.82,12.247],[11.863,19.745],[-8.482,19.745]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.559,47.255],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":12.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":13.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":13.599609375}],"ix":7}}]}],"ind":6},{"ty":4,"nm":"flame 2","mn":"","sr":1,"st":0,"op":12,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[20,33.5,0],"ix":1},"s":{"a":0,"k":[242.507,242.507,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,343.5,0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,367.5,0],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,351.001,0],"t":34},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,341.5,0],"t":44}],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5,1],[9,2],[-5.237,-2],[0,0],[-2.5,4],[1.652,0]],"o":[[0,5],[-1.539,3.578],[0,0],[5.122,-5.5],[-4.5,1.5],[2,-5.5]],"v":[[-2.48,-10.5],[-10.98,-3.5],[-5.743,10.5],[7.398,10.5],[12.52,-5],[6.02,-1.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.98,56.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":9.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":10.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g2","ix":2,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.578,-2.984],[-5.374,-11.339]],"o":[[3.181,-11.439],[1.004,-1.602]],"v":[[6.587,3.78],[-4.394,7.659]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[26.441,16.072],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 3","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.593,0],[0,0],[-0.863,3.979],[3.469,4.476],[0.145,1.963],[2.939,-0.459],[4.397,3.662],[2.974,0],[3.246,-4.02],[2.001,3.217],[0.992,0.995],[2.477,-1.492]],"o":[[0,0],[9.316,0],[-2.325,0],[-1.42,-1.831],[-6.715,0],[-4.324,0.676],[-2.66,-2.216],[-3.888,4.973],[-1.366,1.692],[-1.209,-1.946],[-3.469,7.461],[0.495,5.968]],"v":[[-10.498,20.143],[9.846,20.143],[16.684,5.722],[15.693,-4.228],[15.693,-9.202],[7.762,-4.228],[2.806,-16.661],[-4.628,-20.143],[-5.619,-3.465],[-11.071,-6.217],[-15.036,-9.202],[-19,5.722]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,46.857],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":9.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":10.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f1","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.097,3.085],[7.182,1.022],[-5.236,-2],[0,0],[2.565,4.088],[1.653,0]],"o":[[-5.333,5.111],[-1.539,3.578],[0,0],[5.529,-2.556],[-2.051,2.555],[2.111,-6.309]],"v":[[-0.257,-11.5],[-11.542,-1.789],[-5.59,11.5],[7.553,11.5],[10.516,-4.855],[3.848,-1.789]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.826,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":7.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":7.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":9.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":9.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f2","ix":4,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 5","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-4.37],[0.975,-6.95],[-0.975,-1.6]],"o":[[9.883,-10.822],[-0.278,1.986],[1.002,-1.6]],"v":[[-0.355,7.645],[-9.251,-0.695],[-8.275,4.875]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.459,22.027],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 6","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.577,0],[0,0],[-2.471,4.964],[-1.706,0.993],[1.592,2.665],[0.147,1.959],[2.93,-0.459],[4.383,3.656],[1.977,2.978],[-0.357,-2.497],[1.627,-2.019],[1.976,5.957],[2.471,-1.49]],"o":[[0,0],[11.695,0],[-4.177,2.978],[1.706,-0.993],[-1.484,-2.482],[-6.694,0],[-4.312,0.674],[-2.653,-2.212],[-6.425,6.949],[0.495,3.455],[-2.143,2.656],[-7.413,7.446],[0.494,5.957]],"v":[[-10.028,20.848],[10.258,20.848],[18,4.467],[14.81,0.992],[14.047,-4.964],[14.81,-9.43],[6.139,-4.964],[0.209,-16.48],[-5.227,-20.848],[-6.215,-8.419],[-6.215,-2.715],[-15.605,-6.454],[-18.076,7.445]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,46.152],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":7.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":7.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":9.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":9.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e1","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.167,-1],[1.5,1.5],[6.5,-1],[-2.303,-1],[0,0],[0,2.5],[-1.062,3.186]],"o":[[-1.5,2],[-9.5,1.5],[-1.5,3.5],[0,0],[5.39,-2.5],[-2,2.5],[1.914,-5.741]],"v":[[1.75,-8.5],[-2.75,-11],[-11.25,1.5],[-5.447,11],[7.36,11],[10.75,-4],[5.75,-3]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.75,56],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":5.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":7.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e2","ix":6,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 8","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.437,0],[2.29,3.928]],"o":[[1.622,3.522],[-1.467,-2.516]],"v":[[0.574,0.252],[0.574,-1.258]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[6.832,18.43],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 9","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.709,0],[0,0],[0.494,6.041],[-6.623,7.033],[-0.731,3.128],[-2.962,-1.777],[0.494,3.502],[-1.847,6.039],[1.533,2.148],[9.729,-10.065],[-6.34,1.006],[-9.651,2.51],[-1.481,-2.515],[1.886,-2.1],[-4.173,3.02]],"o":[[0,0],[-1.865,0],[5.43,0],[0.988,2.013],[0.352,-1.51],[1.597,0.958],[-0.357,-2.531],[6.898,7.045],[5.989,-10.06],[-9.888,-7.548],[2.927,-0.465],[0.145,1.986],[1.59,2.702],[-2.492,2.773],[-2.469,5.034]],"v":[[9.791,26.674],[-10.473,26.674],[-19.5,17.111],[-17.032,2.008],[-10.473,4.027],[-6.664,2.784],[-4.69,-2.999],[-8.626,-15.098],[-3.767,-16.613],[7.666,-8.053],[6.171,2.008],[14.34,-5.508],[14.34,-0.504],[15.057,7.549],[19.5,11.072]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,40.326],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 10","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.975,-3.02],[0,-5.032]],"o":[[0,-4.529],[-2.468,-2.013]],"v":[[-1.727,1.794],[1.727,1.794]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[31.842,1.794],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":5.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":7.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d1","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.5,2],[4,1.28],[5.303,0],[-1.803,-1],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-1,4],[-12.5,-4],[0,3],[0,0],[3.89,-2],[-3.5,2.5],[1.914,-5.741]],"v":[[0.5,-11.5],[-2.5,-6],[-9,6],[-3.697,11.5],[9.11,11.5],[13.5,2],[8.5,-2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":4.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":6.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d2","ix":8,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 12","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.526,0],[5.571,4.498]],"o":[[2.026,4.998],[-2.532,-2.044]],"v":[[-1.023,0.023],[-1.023,-2.977]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[7.102,23.997],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 13","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.091,0],[0,0],[-3.546,7.496],[0,3.193],[-3.039,-1.77],[-0.933,3.227],[-2.533,5.997],[1.572,2.133],[9.98,-9.995],[-6.504,0.999],[-7.089,3.499],[-1.519,-2.499],[1.935,-2.085],[-3.269,1.499]],"o":[[0,0],[-4.339,0],[3.039,1.999],[0,-4.227],[1.143,1.499],[0.706,-2.443],[6.584,1.999],[5.36,-5.268],[-7.518,0],[3.003,-0.462],[0.15,1.973],[1.632,2.683],[-2.557,2.755],[-1.013,3.999]],"v":[[10.538,24.124],[-10.252,24.124],[-17.473,7.632],[-13.421,4.633],[-8.356,0.406],[-4.811,-1.365],[-6.33,-12.859],[-3.372,-18.857],[7.265,-8.861],[8.357,0.406],[16.231,-5.337],[16.231,-0.365],[15.955,8.131],[19.5,13.128]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,42.875],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 14","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.026,-2.999],[-1.29,-5.497]],"o":[[0,-6.997],[-2.533,-1.999]],"v":[[-2.847,3.998],[2.847,1.499]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[32.608,6.028],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":4.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":6.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c1","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.61,-1],[0.5,3.5],[3.5,2.5],[-11.803,-10.5],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-0.5,-5.5],[-0.5,4],[-5,0.5],[0,0],[3.89,-2],[-2.5,1],[0.5,-1.5]],"v":[[8.5,-4.5],[2,-12],[-2,-5],[-3.197,12],[9.61,12],[13.5,4.5],[11,-2]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[17.5,55],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":2.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":2.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":4.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":4.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c2","ix":10,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 16","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.491,0],[5.515,4.509]],"o":[[4.238,6.012],[-5.497,2.004]],"v":[[-0.052,0.751],[-0.052,-6.764]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.463,33.174],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 17","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.295,0],[0,0],[1.505,3.005],[-2.531,2.762],[1.615,2.69],[0.148,1.978],[2.417,-1.79],[-6.196,6.283],[5.305,-5.281],[0.643,-3.965],[1.337,-2.167],[2.005,0.746],[1.316,-1.052],[0.312,-1.983]],"o":[[0,0],[7.02,0],[-2.153,0],[1.916,-2.09],[-1.504,-2.504],[-7.02,3.508],[-2.03,1.503],[9.88,-10.019],[1.556,2.138],[-0.713,4.397],[-2.005,3.251],[-2.507,2.505],[-1.971,1.576],[-0.78,4.951]],"v":[[-10.99,24.188],[9.592,24.188],[17.382,16.163],[16.611,7.646],[17.382,-0.872],[15.229,-5.354],[8.357,3.137],[6.352,-8.887],[-4.178,-18.907],[-3.21,-8.887],[-6.184,0.402],[-14.206,2.135],[-15.227,7.646],[-18.217,12.656]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.639,42.812],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 18","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.006,-3.006],[-2.006,-8.516]],"o":[[-1.504,-9.52],[-4.513,-3.006]],"v":[[-2.758,5.761],[4.262,2.755]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.6,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.748,8.635],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":2.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":2.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":4.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":4.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b1","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[3,2],[3.697,3],[-8.303,-6.5],[0,0],[-3.5,4.5]],"o":[[1.5,-5.5],[0,3.5],[-3.419,3.049],[0,0],[8.89,-6.5],[-1.5,-0.5]],"v":[[4,-1.75],[-1.5,-10.75],[-6.697,-4.75],[-6.697,10.75],[6.11,10.75],[8,-3.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,56.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":1.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":2.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":3.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":12,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.542,-1.555],[5.567,4.5]],"o":[[4.555,2],[-5.728,3.772]],"v":[[-0.022,3.5],[-0.022,-5.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.545,37.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-6.072,0],[0,0],[1.366,5.271],[-2.554,2.756],[1.63,2.685],[0,4],[2.44,-1.787],[-5.06,7.245],[3.818,-1],[2.567,-4.115],[2.024,0.745],[0.588,-1.578]],"o":[[0,0],[2.507,0],[-1.036,-4],[1.934,-2.086],[-1.518,-2.5],[-7.086,3.5],[-2.048,1.5],[7.052,-10.093],[3.312,4.5],[-2.024,3.244],[-2.531,2.5],[-3.543,9.5]],"v":[[-10.162,20.729],[10.612,20.729],[17.697,15.271],[17.697,6.771],[17.697,-2.73],[16.302,-8.474],[10.612,0.5],[7.827,-9.23],[-5.1,-19.729],[-5.967,-1],[-14.44,-3.5],[-16.088,2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.964,46.271],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b4","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.012,-4.5],[-1.012,-11.5]],"o":[[-3.036,-10],[-5.611,-3.5]],"v":[[-2.784,8],[5.82,3.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[27.558,13.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":1.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":2.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":3.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a1","ix":13,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[4,0.5],[3.303,6.5],[-5.619,-3.5],[0,0],[-3.5,4.5]],"o":[[2.11,-4.5],[2,4.5],[-3.419,3.049],[0,0],[6.89,-5],[-4,-1]],"v":[[4.21,-1.25],[-2.29,-9.75],[-9.79,-4.25],[-6.488,9.75],[6.32,9.75],[11.21,-4.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.791,57.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":0.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":1.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":1.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":14,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.44,-4],[-1.014,-8.998]],"o":[[-4.956,-9.998],[-3.965,-1.499]],"v":[[-1.994,6.999],[6.95,1.999]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[24.472,16.013],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.478,8.498],[-5.452,4.499],[0,-5.742],[-1.982,3.243],[2.478,6.998],[1.464,-6.998],[-2.005,1.5],[-5.451,2.499],[-1.486,-2.499],[0.84,-2.697],[-1.015,-3.999],[2.455,0],[0,0]],"o":[[2.974,-1.499],[0.496,2.999],[0,3.041],[2.514,-4.113],[4.46,-1.5],[-0.971,4.641],[2.39,-1.786],[0,2.999],[1.597,2.684],[-1.015,3.255],[1.337,5.27],[0,0],[-5.946,0]],"v":[[-16.906,2.749],[-13.436,-10.747],[-8.975,-5.249],[-3.525,-3.249],[-4.02,-18.245],[7.38,-8.748],[10.848,-0.75],[15.805,-7.748],[17.786,-2.005],[16.82,5.993],[16.82,12.247],[11.863,19.745],[-8.482,19.745]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.559,47.255],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":0.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":1.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":1.599609375}],"ix":7}}]}],"ind":7},{"ty":4,"nm":"hand torch","mn":"","sr":1,"st":0,"op":48,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[-98.806,-66.543,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[621.194,445.457,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[8],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":34},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[8],"t":44}],"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Hand-base","ix":1,"cix":2,"np":4,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.002,0],[0.001,0]],"o":[[0.003,0],[0,0]],"v":[[-247.159,105.971],[-247.156,105.971]]},"ix":2}},{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 2","ix":2,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-0.399,0.625],[-4.422,4.687],[1.205,1.137],[1.137,-1.205],[1.872,-2.937],[0.264,-1.28],[-1.696,-1.093],[-9.577,3.382],[-1.951,0.824],[-2.613,-5.287],[-1.811,-1.462],[-2.332,2.038],[1.09,1.248],[1.245,-0.958],[0.052,0.042],[1.447,2.928],[-2.927,7.054],[2.404,-2.026],[6.46,-2.282],[3.382,1.596]],"o":[[1.625,-2.55],[1.137,-1.205],[-1.205,-1.137],[-4.66,4.94],[-1.053,1.652],[-0.404,1.961],[5.011,3.228],[2.676,-0.945],[-1.102,5.942],[1.799,3.64],[2.478,2.001],[1.248,-1.09],[-1.048,-1.2],[-0.044,-0.031],[-0.986,-0.796],[-2.846,-5.757],[1.205,-2.904],[-1.403,1.182],[-7.129,2.518],[0.197,-0.423]],"v":[[-282.507,82.207],[-273.42,71.318],[-273.543,67.077],[-277.784,67.201],[-287.567,78.982],[-289.551,83.327],[-287.718,88.24],[-265.799,88.547],[-258.866,85.899],[-256.613,102.782],[-251.276,110.406],[-243.56,110.487],[-243.275,106.254],[-247.361,105.849],[-247.507,105.738],[-251.235,100.123],[-251.153,81.017],[-255.857,77.573],[-267.797,82.89],[-283.399,83.789]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9294,0.3412,0.2196],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Combined-Shape","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.092,-7.932],[-43.741,-16.345],[-13.255,27.764],[-14.516,-23.182],[15.562,-45.23],[35.044,7.171],[94.132,55.59],[2.462,3.551],[0.53,1.149],[9.63,5.813],[-0.294,4.863],[0.046,0.02],[-9.245,-3.401],[-9.9,-8.914]],"o":[[35.083,9.264],[-19.293,-60.891],[19.157,-40.125],[14.18,22.645],[6.013,27.221],[-24.789,-5.072],[-4.329,0.875],[-0.655,-0.944],[-9.036,-5.381],[-1.421,-7.629],[-0.045,-0.019],[-14.897,-6.562],[6.143,2.26],[4.323,3.893]],"v":[[-224.436,87.953],[-93.281,128.23],[-117.827,-42.872],[-56.614,-44.392],[-8.107,192.618],[-53.803,225.416],[-232.185,134.422],[-244.839,129.017],[-246.61,125.867],[-274.609,109.076],[-276.299,90.339],[-276.436,90.281],[-258.18,59.308],[-234.185,69.244]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6667,0.5137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-81.677,146.697],[-93.268,128.187]]},"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"d":[],"c":{"a":0,"k":[0.9294,0.3412,0.2196],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Group 3","ix":4,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.335,1.403],[5.301,2.307],[1.63,-10.292],[-10.358,-6.546],[-1.22,0.201],[-1.241,0.552]],"o":[[14.092,-8.468],[-8.847,-3.851],[-2.038,12.87],[0.842,0.532],[1.097,-0.181],[3.163,-1.407]],"v":[[-257.268,125.757],[-277.085,67.111],[-301.225,94.933],[-272.836,131.567],[-266.147,135.893],[-265.125,129.93]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6667,0.5137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"-Torch","ix":2,"cix":2,"np":4,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"-Torch-base","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.822,3.561],[0,0],[1.822,-3.561],[0,0]],"o":[[0,0],[1.822,-3.561],[0,0],[-1.822,3.561]],"v":[[-270.61,-63.65],[-259.466,-85.425],[-254.125,-82.692],[-265.269,-60.916]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1098,0.1333,0.1608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"-Torch-base","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-1.822,3.561],[0,0],[1.822,-3.561],[0,0]],"o":[[0,0],[1.822,-3.561],[0,0],[-1.822,3.561]],"v":[[-281.651,-69.164],[-270.507,-90.94],[-265.166,-88.206],[-276.31,-66.431]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1098,0.1333,0.1608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"-Torch-base","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.151,-0.542],[24.295,-8.823],[5.798,1.872],[0,0],[0.071,0.809],[-18.415,1.611],[-0.637,0.02],[-0.585,-18.787]],"o":[[-1.105,0.636],[-33.772,15.904],[-4.991,1.813],[0,0],[-0.129,-0.802],[-1.611,-18.415],[0.635,-0.056],[18.787,-0.585],[0,0]],"v":[[-236.852,-57.052],[-240.237,-55.283],[-285.19,-45.655],[-301.678,-45.931],[-304.301,-62.18],[-304.602,-64.598],[-274.176,-100.858],[-272.269,-100.971],[-237.193,-68.013]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.9255,0.5882,0.1216],"ix":4},"r":1,"o":{"a":0,"k":25,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"-Torch-base 2","ix":4,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0.067,-0.331],[3.069,0.625],[0.81,4.032],[0,0],[0.098,1.471],[-18.54,1.239],[-1.046,-0.024],[0.44,-19.379]],"o":[[-0.008,0.337],[-0.625,3.069],[-4.029,-0.821],[0,0],[-0.29,-1.446],[-1.239,-18.54],[1.044,-0.07],[19.379,0.44],[0,0]],"v":[[-242.479,179.412],[-242.591,180.416],[-249.281,184.84],[-257.266,176.833],[-305.087,-61.289],[-305.67,-65.67],[-274.344,-101.484],[-271.206,-101.553],[-236.914,-65.667]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.7725,0.3725],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":8},{"ty":4,"nm":"flame 8","mn":"","sr":1,"st":36,"op":48,"ip":36,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[20,33.5,0],"ix":1},"s":{"a":0,"k":[242.507,242.507,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,343.5,0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,367.5,0],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,351.001,0],"t":34},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,341.5,0],"t":44}],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5,1],[9,2],[-5.237,-2],[0,0],[-2.5,4],[1.652,0]],"o":[[0,5],[-1.539,3.578],[0,0],[5.122,-5.5],[-4.5,1.5],[2,-5.5]],"v":[[-2.48,-10.5],[-10.98,-3.5],[-5.743,10.5],[7.398,10.5],[12.52,-5],[6.02,-1.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.98,56.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":44.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":45.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":46.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g2","ix":2,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.578,-2.984],[-5.374,-11.339]],"o":[[3.181,-11.439],[1.004,-1.602]],"v":[[6.587,3.78],[-4.394,7.659]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[26.441,16.072],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 3","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.593,0],[0,0],[-0.863,3.979],[3.469,4.476],[0.145,1.963],[2.939,-0.459],[4.397,3.662],[2.974,0],[3.246,-4.02],[2.001,3.217],[0.992,0.995],[2.477,-1.492]],"o":[[0,0],[9.316,0],[-2.325,0],[-1.42,-1.831],[-6.715,0],[-4.324,0.676],[-2.66,-2.216],[-3.888,4.973],[-1.366,1.692],[-1.209,-1.946],[-3.469,7.461],[0.495,5.968]],"v":[[-10.498,20.143],[9.846,20.143],[16.684,5.722],[15.693,-4.228],[15.693,-9.202],[7.762,-4.228],[2.806,-16.661],[-4.628,-20.143],[-5.619,-3.465],[-11.071,-6.217],[-15.036,-9.202],[-19,5.722]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,46.857],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":44.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":45.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":46.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f1","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.097,3.085],[7.182,1.022],[-5.236,-2],[0,0],[2.565,4.088],[1.653,0]],"o":[[-5.333,5.111],[-1.539,3.578],[0,0],[5.529,-2.556],[-2.051,2.555],[2.111,-6.309]],"v":[[-0.257,-11.5],[-11.542,-1.789],[-5.59,11.5],[7.553,11.5],[10.516,-4.855],[3.848,-1.789]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.826,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":43.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":43.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":45.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":45.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f2","ix":4,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 5","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-4.37],[0.975,-6.95],[-0.975,-1.6]],"o":[[9.883,-10.822],[-0.278,1.986],[1.002,-1.6]],"v":[[-0.355,7.645],[-9.251,-0.695],[-8.275,4.875]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.459,22.027],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 6","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.577,0],[0,0],[-2.471,4.964],[-1.706,0.993],[1.592,2.665],[0.147,1.959],[2.93,-0.459],[4.383,3.656],[1.977,2.978],[-0.357,-2.497],[1.627,-2.019],[1.976,5.957],[2.471,-1.49]],"o":[[0,0],[11.695,0],[-4.177,2.978],[1.706,-0.993],[-1.484,-2.482],[-6.694,0],[-4.312,0.674],[-2.653,-2.212],[-6.425,6.949],[0.495,3.455],[-2.143,2.656],[-7.413,7.446],[0.494,5.957]],"v":[[-10.028,20.848],[10.258,20.848],[18,4.467],[14.81,0.992],[14.047,-4.964],[14.81,-9.43],[6.139,-4.964],[0.209,-16.48],[-5.227,-20.848],[-6.215,-8.419],[-6.215,-2.715],[-15.605,-6.454],[-18.076,7.445]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,46.152],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":43.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":43.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":45.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":45.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e1","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.167,-1],[1.5,1.5],[6.5,-1],[-2.303,-1],[0,0],[0,2.5],[-1.062,3.186]],"o":[[-1.5,2],[-9.5,1.5],[-1.5,3.5],[0,0],[5.39,-2.5],[-2,2.5],[1.914,-5.741]],"v":[[1.75,-8.5],[-2.75,-11],[-11.25,1.5],[-5.447,11],[7.36,11],[10.75,-4],[5.75,-3]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.75,56],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":41.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":43.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":44}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e2","ix":6,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 8","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.437,0],[2.29,3.928]],"o":[[1.622,3.522],[-1.467,-2.516]],"v":[[0.574,0.252],[0.574,-1.258]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[6.832,18.43],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 9","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.709,0],[0,0],[0.494,6.041],[-6.623,7.033],[-0.731,3.128],[-2.962,-1.777],[0.494,3.502],[-1.847,6.039],[1.533,2.148],[9.729,-10.065],[-6.34,1.006],[-9.651,2.51],[-1.481,-2.515],[1.886,-2.1],[-4.173,3.02]],"o":[[0,0],[-1.865,0],[5.43,0],[0.988,2.013],[0.352,-1.51],[1.597,0.958],[-0.357,-2.531],[6.898,7.045],[5.989,-10.06],[-9.888,-7.548],[2.927,-0.465],[0.145,1.986],[1.59,2.702],[-2.492,2.773],[-2.469,5.034]],"v":[[9.791,26.674],[-10.473,26.674],[-19.5,17.111],[-17.032,2.008],[-10.473,4.027],[-6.664,2.784],[-4.69,-2.999],[-8.626,-15.098],[-3.767,-16.613],[7.666,-8.053],[6.171,2.008],[14.34,-5.508],[14.34,-0.504],[15.057,7.549],[19.5,11.072]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,40.326],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 10","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.975,-3.02],[0,-5.032]],"o":[[0,-4.529],[-2.468,-2.013]],"v":[[-1.727,1.794],[1.727,1.794]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[31.842,1.794],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":41.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":43.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":44}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d1","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.5,2],[4,1.28],[5.303,0],[-1.803,-1],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-1,4],[-12.5,-4],[0,3],[0,0],[3.89,-2],[-3.5,2.5],[1.914,-5.741]],"v":[[0.5,-11.5],[-2.5,-6],[-9,6],[-3.697,11.5],[9.11,11.5],[13.5,2],[8.5,-2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":40},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":40.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":42.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d2","ix":8,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 12","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.526,0],[5.571,4.498]],"o":[[2.026,4.998],[-2.532,-2.044]],"v":[[-1.023,0.023],[-1.023,-2.977]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[7.102,23.997],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 13","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.091,0],[0,0],[-3.546,7.496],[0,3.193],[-3.039,-1.77],[-0.933,3.227],[-2.533,5.997],[1.572,2.133],[9.98,-9.995],[-6.504,0.999],[-7.089,3.499],[-1.519,-2.499],[1.935,-2.085],[-3.269,1.499]],"o":[[0,0],[-4.339,0],[3.039,1.999],[0,-4.227],[1.143,1.499],[0.706,-2.443],[6.584,1.999],[5.36,-5.268],[-7.518,0],[3.003,-0.462],[0.15,1.973],[1.632,2.683],[-2.557,2.755],[-1.013,3.999]],"v":[[10.538,24.124],[-10.252,24.124],[-17.473,7.632],[-13.421,4.633],[-8.356,0.406],[-4.811,-1.365],[-6.33,-12.859],[-3.372,-18.857],[7.265,-8.861],[8.357,0.406],[16.231,-5.337],[16.231,-0.365],[15.955,8.131],[19.5,13.128]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,42.875],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 14","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.026,-2.999],[-1.29,-5.497]],"o":[[0,-6.997],[-2.533,-1.999]],"v":[[-2.847,3.998],[2.847,1.499]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[32.608,6.028],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":40},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":40.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":42},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":42.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c1","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.61,-1],[0.5,3.5],[3.5,2.5],[-11.803,-10.5],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-0.5,-5.5],[-0.5,4],[-5,0.5],[0,0],[3.89,-2],[-2.5,1],[0.5,-1.5]],"v":[[8.5,-4.5],[2,-12],[-2,-5],[-3.197,12],[9.61,12],[13.5,4.5],[11,-2]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[17.5,55],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":38.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":38.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":40.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":40.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c2","ix":10,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 16","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.491,0],[5.515,4.509]],"o":[[4.238,6.012],[-5.497,2.004]],"v":[[-0.052,0.751],[-0.052,-6.764]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.463,33.174],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 17","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.295,0],[0,0],[1.505,3.005],[-2.531,2.762],[1.615,2.69],[0.148,1.978],[2.417,-1.79],[-6.196,6.283],[5.305,-5.281],[0.643,-3.965],[1.337,-2.167],[2.005,0.746],[1.316,-1.052],[0.312,-1.983]],"o":[[0,0],[7.02,0],[-2.153,0],[1.916,-2.09],[-1.504,-2.504],[-7.02,3.508],[-2.03,1.503],[9.88,-10.019],[1.556,2.138],[-0.713,4.397],[-2.005,3.251],[-2.507,2.505],[-1.971,1.576],[-0.78,4.951]],"v":[[-10.99,24.188],[9.592,24.188],[17.382,16.163],[16.611,7.646],[17.382,-0.872],[15.229,-5.354],[8.357,3.137],[6.352,-8.887],[-4.178,-18.907],[-3.21,-8.887],[-6.184,0.402],[-14.206,2.135],[-15.227,7.646],[-18.217,12.656]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.639,42.812],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 18","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.006,-3.006],[-2.006,-8.516]],"o":[[-1.504,-9.52],[-4.513,-3.006]],"v":[[-2.758,5.761],[4.262,2.755]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.6,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.748,8.635],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":38.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":38.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":40.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":40.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b1","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[3,2],[3.697,3],[-8.303,-6.5],[0,0],[-3.5,4.5]],"o":[[1.5,-5.5],[0,3.5],[-3.419,3.049],[0,0],[8.89,-6.5],[-1.5,-0.5]],"v":[[4,-1.75],[-1.5,-10.75],[-6.697,-4.75],[-6.697,10.75],[6.11,10.75],[8,-3.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,56.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":36.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":37.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":38.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":39.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":12,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.542,-1.555],[5.567,4.5]],"o":[[4.555,2],[-5.728,3.772]],"v":[[-0.022,3.5],[-0.022,-5.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.545,37.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-6.072,0],[0,0],[1.366,5.271],[-2.554,2.756],[1.63,2.685],[0,4],[2.44,-1.787],[-5.06,7.245],[3.818,-1],[2.567,-4.115],[2.024,0.745],[0.588,-1.578]],"o":[[0,0],[2.507,0],[-1.036,-4],[1.934,-2.086],[-1.518,-2.5],[-7.086,3.5],[-2.048,1.5],[7.052,-10.093],[3.312,4.5],[-2.024,3.244],[-2.531,2.5],[-3.543,9.5]],"v":[[-10.162,20.729],[10.612,20.729],[17.697,15.271],[17.697,6.771],[17.697,-2.73],[16.302,-8.474],[10.612,0.5],[7.827,-9.23],[-5.1,-19.729],[-5.967,-1],[-14.44,-3.5],[-16.088,2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.964,46.271],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b4","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.012,-4.5],[-1.012,-11.5]],"o":[[-3.036,-10],[-5.611,-3.5]],"v":[[-2.784,8],[5.82,3.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[27.558,13.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":36.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":37.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":38.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":39.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a1","ix":13,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[4,0.5],[3.303,6.5],[-5.619,-3.5],[0,0],[-3.5,4.5]],"o":[[2.11,-4.5],[2,4.5],[-3.419,3.049],[0,0],[6.89,-5],[-4,-1]],"v":[[4.21,-1.25],[-2.29,-9.75],[-9.79,-4.25],[-6.488,9.75],[6.32,9.75],[11.21,-4.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.791,57.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":36.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":37.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":37.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":14,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.44,-4],[-1.014,-8.998]],"o":[[-4.956,-9.998],[-3.965,-1.499]],"v":[[-1.994,6.999],[6.95,1.999]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[24.472,16.013],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.478,8.498],[-5.452,4.499],[0,-5.742],[-1.982,3.243],[2.478,6.998],[1.464,-6.998],[-2.005,1.5],[-5.451,2.499],[-1.486,-2.499],[0.84,-2.697],[-1.015,-3.999],[2.455,0],[0,0]],"o":[[2.974,-1.499],[0.496,2.999],[0,3.041],[2.514,-4.113],[4.46,-1.5],[-0.971,4.641],[2.39,-1.786],[0,2.999],[1.597,2.684],[-1.015,3.255],[1.337,5.27],[0,0],[-5.946,0]],"v":[[-16.906,2.749],[-13.436,-10.747],[-8.975,-5.249],[-3.525,-3.249],[-4.02,-18.245],[7.38,-8.748],[10.848,-0.75],[15.805,-7.748],[17.786,-2.005],[16.82,5.993],[16.82,12.247],[11.863,19.745],[-8.482,19.745]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.559,47.255],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":36.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":37.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":37.599609375}],"ix":7}}]}],"ind":9},{"ty":4,"nm":"flame 6","mn":"","sr":1,"st":24,"op":36,"ip":24,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[20,33.5,0],"ix":1},"s":{"a":0,"k":[242.507,242.507,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,343.5,0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,367.5,0],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,351.001,0],"t":34},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,341.5,0],"t":44}],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5,1],[9,2],[-5.237,-2],[0,0],[-2.5,4],[1.652,0]],"o":[[0,5],[-1.539,3.578],[0,0],[5.122,-5.5],[-4.5,1.5],[2,-5.5]],"v":[[-2.48,-10.5],[-10.98,-3.5],[-5.743,10.5],[7.398,10.5],[12.52,-5],[6.02,-1.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.98,56.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":32.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":33.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":34.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g2","ix":2,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.578,-2.984],[-5.374,-11.339]],"o":[[3.181,-11.439],[1.004,-1.602]],"v":[[6.587,3.78],[-4.394,7.659]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[26.441,16.072],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 3","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.593,0],[0,0],[-0.863,3.979],[3.469,4.476],[0.145,1.963],[2.939,-0.459],[4.397,3.662],[2.974,0],[3.246,-4.02],[2.001,3.217],[0.992,0.995],[2.477,-1.492]],"o":[[0,0],[9.316,0],[-2.325,0],[-1.42,-1.831],[-6.715,0],[-4.324,0.676],[-2.66,-2.216],[-3.888,4.973],[-1.366,1.692],[-1.209,-1.946],[-3.469,7.461],[0.495,5.968]],"v":[[-10.498,20.143],[9.846,20.143],[16.684,5.722],[15.693,-4.228],[15.693,-9.202],[7.762,-4.228],[2.806,-16.661],[-4.628,-20.143],[-5.619,-3.465],[-11.071,-6.217],[-15.036,-9.202],[-19,5.722]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,46.857],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":32.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":33.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":34.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f1","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.097,3.085],[7.182,1.022],[-5.236,-2],[0,0],[2.565,4.088],[1.653,0]],"o":[[-5.333,5.111],[-1.539,3.578],[0,0],[5.529,-2.556],[-2.051,2.555],[2.111,-6.309]],"v":[[-0.257,-11.5],[-11.542,-1.789],[-5.59,11.5],[7.553,11.5],[10.516,-4.855],[3.848,-1.789]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.826,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":31.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":31.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":33.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":33.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f2","ix":4,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 5","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-4.37],[0.975,-6.95],[-0.975,-1.6]],"o":[[9.883,-10.822],[-0.278,1.986],[1.002,-1.6]],"v":[[-0.355,7.645],[-9.251,-0.695],[-8.275,4.875]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.459,22.027],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 6","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.577,0],[0,0],[-2.471,4.964],[-1.706,0.993],[1.592,2.665],[0.147,1.959],[2.93,-0.459],[4.383,3.656],[1.977,2.978],[-0.357,-2.497],[1.627,-2.019],[1.976,5.957],[2.471,-1.49]],"o":[[0,0],[11.695,0],[-4.177,2.978],[1.706,-0.993],[-1.484,-2.482],[-6.694,0],[-4.312,0.674],[-2.653,-2.212],[-6.425,6.949],[0.495,3.455],[-2.143,2.656],[-7.413,7.446],[0.494,5.957]],"v":[[-10.028,20.848],[10.258,20.848],[18,4.467],[14.81,0.992],[14.047,-4.964],[14.81,-9.43],[6.139,-4.964],[0.209,-16.48],[-5.227,-20.848],[-6.215,-8.419],[-6.215,-2.715],[-15.605,-6.454],[-18.076,7.445]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,46.152],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":31.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":31.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":33.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":33.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e1","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.167,-1],[1.5,1.5],[6.5,-1],[-2.303,-1],[0,0],[0,2.5],[-1.062,3.186]],"o":[[-1.5,2],[-9.5,1.5],[-1.5,3.5],[0,0],[5.39,-2.5],[-2,2.5],[1.914,-5.741]],"v":[[1.75,-8.5],[-2.75,-11],[-11.25,1.5],[-5.447,11],[7.36,11],[10.75,-4],[5.75,-3]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.75,56],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":29.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":31.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":32}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e2","ix":6,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 8","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.437,0],[2.29,3.928]],"o":[[1.622,3.522],[-1.467,-2.516]],"v":[[0.574,0.252],[0.574,-1.258]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[6.832,18.43],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 9","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.709,0],[0,0],[0.494,6.041],[-6.623,7.033],[-0.731,3.128],[-2.962,-1.777],[0.494,3.502],[-1.847,6.039],[1.533,2.148],[9.729,-10.065],[-6.34,1.006],[-9.651,2.51],[-1.481,-2.515],[1.886,-2.1],[-4.173,3.02]],"o":[[0,0],[-1.865,0],[5.43,0],[0.988,2.013],[0.352,-1.51],[1.597,0.958],[-0.357,-2.531],[6.898,7.045],[5.989,-10.06],[-9.888,-7.548],[2.927,-0.465],[0.145,1.986],[1.59,2.702],[-2.492,2.773],[-2.469,5.034]],"v":[[9.791,26.674],[-10.473,26.674],[-19.5,17.111],[-17.032,2.008],[-10.473,4.027],[-6.664,2.784],[-4.69,-2.999],[-8.626,-15.098],[-3.767,-16.613],[7.666,-8.053],[6.171,2.008],[14.34,-5.508],[14.34,-0.504],[15.057,7.549],[19.5,11.072]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,40.326],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 10","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.975,-3.02],[0,-5.032]],"o":[[0,-4.529],[-2.468,-2.013]],"v":[[-1.727,1.794],[1.727,1.794]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[31.842,1.794],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":29.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":31.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":32}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d1","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.5,2],[4,1.28],[5.303,0],[-1.803,-1],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-1,4],[-12.5,-4],[0,3],[0,0],[3.89,-2],[-3.5,2.5],[1.914,-5.741]],"v":[[0.5,-11.5],[-2.5,-6],[-9,6],[-3.697,11.5],[9.11,11.5],[13.5,2],[8.5,-2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":28.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":30.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d2","ix":8,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 12","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.526,0],[5.571,4.498]],"o":[[2.026,4.998],[-2.532,-2.044]],"v":[[-1.023,0.023],[-1.023,-2.977]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[7.102,23.997],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 13","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.091,0],[0,0],[-3.546,7.496],[0,3.193],[-3.039,-1.77],[-0.933,3.227],[-2.533,5.997],[1.572,2.133],[9.98,-9.995],[-6.504,0.999],[-7.089,3.499],[-1.519,-2.499],[1.935,-2.085],[-3.269,1.499]],"o":[[0,0],[-4.339,0],[3.039,1.999],[0,-4.227],[1.143,1.499],[0.706,-2.443],[6.584,1.999],[5.36,-5.268],[-7.518,0],[3.003,-0.462],[0.15,1.973],[1.632,2.683],[-2.557,2.755],[-1.013,3.999]],"v":[[10.538,24.124],[-10.252,24.124],[-17.473,7.632],[-13.421,4.633],[-8.356,0.406],[-4.811,-1.365],[-6.33,-12.859],[-3.372,-18.857],[7.265,-8.861],[8.357,0.406],[16.231,-5.337],[16.231,-0.365],[15.955,8.131],[19.5,13.128]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,42.875],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 14","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.026,-2.999],[-1.29,-5.497]],"o":[[0,-6.997],[-2.533,-1.999]],"v":[[-2.847,3.998],[2.847,1.499]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[32.608,6.028],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":28},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":28.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":30.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c1","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.61,-1],[0.5,3.5],[3.5,2.5],[-11.803,-10.5],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-0.5,-5.5],[-0.5,4],[-5,0.5],[0,0],[3.89,-2],[-2.5,1],[0.5,-1.5]],"v":[[8.5,-4.5],[2,-12],[-2,-5],[-3.197,12],[9.61,12],[13.5,4.5],[11,-2]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[17.5,55],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":26.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":26.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":28.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":28.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c2","ix":10,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 16","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.491,0],[5.515,4.509]],"o":[[4.238,6.012],[-5.497,2.004]],"v":[[-0.052,0.751],[-0.052,-6.764]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.463,33.174],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 17","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.295,0],[0,0],[1.505,3.005],[-2.531,2.762],[1.615,2.69],[0.148,1.978],[2.417,-1.79],[-6.196,6.283],[5.305,-5.281],[0.643,-3.965],[1.337,-2.167],[2.005,0.746],[1.316,-1.052],[0.312,-1.983]],"o":[[0,0],[7.02,0],[-2.153,0],[1.916,-2.09],[-1.504,-2.504],[-7.02,3.508],[-2.03,1.503],[9.88,-10.019],[1.556,2.138],[-0.713,4.397],[-2.005,3.251],[-2.507,2.505],[-1.971,1.576],[-0.78,4.951]],"v":[[-10.99,24.188],[9.592,24.188],[17.382,16.163],[16.611,7.646],[17.382,-0.872],[15.229,-5.354],[8.357,3.137],[6.352,-8.887],[-4.178,-18.907],[-3.21,-8.887],[-6.184,0.402],[-14.206,2.135],[-15.227,7.646],[-18.217,12.656]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.639,42.812],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 18","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.006,-3.006],[-2.006,-8.516]],"o":[[-1.504,-9.52],[-4.513,-3.006]],"v":[[-2.758,5.761],[4.262,2.755]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.6,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.748,8.635],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":26.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":26.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":28.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":28.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b1","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[3,2],[3.697,3],[-8.303,-6.5],[0,0],[-3.5,4.5]],"o":[[1.5,-5.5],[0,3.5],[-3.419,3.049],[0,0],[8.89,-6.5],[-1.5,-0.5]],"v":[[4,-1.75],[-1.5,-10.75],[-6.697,-4.75],[-6.697,10.75],[6.11,10.75],[8,-3.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,56.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":24.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":25.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":26.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":27.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":12,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.542,-1.555],[5.567,4.5]],"o":[[4.555,2],[-5.728,3.772]],"v":[[-0.022,3.5],[-0.022,-5.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.545,37.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-6.072,0],[0,0],[1.366,5.271],[-2.554,2.756],[1.63,2.685],[0,4],[2.44,-1.787],[-5.06,7.245],[3.818,-1],[2.567,-4.115],[2.024,0.745],[0.588,-1.578]],"o":[[0,0],[2.507,0],[-1.036,-4],[1.934,-2.086],[-1.518,-2.5],[-7.086,3.5],[-2.048,1.5],[7.052,-10.093],[3.312,4.5],[-2.024,3.244],[-2.531,2.5],[-3.543,9.5]],"v":[[-10.162,20.729],[10.612,20.729],[17.697,15.271],[17.697,6.771],[17.697,-2.73],[16.302,-8.474],[10.612,0.5],[7.827,-9.23],[-5.1,-19.729],[-5.967,-1],[-14.44,-3.5],[-16.088,2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.964,46.271],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b4","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.012,-4.5],[-1.012,-11.5]],"o":[[-3.036,-10],[-5.611,-3.5]],"v":[[-2.784,8],[5.82,3.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[27.558,13.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":24.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":25.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":26.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":27.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a1","ix":13,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[4,0.5],[3.303,6.5],[-5.619,-3.5],[0,0],[-3.5,4.5]],"o":[[2.11,-4.5],[2,4.5],[-3.419,3.049],[0,0],[6.89,-5],[-4,-1]],"v":[[4.21,-1.25],[-2.29,-9.75],[-9.79,-4.25],[-6.488,9.75],[6.32,9.75],[11.21,-4.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.791,57.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":24.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":25.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":25.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":14,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.44,-4],[-1.014,-8.998]],"o":[[-4.956,-9.998],[-3.965,-1.499]],"v":[[-1.994,6.999],[6.95,1.999]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[24.472,16.013],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.478,8.498],[-5.452,4.499],[0,-5.742],[-1.982,3.243],[2.478,6.998],[1.464,-6.998],[-2.005,1.5],[-5.451,2.499],[-1.486,-2.499],[0.84,-2.697],[-1.015,-3.999],[2.455,0],[0,0]],"o":[[2.974,-1.499],[0.496,2.999],[0,3.041],[2.514,-4.113],[4.46,-1.5],[-0.971,4.641],[2.39,-1.786],[0,2.999],[1.597,2.684],[-1.015,3.255],[1.337,5.27],[0,0],[-5.946,0]],"v":[[-16.906,2.749],[-13.436,-10.747],[-8.975,-5.249],[-3.525,-3.249],[-4.02,-18.245],[7.38,-8.748],[10.848,-0.75],[15.805,-7.748],[17.786,-2.005],[16.82,5.993],[16.82,12.247],[11.863,19.745],[-8.482,19.745]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.559,47.255],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":24.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":25.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":25.599609375}],"ix":7}}]}],"ind":10},{"ty":4,"nm":"flame 3","mn":"","sr":1,"st":12,"op":24,"ip":12,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[20,33.5,0],"ix":1},"s":{"a":0,"k":[242.507,242.507,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,343.5,0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,367.5,0],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,351.001,0],"t":34},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,341.5,0],"t":44}],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5,1],[9,2],[-5.237,-2],[0,0],[-2.5,4],[1.652,0]],"o":[[0,5],[-1.539,3.578],[0,0],[5.122,-5.5],[-4.5,1.5],[2,-5.5]],"v":[[-2.48,-10.5],[-10.98,-3.5],[-5.743,10.5],[7.398,10.5],[12.52,-5],[6.02,-1.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.98,56.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":20.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":21.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":22.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g2","ix":2,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.578,-2.984],[-5.374,-11.339]],"o":[[3.181,-11.439],[1.004,-1.602]],"v":[[6.587,3.78],[-4.394,7.659]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[26.441,16.072],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 3","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.593,0],[0,0],[-0.863,3.979],[3.469,4.476],[0.145,1.963],[2.939,-0.459],[4.397,3.662],[2.974,0],[3.246,-4.02],[2.001,3.217],[0.992,0.995],[2.477,-1.492]],"o":[[0,0],[9.316,0],[-2.325,0],[-1.42,-1.831],[-6.715,0],[-4.324,0.676],[-2.66,-2.216],[-3.888,4.973],[-1.366,1.692],[-1.209,-1.946],[-3.469,7.461],[0.495,5.968]],"v":[[-10.498,20.143],[9.846,20.143],[16.684,5.722],[15.693,-4.228],[15.693,-9.202],[7.762,-4.228],[2.806,-16.661],[-4.628,-20.143],[-5.619,-3.465],[-11.071,-6.217],[-15.036,-9.202],[-19,5.722]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,46.857],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":20.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":21.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":22.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f1","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.097,3.085],[7.182,1.022],[-5.236,-2],[0,0],[2.565,4.088],[1.653,0]],"o":[[-5.333,5.111],[-1.539,3.578],[0,0],[5.529,-2.556],[-2.051,2.555],[2.111,-6.309]],"v":[[-0.257,-11.5],[-11.542,-1.789],[-5.59,11.5],[7.553,11.5],[10.516,-4.855],[3.848,-1.789]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.826,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":19.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":19.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":21.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":21.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f2","ix":4,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 5","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-4.37],[0.975,-6.95],[-0.975,-1.6]],"o":[[9.883,-10.822],[-0.278,1.986],[1.002,-1.6]],"v":[[-0.355,7.645],[-9.251,-0.695],[-8.275,4.875]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.459,22.027],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 6","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.577,0],[0,0],[-2.471,4.964],[-1.706,0.993],[1.592,2.665],[0.147,1.959],[2.93,-0.459],[4.383,3.656],[1.977,2.978],[-0.357,-2.497],[1.627,-2.019],[1.976,5.957],[2.471,-1.49]],"o":[[0,0],[11.695,0],[-4.177,2.978],[1.706,-0.993],[-1.484,-2.482],[-6.694,0],[-4.312,0.674],[-2.653,-2.212],[-6.425,6.949],[0.495,3.455],[-2.143,2.656],[-7.413,7.446],[0.494,5.957]],"v":[[-10.028,20.848],[10.258,20.848],[18,4.467],[14.81,0.992],[14.047,-4.964],[14.81,-9.43],[6.139,-4.964],[0.209,-16.48],[-5.227,-20.848],[-6.215,-8.419],[-6.215,-2.715],[-15.605,-6.454],[-18.076,7.445]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,46.152],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":19.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":19.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":21.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":21.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e1","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.167,-1],[1.5,1.5],[6.5,-1],[-2.303,-1],[0,0],[0,2.5],[-1.062,3.186]],"o":[[-1.5,2],[-9.5,1.5],[-1.5,3.5],[0,0],[5.39,-2.5],[-2,2.5],[1.914,-5.741]],"v":[[1.75,-8.5],[-2.75,-11],[-11.25,1.5],[-5.447,11],[7.36,11],[10.75,-4],[5.75,-3]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.75,56],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":17.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":18},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":19.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":20}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e2","ix":6,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 8","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.437,0],[2.29,3.928]],"o":[[1.622,3.522],[-1.467,-2.516]],"v":[[0.574,0.252],[0.574,-1.258]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[6.832,18.43],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 9","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.709,0],[0,0],[0.494,6.041],[-6.623,7.033],[-0.731,3.128],[-2.962,-1.777],[0.494,3.502],[-1.847,6.039],[1.533,2.148],[9.729,-10.065],[-6.34,1.006],[-9.651,2.51],[-1.481,-2.515],[1.886,-2.1],[-4.173,3.02]],"o":[[0,0],[-1.865,0],[5.43,0],[0.988,2.013],[0.352,-1.51],[1.597,0.958],[-0.357,-2.531],[6.898,7.045],[5.989,-10.06],[-9.888,-7.548],[2.927,-0.465],[0.145,1.986],[1.59,2.702],[-2.492,2.773],[-2.469,5.034]],"v":[[9.791,26.674],[-10.473,26.674],[-19.5,17.111],[-17.032,2.008],[-10.473,4.027],[-6.664,2.784],[-4.69,-2.999],[-8.626,-15.098],[-3.767,-16.613],[7.666,-8.053],[6.171,2.008],[14.34,-5.508],[14.34,-0.504],[15.057,7.549],[19.5,11.072]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,40.326],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 10","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.975,-3.02],[0,-5.032]],"o":[[0,-4.529],[-2.468,-2.013]],"v":[[-1.727,1.794],[1.727,1.794]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[31.842,1.794],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":17.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":18},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":19.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":20}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d1","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.5,2],[4,1.28],[5.303,0],[-1.803,-1],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-1,4],[-12.5,-4],[0,3],[0,0],[3.89,-2],[-3.5,2.5],[1.914,-5.741]],"v":[[0.5,-11.5],[-2.5,-6],[-9,6],[-3.697,11.5],[9.11,11.5],[13.5,2],[8.5,-2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":16},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":16.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":18},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":18.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d2","ix":8,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 12","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.526,0],[5.571,4.498]],"o":[[2.026,4.998],[-2.532,-2.044]],"v":[[-1.023,0.023],[-1.023,-2.977]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[7.102,23.997],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 13","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.091,0],[0,0],[-3.546,7.496],[0,3.193],[-3.039,-1.77],[-0.933,3.227],[-2.533,5.997],[1.572,2.133],[9.98,-9.995],[-6.504,0.999],[-7.089,3.499],[-1.519,-2.499],[1.935,-2.085],[-3.269,1.499]],"o":[[0,0],[-4.339,0],[3.039,1.999],[0,-4.227],[1.143,1.499],[0.706,-2.443],[6.584,1.999],[5.36,-5.268],[-7.518,0],[3.003,-0.462],[0.15,1.973],[1.632,2.683],[-2.557,2.755],[-1.013,3.999]],"v":[[10.538,24.124],[-10.252,24.124],[-17.473,7.632],[-13.421,4.633],[-8.356,0.406],[-4.811,-1.365],[-6.33,-12.859],[-3.372,-18.857],[7.265,-8.861],[8.357,0.406],[16.231,-5.337],[16.231,-0.365],[15.955,8.131],[19.5,13.128]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,42.875],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 14","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.026,-2.999],[-1.29,-5.497]],"o":[[0,-6.997],[-2.533,-1.999]],"v":[[-2.847,3.998],[2.847,1.499]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[32.608,6.028],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":16},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":16.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":18},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":18.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c1","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.61,-1],[0.5,3.5],[3.5,2.5],[-11.803,-10.5],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-0.5,-5.5],[-0.5,4],[-5,0.5],[0,0],[3.89,-2],[-2.5,1],[0.5,-1.5]],"v":[[8.5,-4.5],[2,-12],[-2,-5],[-3.197,12],[9.61,12],[13.5,4.5],[11,-2]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[17.5,55],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":14.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":14.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":16.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":16.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c2","ix":10,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 16","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.491,0],[5.515,4.509]],"o":[[4.238,6.012],[-5.497,2.004]],"v":[[-0.052,0.751],[-0.052,-6.764]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.463,33.174],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 17","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.295,0],[0,0],[1.505,3.005],[-2.531,2.762],[1.615,2.69],[0.148,1.978],[2.417,-1.79],[-6.196,6.283],[5.305,-5.281],[0.643,-3.965],[1.337,-2.167],[2.005,0.746],[1.316,-1.052],[0.312,-1.983]],"o":[[0,0],[7.02,0],[-2.153,0],[1.916,-2.09],[-1.504,-2.504],[-7.02,3.508],[-2.03,1.503],[9.88,-10.019],[1.556,2.138],[-0.713,4.397],[-2.005,3.251],[-2.507,2.505],[-1.971,1.576],[-0.78,4.951]],"v":[[-10.99,24.188],[9.592,24.188],[17.382,16.163],[16.611,7.646],[17.382,-0.872],[15.229,-5.354],[8.357,3.137],[6.352,-8.887],[-4.178,-18.907],[-3.21,-8.887],[-6.184,0.402],[-14.206,2.135],[-15.227,7.646],[-18.217,12.656]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.639,42.812],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 18","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.006,-3.006],[-2.006,-8.516]],"o":[[-1.504,-9.52],[-4.513,-3.006]],"v":[[-2.758,5.761],[4.262,2.755]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.6,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.748,8.635],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":14.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":14.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":16.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":16.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b1","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[3,2],[3.697,3],[-8.303,-6.5],[0,0],[-3.5,4.5]],"o":[[1.5,-5.5],[0,3.5],[-3.419,3.049],[0,0],[8.89,-6.5],[-1.5,-0.5]],"v":[[4,-1.75],[-1.5,-10.75],[-6.697,-4.75],[-6.697,10.75],[6.11,10.75],[8,-3.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,56.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":12.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":13.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":14.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":15.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":12,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.542,-1.555],[5.567,4.5]],"o":[[4.555,2],[-5.728,3.772]],"v":[[-0.022,3.5],[-0.022,-5.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.545,37.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-6.072,0],[0,0],[1.366,5.271],[-2.554,2.756],[1.63,2.685],[0,4],[2.44,-1.787],[-5.06,7.245],[3.818,-1],[2.567,-4.115],[2.024,0.745],[0.588,-1.578]],"o":[[0,0],[2.507,0],[-1.036,-4],[1.934,-2.086],[-1.518,-2.5],[-7.086,3.5],[-2.048,1.5],[7.052,-10.093],[3.312,4.5],[-2.024,3.244],[-2.531,2.5],[-3.543,9.5]],"v":[[-10.162,20.729],[10.612,20.729],[17.697,15.271],[17.697,6.771],[17.697,-2.73],[16.302,-8.474],[10.612,0.5],[7.827,-9.23],[-5.1,-19.729],[-5.967,-1],[-14.44,-3.5],[-16.088,2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.964,46.271],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b4","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.012,-4.5],[-1.012,-11.5]],"o":[[-3.036,-10],[-5.611,-3.5]],"v":[[-2.784,8],[5.82,3.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[27.558,13.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":12.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":13.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":14.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":15.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a1","ix":13,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[4,0.5],[3.303,6.5],[-5.619,-3.5],[0,0],[-3.5,4.5]],"o":[[2.11,-4.5],[2,4.5],[-3.419,3.049],[0,0],[6.89,-5],[-4,-1]],"v":[[4.21,-1.25],[-2.29,-9.75],[-9.79,-4.25],[-6.488,9.75],[6.32,9.75],[11.21,-4.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.791,57.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":12.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":13.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":13.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":14,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.44,-4],[-1.014,-8.998]],"o":[[-4.956,-9.998],[-3.965,-1.499]],"v":[[-1.994,6.999],[6.95,1.999]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[24.472,16.013],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.478,8.498],[-5.452,4.499],[0,-5.742],[-1.982,3.243],[2.478,6.998],[1.464,-6.998],[-2.005,1.5],[-5.451,2.499],[-1.486,-2.499],[0.84,-2.697],[-1.015,-3.999],[2.455,0],[0,0]],"o":[[2.974,-1.499],[0.496,2.999],[0,3.041],[2.514,-4.113],[4.46,-1.5],[-0.971,4.641],[2.39,-1.786],[0,2.999],[1.597,2.684],[-1.015,3.255],[1.337,5.27],[0,0],[-5.946,0]],"v":[[-16.906,2.749],[-13.436,-10.747],[-8.975,-5.249],[-3.525,-3.249],[-4.02,-18.245],[7.38,-8.748],[10.848,-0.75],[15.805,-7.748],[17.786,-2.005],[16.82,5.993],[16.82,12.247],[11.863,19.745],[-8.482,19.745]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.559,47.255],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":12.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":13.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":13.599609375}],"ix":7}}]}],"ind":11},{"ty":4,"nm":"flame","mn":"","sr":1,"st":0,"op":12,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[20,33.5,0],"ix":1},"s":{"a":0,"k":[242.507,242.507,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,343.5,0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,367.5,0],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,351.001,0],"t":34},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[447.5,341.5,0],"t":44}],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g1","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[5,1],[9,2],[-5.237,-2],[0,0],[-2.5,4],[1.652,0]],"o":[[0,5],[-1.539,3.578],[0,0],[5.122,-5.5],[-4.5,1.5],[2,-5.5]],"v":[[-2.48,-10.5],[-10.98,-3.5],[-5.743,10.5],[7.398,10.5],[12.52,-5],[6.02,-1.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.98,56.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":9.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":10.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"g2","ix":2,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.578,-2.984],[-5.374,-11.339]],"o":[[3.181,-11.439],[1.004,-1.602]],"v":[[6.587,3.78],[-4.394,7.659]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[26.441,16.072],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 3","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.593,0],[0,0],[-0.863,3.979],[3.469,4.476],[0.145,1.963],[2.939,-0.459],[4.397,3.662],[2.974,0],[3.246,-4.02],[2.001,3.217],[0.992,0.995],[2.477,-1.492]],"o":[[0,0],[9.316,0],[-2.325,0],[-1.42,-1.831],[-6.715,0],[-4.324,0.676],[-2.66,-2.216],[-3.888,4.973],[-1.366,1.692],[-1.209,-1.946],[-3.469,7.461],[0.495,5.968]],"v":[[-10.498,20.143],[9.846,20.143],[16.684,5.722],[15.693,-4.228],[15.693,-9.202],[7.762,-4.228],[2.806,-16.661],[-4.628,-20.143],[-5.619,-3.465],[-11.071,-6.217],[-15.036,-9.202],[-19,5.722]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,46.857],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":9.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":10.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f1","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.097,3.085],[7.182,1.022],[-5.236,-2],[0,0],[2.565,4.088],[1.653,0]],"o":[[-5.333,5.111],[-1.539,3.578],[0,0],[5.529,-2.556],[-2.051,2.555],[2.111,-6.309]],"v":[[-0.257,-11.5],[-11.542,-1.789],[-5.59,11.5],[7.553,11.5],[10.516,-4.855],[3.848,-1.789]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.826,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":7.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":7.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":9.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":9.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"f2","ix":4,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 5","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,-4.37],[0.975,-6.95],[-0.975,-1.6]],"o":[[9.883,-10.822],[-0.278,1.986],[1.002,-1.6]],"v":[[-0.355,7.645],[-9.251,-0.695],[-8.275,4.875]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.459,22.027],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 6","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-5.577,0],[0,0],[-2.471,4.964],[-1.706,0.993],[1.592,2.665],[0.147,1.959],[2.93,-0.459],[4.383,3.656],[1.977,2.978],[-0.357,-2.497],[1.627,-2.019],[1.976,5.957],[2.471,-1.49]],"o":[[0,0],[11.695,0],[-4.177,2.978],[1.706,-0.993],[-1.484,-2.482],[-6.694,0],[-4.312,0.674],[-2.653,-2.212],[-6.425,6.949],[0.495,3.455],[-2.143,2.656],[-7.413,7.446],[0.494,5.957]],"v":[[-10.028,20.848],[10.258,20.848],[18,4.467],[14.81,0.992],[14.047,-4.964],[14.81,-9.43],[6.139,-4.964],[0.209,-16.48],[-5.227,-20.848],[-6.215,-8.419],[-6.215,-2.715],[-15.605,-6.454],[-18.076,7.445]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,46.152],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":7.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":7.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":9.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":9.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e1","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.167,-1],[1.5,1.5],[6.5,-1],[-2.303,-1],[0,0],[0,2.5],[-1.062,3.186]],"o":[[-1.5,2],[-9.5,1.5],[-1.5,3.5],[0,0],[5.39,-2.5],[-2,2.5],[1.914,-5.741]],"v":[[1.75,-8.5],[-2.75,-11],[-11.25,1.5],[-5.447,11],[7.36,11],[10.75,-4],[5.75,-3]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.75,56],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":5.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":7.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"e2","ix":6,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 8","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.437,0],[2.29,3.928]],"o":[[1.622,3.522],[-1.467,-2.516]],"v":[[0.574,0.252],[0.574,-1.258]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[6.832,18.43],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 9","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.709,0],[0,0],[0.494,6.041],[-6.623,7.033],[-0.731,3.128],[-2.962,-1.777],[0.494,3.502],[-1.847,6.039],[1.533,2.148],[9.729,-10.065],[-6.34,1.006],[-9.651,2.51],[-1.481,-2.515],[1.886,-2.1],[-4.173,3.02]],"o":[[0,0],[-1.865,0],[5.43,0],[0.988,2.013],[0.352,-1.51],[1.597,0.958],[-0.357,-2.531],[6.898,7.045],[5.989,-10.06],[-9.888,-7.548],[2.927,-0.465],[0.145,1.986],[1.59,2.702],[-2.492,2.773],[-2.469,5.034]],"v":[[9.791,26.674],[-10.473,26.674],[-19.5,17.111],[-17.032,2.008],[-10.473,4.027],[-6.664,2.784],[-4.69,-2.999],[-8.626,-15.098],[-3.767,-16.613],[7.666,-8.053],[6.171,2.008],[14.34,-5.508],[14.34,-0.504],[15.057,7.549],[19.5,11.072]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,40.326],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 10","ix":3,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.975,-3.02],[0,-5.032]],"o":[[0,-4.529],[-2.468,-2.013]],"v":[[-1.727,1.794],[1.727,1.794]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[31.842,1.794],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":5.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":7.6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":8}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d1","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.5,2],[4,1.28],[5.303,0],[-1.803,-1],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-1,4],[-12.5,-4],[0,3],[0,0],[3.89,-2],[-3.5,2.5],[1.914,-5.741]],"v":[[0.5,-11.5],[-2.5,-6],[-9,6],[-3.697,11.5],[9.11,11.5],[13.5,2],[8.5,-2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[18,55.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":4.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":6.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"d2","ix":8,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 12","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.526,0],[5.571,4.498]],"o":[[2.026,4.998],[-2.532,-2.044]],"v":[[-1.023,0.023],[-1.023,-2.977]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[7.102,23.997],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 13","ix":2,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[7.091,0],[0,0],[-3.546,7.496],[0,3.193],[-3.039,-1.77],[-0.933,3.227],[-2.533,5.997],[1.572,2.133],[9.98,-9.995],[-6.504,0.999],[-7.089,3.499],[-1.519,-2.499],[1.935,-2.085],[-3.269,1.499]],"o":[[0,0],[-4.339,0],[3.039,1.999],[0,-4.227],[1.143,1.499],[0.706,-2.443],[6.584,1.999],[5.36,-5.268],[-7.518,0],[3.003,-0.462],[0.15,1.973],[1.632,2.683],[-2.557,2.755],[-1.013,3.999]],"v":[[10.538,24.124],[-10.252,24.124],[-17.473,7.632],[-13.421,4.633],[-8.356,0.406],[-4.811,-1.365],[-6.33,-12.859],[-3.372,-18.857],[7.265,-8.861],[8.357,0.406],[16.231,-5.337],[16.231,-0.365],[15.955,8.131],[19.5,13.128]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.5,42.875],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 14","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.026,-2.999],[-1.29,-5.497]],"o":[[0,-6.997],[-2.533,-1.999]],"v":[[-2.847,3.998],[2.847,1.499]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[32.608,6.028],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":4.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":6.400390625}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c1","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.61,-1],[0.5,3.5],[3.5,2.5],[-11.803,-10.5],[0,0],[1.5,2],[-1.062,3.186]],"o":[[-0.5,-5.5],[-0.5,4],[-5,0.5],[0,0],[3.89,-2],[-2.5,1],[0.5,-1.5]],"v":[[8.5,-4.5],[2,-12],[-2,-5],[-3.197,12],[9.61,12],[13.5,4.5],[11,-2]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[17.5,55],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":2.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":2.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":4.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":4.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"c2","ix":10,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 16","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.491,0],[5.515,4.509]],"o":[[4.238,6.012],[-5.497,2.004]],"v":[[-0.052,0.751],[-0.052,-6.764]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.463,33.174],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 17","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-4.295,0],[0,0],[1.505,3.005],[-2.531,2.762],[1.615,2.69],[0.148,1.978],[2.417,-1.79],[-6.196,6.283],[5.305,-5.281],[0.643,-3.965],[1.337,-2.167],[2.005,0.746],[1.316,-1.052],[0.312,-1.983]],"o":[[0,0],[7.02,0],[-2.153,0],[1.916,-2.09],[-1.504,-2.504],[-7.02,3.508],[-2.03,1.503],[9.88,-10.019],[1.556,2.138],[-0.713,4.397],[-2.005,3.251],[-2.507,2.505],[-1.971,1.576],[-0.78,4.951]],"v":[[-10.99,24.188],[9.592,24.188],[17.382,16.163],[16.611,7.646],[17.382,-0.872],[15.229,-5.354],[8.357,3.137],[6.352,-8.887],[-4.178,-18.907],[-3.21,-8.887],[-6.184,0.402],[-14.206,2.135],[-15.227,7.646],[-18.217,12.656]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.639,42.812],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"组 18","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.006,-3.006],[-2.006,-8.516]],"o":[[-1.504,-9.52],[-4.513,-3.006]],"v":[[-2.758,5.761],[4.262,2.755]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.6,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[29.748,8.635],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":2.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":2.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":4.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":4.7998046875}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b1","ix":11,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[3,2],[3.697,3],[-8.303,-6.5],[0,0],[-3.5,4.5]],"o":[[1.5,-5.5],[0,3.5],[-3.419,3.049],[0,0],[8.89,-6.5],[-1.5,-0.5]],"v":[[4,-1.75],[-1.5,-10.75],[-6.697,-4.75],[-6.697,10.75],[6.11,10.75],[8,-3.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[21,56.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":1.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":2.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":3.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":12,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b2","ix":1,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-3.542,-1.555],[5.567,4.5]],"o":[[4.555,2],[-5.728,3.772]],"v":[[-0.022,3.5],[-0.022,-5.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[5.545,37.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-6.072,0],[0,0],[1.366,5.271],[-2.554,2.756],[1.63,2.685],[0,4],[2.44,-1.787],[-5.06,7.245],[3.818,-1],[2.567,-4.115],[2.024,0.745],[0.588,-1.578]],"o":[[0,0],[2.507,0],[-1.036,-4],[1.934,-2.086],[-1.518,-2.5],[-7.086,3.5],[-2.048,1.5],[7.052,-10.093],[3.312,4.5],[-2.024,3.244],[-2.531,2.5],[-3.543,9.5]],"v":[[-10.162,20.729],[10.612,20.729],[17.697,15.271],[17.697,6.771],[17.697,-2.73],[16.302,-8.474],[10.612,0.5],[7.827,-9.23],[-5.1,-19.729],[-5.967,-1],[-14.44,-3.5],[-16.088,2.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.964,46.271],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"b4","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[1.012,-4.5],[-1.012,-11.5]],"o":[[-3.036,-10],[-5.611,-3.5]],"v":[[-2.784,8],[5.82,3.5]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[27.558,13.771],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[20,33.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20,33.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":1.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":2.8},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":3.2001953125}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a1","ix":13,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.11,-2],[4,0.5],[3.303,6.5],[-5.619,-3.5],[0,0],[-3.5,4.5]],"o":[[2.11,-4.5],[2,4.5],[-3.419,3.049],[0,0],[6.89,-5],[-4,-1]],"v":[[4.21,-1.25],[-2.29,-9.75],[-9.79,-4.25],[-6.488,9.75],[6.32,9.75],[11.21,-4.25]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[1,0.8392,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[20.791,57.25],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":0.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":1.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":1.599609375}],"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":14,"cix":2,"np":2,"it":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a2","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2.44,-4],[-1.014,-8.998]],"o":[[-4.956,-9.998],[-3.965,-1.499]],"v":[[-1.994,6.999],[6.95,1.999]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[24.472,16.013],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"a3","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"路径 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-2.478,8.498],[-5.452,4.499],[0,-5.742],[-1.982,3.243],[2.478,6.998],[1.464,-6.998],[-2.005,1.5],[-5.451,2.499],[-1.486,-2.499],[0.84,-2.697],[-1.015,-3.999],[2.455,0],[0,0]],"o":[[2.974,-1.499],[0.496,2.999],[0,3.041],[2.514,-4.113],[4.46,-1.5],[-0.971,4.641],[2.39,-1.786],[0,2.999],[1.597,2.684],[-1.015,3.255],[1.337,5.27],[0,0],[-5.946,0]],"v":[[-16.906,2.749],[-13.436,-10.747],[-8.975,-5.249],[-3.525,-3.249],[-4.02,-18.245],[7.38,-8.748],[10.848,-0.75],[15.805,-7.748],[17.786,-2.005],[16.82,5.993],[16.82,12.247],[11.863,19.745],[-8.482,19.745]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"填充 1","c":{"a":0,"k":[0.9765,0.3569,0.0118],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[19.559,47.255],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":0.4},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":1.2},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":1.599609375}],"ix":7}}]}],"ind":12},{"ty":4,"nm":"Leaves-","mn":"","sr":1,"st":0,"op":48,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[373.137,384.48,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[1093.137,896.48,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[348.503,372.984],[239.003,335.484]]},"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"d":[],"c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.832,-14.301],[26.869,7.199],[-3.832,14.301],[-26.869,-7.199]],"o":[[-3.832,14.301],[-26.869,-7.199],[3.832,-14.301],[26.869,7.199]],"v":[[350.168,374.028],[224.46,354.008],[182.748,315.077],[238.337,302.218]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7961,0.9373,0.9882],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":3,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[332.194,354.132],[267.694,272.632]]},"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"d":[],"c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":4,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[14.862,-16.506],[27.238,24.525],[-14.862,16.506],[-27.238,-24.525]],"o":[[-14.862,16.506],[-27.238,-24.525],[14.862,-16.506],[27.238,24.525]],"v":[[346.248,374.297],[209.027,277.386],[186.619,203.092],[262.848,217.611]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1686,0.7216,0.6588],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":5,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[347.003,366.484],[450.003,248.484]]},"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"d":[],"c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":6,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[349.003,373.984],[477.503,334.484]]},"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"d":[],"c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":7,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[9.387,20.13],[-33.218,15.49],[-9.387,-20.13],[33.218,-15.49]],"o":[[-9.387,-20.13],[33.218,-15.49],[9.387,20.13],[-33.218,15.49]],"v":[[344.191,376.033],[487.015,287.587],[564.158,295.989],[521.008,360.485]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1373,0.6157,0.5608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":8,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[26.69,16.037],[-18.877,31.417],[-26.69,-16.037],[18.877,-31.417]],"o":[[-26.69,-16.037],[18.877,-31.417],[26.69,16.037],[-18.877,31.417]],"v":[[342.465,372.214],[404.592,214.925],[487.099,187.077],[501.245,273]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1686,0.7216,0.6588],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":9,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[336.003,362.484],[336.003,153.984]]},"ix":2}},{"ty":"st","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"d":[],"c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Leaves-base","ix":10,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[35.549,-4.996],[5.611,39.924],[-35.549,4.996],[-5.611,-39.924]],"o":[[-35.549,4.996],[-5.611,-39.924],[35.549,-4.996],[5.611,39.924]],"v":[[329.914,341.34],[272.687,164.079],[326.895,82.743],[401.422,145.987]]},"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1373,0.6157,0.5608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":13},{"ty":4,"nm":"Tree- 3","mn":"","sr":1,"st":0,"op":48,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[-396.687,177.153,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[323.313,689.153,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Tree-base","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.503,0.385],[0.385,-0.503],[0,0],[0,-0.252],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[-0.315,-0.205],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[0,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[0,0.223],[0,0],[0,0],[0.454,0.442],[0.442,-0.454],[0,0],[0,0],[0,0],[0.153,0.2]],"o":[[0,0],[0,0],[0.385,-0.503],[-0.503,-0.385],[0,0],[-0.153,0.2],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[0,0.403],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[-0.113,0.181],[0,0],[0,0.633],[0.634,0],[0,0],[0.11,-0.176],[0,0],[0,0],[0.442,-0.454],[-0.454,-0.442],[0,0],[0,0],[0,0],[0,-0.252],[0,0]],"v":[[-397.001,-18.449],[-397.001,-62.923],[-357.522,-114.488],[-357.736,-116.096],[-359.344,-115.882],[-399.059,-64.009],[-399.295,-63.312],[-399.295,-21.445],[-436.43,-69.948],[-438.038,-70.162],[-438.252,-68.553],[-399.295,-17.671],[-399.295,-0.628],[-398.773,0.335],[-398.773,31.959],[-436.43,-17.227],[-438.038,-17.44],[-438.252,-15.832],[-398.773,35.733],[-398.773,83.113],[-398.946,83.72],[-398.946,176.006],[-397.799,177.153],[-396.652,176.006],[-396.652,98.635],[-396.478,98.028],[-396.478,84.008],[-355.212,41.689],[-355.232,40.067],[-356.855,40.087],[-396.478,80.722],[-396.478,35.344],[-396.478,-17.377],[-396.715,-18.075]]}],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.506,0.381],[0.381,-0.506],[0,0],[-0.002,-0.252],[0,0],[0,0],[0.5,-0.39],[-0.39,-0.5],[0,0],[0,0],[-0.316,-0.202],[0,0],[0,0],[0.5,-0.39],[-0.39,-0.499],[0,0],[0,0],[-0.002,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[0.002,0.223],[0,0],[0,0],[0.458,0.438],[0.438,-0.458],[0,0],[0,0],[0,0],[0.155,0.199]],"o":[[0,0],[0,0],[0.381,-0.506],[-0.506,-0.381],[0,0],[-0.151,0.202],[0,0],[0,0],[-0.39,-0.5],[-0.5,0.39],[0,0],[0,0],[0.004,0.403],[0,0],[0,0],[-0.39,-0.5],[-0.5,0.39],[0,0],[0,0],[-0.111,0.182],[0,0],[0,0.633],[0.634,0],[0,0],[0.109,-0.177],[0,0],[0,0],[0.438,-0.458],[-0.458,-0.438],[0,0],[0,0],[0,0],[-0.002,-0.252],[0,0]],"v":[[-398.241,-18.452],[-398.642,-62.924],[-359.63,-114.843],[-359.858,-116.45],[-361.464,-116.222],[-400.71,-63.992],[-400.94,-63.292],[-400.562,-21.428],[-438.133,-69.594],[-439.743,-69.793],[-439.942,-68.183],[-400.528,-17.654],[-400.374,-0.611],[-399.843,0.347],[-399.558,31.969],[-437.657,-16.875],[-439.267,-17.074],[-439.466,-15.464],[-399.524,35.743],[-399.096,83.121],[-399.265,83.73],[-398.946,176.006],[-397.799,177.153],[-396.652,176.006],[-396.836,98.624],[-396.668,98.015],[-396.794,83.996],[-355.911,41.306],[-355.946,39.684],[-357.568,39.72],[-396.824,80.71],[-397.233,35.334],[-397.709,-17.385],[-397.951,-18.081]]}],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.497,0.392],[0.392,-0.498],[0,0],[0.004,-0.252],[0,0],[0,0],[0.508,-0.378],[-0.378,-0.508],[0,0],[0,0],[-0.312,-0.209],[0,0],[0,0],[0.508,-0.378],[-0.378,-0.508],[0,0],[0,0],[0.003,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[-0.003,0.223],[0,0],[0,0],[0.447,0.449],[0.449,-0.447],[0,0],[0,0],[0,0],[0.15,0.202]],"o":[[0,0],[0,0],[0.392,-0.498],[-0.497,-0.392],[0,0],[-0.156,0.198],[0,0],[0,0],[-0.378,-0.508],[-0.508,0.378],[0,0],[0,0],[-0.006,0.403],[0,0],[0,0],[-0.378,-0.508],[-0.508,0.378],[0,0],[0,0],[-0.115,0.179],[0,0],[0,0.633],[0.634,0],[0,0],[0.113,-0.175],[0,0],[0,0],[0.449,-0.447],[-0.447,-0.449],[0,0],[0,0],[0,0],[0.004,-0.252],[0,0]],"v":[[-395.13,-18.375],[-394.502,-62.845],[-354.299,-113.847],[-354.49,-115.458],[-356.101,-115.268],[-396.545,-63.96],[-396.791,-63.266],[-397.382,-21.404],[-433.828,-70.426],[-435.433,-70.663],[-435.669,-69.058],[-397.435,-17.63],[-397.676,-0.589],[-397.167,0.381],[-397.613,32.002],[-434.573,-17.711],[-436.178,-17.947],[-436.414,-16.342],[-397.667,35.776],[-398.336,83.151],[-398.518,83.756],[-398.946,176.006],[-397.799,177.153],[-396.652,176.006],[-396.435,98.702],[-396.252,98.097],[-396.054,84.079],[-354.195,42.347],[-354.192,40.724],[-355.814,40.722],[-396.008,80.793],[-395.367,35.419],[-394.623,-17.297],[-394.849,-17.997]]}],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.506,0.381],[0.381,-0.506],[0,0],[-0.002,-0.252],[0,0],[0,0],[0.5,-0.39],[-0.39,-0.5],[0,0],[0,0],[-0.316,-0.202],[0,0],[0,0],[0.5,-0.39],[-0.39,-0.499],[0,0],[0,0],[-0.002,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[0.002,0.223],[0,0],[0,0],[0.458,0.438],[0.438,-0.458],[0,0],[0,0],[0,0],[0.155,0.199]],"o":[[0,0],[0,0],[0.381,-0.506],[-0.506,-0.381],[0,0],[-0.151,0.202],[0,0],[0,0],[-0.39,-0.5],[-0.5,0.39],[0,0],[0,0],[0.004,0.403],[0,0],[0,0],[-0.39,-0.5],[-0.5,0.39],[0,0],[0,0],[-0.111,0.182],[0,0],[0,0.633],[0.634,0],[0,0],[0.109,-0.177],[0,0],[0,0],[0.438,-0.458],[-0.458,-0.438],[0,0],[0,0],[0,0],[-0.002,-0.252],[0,0]],"v":[[-398.241,-18.452],[-398.642,-62.924],[-359.63,-114.843],[-359.858,-116.45],[-361.464,-116.222],[-400.71,-63.992],[-400.94,-63.292],[-400.562,-21.428],[-438.133,-69.594],[-439.743,-69.793],[-439.942,-68.183],[-400.528,-17.654],[-400.374,-0.611],[-399.843,0.347],[-399.558,31.969],[-437.657,-16.875],[-439.267,-17.074],[-439.466,-15.464],[-399.524,35.743],[-399.096,83.121],[-399.265,83.73],[-398.946,176.006],[-397.799,177.153],[-396.652,176.006],[-396.836,98.624],[-396.668,98.015],[-396.794,83.996],[-355.911,41.306],[-355.946,39.684],[-357.568,39.72],[-396.824,80.71],[-397.233,35.334],[-397.709,-17.385],[-397.951,-18.081]]}],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.503,0.385],[0.385,-0.503],[0,0],[0,-0.252],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[-0.315,-0.205],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[0,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[0,0.223],[0,0],[0,0],[0.454,0.442],[0.442,-0.454],[0,0],[0,0],[0,0],[0.153,0.2]],"o":[[0,0],[0,0],[0.385,-0.503],[-0.503,-0.385],[0,0],[-0.153,0.2],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[0,0.403],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[-0.113,0.181],[0,0],[0,0.633],[0.634,0],[0,0],[0.11,-0.176],[0,0],[0,0],[0.442,-0.454],[-0.454,-0.442],[0,0],[0,0],[0,0],[0,-0.252],[0,0]],"v":[[-397.001,-18.449],[-397.001,-62.923],[-357.522,-114.488],[-357.736,-116.096],[-359.344,-115.882],[-399.059,-64.009],[-399.295,-63.312],[-399.295,-21.445],[-436.43,-69.948],[-438.038,-70.162],[-438.252,-68.553],[-399.295,-17.671],[-399.295,-0.628],[-398.773,0.335],[-398.773,31.959],[-436.43,-17.227],[-438.038,-17.44],[-438.252,-15.832],[-398.773,35.733],[-398.773,83.113],[-398.946,83.72],[-398.946,176.006],[-397.799,177.153],[-396.652,176.006],[-396.652,98.635],[-396.478,98.028],[-396.478,84.008],[-355.212,41.689],[-355.232,40.067],[-356.855,40.087],[-396.478,80.722],[-396.478,35.344],[-396.478,-17.377],[-396.715,-18.075]]}],"t":49}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Tree-base","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[0,57.634],[-56.2,0],[0,-57.634]],"o":[[-56.2,0],[0,-57.634],[56.2,0],[0,57.634]],"v":[[-396.687,118.413],[-498.446,14.058],[-396.687,-348.783],[-294.928,14.058]]}],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[0.52,57.631],[-56.198,0.507],[-0.52,-57.631]],"o":[[-56.2,0],[-0.52,-57.631],[56.198,-0.507],[0.52,57.631]],"v":[[-396.687,118.413],[-499.388,14.969],[-400.907,-348.776],[-295.879,13.133]]}],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[-0.814,57.628],[-56.194,-0.794],[0.814,-57.628]],"o":[[-56.2,0],[0.814,-57.628],[56.194,0.794],[-0.814,57.628]],"v":[[-396.687,118.413],[-497.024,12.696],[-390.152,-348.673],[-293.527,15.57]]}],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[0.52,57.631],[-56.198,0.507],[-0.52,-57.631]],"o":[[-56.2,0],[-0.52,-57.631],[56.198,-0.507],[0.52,57.631]],"v":[[-396.687,118.413],[-499.388,14.969],[-400.907,-348.776],[-295.879,13.133]]}],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[0,57.634],[-56.2,0],[0,-57.634]],"o":[[-56.2,0],[0,-57.634],[56.2,0],[0,57.634]],"v":[[-396.687,118.413],[-498.446,14.058],[-396.687,-348.783],[-294.928,14.058]]}],"t":49}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1373,0.6157,0.5608],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":14},{"ty":4,"nm":"Tree- 2","mn":"","sr":1,"st":0,"op":48,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[-185.879,134.529,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[534.121,646.529,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Tree-base","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.503,0.385],[0.385,-0.503],[0,0],[0,-0.252],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[-0.315,-0.205],[0,0],[0,0],[0,-0.252],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[-0.315,-0.205],[0,0],[0,-0.216],[0,0],[-0.634,0],[0,0.634],[0,0],[0,0.223],[0,0],[0,0],[0.454,0.442],[0.442,-0.454],[0,0],[0,0],[0.153,0.2],[0,0],[0,0],[0,0.403],[0,0],[0,0],[0.503,0.385],[0.385,-0.503],[0,0],[0,0],[0.153,0.2]],"o":[[0,0],[0,0],[0.385,-0.503],[-0.503,-0.385],[0,0],[-0.153,0.2],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[0,0.403],[0,0],[0,0],[-0.153,0.2],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[0,0.403],[0,0],[-0.113,0.181],[0,0],[0,0.634],[0.634,0],[0,0],[0.11,-0.176],[0,0],[0,0],[0.442,-0.454],[-0.454,-0.442],[0,0],[0,0],[0,-0.252],[0,0],[0,0],[0.315,-0.205],[0,0],[0,0],[0.385,-0.503],[-0.503,-0.385],[0,0],[0,0],[0,-0.252],[0,0]],"v":[[-186.193,-111.159],[-186.193,-167.383],[-146.714,-218.948],[-146.928,-220.556],[-148.536,-220.343],[-188.251,-168.469],[-188.488,-167.772],[-188.488,-114.155],[-225.622,-162.658],[-227.23,-162.872],[-227.444,-161.264],[-188.488,-110.382],[-188.488,-105.088],[-187.965,-104.125],[-187.965,-54.286],[-188.251,-53.912],[-188.488,-53.214],[-188.488,-11.348],[-225.622,-59.851],[-227.23,-60.064],[-227.444,-58.456],[-188.488,-7.574],[-188.488,9.469],[-187.965,10.432],[-187.965,40.489],[-188.139,41.096],[-188.139,133.382],[-186.992,134.529],[-185.844,133.382],[-185.844,56.011],[-185.671,55.404],[-185.671,41.384],[-144.404,-0.935],[-144.425,-2.557],[-146.047,-2.536],[-185.671,38.098],[-185.671,-7.28],[-185.907,-7.977],[-186.193,-8.351],[-186.193,-46.441],[-185.671,-47.404],[-185.671,-53.508],[-146.714,-104.391],[-146.928,-105.999],[-148.536,-105.785],[-185.671,-57.282],[-185.671,-110.087],[-185.907,-110.785]]}],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.509,0.378],[0.378,-0.509],[0,0],[-0.004,-0.252],[0,0],[0,0],[0.497,-0.393],[-0.393,-0.497],[0,0],[0,0],[-0.318,-0.2],[0,0],[0,0],[-0.004,-0.252],[0,0],[0,0],[0.497,-0.393],[-0.393,-0.497],[0,0],[0,0],[-0.318,-0.2],[0,0],[-0.003,-0.216],[0,0],[-0.634,0],[0,0.634],[0,0],[0.003,0.223],[0,0],[0,0],[0.46,0.435],[0.435,-0.46],[0,0],[0,0],[0.156,0.198],[0,0],[0,0],[0.006,0.403],[0,0],[0,0],[0.509,0.378],[0.378,-0.509],[0,0],[0,0],[0.156,0.198]],"o":[[0,0],[0,0],[0.378,-0.509],[-0.509,-0.378],[0,0],[-0.15,0.202],[0,0],[0,0],[-0.393,-0.497],[-0.497,0.393],[0,0],[0,0],[0.006,0.403],[0,0],[0,0],[-0.15,0.202],[0,0],[0,0],[-0.393,-0.497],[-0.497,0.393],[0,0],[0,0],[0.006,0.403],[0,0],[-0.11,0.182],[0,0],[0,0.634],[0.634,0],[0,0],[0.108,-0.178],[0,0],[0,0],[0.435,-0.46],[-0.46,-0.435],[0,0],[0,0],[-0.004,-0.252],[0,0],[0,0],[0.312,-0.209],[0,0],[0,0],[0.378,-0.509],[-0.509,-0.378],[0,0],[0,0],[-0.004,-0.252],[0,0]],"v":[[-188.879,-111.151],[-189.722,-167.369],[-151.02,-219.52],[-151.257,-221.124],[-152.862,-220.887],[-191.796,-168.424],[-192.021,-167.723],[-191.218,-114.113],[-229.075,-162.053],[-230.686,-162.243],[-230.876,-160.632],[-191.161,-110.339],[-191.082,-105.046],[-190.545,-104.092],[-189.798,-54.258],[-190.078,-53.879],[-190.304,-53.178],[-189.677,-11.317],[-227.534,-59.258],[-229.145,-59.447],[-229.335,-57.836],[-189.62,-7.543],[-189.365,9.498],[-188.828,10.453],[-188.377,40.506],[-188.542,41.116],[-188.139,133.382],[-186.992,134.529],[-185.844,133.382],[-186.024,55.995],[-185.86,55.385],[-186.07,41.367],[-145.442,-1.566],[-145.487,-3.187],[-147.109,-3.142],[-186.119,38.082],[-186.799,-7.291],[-187.046,-7.985],[-187.338,-8.355],[-187.909,-46.44],[-187.401,-47.411],[-187.492,-53.515],[-149.303,-104.975],[-149.54,-106.58],[-151.145,-106.342],[-187.549,-57.288],[-188.34,-110.087],[-188.587,-110.781]]}],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.499,0.391],[0.391,-0.499],[0,0],[0.003,-0.252],[0,0],[0,0],[0.507,-0.379],[-0.38,-0.507],[0,0],[0,0],[-0.312,-0.208],[0,0],[0,0],[0.003,-0.252],[0,0],[0,0],[0.507,-0.38],[-0.38,-0.507],[0,0],[0,0],[-0.312,-0.208],[0,0],[0.002,-0.216],[0,0],[-0.634,0],[0,0.634],[0,0],[-0.002,0.223],[0,0],[0,0],[0.449,0.447],[0.447,-0.449],[0,0],[0,0],[0.151,0.202],[0,0],[0,0],[-0.004,0.403],[0,0],[0,0],[0.499,0.391],[0.391,-0.499],[0,0],[0,0],[0.151,0.202]],"o":[[0,0],[0,0],[0.391,-0.499],[-0.499,-0.391],[0,0],[-0.155,0.198],[0,0],[0,0],[-0.38,-0.507],[-0.507,0.379],[0,0],[0,0],[-0.004,0.403],[0,0],[0,0],[-0.155,0.198],[0,0],[0,0],[-0.38,-0.507],[-0.507,0.38],[0,0],[0,0],[-0.004,0.403],[0,0],[-0.115,0.18],[0,0],[0,0.634],[0.634,0],[0,0],[0.112,-0.175],[0,0],[0,0],[0.447,-0.449],[-0.449,-0.447],[0,0],[0,0],[0.003,-0.252],[0,0],[0,0],[0.317,-0.201],[0,0],[0,0],[0.391,-0.499],[-0.499,-0.391],[0,0],[0,0],[0.003,-0.252],[0,0]],"v":[[-184.183,-111.139],[-183.56,-167.359],[-143.512,-218.484],[-143.708,-220.094],[-145.318,-219.899],[-185.606,-168.468],[-185.85,-167.773],[-186.444,-114.16],[-223.039,-163.072],[-224.645,-163.303],[-224.876,-161.697],[-186.486,-110.387],[-186.544,-105.093],[-186.032,-104.125],[-186.584,-54.289],[-186.875,-53.918],[-187.119,-53.223],[-187.583,-11.359],[-224.178,-60.27],[-225.783,-60.502],[-226.015,-58.896],[-187.624,-7.586],[-187.813,9.457],[-187.301,10.425],[-187.634,40.48],[-187.815,41.085],[-188.139,133.382],[-186.992,134.529],[-185.844,133.382],[-185.686,56.025],[-185.505,55.42],[-185.35,41.401],[-143.617,-0.458],[-143.62,-2.081],[-145.242,-2.078],[-185.313,38.115],[-184.811,-7.26],[-185.039,-7.96],[-185.322,-8.338],[-184.9,-46.425],[-184.366,-47.381],[-184.299,-53.486],[-144.781,-103.933],[-144.977,-105.544],[-146.587,-105.348],[-184.257,-57.26],[-183.672,-110.061],[-183.901,-110.761]]}],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.509,0.378],[0.378,-0.509],[0,0],[-0.004,-0.252],[0,0],[0,0],[0.497,-0.393],[-0.393,-0.497],[0,0],[0,0],[-0.318,-0.2],[0,0],[0,0],[-0.004,-0.252],[0,0],[0,0],[0.497,-0.393],[-0.393,-0.497],[0,0],[0,0],[-0.318,-0.2],[0,0],[-0.003,-0.216],[0,0],[-0.634,0],[0,0.634],[0,0],[0.003,0.223],[0,0],[0,0],[0.46,0.435],[0.435,-0.46],[0,0],[0,0],[0.156,0.198],[0,0],[0,0],[0.006,0.403],[0,0],[0,0],[0.509,0.378],[0.378,-0.509],[0,0],[0,0],[0.156,0.198]],"o":[[0,0],[0,0],[0.378,-0.509],[-0.509,-0.378],[0,0],[-0.15,0.202],[0,0],[0,0],[-0.393,-0.497],[-0.497,0.393],[0,0],[0,0],[0.006,0.403],[0,0],[0,0],[-0.15,0.202],[0,0],[0,0],[-0.393,-0.497],[-0.497,0.393],[0,0],[0,0],[0.006,0.403],[0,0],[-0.11,0.182],[0,0],[0,0.634],[0.634,0],[0,0],[0.108,-0.178],[0,0],[0,0],[0.435,-0.46],[-0.46,-0.435],[0,0],[0,0],[-0.004,-0.252],[0,0],[0,0],[0.312,-0.209],[0,0],[0,0],[0.378,-0.509],[-0.509,-0.378],[0,0],[0,0],[-0.004,-0.252],[0,0]],"v":[[-188.879,-111.151],[-189.722,-167.369],[-151.02,-219.52],[-151.257,-221.124],[-152.862,-220.887],[-191.796,-168.424],[-192.021,-167.723],[-191.218,-114.113],[-229.075,-162.053],[-230.686,-162.243],[-230.876,-160.632],[-191.161,-110.339],[-191.082,-105.046],[-190.545,-104.092],[-189.798,-54.258],[-190.078,-53.879],[-190.304,-53.178],[-189.677,-11.317],[-227.534,-59.258],[-229.145,-59.447],[-229.335,-57.836],[-189.62,-7.543],[-189.365,9.498],[-188.828,10.453],[-188.377,40.506],[-188.542,41.116],[-188.139,133.382],[-186.992,134.529],[-185.844,133.382],[-186.024,55.995],[-185.86,55.385],[-186.07,41.367],[-145.442,-1.566],[-145.487,-3.187],[-147.109,-3.142],[-186.119,38.082],[-186.799,-7.291],[-187.046,-7.985],[-187.338,-8.355],[-187.909,-46.44],[-187.401,-47.411],[-187.492,-53.515],[-149.303,-104.975],[-149.54,-106.58],[-151.145,-106.342],[-187.549,-57.288],[-188.34,-110.087],[-188.587,-110.781]]}],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.503,0.385],[0.385,-0.503],[0,0],[0,-0.252],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[-0.315,-0.205],[0,0],[0,0],[0,-0.252],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[-0.315,-0.205],[0,0],[0,-0.216],[0,0],[-0.634,0],[0,0.634],[0,0],[0,0.223],[0,0],[0,0],[0.454,0.442],[0.442,-0.454],[0,0],[0,0],[0.153,0.2],[0,0],[0,0],[0,0.403],[0,0],[0,0],[0.503,0.385],[0.385,-0.503],[0,0],[0,0],[0.153,0.2]],"o":[[0,0],[0,0],[0.385,-0.503],[-0.503,-0.385],[0,0],[-0.153,0.2],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[0,0.403],[0,0],[0,0],[-0.153,0.2],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[0,0.403],[0,0],[-0.113,0.181],[0,0],[0,0.634],[0.634,0],[0,0],[0.11,-0.176],[0,0],[0,0],[0.442,-0.454],[-0.454,-0.442],[0,0],[0,0],[0,-0.252],[0,0],[0,0],[0.315,-0.205],[0,0],[0,0],[0.385,-0.503],[-0.503,-0.385],[0,0],[0,0],[0,-0.252],[0,0]],"v":[[-186.193,-111.159],[-186.193,-167.383],[-146.714,-218.948],[-146.928,-220.556],[-148.536,-220.343],[-188.251,-168.469],[-188.488,-167.772],[-188.488,-114.155],[-225.622,-162.658],[-227.23,-162.872],[-227.444,-161.264],[-188.488,-110.382],[-188.488,-105.088],[-187.965,-104.125],[-187.965,-54.286],[-188.251,-53.912],[-188.488,-53.214],[-188.488,-11.348],[-225.622,-59.851],[-227.23,-60.064],[-227.444,-58.456],[-188.488,-7.574],[-188.488,9.469],[-187.965,10.432],[-187.965,40.489],[-188.139,41.096],[-188.139,133.382],[-186.992,134.529],[-185.844,133.382],[-185.844,56.011],[-185.671,55.404],[-185.671,41.384],[-144.404,-0.935],[-144.425,-2.557],[-146.047,-2.536],[-185.671,38.098],[-185.671,-7.28],[-185.907,-7.977],[-186.193,-8.351],[-186.193,-46.441],[-185.671,-47.404],[-185.671,-53.508],[-146.714,-104.391],[-146.928,-105.999],[-148.536,-105.785],[-185.671,-57.282],[-185.671,-110.087],[-185.907,-110.785]]}],"t":49}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Tree-base","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[-0.312,15.9],[0,0.137],[21.593,0],[0,-22.144],[-0.001,-0.071],[0,0],[9.871,-12.402],[0,-13.537],[-2.903,-7.872],[0,0],[11.244,-18.08],[0,-13.713],[-4.705,-11.8],[0,0],[11.04,-18.455],[0,-16.146],[-60.05,0],[0,61.582],[12.882,21.534],[0,0],[-7.964,19.976],[0,8.815],[11.103,17.66],[0,0],[-7.259,20.006],[0,6.1],[12.6,16.066],[0,0]],"o":[[0.003,-0.139],[0,-22.144],[-21.593,0],[0,0.071],[0,0],[0.162,15.85],[-12.898,16.204],[0,6.209],[0,0],[7.367,19.976],[-10.892,17.514],[0,8.815],[0,0],[7.964,19.976],[-12.882,21.534],[0,61.582],[60.05,0],[0,-16.146],[0,0],[-11.04,-18.455],[4.705,-11.8],[0,-13.853],[0,0],[-11.328,-18.017],[2.805,-7.731],[0,-13.368],[0,0],[-9.814,-12.514]],"v":[[-146.786,-407.716],[-146.782,-408.131],[-185.879,-448.226],[-224.977,-408.131],[-224.976,-407.918],[-224.976,-407.918],[-239.986,-364.244],[-259.333,-319.632],[-254.979,-298.51],[-254.979,-298.51],[-261.124,-238.196],[-277.462,-191.356],[-270.405,-160.432],[-270.405,-160.432],[-275.286,-99.455],[-294.609,-42.935],[-185.879,68.568],[-77.149,-42.935],[-96.473,-99.455],[-96.473,-99.455],[-101.354,-160.432],[-94.296,-191.356],[-110.951,-238.625],[-110.951,-238.625],[-117.401,-298.885],[-113.193,-319.632],[-132.093,-363.783],[-132.093,-363.783]]}],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[-0.073,15.903],[0.002,0.137],[21.591,-0.324],[-0.332,-22.141],[-0.002,-0.071],[0,0],[9.684,-12.549],[-0.203,-13.536],[-3.021,-7.827],[0,0],[10.972,-18.246],[-0.206,-13.711],[-4.881,-11.729],[0,0],[10.763,-18.618],[-0.242,-16.144],[-60.05,0],[0.923,61.575],[13.204,21.338],[0,0],[-7.664,20.093],[0.132,8.814],[11.367,17.491],[0,0],[-6.958,20.113],[0.091,6.099],[12.839,15.876],[0,0]],"o":[[0.001,-0.139],[-0.332,-22.141],[-21.591,0.324],[0.001,0.071],[0,0],[0.399,15.846],[-12.654,16.396],[0.093,6.209],[0,0],[7.666,19.863],[-10.629,17.675],[0.132,8.814],[0,0],[8.263,19.854],[-12.558,21.724],[0.923,61.575],[60.05,0],[-0.242,-16.144],[0,0],[-11.316,-18.287],[4.527,-11.87],[-0.208,-13.852],[0,0],[-11.597,-17.845],[2.689,-7.772],[-0.2,-13.367],[0,0],[-10,-12.365]],"v":[[-153.921,-408.266],[-153.923,-408.68],[-193.617,-448.185],[-232.109,-407.508],[-232.105,-407.296],[-232.105,-407.296],[-246.459,-363.401],[-265.135,-318.504],[-260.464,-297.45],[-260.464,-297.45],[-265.705,-237.05],[-281.339,-189.97],[-273.819,-159.157],[-273.819,-159.157],[-277.786,-98.113],[-296.26,-41.31],[-185.879,68.568],[-78.825,-44.569],[-98.993,-100.793],[-98.993,-100.793],[-104.787,-161.691],[-98.194,-192.716],[-115.556,-239.73],[-115.556,-239.73],[-122.908,-299.887],[-119.012,-320.694],[-138.571,-364.558],[-138.571,-364.558]]}],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[-0.488,15.896],[-0.002,0.137],[21.592,0.239],[0.245,-22.143],[0,-0.071],[0,0],[10.008,-12.292],[0.15,-13.536],[-2.816,-7.903],[0,0],[11.444,-17.954],[0.152,-13.712],[-4.574,-11.852],[0,0],[11.244,-18.331],[0.179,-16.145],[-60.05,0],[-0.682,61.578],[12.643,21.675],[0,0],[-8.185,19.886],[-0.098,8.815],[10.907,17.782],[0,0],[-7.48,19.925],[-0.068,6.1],[12.421,16.205],[0,0]],"o":[[0.004,-0.139],[0.245,-22.143],[-21.592,-0.239],[-0.001,0.071],[0,0],[-0.014,15.851],[-13.077,16.06],[-0.069,6.209],[0,0],[7.145,20.057],[-11.086,17.392],[-0.098,8.814],[0,0],[7.743,20.063],[-13.12,21.39],[-0.682,61.578],[60.05,0],[0.179,-16.145],[0,0],[-10.835,-18.576],[4.835,-11.748],[0.153,-13.852],[0,0],[-11.128,-18.142],[2.89,-7.699],[0.148,-13.367],[0,0],[-9.675,-12.622]],"v":[[-141.493,-407.241],[-141.484,-407.656],[-180.135,-448.182],[-219.675,-408.522],[-219.676,-408.309],[-219.676,-408.309],[-235.169,-364.804],[-255.009,-320.409],[-250.889,-299.24],[-250.889,-299.24],[-257.701,-238.997],[-274.558,-192.341],[-267.844,-161.342],[-267.844,-161.342],[-273.399,-100.422],[-293.348,-44.12],[-185.879,68.568],[-75.901,-41.711],[-94.598,-98.441],[-94.598,-98.441],[-98.803,-159.469],[-91.403,-190.312],[-107.534,-237.763],[-107.534,-237.763],[-113.315,-298.092],[-108.878,-318.79],[-127.288,-363.148],[-127.288,-363.148]]}],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[-0.073,15.903],[0.002,0.137],[21.591,-0.324],[-0.332,-22.141],[-0.002,-0.071],[0,0],[9.684,-12.549],[-0.203,-13.536],[-3.021,-7.827],[0,0],[10.972,-18.246],[-0.206,-13.711],[-4.881,-11.729],[0,0],[10.763,-18.618],[-0.242,-16.144],[-60.05,0],[0.923,61.575],[13.204,21.338],[0,0],[-7.664,20.093],[0.132,8.814],[11.367,17.491],[0,0],[-6.958,20.113],[0.091,6.099],[12.839,15.876],[0,0]],"o":[[0.001,-0.139],[-0.332,-22.141],[-21.591,0.324],[0.001,0.071],[0,0],[0.399,15.846],[-12.654,16.396],[0.093,6.209],[0,0],[7.666,19.863],[-10.629,17.675],[0.132,8.814],[0,0],[8.263,19.854],[-12.558,21.724],[0.923,61.575],[60.05,0],[-0.242,-16.144],[0,0],[-11.316,-18.287],[4.527,-11.87],[-0.208,-13.852],[0,0],[-11.597,-17.845],[2.689,-7.772],[-0.2,-13.367],[0,0],[-10,-12.365]],"v":[[-153.921,-408.266],[-153.923,-408.68],[-193.617,-448.185],[-232.109,-407.508],[-232.105,-407.296],[-232.105,-407.296],[-246.459,-363.401],[-265.135,-318.504],[-260.464,-297.45],[-260.464,-297.45],[-265.705,-237.05],[-281.339,-189.97],[-273.819,-159.157],[-273.819,-159.157],[-277.786,-98.113],[-296.26,-41.31],[-185.879,68.568],[-78.825,-44.569],[-98.993,-100.793],[-98.993,-100.793],[-104.787,-161.691],[-98.194,-192.716],[-115.556,-239.73],[-115.556,-239.73],[-122.908,-299.887],[-119.012,-320.694],[-138.571,-364.558],[-138.571,-364.558]]}],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[-0.312,15.9],[0,0.137],[21.593,0],[0,-22.144],[-0.001,-0.071],[0,0],[9.871,-12.402],[0,-13.537],[-2.903,-7.872],[0,0],[11.244,-18.08],[0,-13.713],[-4.705,-11.8],[0,0],[11.04,-18.455],[0,-16.146],[-60.05,0],[0,61.582],[12.882,21.534],[0,0],[-7.964,19.976],[0,8.815],[11.103,17.66],[0,0],[-7.259,20.006],[0,6.1],[12.6,16.066],[0,0]],"o":[[0.003,-0.139],[0,-22.144],[-21.593,0],[0,0.071],[0,0],[0.162,15.85],[-12.898,16.204],[0,6.209],[0,0],[7.367,19.976],[-10.892,17.514],[0,8.815],[0,0],[7.964,19.976],[-12.882,21.534],[0,61.582],[60.05,0],[0,-16.146],[0,0],[-11.04,-18.455],[4.705,-11.8],[0,-13.853],[0,0],[-11.328,-18.017],[2.805,-7.731],[0,-13.368],[0,0],[-9.814,-12.514]],"v":[[-146.786,-407.716],[-146.782,-408.131],[-185.879,-448.226],[-224.977,-408.131],[-224.976,-407.918],[-224.976,-407.918],[-239.986,-364.244],[-259.333,-319.632],[-254.979,-298.51],[-254.979,-298.51],[-261.124,-238.196],[-277.462,-191.356],[-270.405,-160.432],[-270.405,-160.432],[-275.286,-99.455],[-294.609,-42.935],[-185.879,68.568],[-77.149,-42.935],[-96.473,-99.455],[-96.473,-99.455],[-101.354,-160.432],[-94.296,-191.356],[-110.951,-238.625],[-110.951,-238.625],[-117.401,-298.885],[-113.193,-319.632],[-132.093,-363.783],[-132.093,-363.783]]}],"t":49}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1686,0.7216,0.6588],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":15},{"ty":4,"nm":"Tree-","mn":"","sr":1,"st":0,"op":48,"ip":0,"hd":false,"cl":"","ln":"","ddd":0,"bm":0,"tt":0,"hasMask":false,"td":0,"ao":0,"ks":{"a":{"a":0,"k":[433.313,207.153,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[1153.313,719.153,0],"ix":2},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10}},"ef":[],"shapes":[{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Tree-base","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.503,0.385],[0.385,-0.503],[0,0],[0,-0.252],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[-0.315,-0.205],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[0,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[0,0.223],[0,0],[0,0],[0.454,0.442],[0.442,-0.454],[0,0],[0,0],[0,0],[0.153,0.2]],"o":[[0,0],[0,0],[0.385,-0.503],[-0.503,-0.385],[0,0],[-0.153,0.2],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[0,0.403],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[-0.113,0.181],[0,0],[0,0.633],[0.634,0],[0,0],[0.11,-0.176],[0,0],[0,0],[0.442,-0.454],[-0.454,-0.442],[0,0],[0,0],[0,0],[0,-0.252],[0,0]],"v":[[432.999,11.551],[432.999,-32.923],[472.478,-84.488],[472.264,-86.096],[470.656,-85.882],[430.941,-34.009],[430.705,-33.312],[430.705,8.555],[393.57,-39.948],[391.962,-40.162],[391.748,-38.553],[430.705,12.329],[430.705,29.372],[431.227,30.335],[431.227,61.959],[393.57,12.773],[391.962,12.56],[391.748,14.168],[431.227,65.733],[431.227,113.113],[431.054,113.72],[431.054,206.006],[432.201,207.153],[433.348,206.006],[433.348,128.635],[433.522,128.028],[433.522,114.008],[474.788,71.689],[474.768,70.067],[473.145,70.087],[433.522,110.722],[433.522,65.344],[433.522,12.623],[433.285,11.925]]}],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.509,0.377],[0.377,-0.509],[0,0],[-0.004,-0.252],[0,0],[0,0],[0.497,-0.393],[-0.393,-0.497],[0,0],[0,0],[-0.318,-0.199],[0,0],[0,0],[0.497,-0.393],[-0.393,-0.497],[0,0],[0,0],[-0.004,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[0.004,0.223],[0,0],[0,0],[0.461,0.435],[0.435,-0.461],[0,0],[0,0],[0,0],[0.156,0.198]],"o":[[0,0],[0,0],[0.377,-0.509],[-0.509,-0.377],[0,0],[-0.15,0.203],[0,0],[0,0],[-0.393,-0.497],[-0.497,0.393],[0,0],[0,0],[0.007,0.403],[0,0],[0,0],[-0.393,-0.497],[-0.497,0.393],[0,0],[0,0],[-0.11,0.183],[0,0],[0,0.633],[0.634,0],[0,0],[0.107,-0.178],[0,0],[0,0],[0.435,-0.461],[-0.461,-0.435],[0,0],[0,0],[0,0],[-0.004,-0.252],[0,0]],"v":[[430.774,11.586],[430.048,-32.883],[468.681,-85.084],[468.442,-86.689],[466.837,-86.449],[427.973,-33.935],[427.748,-33.234],[428.431,8.627],[390.51,-39.264],[388.899,-39.451],[388.712,-37.84],[428.493,12.4],[428.77,29.442],[429.309,30.396],[429.825,62.015],[391.37,13.45],[389.759,13.263],[389.571,14.875],[429.886,65.789],[430.659,113.163],[430.495,113.772],[431.054,206.006],[432.201,207.153],[433.348,206.006],[433.032,128.648],[433.196,128.038],[432.967,114.021],[473.538,71.034],[473.491,69.413],[471.87,69.459],[432.914,110.735],[432.174,65.363],[431.314,12.649],[431.066,11.955]]}],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.5,0.389],[0.389,-0.5],[0,0],[0.002,-0.252],[0,0],[0,0],[0.506,-0.381],[-0.381,-0.506],[0,0],[0,0],[-0.313,-0.207],[0,0],[0,0],[0.506,-0.381],[-0.381,-0.506],[0,0],[0,0],[0.002,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[-0.002,0.223],[0,0],[0,0],[0.45,0.446],[0.446,-0.45],[0,0],[0,0],[0,0],[0.152,0.201]],"o":[[0,0],[0,0],[0.389,-0.5],[-0.5,-0.389],[0,0],[-0.155,0.199],[0,0],[0,0],[-0.381,-0.506],[-0.506,0.381],[0,0],[0,0],[-0.003,0.403],[0,0],[0,0],[-0.381,-0.506],[-0.506,0.381],[0,0],[0,0],[-0.114,0.18],[0,0],[0,0.633],[0.634,0],[0,0],[0.111,-0.175],[0,0],[0,0],[0.446,-0.45],[-0.45,-0.446],[0,0],[0,0],[0,0],[0.002,-0.252],[0,0]],"v":[[433.907,11.641],[434.234,-32.832],[474.091,-84.105],[473.89,-85.715],[472.28,-85.513],[432.184,-33.933],[431.943,-33.237],[431.635,8.628],[394.858,-40.147],[393.251,-40.372],[393.026,-38.766],[431.607,12.402],[431.482,29.445],[431.997,30.411],[431.765,62.034],[394.47,12.573],[392.863,12.348],[392.638,13.954],[431.737,65.808],[431.388,113.187],[431.21,113.793],[431.054,206.006],[432.201,207.153],[433.348,206.006],[433.394,128.724],[433.573,128.118],[433.676,114.099],[475.252,72.085],[475.244,70.463],[473.622,70.471],[433.7,110.813],[434.034,65.436],[434.422,12.716],[434.19,12.017]]}],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.509,0.377],[0.377,-0.509],[0,0],[-0.004,-0.252],[0,0],[0,0],[0.497,-0.393],[-0.393,-0.497],[0,0],[0,0],[-0.318,-0.199],[0,0],[0,0],[0.497,-0.393],[-0.393,-0.497],[0,0],[0,0],[-0.004,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[0.004,0.223],[0,0],[0,0],[0.461,0.435],[0.435,-0.461],[0,0],[0,0],[0,0],[0.156,0.198]],"o":[[0,0],[0,0],[0.377,-0.509],[-0.509,-0.377],[0,0],[-0.15,0.203],[0,0],[0,0],[-0.393,-0.497],[-0.497,0.393],[0,0],[0,0],[0.007,0.403],[0,0],[0,0],[-0.393,-0.497],[-0.497,0.393],[0,0],[0,0],[-0.11,0.183],[0,0],[0,0.633],[0.634,0],[0,0],[0.107,-0.178],[0,0],[0,0],[0.435,-0.461],[-0.461,-0.435],[0,0],[0,0],[0,0],[-0.004,-0.252],[0,0]],"v":[[430.774,11.586],[430.048,-32.883],[468.681,-85.084],[468.442,-86.689],[466.837,-86.449],[427.973,-33.935],[427.748,-33.234],[428.431,8.627],[390.51,-39.264],[388.899,-39.451],[388.712,-37.84],[428.493,12.4],[428.77,29.442],[429.309,30.396],[429.825,62.015],[391.37,13.45],[389.759,13.263],[389.571,14.875],[429.886,65.789],[430.659,113.163],[430.495,113.772],[431.054,206.006],[432.201,207.153],[433.348,206.006],[433.032,128.648],[433.196,128.038],[432.967,114.021],[473.538,71.034],[473.491,69.413],[471.87,69.459],[432.914,110.735],[432.174,65.363],[431.314,12.649],[431.066,11.955]]}],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[0,0],[0.503,0.385],[0.385,-0.503],[0,0],[0,-0.252],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[-0.315,-0.205],[0,0],[0,0],[0.503,-0.385],[-0.385,-0.503],[0,0],[0,0],[0,-0.216],[0,0],[-0.634,0],[0,0.633],[0,0],[0,0.223],[0,0],[0,0],[0.454,0.442],[0.442,-0.454],[0,0],[0,0],[0,0],[0.153,0.2]],"o":[[0,0],[0,0],[0.385,-0.503],[-0.503,-0.385],[0,0],[-0.153,0.2],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[0,0.403],[0,0],[0,0],[-0.385,-0.503],[-0.503,0.385],[0,0],[0,0],[-0.113,0.181],[0,0],[0,0.633],[0.634,0],[0,0],[0.11,-0.176],[0,0],[0,0],[0.442,-0.454],[-0.454,-0.442],[0,0],[0,0],[0,0],[0,-0.252],[0,0]],"v":[[432.999,11.551],[432.999,-32.923],[472.478,-84.488],[472.264,-86.096],[470.656,-85.882],[430.941,-34.009],[430.705,-33.312],[430.705,8.555],[393.57,-39.948],[391.962,-40.162],[391.748,-38.553],[430.705,12.329],[430.705,29.372],[431.227,30.335],[431.227,61.959],[393.57,12.773],[391.962,12.56],[391.748,14.168],[431.227,65.733],[431.227,113.113],[431.054,113.72],[431.054,206.006],[432.201,207.153],[433.348,206.006],[433.348,128.635],[433.522,128.028],[433.522,114.008],[474.788,71.689],[474.768,70.067],[473.145,70.087],[433.522,110.722],[433.522,65.344],[433.522,12.623],[433.285,11.925]]}],"t":49}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.0706,0.3412,0.3961],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Group","nm":"Tree-base","ix":2,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[0,57.634],[-56.2,0],[0,-57.633]],"o":[[-56.2,0],[0,-57.633],[56.2,0],[0,57.634]],"v":[[433.313,148.413],[331.554,44.058],[433.313,-318.783],[535.072,44.058]]}],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[0.94,57.626],[-56.192,0.916],[-0.94,-57.626]],"o":[[-56.2,0],[-0.94,-57.626],[56.192,-0.916],[0.94,57.626]],"v":[[433.313,148.413],[329.873,45.743],[425.701,-318.71],[533.363,42.424]]}],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[-0.424,57.632],[-56.198,-0.413],[0.424,-57.632]],"o":[[-56.2,0],[0.424,-57.632],[56.198,0.413],[-0.424,57.632]],"v":[[433.313,148.413],[332.226,43.401],[436.651,-318.682],[535.738,44.898]]}],"t":24},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[0.94,57.626],[-56.192,0.916],[-0.94,-57.626]],"o":[[-56.2,0],[-0.94,-57.626],[56.192,-0.916],[0.94,57.626]],"v":[[433.313,148.413],[329.873,45.743],[425.701,-318.71],[533.363,42.424]]}],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[56.2,0],[0,57.634],[-56.2,0],[0,-57.633]],"o":[[-56.2,0],[0,-57.633],[56.2,0],[0,57.634]],"v":[[433.313,148.413],[331.554,44.058],[433.313,-318.783],[535.072,44.058]]}],"t":49}],"ix":2}},{"ty":"fl","bm":0,"cl":"","ln":"","hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1686,0.7216,0.6588],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":16}],"ddd":0,"h":1024,"w":1440,"meta":{"a":"","k":"","d":"","g":"LottieFiles AE 0.1.20","tc":"#ffffff"},"v":"5.5.7","fr":24,"op":48,"ip":0,"assets":[]} \ No newline at end of file diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 0559996..72cee66 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -44,6 +44,7 @@ class ApiConsts { static int tabletMinLength = 500; } + class SharedPrefsConsts { static String isRememberMe = "remember_me"; static String username = "username"; diff --git a/lib/classes/lottie_consts.dart b/lib/classes/lottie_consts.dart index 58b8a32..bcc7149 100644 --- a/lib/classes/lottie_consts.dart +++ b/lib/classes/lottie_consts.dart @@ -8,4 +8,5 @@ class MyLottieConsts { static const String wrongAnswerGif = "assets/images/wrong_answer.gif"; static const String congratsGif = "assets/images/congrats.gif"; static const String loadingLottie = "assets/lottie/loading_lottie.json"; + static const String noWinnerLottie = "assets/lottie/no_winner.json"; } diff --git a/lib/config/routes.dart b/lib/config/routes.dart index dc6b553..d070364 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -22,7 +22,6 @@ import 'package:mohem_flutter_app/ui/marathon/marathon_intro_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_sponsor_video_screen.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_waiting_screen.dart'; -import 'package:mohem_flutter_app/ui/marathon/winner_screen.dart'; import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; @@ -297,7 +296,6 @@ class AppRoutes { // Marathon marathonIntroScreen: (BuildContext context) => MarathonIntroScreen(), marathonScreen: (BuildContext context) => MarathonScreen(), - marathonWinnerScreen: (BuildContext context) => WinnerScreen(), marathonSponsorVideoScreen: (BuildContext context) => const SponsorVideoScreen(), marathonWaitingScreen: (BuildContext context) => const MarathonWaitingScreen(), diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 67408b3..271d2e5 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -6,1049 +6,1039 @@ import 'dart:ui'; import 'package:easy_localization/easy_localization.dart' show AssetLoader; -class CodegenLoader extends AssetLoader{ +class CodegenLoader extends AssetLoader { const CodegenLoader(); @override - Future> load(String fullPath, Locale locale ) { + Future> load(String fullPath, Locale locale) { return Future.value(mapLocales[locale.toString()]); } - static const Map ar_SA = { - "mohemm": "Mohemm", - "english": "English", - "arabic": "عربي", - "login": "تسجيل الدخول", - "pleaseEnterLoginDetails": "الرجاء إدخال التفاصيل أدناه لتسجيل الدخول", - "username": "اسم المستخدم", - "password": "كلمة المرور", - "welcomeBack": "مرحبا بعودتك", - "wouldYouLikeToLoginWithCurrentUsername": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟", - "lastLoginDetails": "تفاصيل تسجيل الدخول الأخير:", - "verificationType": "نوع التحقق:", - "pleaseVerify": "ارجوك تحقق", - "pleaseVerifyForBio": "الرجاء التحقق من تسجيل الدخول باستخدام أحد هذه الخيارات", - "verifyThroughFace": "تحقق من خلال الوجه", - "verifyThroughFingerprint": "تحقق من خلال بصمة الإصبع", - "verifyThroughSMS": "تحقق من خلال الرسائل القصيرة", - "verifyThroughWhatsapp": "تحقق من خلال Whatsapp", - "useAnotherAccount": "استخدم حسابا آخر", - "pleaseEnterTheVerificationCodeSentTo": "الرجاء إدخال رمز التحقق المرسل إلى ", - "theVerificationCodeWillExpireIn": "ستنتهي صلاحية رمز التحقق في ", - "goodMorning": "صباح الخير", - "markAttendance": "علامة الحضور", - "timeLeftToday": "الوقت المتبقي اليوم", - "checkIn": "تحقق في", - "workList": "قائمة العمل", - "leaveBalance": "رصيد الاجازات", - "missingSwipes": "تسجيل بصمة حضور", - "ticketBalance": "رصيد التذكرة", - "other": "آخر", - "services": "خدمات", - "viewAllServices": "عرض جميع الخدمات", - "monthlyAttendance": "الحضور الشهري", - "vacationRule": "قاعدة الاجازات", - "vacationType": "نوع الاجازة", - "startDateT": "تاريخ البدء", - "endDateT": "تاريخ الانتهاء", - "workFromHome": "العمل من المنزل", - "ticketRequest": "طلب تذكرة", - "viewAllOffers": "مشاهدة جميع العروض", - "offers": "عروض & ", - "discounts": "الخصومات", - "newString": "جديد", - "setTheNewPassword": "قم بتعيين كلمة المرور الجديدة", - "typeYourNewPasswordBelow": "اكتب كلمة المرور الجديدة أدناه", - "confirmPassword": "تأكيد كلمة المرور", - "update": "تحديث", - "title": "عنوان", - "home": "الرئيسية", - "mySalary": "راتبي", - "createRequest": "إنشاء طلب", - "forgotPassword": "هل نسيت كلمة السر", - "employeeId": "هوية الموظف", - "loginCodeWillSentToMobileNumber": "الرجاء إدخال معرف الموظف الخاص بك ، وسيتم إرسال رمز تسجيل الدخول إلى رقم هاتفك المحمول", - "changePassword": "تغيير كلمة المرور", - "ok": "موافق", - "confirm": "تؤكد", - "passwordChangedSuccessfully": "تم تغيير الرقم السري بنجاح", - "itemsForSale": "سلع للبيع", - "attendanceDetails": "تفاصيل الحضور", - "order": "الطلبات", - "earlyOut": "الخروج مبكرا", - "shortage": "ساعات التقصير", - "excess": "فائض", - "lateIn": "القدوم المتاخر", - "approvedCheckOut": "اعتماد وقت الخروج", - "approvedCheckIn": "اعتماد وقت الدخول", - "actualCheckOut": "وقت الخروج", - "actualCheckIn": "وقت الدخول", - "present": "حضور", - "pres": "حضور", - "shiftTime": "وقت التناوب", - "absent": "غياب", - "attendance": "الحضور", - "scheduleDays": "ايام العمل", - "offDays": "ايام الراحه", - "nonAnalyzed": "لايوجد تحليل", - "shortageHour": "ساعات التقصير", - "stats": "الحاله", - "completed": "تم اكمال", - "msg": "Hello {} in the {} world ", - "msg_named": "{} are written in the {lang} language", - "clickMe": "Click me", - "doNotUseRecentPassword": "لا تستخدم كلمة مرور حديثة", - "atLeastOneLowercase": "حرف صغير واحد على الأقل", - "atLeastOneUppercase": "حرف كبير واحد على الأقل", - "atLeastOneNumeric": "رقم واحد على الأقل", - "minimum8Characters": "8 أحرف على الأقل", - "doNotAddRepeatingLetters": "لا تقم بإضافة أحرف متكررة", - "itShouldContainSpecialCharacter": "يجب أن يحتوي على طابع خاص", - "confirmPasswordMustMatch": "يجب أن يتطابق تأكيد كلمة المرور", - "sms": "رسالة قصيرة", - "fingerPrint": "بصمة", - "face": "التعرف على الوجه", - "whatsapp": "واتس اب", - "reject": "يرفض", - "approve": "يوافق", - "cancel": "إلغاء", - "requestedItems": "العناصر المطلوبة", - "request": "طلب", - "myRequest": "طلبي", - "actions": "أجراءات", - "delegate": "مندوب", - "request_info": "اطلب معلومات", - "attachments": "المرفقات", - "info": "معلومات", - "employeeNumber": "رقم الموظف", - "assignmentNumber": "رقم الواجب", - "employeeName": "اسم الموظف", - "scheduleDate": "تاريخ الجدول الزمني", - "shiftType": "نوع التحول", - "shift": "يحول", - "breakText": "استراحة", - "actualSwipeStart": "بدء التمرير الفعلي", - "actualSwipeEnd": "التمرير الفعلي للنهاية", - "approvedSwipeStart": "وافق انتقاد البدء", - "approvedSwipeStartReason": "تمت الموافقة على سبب بدء التمرير السريع", - "approvedSwipeEnd": "تمت الموافقة على تمرير النهاية", - "approvedSwipeEndReason": "الموافقة على سبب إنهاء التمرير", - "from": "من", - "to": "ل", - "sent": "أرسلت", - "closed": "مغلق", - "id": "هوية شخصية", - "responder": "المستجيب", - "jobTitle": "عنوان وظيفي", - "grade": "درجة", - "jobCategory": "تصنيف الوظيفة", - "category": "فئة", - "employeeEmailAddress": "عنوان البريد الإلكتروني للموظف", - "payrollBranch": "فرع الرواتب", - "yourChangeHasBeenSavedSuccessfully": "تم حفظ التغيير الخاص بك بنجاح", - "code": "شفرة", - "unit": "وحدة", - "quantity": "كمية", - "dateRequired": "التاريخ مطلوب", - "lineStatus": "حالة الخط", - "statusDate": "تاريخ الحالة", - "transactionType": "نوع المعاملة", - "operatingUnit": "وحدة التشغيل", - "organizationCode": "كود المنظمة", - "organization": "منظمة", - "fromSubInventory": "من الجرد الفرعي", - "fromLocator": "من محدد المواقع", - "toSubInventory": "إلى الجرد الفرعي", - "toLocator": "إلى محدد المواقع", - "shipToLocator": "شحن إلى محدد المواقع", - "itemHistory": "تاريخ العنصر", - "mfg": "مبدع", - "lineType": "نوع الخط", - "price": "السعر", - "lineAmount": "مبلغ الخط", - "lineDiscount": "خصم الخط٪", - "needByDate": "القادمة إلى الأمام", - "promisedDate": "التسجيل وعد", - "deliverToLocation": "تسليم إلى الموقع", - "requisitionNumber": "رقم الطلب", - "requester": "مقدم الطلب", - "quotationAnalysis": "تحليل الاقتباس", - "subject": "موضوعات", - "description": "وصف", - "supplier": "المورد", - "site": "موقع", - "buyer": "مشتر", - "preparer": "معد", - "creationDate": "تاريخ الإنشاء", - "shipToLocation": "الشحن الى الموقع", - "quotationNumber": "رقم الإقتباس", - "quotationDate": "تاريخ الاقتباس", - "paymentTerms": "شروط الدفع", - "currency": "عملة", - "grossAmount": "المبلغ الإجمالي", - "discountAmount": "مقدار الخصم", - "customDuty": "الرسوم الجمركية", - "shipHandle": "مقبض السفينة", - "otherCharges": "رسوم أخرى", - "totalPOAmountWithVAT": "إجمالي مبلغ الشراء مع ضريبة القيمة المضافة", - "totalPOAmountInWords": "إجمالي مبلغ أمر الشراء بالكلمات", - "requestNumber": "رقم الطلب", - "uom": "UOM", - "operatingCode": "كود التشغيل", - "poNumber": "PO عدد", - "revision": "مراجعة", - "quantityOrdered": "الكمية المطلوبة", - "quantityReceived": "الكمية المستلمة", - "bonusQuantity": "كمية المكافأة", - "purchasePrice": "سعر الشراء", - "discountPer": "خصم ٪", - "balanceQuantity": "كمية التوازن", - "netPrice": "السعر الصافي", - "closureStatus": "حالة الإغلاق", - "quotationNetPrice": "صافي سعر الاقتباس", - "quotationUOM": "اقتباس UOM", - "quotationQty": "اقتباس الكمية", - "itemCode": "رمز الصنف", - "vendorName": "اسم البائع", - "quotationMFGPartNumber": "رقم الجزء MFG الاقتباس", - "quotationDeliveryDate": "تاريخ تسليم عرض الأسعار", - "quotationBonusQuantity": "كمية مكافأة الاقتباس", - "quotationLineTotal": "مجموع خط الاقتباس", - "rfqUOM": "RFQ UOM", - "rfqQty": "RFQ الكمية", - "rfqNumber": "رقم RFQ", - "human": "بشري", - "resources": "موارد", - "details": "تفاصيل", - "noDataAvailable": "لا تتوافر بيانات", - "productName": "اسم المنتج", - "productDescription": "وصف المنتج", - "unitPrice": "سعر الوحده", - "manufacturerName": "اسم المصنع", - "manufacturerPartName": "اسم جزء الشركة المصنعة", - "supplierName": "اسم المورد", - "supplierContact": "الاتصال بالمورد", - "chargeToPatient": "المسؤول عن المريض", - "justification": "التبرير", - "itemDescription": "وصف السلعة", - "groupCode": "كود المجموعة", - "primaryUOM": "UOM الابتدائية", - "subgroupDescription": "وصف المجموعة الفرعية", - "subgroupCode": "رمز المجموعة الفرعية", - "groupDescription": "وصف المجموعة", - "templateName": "اسم القالب", - "itemCreationStatus": "حالة إنشاء العنصر", - "standardizationApprovalStatus": "حالة الموافقة على التقييس", - "standardizationApprovalRejectionReason": "سبب رفض الموافقة على التقييس", - "analyzedBy": "تحليل بواسطة", - "approvedDate": "تاريخ الموافقة", - "itemType": "نوع العنصر", - "relatedTo": "متعلق ب", - "requestDate": "تاريخ الطلب", - "analyzedDate": "تاريخ التحليل", - "urgent": "العاجلة", - "requestDetails": "طلب تفاصيل", - "approvalLevel": "مستوى الموافقة", - "requesterDetails": "تفاصيل مقدم الطلب", - "myAttendance": "حضوري", - "workOnBreak": "التعويض عن العمل اثناءالاستراحه", - "next": "التالي", - "apply": "يتقدم", - "mobile": "التليفون المحمول", - "completingYear": "نحن نقدر لك لاستكمال خدمة", - "year": "سنة", - "month": "شهر", - "day": "يوم", - "address": "العنوان", - "phoneNumber": "رقم الجوال", - "businessGroup": "مجموعة العمل", - "Payroll": "الراتب", - "civilIdentityNumber": "رقم الهويه", - "dateOfBirth": "تاريخ الميلاد", - "maritalStatus ": "الحالة الاجتماعية", - "fullName": "الأسم الكامل", - "remove": "حذف", - "submit": "ارسال", - "areYouSureYouWantToSubmit": "هل أنت متأكد أنك تريد أن تقدم؟", - "comments": "تعليقات", - "writeComment": "أكتب تعليقا", - "approversList": "قائمة الموافقين", - "yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات", - "monthlyPaySlip": "قسيمة الراتب الشهرية", - "particular": "خاص", - "earnings": "أرباح", - "deductions": "الخصومات", - "paymentMethodName": "اسم طريقة الدفع", - "bankName": "اسم البنك", - "branchCode": "رمز الفرع", - "accountNo": "رقم الحساب", - "summaryOfInformation": "ملخص المعلومات", - "totalPayAmount": "المبلغ الإجمالي للدفع", - "paymentInformation": "معلومات الدفع", - "performance": "تقييم الاداء", - "performanceEvaluation": "تقييم الأداء في", - "performanceEvaluationIn": "تقييم أدائك في", - "valuationIn": "تقييم الأداء في", - "amount": "مقدار", - "correctCurrentDatails": "تعديل او اكمال التفاصيل الحالية", - "selectType": " حدد نوع التغيير الذي تريد القيام به", - "enterNewInfo": " أدخل معلومات جديدة بسبب تغيير حقيقي في التفاصيل الحالية (على سبيل المثال بسبب تغيير في الحالة الاجتماعية", - "endDate": "تاريخ الانتهاء", - "removeThisMember": "هل انت متأكد تريد ازالة هذا العضو؟", - "wantUpdateThisMember ": "هل انت متأكد تريد تحديث بيانات هذا العضو؟", - "addNewFamilyMember": "اضافة عضو جديد", - "addRow": "اضافة صف جديد", - "pleaseSelect": "الرجاء اختيار", - "delete": "حذف", - "edit": "تعديل", - "add": "اضافه", - "myProfile": "معلوماتي", - "mowadhafhi": "موظفي", - "searchAnnouncements": "بحث الاعلانات", - "announcements": "اعلانات", - "swipeRequest": "طلب تسجيل حضور", - "serviceType": "نوع الخدمه", - "departmentName": "اسم القسم", - "selectDepartment": "اختر القسم", - "relatedSection": "قسم ذو صله", - "selectSection": "اختيار القسم", - "relatedTopic": "عنوان ذو صله", - "selectTopic": "اختر العنوان", - "supportingDocument": "ارفاق مستند", - "mowadhafhiRequest": "طلب موظفي", - "ticketReference": "مرجع التذكره", - "section": "القسم", - "topic": "العنوان", - "actionBy": "الرد بواسطة", - "pending": "معلق", - "pendingTransactions": "المعاملات المعلقه", - "selectRequestType": "الرجاء اختيار نوع الطلب", - "dateFrom": "من تاريخ", - "dateTo": "الى تاريخ", - "requestName": "اسم الطلب", - "createdFor": "انشاء لأجل", - "requestCreatedSuccessfully": "تم انشاء الطلب بنجاح", - "search": "بحث", - "wantToReject": "هل انت متأكد تريد الرفض", - "requestType": "نوع الطلب", - "employeeDigitalID": "هويةالموظف الرقمية", - "businessCard": "بطاقة العمل", - "viewBusinessCard": "عرض بطاقة العمل", - "logout": "تسجيل خروج", - "checkOut": "وقت الخروج", - "regular": "منتظم", - "mark": "علامة", - "selectMethodOfAttendance": "اختر طريقة تسجيل الحضور", - "comeNearHMGWifi": "HMG wifi من فضلك اقترب من", - "deliverNotificationToMeRegardless": "تسليم الإخطارات إلي بغض النظر عن أي قواعد عامة", - "close": "أغلق", - "respond": "يرد", - "vacationRuleAdded": "تمت إضافة قاعدة الإجازة", - "selectTypeT": "اختر صنف", - "notification": "تنبيه", - "selectNotification": "حدد إعلام", - "ifAllSelectedYouWillSkip": "* إذا تم تحديد الكل ، فستنتقل إلى الخطوة 3", - "applyForVacationRule": "التقدم بطلب للحصول على قانون الإجازة", - "step1": "الخطوة 1", - "step2": "الخطوة 2", - "step3": "الخطوه 3", - "message": "رسالة", - "writeAMessage": "اكتب رسالة", - "notificationReassign": "إعادة تعيين الإخطار", - "selectEmployee": "حدد الموظف", - "searchEmployeeForReplacement": "ابحث عن موظف بديل", - "searchForEmployee": "ابحث عن موظف", - "pleaseSpecifyEndTime": "الرجاء تحديد وقت الانتهاء", - "pleaseSelectNotificationReassign": "يرجى تحديد إعادة تعيين الإخطار", - "pleaseSelectEmployeeForReplacement": "الرجاء تحديد موظف للاستبدال", - "pleaseSelectAction": "الرجاء تحديد الإجراء", - "pleaseSelectDate": "الرجاء تحديد التاريخ", - "todayAttendance": "حضور اليوم", - "viewAttendance": "عرض الحضور", - "teamMembers": "اعضاءالفريق", - "profileDetails": "الملف الشخصي", - "noResultsFound": "لايوجد نتائج", - "searchBy": "بحث بواسطة", - "myTeamMembers": "اعضاء فريقي", - "save": "حفظ", - "TurnNotificationsFor": "تفعيل الاشعارات", - "worklistSettings": "اعدادات الاشعارات", - "absenceType": "نوع الغياب", - "absenceCategory": "فئة الغياب", - "days": "أيام", - "hours": "ساعات", - "approvalStatus": "حالة القبول", - "absenceStatus": "حالة الغياب", - "subordinateLeave": "إجازة التابعيين", - "numberDays": "عدد الأيام", - "poweredBy": "مشغل بواسطة", - "cloudSolutions": "حلول السحابة", - "selectTemplate": "حدد قالب", - "myPostedAds": "إعلاناتي المنشورة", - "browseCategories": "تصفح الفئات", - "searchItems": "عناصر البحث", - "offerAndDiscounts": "العروض والخصومات", - "offerValid": "العرض صالح", - "offerExpired": "انتهى العرض", - "whatAreYouOffering": "ما الذي تعرضه؟", - "selectCategory": "اختر الفئة", - "inProgress": "في تَقَدم", - "locked": "مقفل", - "addDetails": "أضف التفاصيل", - "reviewAndSell": "مراجعة وبيع", - "itemTitle": "عنوان البند", - "itemCondition": "حالة السلعة", - "used": "تستخدم", - "region": "منطقة", - "selectRegion": "اختر المنطقة", - "itemPrice": "سعر السلعة", - "itemPhotos": "صور البند", - "itemInfo": "معلومات العنصر", - "uploadAttachment": "تحميل المرفق", - "selectFromGalleryOrOpenCamera": "اختر من المعرض أو فتح الكاميرا", - "openCamera": "فتح\nالكاميرا", - "uploadFromGallery": "تحميل من\nملفات الجهاز", - "name": "الأسم", - "email": "ايميل", - "noHistoryAvailable": "لايوجد سجل بيانات سابقة ", - "purchaseRequisition": "طلب شراء", - "moveOrder": "طلب تغيير", - "humanResource": "الموارد البشريه", - "purchaseOrder": "امر شراء", - "ITGForms": "ITG نماذج", - "itemCreation": "أنشاء عنصر", - "stamp": "ختم", - "addFavoriteList": "هل تريد اضافة {name} لقائمة المفضله", - "feedbackUserExperience": "هذا للحصول على تعليقات حول تجربة المستخدم", - "rateUI": ".1 كيف تريد تقييم التطبيق", - "submitSurvey": "ارسال الاستبيان", - "typeHere": "اكتب هنا", - "infoDetail": "تفاصيل المعلومات", - "amount_detail": "تفاصيل المبلغ", - "currentBalance": "الرصيد الحالي", - "currentLeaveBalance": "رصيد الاجازات الحالي", - "calculatedDays": "الايام المحسوبه", - "totalDays": "مجموع الأيام", - "usedBalance": "المستخدم", - "infants": "رضيع", - "child": "طفل", - "adult": "بالغ", - "updateMember": "هل انت متأكد تريد تحديث بيانات هذا العضو؟", - "fieldIsEmpty": "'{data}' الحقل فارغ. الرجاء التحديد", - "pleaseEnterComments": "الرجاء إدخال التعليقات", - "skip": "يتخطى", - "typeCurrentPasswordBelow": "اكتب كلمة المرور الحاليه", - "currentPassword": "كلمة المرور الحاليه", - "concurrentReports": "التقارير المتزامنه", - "EnterNewAddressMoved": "أدخل عنوان جديد إذا كنت قد انتقلت", - "CorrectAddress": "تصحيح أو تعديل هذا العنوان", - "SelectChangeWantToMake": " حدد نوع التغيير الذي تريد القيام به.", - "profile": { - "reset_password": { - "label": "Reset Password", - "username": "Username", - "password": "password" - }, - "profileCompletionPer": "استكمال الملف الشخصي", - "completeProfile": "الملف الشخصي الكامل", - "personalInformation": "معلومات شخصية", - "basicDetails": "تفاصيل أساسية", + static const Map ar_SA = { + "mohemm": "Mohemm", + "english": "English", + "arabic": "عربي", + "login": "تسجيل الدخول", + "pleaseEnterLoginDetails": "الرجاء إدخال التفاصيل أدناه لتسجيل الدخول", + "username": "اسم المستخدم", + "password": "كلمة المرور", + "welcomeBack": "مرحبا بعودتك", + "wouldYouLikeToLoginWithCurrentUsername": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟", + "lastLoginDetails": "تفاصيل تسجيل الدخول الأخير:", + "verificationType": "نوع التحقق:", + "pleaseVerify": "ارجوك تحقق", + "pleaseVerifyForBio": "الرجاء التحقق من تسجيل الدخول باستخدام أحد هذه الخيارات", + "verifyThroughFace": "تحقق من خلال الوجه", + "verifyThroughFingerprint": "تحقق من خلال بصمة الإصبع", + "verifyThroughSMS": "تحقق من خلال الرسائل القصيرة", + "verifyThroughWhatsapp": "تحقق من خلال Whatsapp", + "useAnotherAccount": "استخدم حسابا آخر", + "pleaseEnterTheVerificationCodeSentTo": "الرجاء إدخال رمز التحقق المرسل إلى ", + "theVerificationCodeWillExpireIn": "ستنتهي صلاحية رمز التحقق في ", + "goodMorning": "صباح الخير", + "markAttendance": "علامة الحضور", + "timeLeftToday": "الوقت المتبقي اليوم", + "checkIn": "تحقق في", + "workList": "قائمة العمل", + "leaveBalance": "رصيد الاجازات", + "missingSwipes": "تسجيل بصمة حضور", + "ticketBalance": "رصيد التذكرة", + "other": "آخر", + "services": "خدمات", + "viewAllServices": "عرض جميع الخدمات", + "monthlyAttendance": "الحضور الشهري", + "vacationRule": "قاعدة الاجازات", + "vacationType": "نوع الاجازة", + "startDateT": "تاريخ البدء", + "endDateT": "تاريخ الانتهاء", + "workFromHome": "العمل من المنزل", + "ticketRequest": "طلب تذكرة", + "viewAllOffers": "مشاهدة جميع العروض", + "offers": "عروض & ", + "discounts": "الخصومات", + "newString": "جديد", + "setTheNewPassword": "قم بتعيين كلمة المرور الجديدة", + "typeYourNewPasswordBelow": "اكتب كلمة المرور الجديدة أدناه", + "confirmPassword": "تأكيد كلمة المرور", + "update": "تحديث", + "title": "عنوان", + "home": "الرئيسية", + "mySalary": "راتبي", + "createRequest": "إنشاء طلب", + "forgotPassword": "هل نسيت كلمة السر", + "employeeId": "هوية الموظف", + "loginCodeWillSentToMobileNumber": "الرجاء إدخال معرف الموظف الخاص بك ، وسيتم إرسال رمز تسجيل الدخول إلى رقم هاتفك المحمول", + "changePassword": "تغيير كلمة المرور", + "ok": "موافق", + "confirm": "تؤكد", + "passwordChangedSuccessfully": "تم تغيير الرقم السري بنجاح", + "itemsForSale": "سلع للبيع", + "attendanceDetails": "تفاصيل الحضور", + "order": "الطلبات", + "earlyOut": "الخروج مبكرا", + "shortage": "ساعات التقصير", + "excess": "فائض", + "lateIn": "القدوم المتاخر", + "approvedCheckOut": "اعتماد وقت الخروج", + "approvedCheckIn": "اعتماد وقت الدخول", + "actualCheckOut": "وقت الخروج", + "actualCheckIn": "وقت الدخول", + "present": "حضور", + "pres": "حضور", + "shiftTime": "وقت التناوب", + "absent": "غياب", + "attendance": "الحضور", + "scheduleDays": "ايام العمل", + "offDays": "ايام الراحه", + "nonAnalyzed": "لايوجد تحليل", + "shortageHour": "ساعات التقصير", + "stats": "الحاله", + "completed": "تم اكمال", + "msg": "Hello {} in the {} world ", + "msg_named": "{} are written in the {lang} language", + "clickMe": "Click me", + "doNotUseRecentPassword": "لا تستخدم كلمة مرور حديثة", + "atLeastOneLowercase": "حرف صغير واحد على الأقل", + "atLeastOneUppercase": "حرف كبير واحد على الأقل", + "atLeastOneNumeric": "رقم واحد على الأقل", + "minimum8Characters": "8 أحرف على الأقل", + "doNotAddRepeatingLetters": "لا تقم بإضافة أحرف متكررة", + "itShouldContainSpecialCharacter": "يجب أن يحتوي على طابع خاص", + "confirmPasswordMustMatch": "يجب أن يتطابق تأكيد كلمة المرور", + "sms": "رسالة قصيرة", + "fingerPrint": "بصمة", + "face": "التعرف على الوجه", + "whatsapp": "واتس اب", + "reject": "يرفض", + "approve": "يوافق", + "cancel": "إلغاء", + "requestedItems": "العناصر المطلوبة", + "request": "طلب", + "myRequest": "طلبي", + "actions": "أجراءات", + "delegate": "مندوب", + "request_info": "اطلب معلومات", + "attachments": "المرفقات", + "info": "معلومات", + "employeeNumber": "رقم الموظف", + "assignmentNumber": "رقم الواجب", + "employeeName": "اسم الموظف", + "scheduleDate": "تاريخ الجدول الزمني", + "shiftType": "نوع التحول", + "shift": "يحول", + "breakText": "استراحة", + "actualSwipeStart": "بدء التمرير الفعلي", + "actualSwipeEnd": "التمرير الفعلي للنهاية", + "approvedSwipeStart": "وافق انتقاد البدء", + "approvedSwipeStartReason": "تمت الموافقة على سبب بدء التمرير السريع", + "approvedSwipeEnd": "تمت الموافقة على تمرير النهاية", + "approvedSwipeEndReason": "الموافقة على سبب إنهاء التمرير", + "from": "من", + "to": "ل", + "sent": "أرسلت", + "closed": "مغلق", + "id": "هوية شخصية", + "responder": "المستجيب", + "jobTitle": "عنوان وظيفي", + "grade": "درجة", + "jobCategory": "تصنيف الوظيفة", + "category": "فئة", + "employeeEmailAddress": "عنوان البريد الإلكتروني للموظف", + "payrollBranch": "فرع الرواتب", + "yourChangeHasBeenSavedSuccessfully": "تم حفظ التغيير الخاص بك بنجاح", + "code": "شفرة", + "unit": "وحدة", + "quantity": "كمية", + "dateRequired": "التاريخ مطلوب", + "lineStatus": "حالة الخط", + "statusDate": "تاريخ الحالة", + "transactionType": "نوع المعاملة", + "operatingUnit": "وحدة التشغيل", + "organizationCode": "كود المنظمة", + "organization": "منظمة", + "fromSubInventory": "من الجرد الفرعي", + "fromLocator": "من محدد المواقع", + "toSubInventory": "إلى الجرد الفرعي", + "toLocator": "إلى محدد المواقع", + "shipToLocator": "شحن إلى محدد المواقع", + "itemHistory": "تاريخ العنصر", + "mfg": "مبدع", + "lineType": "نوع الخط", + "price": "السعر", + "lineAmount": "مبلغ الخط", + "lineDiscount": "خصم الخط٪", + "needByDate": "القادمة إلى الأمام", + "promisedDate": "التسجيل وعد", + "deliverToLocation": "تسليم إلى الموقع", + "requisitionNumber": "رقم الطلب", + "requester": "مقدم الطلب", + "quotationAnalysis": "تحليل الاقتباس", + "subject": "موضوعات", + "description": "وصف", + "supplier": "المورد", + "site": "موقع", + "buyer": "مشتر", + "preparer": "معد", + "creationDate": "تاريخ الإنشاء", + "shipToLocation": "الشحن الى الموقع", + "quotationNumber": "رقم الإقتباس", + "quotationDate": "تاريخ الاقتباس", + "paymentTerms": "شروط الدفع", + "currency": "عملة", + "grossAmount": "المبلغ الإجمالي", + "discountAmount": "مقدار الخصم", + "customDuty": "الرسوم الجمركية", + "shipHandle": "مقبض السفينة", + "otherCharges": "رسوم أخرى", + "totalPOAmountWithVAT": "إجمالي مبلغ الشراء مع ضريبة القيمة المضافة", + "totalPOAmountInWords": "إجمالي مبلغ أمر الشراء بالكلمات", + "requestNumber": "رقم الطلب", + "uom": "UOM", + "operatingCode": "كود التشغيل", + "poNumber": "PO عدد", + "revision": "مراجعة", + "quantityOrdered": "الكمية المطلوبة", + "quantityReceived": "الكمية المستلمة", + "bonusQuantity": "كمية المكافأة", + "purchasePrice": "سعر الشراء", + "discountPer": "خصم ٪", + "balanceQuantity": "كمية التوازن", + "netPrice": "السعر الصافي", + "closureStatus": "حالة الإغلاق", + "quotationNetPrice": "صافي سعر الاقتباس", + "quotationUOM": "اقتباس UOM", + "quotationQty": "اقتباس الكمية", + "itemCode": "رمز الصنف", + "vendorName": "اسم البائع", + "quotationMFGPartNumber": "رقم الجزء MFG الاقتباس", + "quotationDeliveryDate": "تاريخ تسليم عرض الأسعار", + "quotationBonusQuantity": "كمية مكافأة الاقتباس", + "quotationLineTotal": "مجموع خط الاقتباس", + "rfqUOM": "RFQ UOM", + "rfqQty": "RFQ الكمية", + "rfqNumber": "رقم RFQ", + "human": "بشري", + "resources": "موارد", + "details": "تفاصيل", + "noDataAvailable": "لا تتوافر بيانات", + "productName": "اسم المنتج", + "productDescription": "وصف المنتج", + "unitPrice": "سعر الوحده", + "manufacturerName": "اسم المصنع", + "manufacturerPartName": "اسم جزء الشركة المصنعة", + "supplierName": "اسم المورد", + "supplierContact": "الاتصال بالمورد", + "chargeToPatient": "المسؤول عن المريض", + "justification": "التبرير", + "itemDescription": "وصف السلعة", + "groupCode": "كود المجموعة", + "primaryUOM": "UOM الابتدائية", + "subgroupDescription": "وصف المجموعة الفرعية", + "subgroupCode": "رمز المجموعة الفرعية", + "groupDescription": "وصف المجموعة", + "templateName": "اسم القالب", + "itemCreationStatus": "حالة إنشاء العنصر", + "standardizationApprovalStatus": "حالة الموافقة على التقييس", + "standardizationApprovalRejectionReason": "سبب رفض الموافقة على التقييس", + "analyzedBy": "تحليل بواسطة", + "approvedDate": "تاريخ الموافقة", + "itemType": "نوع العنصر", + "relatedTo": "متعلق ب", + "requestDate": "تاريخ الطلب", + "analyzedDate": "تاريخ التحليل", + "urgent": "العاجلة", + "requestDetails": "طلب تفاصيل", + "approvalLevel": "مستوى الموافقة", + "requesterDetails": "تفاصيل مقدم الطلب", + "myAttendance": "حضوري", + "workOnBreak": "التعويض عن العمل اثناءالاستراحه", + "next": "التالي", + "apply": "يتقدم", + "mobile": "التليفون المحمول", + "completingYear": "نحن نقدر لك لاستكمال خدمة", + "year": "سنة", + "month": "شهر", + "day": "يوم", "address": "العنوان", - "contactDetails": "بيانات التواصل", - "familyDetails": "تفاصيل عائلية", - "effectiveDate": "تاريخ النفاذ", - "country": "دولة" - }, - "clicked": { - "zero": "You clicked {} times!", - "one": "You clicked {} time!", - "two": "You clicked {} times!", - "few": "You clicked {} times!", - "many": "You clicked {} times!", - "other": "You clicked {} times!" - }, - "gender": { - "male": "Hi man ;) ", - "female": "Hello girl :)", - "with_arg": { - "male": "Hi man ;) {}", - "female": "Hello girl :) {}" - } - }, - "reset_locale": "إعادة ضبط اللغة", - "chat": "دردشة", - "mychats": "دردشاتي", - "advancedSearch": "بحث متقدم", - "openNot": "التبليغات المفتوحة", - "fyi": "تبليغات للعلم", - "toDo": "تبليغات الأعمال", - "all": "كل التبليغات", - "meNot": "تبليغات صادرة مني", - "view": "عرض", - "fromUserName": "من", - "sentDate": "تاريخ الإرسال", - "itemTypeDisplayName": "اسم العرض", - "none": "بدون", - "createNewChat": "إنشاء محادثة جديدة", - "brainMarathon": "ماراثون الدماغ", - "contestTopicAbout": "سيكون موضوع المسابقة حول:", - "gameDate": "تاريخ اللعبة:", - "gameTime": "وقت اللعب:", - "joinMarathon": "انضم إلى ماراثون", - "joinDemoMarathon": "انضم إلى الماراثون التجريبي", - "minutes": "الدقائق", - "seconds": "ثواني", - "note": "ملحوظة:", - "demoMarathonNoteP1": "يمكنك لعب ماراثون العرض لتتعلم كيف يعمل. يمكنك الانضمام إلى ماراثون", - "demoMarathonNoteP2": "خمس دقائق", - "demoMarathonNoteP3": "قبل الوقت الفعلي.", - "sponsoredBy": "برعاية:", - "question": "سؤال", - "marathoners": "الماراثون", - "prize": "جائزة:", - "winnerSelection": "اختيار الفائز", - "qualifiers": "تصفيات", - "getReadyForContest": "استعد للمسابقة القادمة:", - "winnerSelectedRandomly": "سيتم اختيار الفائز عشوائياً من بين التصفيات.", - "fingersCrossed": "تشابك الاصابع!!!", - "congrats": "مبروك !!!", - "allQuestionsCorrect": "لقد أجبت على جميع الأسئلة بشكل صحيح.", - "otp": "OTP", - "verification": "تَحَقّق", - "resend": "إعادة إرسال", - "codeExpire": "انتهت صلاحية رمز التحقق", - "typeheretoreply": "اكتب هنا للرد", - "favorite": "مفضلتي", - "searchfromchat": "البحث من الدردشة", - "yourAnswerCorrect": "إجابتك صحيحة", - "youMissedTheQuestion": "نفد منك الوقت. أنت خارج اللعبة. لكن يمكنك الاستمرار وكمشاهد.", - "wrongAnswer": "إجابتك غير صحيحة. أنت خارج اللعبة. لكن يمكنك الاستمرار وكمشاهد.", - "oops": "أوه!!!", - "winner": "الفائز", - "youWantToLeaveMarathon": "هل أنت متأكد أنك تريد العودة؟ سوف تخرج من المسابقة.", - "ourSponsor": "راعينا:", - "startingIn": "يبدأ في", - "youAreOutOfContest": "أنت خارج المسابقة.", - "winners": "الفائزين!!!", - "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية" -}; -static const Map en_US = { - "mohemm": "Mohemm", - "english": "English", - "arabic": "عربي", - "login": "Login", - "pleaseEnterLoginDetails": "Please enter the detail below to login", - "username": "Username", - "password": "Password", - "welcomeBack": "Welcome back", - "wouldYouLikeToLoginWithCurrentUsername": "Would you like to login with current Username?", - "lastLoginDetails": "Last Login Details:", - "verificationType": "Verification Type:", - "pleaseVerify": "Please Verify", - "pleaseVerifyForBio": "Please verify login with one of the following options", - "verifyThroughFace": "Verify Through Face", - "verifyThroughFingerprint": "Verify Through Fingerprint", - "verifyThroughSMS": "Verify Through SMS", - "verifyThroughWhatsapp": "Verify Through Whatsapp", - "useAnotherAccount": "Use Another Account", - "pleaseEnterTheVerificationCodeSentTo": "Please enter the verification code sent to ", - "theVerificationCodeWillExpireIn": "The verification code will expire in ", - "goodMorning": "Good Morning", - "markAttendance": "Mark Attendance", - "timeLeftToday": "Time Left Today", - "checkIn": "Check In", - "workList": "Work List", - "leaveBalance": "Leave Balance", - "missingSwipes": "Missing Swipes", - "ticketBalance": "Ticket Balance", - "other": "Other", - "services": "Services", - "viewAllServices": "View All Services", - "monthlyAttendance": "Monthly Attendance", - "vacationRule": "Vacation Rule", - "vacationType": "Vacation Type", - "startDateT": "Start Date", - "endDateT": "End Date", - "workFromHome": "Work From Home", - "ticketRequest": "Ticket Request", - "viewAllOffers": "View All Offers", - "offers": "Offers & ", - "discounts": "Discounts", - "newString": "New", - "setTheNewPassword": "Set the new password", - "typeYourNewPasswordBelow": "Type your new password below", - "confirmPassword": "Confirm Password", - "update": "Update", - "title": "Title", - "home": "Home", - "mySalary": "My Salary", - "createRequest": "Create Request", - "forgotPassword": "Forgot Password", - "employeeId": "Employee ID", - "loginCodeWillSentToMobileNumber": "Please Enter your Employee ID, A login code will be sent to your mobile number", - "changePassword": "Change Password", - "ok": "OK", - "confirm": "Confirm", - "passwordChangedSuccessfully": "Password changed successfully", - "itemsForSale": "Items for Sale", - "attendanceDetails": "Attendance Details", - "order": "order", - "earlyOut": "Early Out", - "shortage": "Shortage", - "excess": "Excess", - "lateIn": "Late In", - "approvedCheckOut": "Approved Check Out", - "approvedCheckIn": "Approved Check In", - "actualCheckOut": "Actual Check Out", - "actualCheckIn": "Actual Check In", - "present": "PRESENT", - "pres": "present", - "shiftTime": "Shift Time", - "absent": "ABSENT", - "attendance": "Attendance", - "scheduleDays": "Schedule\nDays", - "offDays": "Off\nDays", - "nonAnalyzed": "Non\nAnalyzed", - "shortageHour": "Shortage\nHour", - "stats": "Stats", - "completed": "Completed", - "doNotUseRecentPassword": "Do not use recent password", - "atLeastOneLowercase": "At least one lowercase", - "atLeastOneUppercase": "At least one uppercase", - "atLeastOneNumeric": "At least one numeric", - "minimum8Characters": "Minimum 8 characters", - "doNotAddRepeatingLetters": "Do not add repeating letters", - "itShouldContainSpecialCharacter": "It should contain special character", - "confirmPasswordMustMatch": "Confirm password must match", - "sms": "SMS", - "fingerPrint": "Fingerprint", - "face": "Face", - "whatsapp": "Whatsapp", - "reject": "Reject", - "approve": "Approve", - "cancel": "Cancel", - "requestedItems": "Requested Items", - "request": "Request", - "myRequest": "My Request", - "actions": "Actions", - "delegate": "Delegate", - "request_info": "Request Info", - "attachments": "Attachments", - "info": "Info.", - "employeeNumber": "Employee Number", - "assignmentNumber": "Assignment Number", - "employeeName": "Employee Name", - "scheduleDate": "Schedule Date", - "shiftType": "Shift Type", - "shift": "Shift", - "breakText": "Break", - "actualSwipeStart": "Actual Swipe Start", - "actualSwipeEnd": "Actual Swipe End", - "approvedSwipeStart": "Approved Swipe Start", - "approvedSwipeStartReason": "Approved Swipe Start Reason", - "approvedSwipeEnd": "Approved Swipe End", - "approvedSwipeEndReason": "Approved Swipe End Reason", - "from": "From", - "to": "To", - "sent": "Sent", - "closed": "Closed", - "id": "ID", - "responder": "Responder", - "jobTitle": "Job Title", - "grade": "Grade", - "jobCategory": "Job Category", - "category": "Category", - "employeeEmailAddress": "Employee Email Address", - "payrollBranch": "Payroll Branch", - "yourChangeHasBeenSavedSuccessfully": "Your change has been saved successfully", - "code": "Code", - "unit": "Unit", - "quantity": "Quantity", - "dateRequired": "Date Required", - "lineStatus": "Line Status", - "statusDate": "Status Date", - "transactionType": "Transaction Type", - "operatingUnit": "Operating Unit", - "organizationCode": "Organization Code", - "organization": "Organization", - "fromSubInventory": "From Sub Inventory", - "fromLocator": "From Locator", - "toSubInventory": "To Sub Inventory", - "toLocator": "To Locator", - "shipToLocator": "Ship To Locator", - "itemHistory": "Item History", - "mfg": "MFG", - "lineType": "Line Type", - "price": "Price", - "lineAmount": "Line Amount", - "lineDiscount": "Line Discount %", - "needByDate": "Need By Date", - "promisedDate": "Promised Date", - "deliverToLocation": "Deliver To Location", - "requisitionNumber": "Requisition Number", - "requester": "Requester", - "subject": "Subject", - "quotationAnalysis": "Quotation Analysis", - "description": "Description", - "supplier": "Supplier", - "site": "Site", - "buyer": "Buyer", - "preparer": "Preparer", - "creationDate": "Creation Date", - "shipToLocation": "Ship To Location", - "quotationNumber": "Quotation Number", - "quotationDate": "Quotation Date", - "paymentTerms": "Payment Terms", - "currency": "Currency", - "grossAmount": "Gross Amount", - "discountAmount": "Discount Amount", - "customDuty": "Custom Duty", - "shipHandle": "Ship Handle", - "otherCharges": "Other Charges", - "totalPOAmountWithVAT": "Total PO Amount With VAT", - "totalPOAmountInWords": "Total PO Amount In Words", - "requestNumber": "Request Number", - "uom": "UOM", - "operatingCode": "Operating Code", - "poNumber": "PO Number", - "revision": "Revision", - "quantityOrdered": "Quantity Ordered", - "quantityReceived": "Quantity Received", - "bonusQuantity": "Bonus Quantity", - "purchasePrice": "Purchase Price", - "discountPer": "Discount %", - "balanceQuantity": "Balance Quantity", - "netPrice": "Net Price", - "closureStatus": "Closure Status", - "quotationNetPrice": "Quotation Net Price", - "quotationUOM": "Quotation UOM", - "quotationQty": "Quotation Qty", - "itemCode": "item Code", - "vendorName": "Vendor Name", - "quotationMFGPartNumber": "Quotation MFG Part Number", - "quotationDeliveryDate": "Quotation Delivery Date", - "quotationBonusQuantity": "Quotation Bonus Quantity", - "quotationLineTotal": "Quotation Line Total", - "rfqUOM": "RFQ UOM", - "rfqQty": "RFQ Qty", - "rfqNumber": "RFQ Number", - "msg": "Hello {} in the {} world ", - "msg_named": "{} are written in the {lang} language", - "clickMe": "Click me", - "human": "Human", - "resources": "Resources", - "details": "Details", - "noDataAvailable": "No Data Available", - "productName": "Product Name", - "productDescription": "Product Description", - "unitPrice": "Unit Price", - "manufacturerName": "Manufacturer Name", - "manufacturerPartName": "Manufacturer Part Name", - "supplierName": "Supplier Name", - "supplierContact": "Supplier Contact", - "chargeToPatient": "Charge To Patient", - "justification": "Justification", - "itemDescription": "Item Description", - "groupCode": "Group Code", - "primaryUOM": "Primary UOM", - "subgroupDescription": "Subgroup Description", - "subgroupCode": "Subgroup Code", - "groupDescription": "Group Description", - "templateName": "Template Name", - "itemCreationStatus": "Item Creation Status", - "standardizationApprovalStatus": "Standardization Approval Status", - "standardizationApprovalRejectionReason": "Standardization Approval Rejection Reason", - "analyzedBy": "Analyzed By", - "approvedDate": "Approved Date", - "itemType": "Item Type", - "relatedTo": "Related To", - "requestDate": "Request Date", - "analyzedDate": "Analyzed Date", - "urgent": "Urgent", - "requestDetails": "Request Details", - "approvalLevel": "Approval Level", - "requesterDetails": "Requester Details", - "myAttendance": "My Attendance", - "workOnBreak": "Work On Break", - "next": "Next", - "apply": "Apply", - "mobile": "Mobile", - "year": "Year", - "month": "Month", - "day": "Day", - "completingYear": "We appreciate you for completing the service of", - "address": "Address", - "phoneNumber": "Phone Number", - "businessGroup": "Business", - "Payroll": "Payroll", - "civilIdentityNumber": "Civil Identity Number", - "dateOfBirth": "Date of Birth", - "maritalStatus ": "Marital Status ", - "fullName": "Full Name", - "remove": "Remove", - "Attendance": "Attendance", - "submit": "Submit", - "areYouSureYouWantToSubmit": "Are you sure you want to submit?", - "comments": "Comments", - "writeComment": "Write a comment", - "approversList": "Approvers List", - "yourRequestHasBeenSubmittedForApprovals": "Your request has been submitted for approvals", - "monthlyPaySlip": "Monthly Pay Slip", - "particular": "Particular", - "earnings": "Earnings", - "deductions": "Deductions", - "paymentMethodName": "Payment Method Name", - "bankName": "Bank Name", - "branchCode": "Branch Code", - "accountNo": "Account No", - "summaryOfInformation": "Summary of Information", - "totalPayAmount": "Total Pay Amount", - "paymentInformation": "Payment Information", - "amount": "Amount", - "correctCurrentDatails": "correct or complete the current details", - "selectType": "Select the type of change you want to make", - "enterNewInfo": "Enter new Information because of a real change to the current details (e.g because of a change in marital status)", - "endDate": "*End Date", - "removeThisMember": "Are You Sure You Want to Remove this Member?", - "wantUpdateThisMember": "Are You Sure You Want to Update this Member?", - "addNewFamilyMember": "Add New Family Member", - "addRow": "Add new row", - "pleaseSelect": "Please Select *", - "delete": "delete", - "add": "Add", - "edit": "Edit", - "myProfile": "My Profile", - "mowadhafhi": "Mowadhafi", - "searchAnnouncements": "Search Announcements", - "announcements": "Announcements", - "swipeRequest": "Swipe Request", - "serviceType": "Service Type", - "departmentName": "Department Name", - "selectDepartment": "Select Department", - "relatedSection": "Related Section", - "selectSection": "Select Section", - "relatedTopic": "Related Topic", - "selectTopic": "Select Topic", - "supportingDocument": "Supporting Document", - "mowadhafhiRequest": "Mowadhafi Request", - "ticketReference": "Ticket Reference", - "section": "Section", - "topic": "Topic", - "actionBy": "Action By", - "pendingTransactions": "Pending Transactions", - "selectRequestType": "Please select request type", - "dateFrom": "Date From", - "dateTo": "Date To", - "requestName": "Request Name", - "createdFor": "Created For", - "requestType": "Request Type", - "requestCreatedSuccessfully": "Request created successfully", - "search": "Search", - "wantToReject": "Are you sure want to reject?", - "employeeDigitalID": "Employee Digital ID", - "businessCard": "Business Card", - "checkOut": "Check Out", - "regular": "Regular", - "mark": "Mark", - "performance": "Performance Evaluation", - "performanceEvaluationIn": "Your performance Evaluation in", - "valuationIn": "Performance Evaluation in", - "viewBusinessCard": "View Business Card", - "performanceEvaluation": "Performance Evaluation", - "logout": "Logout", - "selectMethodOfAttendance": "Select the method to mark the attendance", - "comeNearHMGWifi": "Please come near to HMG wifi", - "deliverNotificationToMeRegardless": "Deliver notifications to me regardless of any general rules", - "close": "Close", - "respond": "Respond", - "vacationRuleAdded": "Vacation rule added", - "selectTypeT": "Select Type", - "notification": "Notification", - "selectNotification": "Select Notification", - "ifAllSelectedYouWillSkip": "*If All is selected, you will skip to step 3", - "applyForVacationRule": "Apply for Vacation Rule", - "step1": "Step 1", - "step2": "Step 2", - "step3": "Step 3", - "message": "Message", - "writeAMessage": "Write a message", - "notificationReassign": "Notification Reassign", - "selectEmployee": "Select Employee", - "searchEmployeeForReplacement": "Search employee for replacement", - "searchForEmployee": "Search for Employee", - "pleaseSpecifyEndTime": "Please specify End Time", - "pleaseSelectNotificationReassign": "Please select notification reassign", - "pleaseSelectEmployeeForReplacement": "Please select employee for replacement", - "pleaseSelectAction": "Please select action", - "pleaseSelectDate": "Please select date", - "todayAttendance": "Today's Attendance", - "viewAttendance": "View Attendance", - "teamMembers": "Team Members", - "profileDetails": "Profile Details", - "noResultsFound": "No Results Found", - "searchBy": "Search by", - "myTeamMembers": "My Team Members", - "save": "Save", - "TurnNotificationsFor": "Turn on notifications for", - "worklistSettings": "Worklist Settings", - "absenceType": "Absence Type", - "absenceCategory": "Absence Category", - "days": "Days", - "hours": "Hours", - "approvalStatus": "Approval Status", - "absenceStatus": "Absence Status", - "poweredBy": "Powered By", - "cloudSolutions": "Cloud Solutions", - "subordinateLeave": "Subordinate Leave", - "numberDays": "Number of days", - "selectTemplate": "Select Template", - "myPostedAds": "My posted ads", - "browseCategories": "Browse Categories", - "searchItems": "Search Items", - "offerAndDiscounts": "Offer & Discounts", - "offerValid": "Offer Valid", - "offerExpired": "Offer Expired", - "whatAreYouOffering": "What are you offering?", - "selectCategory": "Select Category", - "inProgress": "InProgress", - "locked": "Locked", - "addDetails": "Add Details", - "reviewAndSell": "Review & Sell", - "itemTitle": "Item Title", - "itemCondition": "Item Condition", - "used": "Used", - "region": "Region", - "selectRegion": "Select Region", - "itemPrice": "Item Price", - "itemPhotos": "Item Photos", - "itemInfo": "Item Info", - "uploadAttachment": "Upload Attachment", - "selectFromGalleryOrOpenCamera": "Select from gallery or open camera", - "openCamera": "Open\nCamera", - "uploadFromGallery": "Upload from\nGallery", - "name": "Name", - "email": "Email", - "noHistoryAvailable": "No History Available", - "purchaseRequisition": "Purchase Requisition", - "moveOrder": "Move Order", - "humanResource": "Human Resource", - "purchaseOrder": "Purchase Order", - "ITGForms": "ITG Forms", - "itemCreation": "Item Creation", - "stamp": "Stamp", - "addFavoriteList": "Do you want to add {name} in your favorite list", - "feedbackUserExperience": "This is to get the feedback about the user experience", - "rateUI": "1. How would you rate this UI?", - "submitSurvey": "Submit Survey", - "typeHere": "Type here", - "infoDetail": "Info Detail", - "amount_detail": "Amount Detail", - "currentBalance": "Current Balance", - "currentLeaveBalance": "Current Leave Balance", - "calculatedDays": "Calculated Days", - "totalDays": "Total Days", - "usedBalance": "Used", - "infants": "Infants", - "child": "Child", - "adult": "Adult", - "updateMember": "Are You Sure You Want to Update this Member?", - "fieldIsEmpty": "'{data}' Field is empty. Please select", - "pleaseEnterComments": "Please enter comments", - "skip": "Skip", - "typeCurrentPasswordBelow": "Type Your Current password below", - "currentPassword": "Current password", - "concurrentReports": "Concurrent Reports", - "EnterNewAddressMoved": "Enter a new address if you have moved", - "CorrectAddress": "Correct or amend this address", - "SelectChangeWantToMake": "Select the type of change you want to make", - "profile": { - "reset_password": { - "label": "Reset Password", - "username": "Username", - "password": "password" + "phoneNumber": "رقم الجوال", + "businessGroup": "مجموعة العمل", + "Payroll": "الراتب", + "civilIdentityNumber": "رقم الهويه", + "dateOfBirth": "تاريخ الميلاد", + "maritalStatus ": "الحالة الاجتماعية", + "fullName": "الأسم الكامل", + "remove": "حذف", + "submit": "ارسال", + "areYouSureYouWantToSubmit": "هل أنت متأكد أنك تريد أن تقدم؟", + "comments": "تعليقات", + "writeComment": "أكتب تعليقا", + "approversList": "قائمة الموافقين", + "yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات", + "monthlyPaySlip": "قسيمة الراتب الشهرية", + "particular": "خاص", + "earnings": "أرباح", + "deductions": "الخصومات", + "paymentMethodName": "اسم طريقة الدفع", + "bankName": "اسم البنك", + "branchCode": "رمز الفرع", + "accountNo": "رقم الحساب", + "summaryOfInformation": "ملخص المعلومات", + "totalPayAmount": "المبلغ الإجمالي للدفع", + "paymentInformation": "معلومات الدفع", + "performance": "تقييم الاداء", + "performanceEvaluation": "تقييم الأداء في", + "performanceEvaluationIn": "تقييم أدائك في", + "valuationIn": "تقييم الأداء في", + "amount": "مقدار", + "correctCurrentDatails": "تعديل او اكمال التفاصيل الحالية", + "selectType": " حدد نوع التغيير الذي تريد القيام به", + "enterNewInfo": " أدخل معلومات جديدة بسبب تغيير حقيقي في التفاصيل الحالية (على سبيل المثال بسبب تغيير في الحالة الاجتماعية", + "endDate": "تاريخ الانتهاء", + "removeThisMember": "هل انت متأكد تريد ازالة هذا العضو؟", + "wantUpdateThisMember ": "هل انت متأكد تريد تحديث بيانات هذا العضو؟", + "addNewFamilyMember": "اضافة عضو جديد", + "addRow": "اضافة صف جديد", + "pleaseSelect": "الرجاء اختيار", + "delete": "حذف", + "edit": "تعديل", + "add": "اضافه", + "myProfile": "معلوماتي", + "mowadhafhi": "موظفي", + "searchAnnouncements": "بحث الاعلانات", + "announcements": "اعلانات", + "swipeRequest": "طلب تسجيل حضور", + "serviceType": "نوع الخدمه", + "departmentName": "اسم القسم", + "selectDepartment": "اختر القسم", + "relatedSection": "قسم ذو صله", + "selectSection": "اختيار القسم", + "relatedTopic": "عنوان ذو صله", + "selectTopic": "اختر العنوان", + "supportingDocument": "ارفاق مستند", + "mowadhafhiRequest": "طلب موظفي", + "ticketReference": "مرجع التذكره", + "section": "القسم", + "topic": "العنوان", + "actionBy": "الرد بواسطة", + "pending": "معلق", + "pendingTransactions": "المعاملات المعلقه", + "selectRequestType": "الرجاء اختيار نوع الطلب", + "dateFrom": "من تاريخ", + "dateTo": "الى تاريخ", + "requestName": "اسم الطلب", + "createdFor": "انشاء لأجل", + "requestCreatedSuccessfully": "تم انشاء الطلب بنجاح", + "search": "بحث", + "wantToReject": "هل انت متأكد تريد الرفض", + "requestType": "نوع الطلب", + "employeeDigitalID": "هويةالموظف الرقمية", + "businessCard": "بطاقة العمل", + "viewBusinessCard": "عرض بطاقة العمل", + "logout": "تسجيل خروج", + "checkOut": "وقت الخروج", + "regular": "منتظم", + "mark": "علامة", + "selectMethodOfAttendance": "اختر طريقة تسجيل الحضور", + "comeNearHMGWifi": "HMG wifi من فضلك اقترب من", + "deliverNotificationToMeRegardless": "تسليم الإخطارات إلي بغض النظر عن أي قواعد عامة", + "close": "أغلق", + "respond": "يرد", + "vacationRuleAdded": "تمت إضافة قاعدة الإجازة", + "selectTypeT": "اختر صنف", + "notification": "تنبيه", + "selectNotification": "حدد إعلام", + "ifAllSelectedYouWillSkip": "* إذا تم تحديد الكل ، فستنتقل إلى الخطوة 3", + "applyForVacationRule": "التقدم بطلب للحصول على قانون الإجازة", + "step1": "الخطوة 1", + "step2": "الخطوة 2", + "step3": "الخطوه 3", + "message": "رسالة", + "writeAMessage": "اكتب رسالة", + "notificationReassign": "إعادة تعيين الإخطار", + "selectEmployee": "حدد الموظف", + "searchEmployeeForReplacement": "ابحث عن موظف بديل", + "searchForEmployee": "ابحث عن موظف", + "pleaseSpecifyEndTime": "الرجاء تحديد وقت الانتهاء", + "pleaseSelectNotificationReassign": "يرجى تحديد إعادة تعيين الإخطار", + "pleaseSelectEmployeeForReplacement": "الرجاء تحديد موظف للاستبدال", + "pleaseSelectAction": "الرجاء تحديد الإجراء", + "pleaseSelectDate": "الرجاء تحديد التاريخ", + "todayAttendance": "حضور اليوم", + "viewAttendance": "عرض الحضور", + "teamMembers": "اعضاءالفريق", + "profileDetails": "الملف الشخصي", + "noResultsFound": "لايوجد نتائج", + "searchBy": "بحث بواسطة", + "myTeamMembers": "اعضاء فريقي", + "save": "حفظ", + "TurnNotificationsFor": "تفعيل الاشعارات", + "worklistSettings": "اعدادات الاشعارات", + "absenceType": "نوع الغياب", + "absenceCategory": "فئة الغياب", + "days": "أيام", + "hours": "ساعات", + "approvalStatus": "حالة القبول", + "absenceStatus": "حالة الغياب", + "subordinateLeave": "إجازة التابعيين", + "numberDays": "عدد الأيام", + "poweredBy": "مشغل بواسطة", + "cloudSolutions": "حلول السحابة", + "selectTemplate": "حدد قالب", + "myPostedAds": "إعلاناتي المنشورة", + "browseCategories": "تصفح الفئات", + "searchItems": "عناصر البحث", + "offerAndDiscounts": "العروض والخصومات", + "offerValid": "العرض صالح", + "offerExpired": "انتهى العرض", + "whatAreYouOffering": "ما الذي تعرضه؟", + "selectCategory": "اختر الفئة", + "inProgress": "في تَقَدم", + "locked": "مقفل", + "addDetails": "أضف التفاصيل", + "reviewAndSell": "مراجعة وبيع", + "itemTitle": "عنوان البند", + "itemCondition": "حالة السلعة", + "used": "تستخدم", + "region": "منطقة", + "selectRegion": "اختر المنطقة", + "itemPrice": "سعر السلعة", + "itemPhotos": "صور البند", + "itemInfo": "معلومات العنصر", + "uploadAttachment": "تحميل المرفق", + "selectFromGalleryOrOpenCamera": "اختر من المعرض أو فتح الكاميرا", + "openCamera": "فتح\nالكاميرا", + "uploadFromGallery": "تحميل من\nملفات الجهاز", + "name": "الأسم", + "email": "ايميل", + "noHistoryAvailable": "لايوجد سجل بيانات سابقة ", + "purchaseRequisition": "طلب شراء", + "moveOrder": "طلب تغيير", + "humanResource": "الموارد البشريه", + "purchaseOrder": "امر شراء", + "ITGForms": "ITG نماذج", + "itemCreation": "أنشاء عنصر", + "stamp": "ختم", + "addFavoriteList": "هل تريد اضافة {name} لقائمة المفضله", + "feedbackUserExperience": "هذا للحصول على تعليقات حول تجربة المستخدم", + "rateUI": ".1 كيف تريد تقييم التطبيق", + "submitSurvey": "ارسال الاستبيان", + "typeHere": "اكتب هنا", + "infoDetail": "تفاصيل المعلومات", + "amount_detail": "تفاصيل المبلغ", + "currentBalance": "الرصيد الحالي", + "currentLeaveBalance": "رصيد الاجازات الحالي", + "calculatedDays": "الايام المحسوبه", + "totalDays": "مجموع الأيام", + "usedBalance": "المستخدم", + "infants": "رضيع", + "child": "طفل", + "adult": "بالغ", + "updateMember": "هل انت متأكد تريد تحديث بيانات هذا العضو؟", + "fieldIsEmpty": "'{data}' الحقل فارغ. الرجاء التحديد", + "pleaseEnterComments": "الرجاء إدخال التعليقات", + "skip": "يتخطى", + "typeCurrentPasswordBelow": "اكتب كلمة المرور الحاليه", + "currentPassword": "كلمة المرور الحاليه", + "concurrentReports": "التقارير المتزامنه", + "EnterNewAddressMoved": "أدخل عنوان جديد إذا كنت قد انتقلت", + "CorrectAddress": "تصحيح أو تعديل هذا العنوان", + "SelectChangeWantToMake": " حدد نوع التغيير الذي تريد القيام به.", + "profile": { + "reset_password": {"label": "Reset Password", "username": "Username", "password": "password"}, + "profileCompletionPer": "استكمال الملف الشخصي", + "completeProfile": "الملف الشخصي الكامل", + "personalInformation": "معلومات شخصية", + "basicDetails": "تفاصيل أساسية", + "address": "العنوان", + "contactDetails": "بيانات التواصل", + "familyDetails": "تفاصيل عائلية", + "effectiveDate": "تاريخ النفاذ", + "country": "دولة" + }, + "clicked": { + "zero": "You clicked {} times!", + "one": "You clicked {} time!", + "two": "You clicked {} times!", + "few": "You clicked {} times!", + "many": "You clicked {} times!", + "other": "You clicked {} times!" + }, + "gender": { + "male": "Hi man ;) ", + "female": "Hello girl :)", + "with_arg": {"male": "Hi man ;) {}", "female": "Hello girl :) {}"} }, - "profileCompletionPer": "Profile Completion", - "completeProfile": "Complete Profile", - "personalInformation": "Personal Information", - "basicDetails": "Basic Details", + "reset_locale": "إعادة ضبط اللغة", + "chat": "دردشة", + "mychats": "دردشاتي", + "advancedSearch": "بحث متقدم", + "openNot": "التبليغات المفتوحة", + "fyi": "تبليغات للعلم", + "toDo": "تبليغات الأعمال", + "all": "كل التبليغات", + "meNot": "تبليغات صادرة مني", + "view": "عرض", + "fromUserName": "من", + "sentDate": "تاريخ الإرسال", + "itemTypeDisplayName": "اسم العرض", + "none": "بدون", + "createNewChat": "إنشاء محادثة جديدة", + "brainMarathon": "ماراثون الدماغ", + "contestTopicAbout": "سيكون موضوع المسابقة حول:", + "gameDate": "تاريخ اللعبة:", + "gameTime": "وقت اللعب:", + "joinMarathon": "انضم إلى ماراثون", + "joinDemoMarathon": "انضم إلى الماراثون التجريبي", + "minutes": "الدقائق", + "seconds": "ثواني", + "note": "ملحوظة:", + "demoMarathonNoteP1": "يمكنك لعب ماراثون العرض لتتعلم كيف يعمل. يمكنك الانضمام إلى ماراثون", + "demoMarathonNoteP2": "خمس دقائق", + "demoMarathonNoteP3": "قبل الوقت الفعلي.", + "sponsoredBy": "برعاية:", + "question": "سؤال", + "marathoners": "الماراثون", + "prize": "جائزة:", + "winnerSelection": "اختيار الفائز", + "qualifiers": "تصفيات", + "getReadyForContest": "استعد للمسابقة القادمة:", + "winnerSelectedRandomly": "سيتم اختيار الفائز عشوائياً من بين التصفيات.", + "fingersCrossed": "تشابك الاصابع!!!", + "congrats": "مبروك !!!", + "allQuestionsCorrect": "لقد أجبت على جميع الأسئلة بشكل صحيح.", + "otp": "OTP", + "verification": "تَحَقّق", + "resend": "إعادة إرسال", + "codeExpire": "انتهت صلاحية رمز التحقق", + "typeheretoreply": "اكتب هنا للرد", + "favorite": "مفضلتي", + "searchfromchat": "البحث من الدردشة", + "yourAnswerCorrect": "إجابتك صحيحة", + "youMissedTheQuestion": "نفد منك الوقت. أنت خارج اللعبة. لكن يمكنك الاستمرار وكمشاهد.", + "wrongAnswer": "إجابتك غير صحيحة. أنت خارج اللعبة. لكن يمكنك الاستمرار وكمشاهد.", + "oops": "أوه!!!", + "winner": "الفائز", + "youWantToLeaveMarathon": "هل أنت متأكد أنك تريد العودة؟ سوف تخرج من المسابقة.", + "ourSponsor": "راعينا:", + "startingIn": "يبدأ في", + "youAreOutOfContest": "أنت خارج المسابقة.", + "winners": "الفائزين!!!", + "noUpcoming": "لا يوجد قادم", + "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية", + "noWinner": "حزين! لم يفز أحد اليوم." + }; + static const Map en_US = { + "mohemm": "Mohemm", + "english": "English", + "arabic": "عربي", + "login": "Login", + "pleaseEnterLoginDetails": "Please enter the detail below to login", + "username": "Username", + "password": "Password", + "welcomeBack": "Welcome back", + "wouldYouLikeToLoginWithCurrentUsername": "Would you like to login with current Username?", + "lastLoginDetails": "Last Login Details:", + "verificationType": "Verification Type:", + "pleaseVerify": "Please Verify", + "pleaseVerifyForBio": "Please verify login with one of the following options", + "verifyThroughFace": "Verify Through Face", + "verifyThroughFingerprint": "Verify Through Fingerprint", + "verifyThroughSMS": "Verify Through SMS", + "verifyThroughWhatsapp": "Verify Through Whatsapp", + "useAnotherAccount": "Use Another Account", + "pleaseEnterTheVerificationCodeSentTo": "Please enter the verification code sent to ", + "theVerificationCodeWillExpireIn": "The verification code will expire in ", + "goodMorning": "Good Morning", + "markAttendance": "Mark Attendance", + "timeLeftToday": "Time Left Today", + "checkIn": "Check In", + "workList": "Work List", + "leaveBalance": "Leave Balance", + "missingSwipes": "Missing Swipes", + "ticketBalance": "Ticket Balance", + "other": "Other", + "services": "Services", + "viewAllServices": "View All Services", + "monthlyAttendance": "Monthly Attendance", + "vacationRule": "Vacation Rule", + "vacationType": "Vacation Type", + "startDateT": "Start Date", + "endDateT": "End Date", + "workFromHome": "Work From Home", + "ticketRequest": "Ticket Request", + "viewAllOffers": "View All Offers", + "offers": "Offers & ", + "discounts": "Discounts", + "newString": "New", + "setTheNewPassword": "Set the new password", + "typeYourNewPasswordBelow": "Type your new password below", + "confirmPassword": "Confirm Password", + "update": "Update", + "title": "Title", + "home": "Home", + "mySalary": "My Salary", + "createRequest": "Create Request", + "forgotPassword": "Forgot Password", + "employeeId": "Employee ID", + "loginCodeWillSentToMobileNumber": "Please Enter your Employee ID, A login code will be sent to your mobile number", + "changePassword": "Change Password", + "ok": "OK", + "confirm": "Confirm", + "passwordChangedSuccessfully": "Password changed successfully", + "itemsForSale": "Items for Sale", + "attendanceDetails": "Attendance Details", + "order": "order", + "earlyOut": "Early Out", + "shortage": "Shortage", + "excess": "Excess", + "lateIn": "Late In", + "approvedCheckOut": "Approved Check Out", + "approvedCheckIn": "Approved Check In", + "actualCheckOut": "Actual Check Out", + "actualCheckIn": "Actual Check In", + "present": "PRESENT", + "pres": "present", + "shiftTime": "Shift Time", + "absent": "ABSENT", + "attendance": "Attendance", + "scheduleDays": "Schedule\nDays", + "offDays": "Off\nDays", + "nonAnalyzed": "Non\nAnalyzed", + "shortageHour": "Shortage\nHour", + "stats": "Stats", + "completed": "Completed", + "doNotUseRecentPassword": "Do not use recent password", + "atLeastOneLowercase": "At least one lowercase", + "atLeastOneUppercase": "At least one uppercase", + "atLeastOneNumeric": "At least one numeric", + "minimum8Characters": "Minimum 8 characters", + "doNotAddRepeatingLetters": "Do not add repeating letters", + "itShouldContainSpecialCharacter": "It should contain special character", + "confirmPasswordMustMatch": "Confirm password must match", + "sms": "SMS", + "fingerPrint": "Fingerprint", + "face": "Face", + "whatsapp": "Whatsapp", + "reject": "Reject", + "approve": "Approve", + "cancel": "Cancel", + "requestedItems": "Requested Items", + "request": "Request", + "myRequest": "My Request", + "actions": "Actions", + "delegate": "Delegate", + "request_info": "Request Info", + "attachments": "Attachments", + "info": "Info.", + "employeeNumber": "Employee Number", + "assignmentNumber": "Assignment Number", + "employeeName": "Employee Name", + "scheduleDate": "Schedule Date", + "shiftType": "Shift Type", + "shift": "Shift", + "breakText": "Break", + "actualSwipeStart": "Actual Swipe Start", + "actualSwipeEnd": "Actual Swipe End", + "approvedSwipeStart": "Approved Swipe Start", + "approvedSwipeStartReason": "Approved Swipe Start Reason", + "approvedSwipeEnd": "Approved Swipe End", + "approvedSwipeEndReason": "Approved Swipe End Reason", + "from": "From", + "to": "To", + "sent": "Sent", + "closed": "Closed", + "id": "ID", + "responder": "Responder", + "jobTitle": "Job Title", + "grade": "Grade", + "jobCategory": "Job Category", + "category": "Category", + "employeeEmailAddress": "Employee Email Address", + "payrollBranch": "Payroll Branch", + "yourChangeHasBeenSavedSuccessfully": "Your change has been saved successfully", + "code": "Code", + "unit": "Unit", + "quantity": "Quantity", + "dateRequired": "Date Required", + "lineStatus": "Line Status", + "statusDate": "Status Date", + "transactionType": "Transaction Type", + "operatingUnit": "Operating Unit", + "organizationCode": "Organization Code", + "organization": "Organization", + "fromSubInventory": "From Sub Inventory", + "fromLocator": "From Locator", + "toSubInventory": "To Sub Inventory", + "toLocator": "To Locator", + "shipToLocator": "Ship To Locator", + "itemHistory": "Item History", + "mfg": "MFG", + "lineType": "Line Type", + "price": "Price", + "lineAmount": "Line Amount", + "lineDiscount": "Line Discount %", + "needByDate": "Need By Date", + "promisedDate": "Promised Date", + "deliverToLocation": "Deliver To Location", + "requisitionNumber": "Requisition Number", + "requester": "Requester", + "subject": "Subject", + "quotationAnalysis": "Quotation Analysis", + "description": "Description", + "supplier": "Supplier", + "site": "Site", + "buyer": "Buyer", + "preparer": "Preparer", + "creationDate": "Creation Date", + "shipToLocation": "Ship To Location", + "quotationNumber": "Quotation Number", + "quotationDate": "Quotation Date", + "paymentTerms": "Payment Terms", + "currency": "Currency", + "grossAmount": "Gross Amount", + "discountAmount": "Discount Amount", + "customDuty": "Custom Duty", + "shipHandle": "Ship Handle", + "otherCharges": "Other Charges", + "totalPOAmountWithVAT": "Total PO Amount With VAT", + "totalPOAmountInWords": "Total PO Amount In Words", + "requestNumber": "Request Number", + "uom": "UOM", + "operatingCode": "Operating Code", + "poNumber": "PO Number", + "revision": "Revision", + "quantityOrdered": "Quantity Ordered", + "quantityReceived": "Quantity Received", + "bonusQuantity": "Bonus Quantity", + "purchasePrice": "Purchase Price", + "discountPer": "Discount %", + "balanceQuantity": "Balance Quantity", + "netPrice": "Net Price", + "closureStatus": "Closure Status", + "quotationNetPrice": "Quotation Net Price", + "quotationUOM": "Quotation UOM", + "quotationQty": "Quotation Qty", + "itemCode": "item Code", + "vendorName": "Vendor Name", + "quotationMFGPartNumber": "Quotation MFG Part Number", + "quotationDeliveryDate": "Quotation Delivery Date", + "quotationBonusQuantity": "Quotation Bonus Quantity", + "quotationLineTotal": "Quotation Line Total", + "rfqUOM": "RFQ UOM", + "rfqQty": "RFQ Qty", + "rfqNumber": "RFQ Number", + "msg": "Hello {} in the {} world ", + "msg_named": "{} are written in the {lang} language", + "clickMe": "Click me", + "human": "Human", + "resources": "Resources", + "details": "Details", + "noDataAvailable": "No Data Available", + "productName": "Product Name", + "productDescription": "Product Description", + "unitPrice": "Unit Price", + "manufacturerName": "Manufacturer Name", + "manufacturerPartName": "Manufacturer Part Name", + "supplierName": "Supplier Name", + "supplierContact": "Supplier Contact", + "chargeToPatient": "Charge To Patient", + "justification": "Justification", + "itemDescription": "Item Description", + "groupCode": "Group Code", + "primaryUOM": "Primary UOM", + "subgroupDescription": "Subgroup Description", + "subgroupCode": "Subgroup Code", + "groupDescription": "Group Description", + "templateName": "Template Name", + "itemCreationStatus": "Item Creation Status", + "standardizationApprovalStatus": "Standardization Approval Status", + "standardizationApprovalRejectionReason": "Standardization Approval Rejection Reason", + "analyzedBy": "Analyzed By", + "approvedDate": "Approved Date", + "itemType": "Item Type", + "relatedTo": "Related To", + "requestDate": "Request Date", + "analyzedDate": "Analyzed Date", + "urgent": "Urgent", + "requestDetails": "Request Details", + "approvalLevel": "Approval Level", + "requesterDetails": "Requester Details", + "myAttendance": "My Attendance", + "workOnBreak": "Work On Break", + "next": "Next", + "apply": "Apply", + "mobile": "Mobile", + "year": "Year", + "month": "Month", + "day": "Day", + "completingYear": "We appreciate you for completing the service of", "address": "Address", - "contactDetails": "Contact Details", - "familyDetails": "Family Members", - "effectiveDate": "Effective Date", - "country": "Country" - }, - "clicked": { - "zero": "You clicked {} times!", - "one": "You clicked {} time!", - "two": "You clicked {} times!", - "few": "You clicked {} times!", - "many": "You clicked {} times!", - "other": "You clicked {} times!" - }, - "gender": { - "male": "Hi man ;) ", - "female": "Hello girl :)", - "with_arg": { - "male": "Hi man ;) {}", - "female": "Hello girl :) {}" - } - }, - "reset_locale": "Reset Language", - "chat": "Chat", - "mychats": "My Chats", - "createNewChat": "Create New Chat", - "brainMarathon": "Brain Marathon", - "contestTopicAbout": "Contest Topic will be about:", - "gameDate": "Game Date:", - "gameTime": "Game Time:", - "joinMarathon": "Join Marathon", - "joinDemoMarathon": "Join Demo Marathon", - "minutes": "Minutes", - "seconds": "Seconds", - "note": "Note:", - "demoMarathonNoteP1": "You can play the demo Marathon to learn how it works. You can join the Marathon", - "demoMarathonNoteP2": "5 Minutes", - "demoMarathonNoteP3": "before the actual time.", - "sponsoredBy": "Sponsored By:", - "question": "Question", - "marathoners": "Marathoners", - "prize": "Prize:", - "advancedSearch": "Advanced Search", - "openNot": "Open Notifications", - "fyi": "FYI Notifications", - "toDo": "To Do Notifications", - "all": "All Notifications", - "meNot": "Notifications from Me", - "view": "View", - "fromUserName": "From User Name", - "sentDate": "Sent Date", - "itemTypeDisplayName": "Item Type Display Name", - "none": "None", - "winnerSelection": "Winner Selection", - "qualifiers": "Qualifiers", - "getReadyForContest": "Get Ready for the coming contest:", - "winnerSelectedRandomly": "The winner will be selected randomly among the qualifiers.", - "fingersCrossed": "Fingers Crossed!!!", - "congrats": "Congratulations!!!", - "otp": "OTP", - "verification": "Verification", - "resend": "Resend", - "codeExpire": "The verification code has been expired", - "allQuestionsCorrect": "You have answered all questions correct", - "typeheretoreply": "Type here to reply", - "favorite": "My Favorites", - "searchfromchat": "Search from chat", - "yourAnswerCorrect": "Your answer is correct", - "youMissedTheQuestion": "You ran out of time. You are out of the game. But you can continue and as a viewer.", - "wrongAnswer": "Your answer is Incorrect. You are out of the game. But you can continue and as a viewer.", - "oops": "Ooopsss!!!!", - "winner": "WINNER", - "youWantToLeaveMarathon": "Are you sure you want to go back? You will be out of the contest.", - "ourSponsor": "Our Sponsor:", - "startingIn": "Starting in", - "youAreOutOfContest": "You are out of the contest.", - "winners": "WINNERS!!!", - "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified." -}; -static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; + "phoneNumber": "Phone Number", + "businessGroup": "Business", + "Payroll": "Payroll", + "civilIdentityNumber": "Civil Identity Number", + "dateOfBirth": "Date of Birth", + "maritalStatus ": "Marital Status ", + "fullName": "Full Name", + "remove": "Remove", + "Attendance": "Attendance", + "submit": "Submit", + "areYouSureYouWantToSubmit": "Are you sure you want to submit?", + "comments": "Comments", + "writeComment": "Write a comment", + "approversList": "Approvers List", + "yourRequestHasBeenSubmittedForApprovals": "Your request has been submitted for approvals", + "monthlyPaySlip": "Monthly Pay Slip", + "particular": "Particular", + "earnings": "Earnings", + "deductions": "Deductions", + "paymentMethodName": "Payment Method Name", + "bankName": "Bank Name", + "branchCode": "Branch Code", + "accountNo": "Account No", + "summaryOfInformation": "Summary of Information", + "totalPayAmount": "Total Pay Amount", + "paymentInformation": "Payment Information", + "amount": "Amount", + "correctCurrentDatails": "correct or complete the current details", + "selectType": "Select the type of change you want to make", + "enterNewInfo": "Enter new Information because of a real change to the current details (e.g because of a change in marital status)", + "endDate": "*End Date", + "removeThisMember": "Are You Sure You Want to Remove this Member?", + "wantUpdateThisMember": "Are You Sure You Want to Update this Member?", + "addNewFamilyMember": "Add New Family Member", + "addRow": "Add new row", + "pleaseSelect": "Please Select *", + "delete": "delete", + "add": "Add", + "edit": "Edit", + "myProfile": "My Profile", + "mowadhafhi": "Mowadhafi", + "searchAnnouncements": "Search Announcements", + "announcements": "Announcements", + "swipeRequest": "Swipe Request", + "serviceType": "Service Type", + "departmentName": "Department Name", + "selectDepartment": "Select Department", + "relatedSection": "Related Section", + "selectSection": "Select Section", + "relatedTopic": "Related Topic", + "selectTopic": "Select Topic", + "supportingDocument": "Supporting Document", + "mowadhafhiRequest": "Mowadhafi Request", + "ticketReference": "Ticket Reference", + "section": "Section", + "topic": "Topic", + "actionBy": "Action By", + "pendingTransactions": "Pending Transactions", + "selectRequestType": "Please select request type", + "dateFrom": "Date From", + "dateTo": "Date To", + "requestName": "Request Name", + "createdFor": "Created For", + "requestType": "Request Type", + "requestCreatedSuccessfully": "Request created successfully", + "search": "Search", + "wantToReject": "Are you sure want to reject?", + "employeeDigitalID": "Employee Digital ID", + "businessCard": "Business Card", + "checkOut": "Check Out", + "regular": "Regular", + "mark": "Mark", + "performance": "Performance Evaluation", + "performanceEvaluationIn": "Your performance Evaluation in", + "valuationIn": "Performance Evaluation in", + "viewBusinessCard": "View Business Card", + "performanceEvaluation": "Performance Evaluation", + "logout": "Logout", + "selectMethodOfAttendance": "Select the method to mark the attendance", + "comeNearHMGWifi": "Please come near to HMG wifi", + "deliverNotificationToMeRegardless": "Deliver notifications to me regardless of any general rules", + "close": "Close", + "respond": "Respond", + "vacationRuleAdded": "Vacation rule added", + "selectTypeT": "Select Type", + "notification": "Notification", + "selectNotification": "Select Notification", + "ifAllSelectedYouWillSkip": "*If All is selected, you will skip to step 3", + "applyForVacationRule": "Apply for Vacation Rule", + "step1": "Step 1", + "step2": "Step 2", + "step3": "Step 3", + "message": "Message", + "writeAMessage": "Write a message", + "notificationReassign": "Notification Reassign", + "selectEmployee": "Select Employee", + "searchEmployeeForReplacement": "Search employee for replacement", + "searchForEmployee": "Search for Employee", + "pleaseSpecifyEndTime": "Please specify End Time", + "pleaseSelectNotificationReassign": "Please select notification reassign", + "pleaseSelectEmployeeForReplacement": "Please select employee for replacement", + "pleaseSelectAction": "Please select action", + "pleaseSelectDate": "Please select date", + "todayAttendance": "Today's Attendance", + "viewAttendance": "View Attendance", + "teamMembers": "Team Members", + "profileDetails": "Profile Details", + "noResultsFound": "No Results Found", + "searchBy": "Search by", + "myTeamMembers": "My Team Members", + "save": "Save", + "TurnNotificationsFor": "Turn on notifications for", + "worklistSettings": "Worklist Settings", + "absenceType": "Absence Type", + "absenceCategory": "Absence Category", + "days": "Days", + "hours": "Hours", + "approvalStatus": "Approval Status", + "absenceStatus": "Absence Status", + "poweredBy": "Powered By", + "cloudSolutions": "Cloud Solutions", + "subordinateLeave": "Subordinate Leave", + "numberDays": "Number of days", + "selectTemplate": "Select Template", + "myPostedAds": "My posted ads", + "browseCategories": "Browse Categories", + "searchItems": "Search Items", + "offerAndDiscounts": "Offer & Discounts", + "offerValid": "Offer Valid", + "offerExpired": "Offer Expired", + "whatAreYouOffering": "What are you offering?", + "selectCategory": "Select Category", + "inProgress": "InProgress", + "locked": "Locked", + "addDetails": "Add Details", + "reviewAndSell": "Review & Sell", + "itemTitle": "Item Title", + "itemCondition": "Item Condition", + "used": "Used", + "region": "Region", + "selectRegion": "Select Region", + "itemPrice": "Item Price", + "itemPhotos": "Item Photos", + "itemInfo": "Item Info", + "uploadAttachment": "Upload Attachment", + "selectFromGalleryOrOpenCamera": "Select from gallery or open camera", + "openCamera": "Open\nCamera", + "uploadFromGallery": "Upload from\nGallery", + "name": "Name", + "email": "Email", + "noHistoryAvailable": "No History Available", + "purchaseRequisition": "Purchase Requisition", + "moveOrder": "Move Order", + "humanResource": "Human Resource", + "purchaseOrder": "Purchase Order", + "ITGForms": "ITG Forms", + "itemCreation": "Item Creation", + "stamp": "Stamp", + "addFavoriteList": "Do you want to add {name} in your favorite list", + "feedbackUserExperience": "This is to get the feedback about the user experience", + "rateUI": "1. How would you rate this UI?", + "submitSurvey": "Submit Survey", + "typeHere": "Type here", + "infoDetail": "Info Detail", + "amount_detail": "Amount Detail", + "currentBalance": "Current Balance", + "currentLeaveBalance": "Current Leave Balance", + "calculatedDays": "Calculated Days", + "totalDays": "Total Days", + "usedBalance": "Used", + "infants": "Infants", + "child": "Child", + "adult": "Adult", + "updateMember": "Are You Sure You Want to Update this Member?", + "fieldIsEmpty": "'{data}' Field is empty. Please select", + "pleaseEnterComments": "Please enter comments", + "skip": "Skip", + "typeCurrentPasswordBelow": "Type Your Current password below", + "currentPassword": "Current password", + "concurrentReports": "Concurrent Reports", + "EnterNewAddressMoved": "Enter a new address if you have moved", + "CorrectAddress": "Correct or amend this address", + "SelectChangeWantToMake": "Select the type of change you want to make", + "profile": { + "reset_password": {"label": "Reset Password", "username": "Username", "password": "password"}, + "profileCompletionPer": "Profile Completion", + "completeProfile": "Complete Profile", + "personalInformation": "Personal Information", + "basicDetails": "Basic Details", + "address": "Address", + "contactDetails": "Contact Details", + "familyDetails": "Family Members", + "effectiveDate": "Effective Date", + "country": "Country" + }, + "clicked": { + "zero": "You clicked {} times!", + "one": "You clicked {} time!", + "two": "You clicked {} times!", + "few": "You clicked {} times!", + "many": "You clicked {} times!", + "other": "You clicked {} times!" + }, + "gender": { + "male": "Hi man ;) ", + "female": "Hello girl :)", + "with_arg": {"male": "Hi man ;) {}", "female": "Hello girl :) {}"} + }, + "reset_locale": "Reset Language", + "chat": "Chat", + "mychats": "My Chats", + "createNewChat": "Create New Chat", + "brainMarathon": "Brain Marathon", + "contestTopicAbout": "Contest Topic will be about:", + "gameDate": "Game Date:", + "gameTime": "Game Time:", + "joinMarathon": "Join Marathon", + "joinDemoMarathon": "Join Demo Marathon", + "minutes": "Minutes", + "seconds": "Seconds", + "note": "Note:", + "demoMarathonNoteP1": "You can play the demo Marathon to learn how it works. You can join the Marathon", + "demoMarathonNoteP2": "5 Minutes", + "demoMarathonNoteP3": "before the actual time.", + "sponsoredBy": "Sponsored By:", + "question": "Question", + "marathoners": "Marathoners", + "prize": "Prize:", + "advancedSearch": "Advanced Search", + "openNot": "Open Notifications", + "fyi": "FYI Notifications", + "toDo": "To Do Notifications", + "all": "All Notifications", + "meNot": "Notifications from Me", + "view": "View", + "fromUserName": "From User Name", + "sentDate": "Sent Date", + "itemTypeDisplayName": "Item Type Display Name", + "none": "None", + "winnerSelection": "Winner Selection", + "qualifiers": "Qualifiers", + "getReadyForContest": "Get Ready for the coming contest:", + "winnerSelectedRandomly": "The winner will be selected randomly among the qualifiers.", + "fingersCrossed": "Fingers Crossed!!!", + "congrats": "Congratulations!!!", + "otp": "OTP", + "verification": "Verification", + "resend": "Resend", + "codeExpire": "The verification code has been expired", + "allQuestionsCorrect": "You have answered all questions correct", + "typeheretoreply": "Type here to reply", + "favorite": "My Favorites", + "searchfromchat": "Search from chat", + "yourAnswerCorrect": "Your answer is correct", + "youMissedTheQuestion": "You ran out of time. You are out of the game. But you can continue and as a viewer.", + "wrongAnswer": "Your answer is Incorrect. You are out of the game. But you can continue and as a viewer.", + "oops": "Ooopsss!!!!", + "winner": "WINNER", + "youWantToLeaveMarathon": "Are you sure you want to go back? You will be out of the contest.", + "ourSponsor": "Our Sponsor:", + "startingIn": "Starting in", + "youAreOutOfContest": "You are out of the contest.", + "winners": "WINNERS!!!", + "noUpcoming": "There is no upcoming", + "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified.", + "noWinner": "Sad! No one won today." + }; + static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index e4c6ffb..3d02540 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -500,6 +500,8 @@ abstract class LocaleKeys { static const startingIn = 'startingIn'; static const youAreOutOfContest = 'youAreOutOfContest'; static const winners = 'winners'; + static const noUpcoming = 'noUpcoming'; static const fakeLocation = 'fakeLocation'; + static const noWinner = 'noWinner'; } diff --git a/lib/main.dart b/lib/main.dart index fdc4ad6..8624525 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -27,6 +27,7 @@ Logger logger = Logger( // output: null, // U ); + class MyHttpOverrides extends HttpOverrides { @override HttpClient createHttpClient(SecurityContext? context) { diff --git a/lib/models/marathon/marathon_model.dart b/lib/models/marathon/marathon_model.dart index 6fd1f5c..d86ffc7 100644 --- a/lib/models/marathon/marathon_model.dart +++ b/lib/models/marathon/marathon_model.dart @@ -16,25 +16,28 @@ class MarathonDetailModel { List? sponsors; List? questions; int? totalQuestions; - - MarathonDetailModel( - {id, - titleEn, - titleAr, - descEn, - descAr, - winDeciderTime, - winnersCount, - questGapTime, - startTime, - endTime, - marathoneStatusId, - scheduleTime, - selectedLanguage, - projects, - sponsors, - questions, - totalQuestions}); + int? marathonBufferTime; + + MarathonDetailModel({ + id, + titleEn, + titleAr, + descEn, + descAr, + winDeciderTime, + winnersCount, + questGapTime, + startTime, + endTime, + marathoneStatusId, + scheduleTime, + selectedLanguage, + projects, + sponsors, + questions, + totalQuestions, + marathonBufferTime, + }); MarathonDetailModel.fromJson(Map json) { id = json['id']; @@ -50,22 +53,21 @@ class MarathonDetailModel { marathoneStatusId = json['marathoneStatusId']; scheduleTime = json['scheduleTime']; selectedLanguage = json['selectedLanguage']; - projects = json['projects'] != null - ? Projects.fromJson(json['projects']) - : null; + projects = json['projects'] != null ? Projects.fromJson(json['projects']) : null; if (json['sponsors'] != null) { sponsors = []; json['sponsors'].forEach((v) { - sponsors!.add( Sponsors.fromJson(v)); + sponsors!.add(Sponsors.fromJson(v)); }); } if (json['questions'] != null) { questions = []; json['questions'].forEach((v) { - questions!.add( Questions.fromJson(v)); + questions!.add(Questions.fromJson(v)); }); } totalQuestions = json["totalQuestions"]; + marathonBufferTime = json["marathonBufferTime"]; } Map toJson() { @@ -93,6 +95,7 @@ class MarathonDetailModel { data['questions'] = questions!.map((v) => v.toJson()).toList(); } data['totalQuestions'] = totalQuestions; + data['marathonBufferTime'] = marathonBufferTime; return data; } @@ -132,14 +135,7 @@ class Sponsors { String? logo; List? sponsorPrizes; - Sponsors( - {id, - nameEn, - nameAr, - image, - video, - logo, - sponsorPrizes}); + Sponsors({id, nameEn, nameAr, image, video, logo, sponsorPrizes}); Sponsors.fromJson(Map json) { id = json['id']; @@ -151,13 +147,13 @@ class Sponsors { if (json['sponsorPrizes'] != null) { sponsorPrizes = []; json['sponsorPrizes'].forEach((v) { - sponsorPrizes!.add( SponsorPrizes.fromJson(v)); + sponsorPrizes!.add(SponsorPrizes.fromJson(v)); }); } } Map toJson() { - Map data = {}; + Map data = {}; data['id'] = id; data['nameEn'] = nameEn; data['nameAr'] = nameAr; @@ -165,8 +161,7 @@ class Sponsors { data['video'] = video; data['logo'] = logo; if (sponsorPrizes != null) { - data['sponsorPrizes'] = - sponsorPrizes!.map((v) => v.toJson()).toList(); + data['sponsorPrizes'] = sponsorPrizes!.map((v) => v.toJson()).toList(); } return data; } @@ -186,7 +181,7 @@ class SponsorPrizes { } Map toJson() { - Map data = {}; + Map data = {}; data['id'] = id; data['marathonPrizeEn'] = marathonPrizeEn; data['marathonPrizeAr'] = marathonPrizeAr; @@ -208,19 +203,7 @@ class Questions { int? questOptionsLimit; List? questionOptions; - Questions( - {id, - titleEn, - titleAr, - marathonId, - questionTypeId, - questionTime, - nextQuestGap, - gapType, - gapValue, - gapImage, - questOptionsLimit, - questionOptions}); + Questions({id, titleEn, titleAr, marathonId, questionTypeId, questionTime, nextQuestGap, gapType, gapValue, gapImage, questOptionsLimit, questionOptions}); Questions.fromJson(Map json) { id = json['id']; diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 22768e6..cbf47f8 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -32,6 +32,8 @@ import 'package:signalr_netcore/signalr_client.dart'; late HubConnection chatHubConnection; + + class DashboardScreen extends StatefulWidget { DashboardScreen({Key? key}) : super(key: key); diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index ebf8af7..b00d43e 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -65,6 +65,24 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } + bool _isButtonEnabled = false; + + bool get isButtonEnabled => _isButtonEnabled; + + set isButtonEnabled(bool value) { + _isButtonEnabled = value; + notifyListeners(); + } + + bool _isUserWaiting = false; + + bool get isUserWaiting => _isUserWaiting; + + set isUserWaiting(bool value) { + _isUserWaiting = value; + notifyListeners(); + } + bool _isMarathonCompleted = false; bool get isMarathonCompleted => _isMarathonCompleted; @@ -143,7 +161,13 @@ class MarathonProvider extends ChangeNotifier { ); } - int totalSecondsToWaitForMarathon = 20; + int totalSecondsToWaitForMarathon = 30; + + set updateTotalSecondsToWaitForMarathon(int value) { + totalSecondsToWaitForMarathon = value; + notifyListeners(); + } + Timer timerToWaitForMarathon = Timer.periodic(const Duration(seconds: 1), (Timer timer) {}); void startTimerToWaitForMarathon() { @@ -152,7 +176,13 @@ class MarathonProvider extends ChangeNotifier { oneSec, (Timer timer) async { if (totalSecondsToWaitForMarathon == 0) { - callNextQuestionApi(); + if (isUserWaiting) { + MarathonApiClient().joinMarathonAsParticipant().whenComplete(() async { + await callNextQuestionApi(); + }); + } else { + isButtonEnabled = false; + } timer.cancel(); return; } else { @@ -283,7 +313,6 @@ class MarathonProvider extends ChangeNotifier { } startTimerForQuestion(); updateCardData(); - Navigator.pushReplacementNamed(AppRoutes.navigatorKey.currentContext!, AppRoutes.marathonScreen); } else { currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: currentQuestion.id, marathonId: marathonDetailModel.id!)); @@ -376,17 +405,20 @@ class MarathonProvider extends ChangeNotifier { void resetValues() async { _currentQuestionNumber = 0; cardContentList.clear(); + itsMarathonTime = false; timerForWinnerSelection.cancel(); timerForSponsorVideo.cancel(); timerToWaitForMarathon.cancel(); timerForQuestion.cancel(); _isMarathonCompleted = false; isUserOutOfGame = false; + isButtonEnabled = false; + isUserWaiting = false; totalCurrentQuestionTime = 0; sponsorsSecondsCounter = 0; totalSponsorVideoSeconds = 0; totalSecondsToWaitForWinner = 30; - totalSecondsToWaitForMarathon = 0; + totalSecondsToWaitForMarathon = 30; currentGapTime = 0; currentQuestion = QuestionModel(); if (answerStatusesList.isNotEmpty) { @@ -420,12 +452,16 @@ class MarathonProvider extends ChangeNotifier { if (isPrivilegedWithMarathon) { await MarathonApiClient().getMarathonToken().whenComplete(() async { marathonDetailModel = await MarathonApiClient().getMarathonDetails(); + updateTotalSecondsToWaitForMarathon = marathonDetailModel.marathonBufferTime ?? 30; if (marathonDetailModel.id == null) { isUpComingMarathon = false; isLoading = false; notifyListeners(); return; } + if (DateTime.parse(marathonDetailModel.startTime!).isAfter(DateTime.now())) { + itsMarathonTime = false; + } populateQuestionStatusesList(); }); } @@ -435,17 +471,9 @@ class MarathonProvider extends ChangeNotifier { Future onJoinMarathonPressed(BuildContext context) async { try { - Utils.showLoading(context); - resetValues(); - int? remainingTime = await MarathonApiClient().joinMarathonAsParticipant(); - if (remainingTime != null) { - totalSecondsToWaitForMarathon = remainingTime; - notifyListeners(); - startTimerToWaitForMarathon(); - Navigator.pushReplacementNamed(context, AppRoutes.marathonWaitingScreen); - } + isUserWaiting = true; + Navigator.pushReplacementNamed(context, AppRoutes.marathonWaitingScreen); } catch (e) { - Utils.hideLoading(context); Utils.confirmDialog(context, e.toString()); } } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index dffc4b8..f8bc969 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -51,12 +51,13 @@ class MarathonScreen extends StatelessWidget { decoration: MyDecorations.shadowDecoration, padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), child: provider.selectedWinners == null || (provider.selectedWinners!.isEmpty && !provider.iAmWinner) - //TODO: WE WILL UPDATE THE DESIGN WHEN THERE IS NO WINNER!! - ? Center( - child: "Sad! No one won Today. What you guys are doing?".toText20( - color: MyColors.grey3AColor, - isCentered: true, - ), + ? Column( + children: [ + Lottie.asset(MyLottieConsts.noWinnerLottie), + Center( + child: LocaleKeys.noWinner.tr().toText18(color: MyColors.grey3AColor, isCentered: true), + ), + ], ) : Stack( children: [ @@ -178,6 +179,7 @@ class MarathonScreen extends StatelessWidget { onHomeTapped: () { if (provider.questionCardStatus == QuestionCardStatus.winnerFound) { provider.resetValues(); + provider.getMarathonDetailsFromApi(); Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); } else { showDialog( @@ -186,6 +188,7 @@ class MarathonScreen extends StatelessWidget { message: LocaleKeys.youWantToLeaveMarathon.tr(), onTap: () { provider.resetValues(); + provider.getMarathonDetailsFromApi(); Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); }, ), @@ -195,6 +198,7 @@ class MarathonScreen extends StatelessWidget { onBackTapped: () { if (provider.questionCardStatus == QuestionCardStatus.winnerFound) { provider.resetValues(); + provider.getMarathonDetailsFromApi(); Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); } else { showDialog( @@ -213,7 +217,7 @@ class MarathonScreen extends StatelessWidget { body: Column( children: [ ListView( - children: [ + children: [ 10.height, if (provider.questionCardStatus == QuestionCardStatus.findingWinner) ...[ QualifiersContainer(provider: provider).paddingOnly(left: 21, right: 21), @@ -249,7 +253,7 @@ class MarathonScreen extends StatelessWidget { subTitle: LocaleKeys.youMissedTheQuestion.tr().toText18(color: MyColors.darkTextColor, isCentered: true), ), onFindingWinner: (BuildContext context) => CustomStatusWidget( - asset: Lottie.asset(MyLottieConsts.winnerLottie, height: 168), + asset: Lottie.asset(MyLottieConsts.winnerLottie, height: 168, reverse: false), title: LocaleKeys.fingersCrossed.tr().toText22(color: MyColors.greenColor), subTitle: LocaleKeys.winnerSelectedRandomly.tr().toText18(color: MyColors.darkTextColor, isCentered: true), ), @@ -260,6 +264,7 @@ class MarathonScreen extends StatelessWidget { provider.questionCardStatus == QuestionCardStatus.winnerFound ? DefaultButton(LocaleKeys.ok.tr(), () { provider.resetValues(); + provider.getMarathonDetailsFromApi(); Navigator.of(context).popUntil(ModalRoute.withName(AppRoutes.dashboard)); }).insideContainer : const SizedBox() diff --git a/lib/ui/marathon/marathon_waiting_screen.dart b/lib/ui/marathon/marathon_waiting_screen.dart index 7191ff2..5dfb3ee 100644 --- a/lib/ui/marathon/marathon_waiting_screen.dart +++ b/lib/ui/marathon/marathon_waiting_screen.dart @@ -80,24 +80,24 @@ class MarathonWaitingScreen extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ LocaleKeys.startingIn.tr().toText16(), - provider.totalSecondsToWaitForMarathon.toString().toText18(color: provider.totalSecondsToWaitForMarathon < 5 ? MyColors.redColor : MyColors.black), - ], - ), - ), - Align( - child: Column( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - InkWell( - onTap: () { - provider.callNextQuestionApi(); - provider.timerToWaitForMarathon.cancel(); - }, - child: "Join Now".toText16(), - ).paddingOnly(bottom: 20), + (provider.totalSecondsToWaitForMarathon < 10 ? "0${provider.totalSecondsToWaitForMarathon.toString()}" : provider.totalSecondsToWaitForMarathon.toString()).toText18(color: provider.totalSecondsToWaitForMarathon < 5 ? MyColors.redColor : MyColors.black), ], ), ), + // Align( + // child: Column( + // mainAxisAlignment: MainAxisAlignment.end, + // children: [ + // InkWell( + // onTap: () { + // provider.callNextQuestionApi(); + // provider.timerToWaitForMarathon.cancel(); + // }, + // child: "Join Now".toText16(), + // ).paddingOnly(bottom: 20), + // ], + // ), + // ), ], ), ).expanded, diff --git a/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart new file mode 100644 index 0000000..2f5f727 --- /dev/null +++ b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart @@ -0,0 +1,202 @@ +import 'dart:async'; +import 'dart:ui' as ui; + +import 'package:auto_size_text/auto_size_text.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_countdown_timer/current_remaining_time.dart'; +import 'package:flutter_countdown_timer/flutter_countdown_timer.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/main.dart'; +import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; + +class CountdownTimerForDetailScreen extends StatelessWidget { + final int timeToMarathon; + final MarathonProvider provider; + + CountdownTimerForDetailScreen({ + Key? key, + required this.provider, + required this.timeToMarathon, + }) : super(key: key); + + final TextStyle styleTextHome = TextStyle( + color: MyColors.white.withOpacity(0.45), + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w800, + letterSpacing: -0.4, + ); + + final TextStyle styleDigitHome = TextStyle( + height: 22 / 27, + color: MyColors.white, + fontSize: isTablet ? 30 : 15, + fontStyle: FontStyle.italic, + letterSpacing: -1.44, + fontWeight: FontWeight.bold, + ); + + final TextStyle styleTextMarathon = const TextStyle( + fontSize: 10, + fontStyle: FontStyle.normal, + fontWeight: FontWeight.w600, + color: MyColors.grey57Color, + letterSpacing: -0.4, + ); + + final TextStyle styleDigitMarathon = const TextStyle( + height: 23 / 24, + color: MyColors.darkTextColor, + fontSize: 34, + letterSpacing: -1.44, + fontWeight: FontWeight.bold, + ); + + Widget buildSeparator() { + return AutoSizeText( + " : ", + maxFontSize: 24, + minFontSize: 20, + style: styleDigitMarathon, + ); + } + + Widget getTimeDigit(String text) { + return AutoSizeText( + text, + maxFontSize: 24, + minFontSize: 20, + style: styleDigitMarathon, + ); + } + + Widget getTimeText(String text) { + return AutoSizeText( + text, + minFontSize: 7, + maxFontSize: 8, + style: styleTextMarathon, + ); + } + + Widget buildEmptyWidget() { + return Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + children: [ + getTimeDigit("00"), + getTimeText(LocaleKeys.days.tr()), + ], + ), + buildSeparator(), + Column( + children: [ + getTimeDigit("00"), + getTimeText(LocaleKeys.hours.tr()), + ], + ), + buildSeparator(), + Column( + children: [ + getTimeDigit("00"), + getTimeText(LocaleKeys.minutes.tr()), + ], + ), + buildSeparator(), + Column( + children: [ + getTimeDigit("00"), + getTimeText(LocaleKeys.seconds.tr()), + ], + ), + ], + ), + ); + } + + Widget buildCountdownTimer(CurrentRemainingTime? time) { + if (time == null) { + if (!provider.itsMarathonTime) { + scheduleMicrotask(() { + provider.itsMarathonTime = true; + provider.isButtonEnabled = true; + provider.startTimerToWaitForMarathon(); + }); + } + + return provider.itsMarathonTime + ? Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + children: [ + getTimeDigit(provider.totalSecondsToWaitForMarathon.toString()), + getTimeText(LocaleKeys.seconds.tr()), + ], + ), + ], + ), + ) + : buildEmptyWidget(); + } + + return Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + children: [ + time.days == null ? getTimeDigit("00") : getTimeDigit(time.days! < 10 ? "0${time.days.toString()}" : time.days.toString()), + getTimeText(LocaleKeys.days.tr()), + ], + ), + buildSeparator(), + Column( + children: [ + time.hours == null ? getTimeDigit("00") : getTimeDigit(time.hours! < 10 ? "0${time.hours.toString()}" : time.hours.toString()), + getTimeText(LocaleKeys.hours.tr()), + ], + ), + buildSeparator(), + Column( + children: [ + time.min == null ? getTimeDigit("00") : getTimeDigit(time.min! < 10 ? "0${time.min.toString()}" : time.min.toString()), + getTimeText(LocaleKeys.minutes.tr()), + ], + ), + buildSeparator(), + Column( + children: [ + time.sec == null ? getTimeDigit("00") : getTimeDigit(time.sec! < 10 ? "0${time.sec.toString()}" : time.sec.toString()), + getTimeText(LocaleKeys.seconds.tr()), + ], + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + return CountdownTimer( + endTime: timeToMarathon, + onEnd: null, + widgetBuilder: (BuildContext context, CurrentRemainingTime? time) { + return buildCountdownTimer(time); + }, + ); + } +} diff --git a/lib/ui/marathon/widgets/countdown_timer.dart b/lib/ui/marathon/widgets/countdown_timer_main_screen.dart similarity index 90% rename from lib/ui/marathon/widgets/countdown_timer.dart rename to lib/ui/marathon/widgets/countdown_timer_main_screen.dart index 3a33697..ef828da 100644 --- a/lib/ui/marathon/widgets/countdown_timer.dart +++ b/lib/ui/marathon/widgets/countdown_timer_main_screen.dart @@ -1,4 +1,3 @@ -import 'dart:async'; import 'dart:ui' as ui; import 'package:auto_size_text/auto_size_text.dart'; @@ -11,16 +10,14 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; -class BuildCountdownTimer extends StatelessWidget { +class CountdownTimerForMainScreen extends StatelessWidget { final int timeToMarathon; final MarathonProvider provider; - final int screenFlag; - BuildCountdownTimer({ + CountdownTimerForMainScreen({ Key? key, required this.provider, required this.timeToMarathon, - required this.screenFlag, }) : super(key: key); final TextStyle styleTextHome = TextStyle( @@ -60,7 +57,7 @@ class BuildCountdownTimer extends StatelessWidget { " : ", maxFontSize: 24, minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + style: styleDigitHome, ); } @@ -69,7 +66,7 @@ class BuildCountdownTimer extends StatelessWidget { text, maxFontSize: 24, minFontSize: 20, - style: screenFlag == 0 ? styleDigitHome : styleDigitMarathon, + style: styleDigitHome, ); } @@ -78,7 +75,7 @@ class BuildCountdownTimer extends StatelessWidget { text, minFontSize: 7, maxFontSize: 8, - style: screenFlag == 0 ? styleTextHome : styleTextMarathon, + style: styleTextHome, ); } @@ -124,14 +121,9 @@ class BuildCountdownTimer extends StatelessWidget { Widget buildCountdownTimer(CurrentRemainingTime? time) { if (time == null) { - if (!provider.itsMarathonTime) { - scheduleMicrotask(() { - provider.itsMarathonTime = true; - }); - } - return buildEmptyWidget(); } + return Directionality( textDirection: ui.TextDirection.ltr, child: Row( diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index d75322b..ff374c3 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -1,3 +1,4 @@ +import 'dart:developer'; import 'dart:math' as math; import 'package:easy_localization/easy_localization.dart'; @@ -14,9 +15,13 @@ import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer_main_screen.dart'; import 'package:provider/provider.dart'; + +// It is used to pass a dummy time to test Marathon +int dummyTime = DateTime.now().millisecondsSinceEpoch + 8690; + class MarathonBanner extends StatelessWidget { final bool isMarathonUpcoming; @@ -180,6 +185,155 @@ class MarathonBanner extends StatelessWidget { ); } + Widget getNoUpcomingMarathonWidget(BuildContext context) { + return Container( + decoration: MyDecorations.shadowDecoration, + height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, + clipBehavior: Clip.antiAlias, + child: Stack( + children: [ + Transform( + alignment: Alignment.center, + transform: Matrix4.rotationY( + AppState().isArabic(context) ? math.pi : 0, + ), + child: SvgPicture.asset( + "assets/images/marathon_banner_bg.svg", + fit: BoxFit.fill, + width: double.infinity, + ), + ), + AppState().isArabic(context) + ? Positioned( + right: -15, + top: -10, + child: Transform.rotate( + angle: 10, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, + ), + ), + ) + : Positioned( + left: -20, + top: -10, + child: Transform.rotate( + angle: 15, + child: Container( + width: isTablet ? 70 : 65, + height: isTablet ? 40 : 32, + color: MyColors.darkDigitColor, + ), + ), + ), + SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + children: [ + const Expanded( + flex: 3, + child: SizedBox( + width: double.infinity, + height: double.infinity, + ), + ), + Expanded( + flex: AppState().isArabic(context) ? 4 : 5, + child: SizedBox( + width: double.infinity, + height: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + AppState().isArabic(context) ? 0.height : 5.height, + Text( + LocaleKeys.noUpcoming.tr(), + style: TextStyle( + fontSize: isTablet ? 20 : 11, + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w600, + color: MyColors.white.withOpacity(0.83), + letterSpacing: -0.4, + ), + ), + Text( + LocaleKeys.brainMarathon.tr(), + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: isTablet ? 30 : 19, + fontWeight: FontWeight.bold, + color: MyColors.white.withOpacity(0.83), + height: 32 / 22, + ), + ), + ], + ).paddingOnly( + left: AppState().isArabic(context) ? 12 : 3, + right: AppState().isArabic(context) ? 3 : 12, + ) + ], + ), + ), + ), + ], + ), + ), + AppState().isArabic(context) + ? Align( + alignment: Alignment.topRight, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.white, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, + ), + ), + ), + ), + ).paddingOnly(top: 5) + : Align( + alignment: Alignment.topLeft, + child: SizedBox( + height: isTablet ? 30 : 20, + width: isTablet ? 45 : 35, + child: Transform.rotate( + angle: -math.pi / 4.5, + child: Text( + LocaleKeys.brainMarathon.tr(), + textAlign: TextAlign.center, + maxLines: 2, + style: TextStyle( + color: MyColors.kWhiteColor, + fontWeight: FontWeight.bold, + fontSize: isTablet ? 8 : 6, + height: 1.2, + ), + ), + ), + ), + ).paddingOnly(top: 5), + ], + ), + ); + } + @override Widget build(BuildContext context) { MarathonProvider provider = context.read(); @@ -276,10 +430,10 @@ class MarathonBanner extends StatelessWidget { ), ), isTablet ? 10.height : 3.height, - BuildCountdownTimer( + CountdownTimerForMainScreen( timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, + // timeToMarathon: dummyTime, provider: provider, - screenFlag: 0, ), ], ).paddingOnly( @@ -353,30 +507,30 @@ class MarathonBanner extends StatelessWidget { child: SvgPicture.asset("assets/images/arrow_next.svg", color: MyColors.whiteColor), ).paddingAll(isTablet ? 20 : 15), ), - ], ).onPress(() async { - int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; - if (remainingTimeInMinutes > 2 && provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) { - Utils.showLoading(context); - try { - await provider.initializeVideoPlayer().then((_) { - Utils.hideLoading(context); - provider.startTimerForSponsorVideo(); - Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); - }); - } catch (e) { - if (kDebugMode) { - print("Error in VideoPlayer: ${e.toString()}"); - } + int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; + + if (remainingTimeInMinutes > 2 && provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) { + Utils.showLoading(context); + try { + await provider.initializeVideoPlayer().then((_) { Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + provider.startTimerForSponsorVideo(); + Navigator.pushNamed(context, AppRoutes.marathonSponsorVideoScreen); + }); + } catch (e) { + if (kDebugMode) { + log("Error in VideoPlayer: ${e.toString()}"); } - } else { + Utils.hideLoading(context); Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); } + } else { + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + } }), ) - : const SizedBox(); + : getNoUpcomingMarathonWidget(context); } } diff --git a/lib/ui/marathon/widgets/marathon_footer.dart b/lib/ui/marathon/widgets/marathon_footer.dart index fea076e..4146cb3 100644 --- a/lib/ui/marathon/widgets/marathon_footer.dart +++ b/lib/ui/marathon/widgets/marathon_footer.dart @@ -43,7 +43,7 @@ class MarathonFooter extends StatelessWidget { Widget build(BuildContext context) { return DefaultButton( LocaleKeys.joinMarathon.tr(), - !provider.itsMarathonTime ? () => provider.onJoinMarathonPressed(context) : null, + provider.isButtonEnabled ? () => provider.onJoinMarathonPressed(context) : null, ).insideContainer; } } diff --git a/lib/ui/marathon/widgets/marathon_progress_container.dart b/lib/ui/marathon/widgets/marathon_progress_container.dart index 5015f25..29c9d8c 100644 --- a/lib/ui/marathon/widgets/marathon_progress_container.dart +++ b/lib/ui/marathon/widgets/marathon_progress_container.dart @@ -42,9 +42,13 @@ class MarathonProgressContainer extends StatelessWidget { stepper(provider.currentQuestionNumber, provider.answerStatusesList, provider.marathonDetailModel.totalQuestions!, provider.isUserOutOfGame), 8.height, Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ "${provider.currentQuestionNumber == 1 ? 0 : (((provider.currentQuestionNumber - 1) / provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}" .toText14(), + provider.isUserOutOfGame + ? LocaleKeys.youAreOutOfContest.tr().toText14(color: MyColors.redColor) + : const SizedBox(), ], ), ], diff --git a/lib/ui/marathon/widgets/marathon_timer_card.dart b/lib/ui/marathon/widgets/marathon_timer_card.dart index e831738..ddecb36 100644 --- a/lib/ui/marathon/widgets/marathon_timer_card.dart +++ b/lib/ui/marathon/widgets/marathon_timer_card.dart @@ -9,7 +9,8 @@ import 'package:mohem_flutter_app/classes/lottie_consts.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer_detail_screen.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_banner.dart'; class MarathonTimerCard extends StatelessWidget { @@ -43,7 +44,11 @@ class MarathonTimerCard extends StatelessWidget { ], ), Lottie.asset(MyLottieConsts.hourGlassLottie, height: 200), - BuildCountdownTimer(timeToMarathon: timeToMarathon, provider: provider, screenFlag: 1), + CountdownTimerForDetailScreen( + // timeToMarathon: dummyTime, + timeToMarathon: timeToMarathon, + provider: provider, + ), ], ), ); diff --git a/lib/ui/marathon/winner_screen.dart b/lib/ui/marathon/winner_screen.dart deleted file mode 100644 index 8d6d171..0000000 --- a/lib/ui/marathon/winner_screen.dart +++ /dev/null @@ -1,93 +0,0 @@ -import 'package:easy_localization/easy_localization.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:lottie/lottie.dart'; -import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/decorations_helper.dart'; -import 'package:mohem_flutter_app/classes/lottie_consts.dart'; -import 'package:mohem_flutter_app/extensions/int_extensions.dart'; -import 'package:mohem_flutter_app/extensions/string_extensions.dart'; -import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; -import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; -import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; - -class WinnerScreen extends StatelessWidget { - const WinnerScreen({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return Scaffold( - backgroundColor: MyColors.backgroundColor, - appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()), - body: SingleChildScrollView( - child: Column( - children: [ - 60.height, - Container( - width: double.infinity, - decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), - child: Column( - children: [ - SizedBox( - height: 200, - child: Stack( - children: [ - Lottie.asset( - MyLottieConsts.celebrate1Lottie, - height: 200, - ), - Lottie.asset( - MyLottieConsts.celebrate2Lottie, - height: 200, - ), - ], - ), - ), - 26.height, - SizedBox( - height: 50, - child: Stack( - children: [ - Align( - alignment: Alignment.center, - child: SvgPicture.asset( - "assets/images/winner_ribbon.svg", - height: 50, - ), - ), - Align( - alignment: Alignment.center, - child: "WINNER".toText32(color: MyColors.white, isBold: true).paddingOnly(top: 07), - ) - ], - ), - ), - 12.height, - "Muhammad Shrouff".toText22(color: MyColors.grey3AColor), - "837436".toText22(color: MyColors.grey57Color), - 80.height, - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - LocaleKeys.sponsoredBy.tr().toText14(color: MyColors.grey77Color), - " Extra".toText14(color: MyColors.darkTextColor, isBold: true), - ], - ), - 5.height, - Image.asset( - "assets/images/logos/main_mohemm_logo.png", - height: 40, - fit: BoxFit.fill, - width: 150, - ) - ], - ), - ).paddingOnly(left: 21, right: 21), - 10.height, - ], - ), - ), - ); - } -} diff --git a/lib/widgets/shimmer/dashboard_shimmer_widget.dart b/lib/widgets/shimmer/dashboard_shimmer_widget.dart index fc243f0..d023898 100644 --- a/lib/widgets/shimmer/dashboard_shimmer_widget.dart +++ b/lib/widgets/shimmer/dashboard_shimmer_widget.dart @@ -132,7 +132,7 @@ class ServicesHeaderShimmer extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - "Other".tr().toText10().toShimmer(), + LocaleKeys.otherCharges.tr().toText10().toShimmer(), 6.height, LocaleKeys.services.tr().toText12(isBold: true).toShimmer(), ], From 8c3745b7473b89efe67f6ccb9768bc7c3a2ea8b0 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 26 Dec 2022 14:58:02 +0300 Subject: [PATCH 270/302] Voice Chat Fixes & Audio Player Implementation --- lib/app_state/app_state.dart | 25 ++- lib/classes/consts.dart | 4 +- lib/provider/chat_provider_model.dart | 132 ++++++++++----- lib/provider/dashboard_provider_model.dart | 5 +- lib/ui/chat/chat_home.dart | 6 +- lib/ui/chat/my_team_screen.dart | 155 ++++++++++++++++++ .../search_employee_bottom_sheet.dart | 2 +- 7 files changed, 278 insertions(+), 51 deletions(-) create mode 100644 lib/ui/chat/my_team_screen.dart diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 7d175b5..b354a43 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -5,6 +5,7 @@ import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart'; import 'package:mohem_flutter_app/models/itg_forms_models/request_detail_model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/models/member_login_list_model.dart'; +import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart'; import 'package:mohem_flutter_app/models/post_params_model.dart'; import 'package:mohem_flutter_app/models/privilege_list_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart'; @@ -38,7 +39,6 @@ class AppState { String? get getForgetPasswordTokenID => forgetPasswordTokenID; - //Wifi info String? _mohemmWifiSSID; @@ -52,13 +52,13 @@ class AppState { String? get getMohemmWifiPassword => _mohemmWifiPassword; - String? _marathonToken ; + String? _marathonToken; set setMarathonToken(String token) => _marathonToken = token; String? get getMarathonToken => _marathonToken; - String? _projectID ; + String? _projectID; set setMarathonProjectId(String token) => _projectID = token; @@ -145,7 +145,24 @@ class AppState { UserAutoLoginModel? get getchatUserDetails => chatDetails; - String? _base64ImageEmp = "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"; + String? _base64ImageEmp = + "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"; String? get getBase64ImageEmp => _base64ImageEmp; + + bool _empStatusIsManager = false; + + bool get getempStatusIsManager => _empStatusIsManager; + + set setempStatusIsManager(bool empStatusIsManager) { + _empStatusIsManager = empStatusIsManager; + } + + List _employeeSubordinatesList = []; + + List get getemployeeSubordinatesList => _employeeSubordinatesList; + + set setemployeeSubordinatesList(List employeeSubordinatesList) { + _employeeSubordinatesList = employeeSubordinatesList; + } } diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 4a7d7fe..52d0407 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 4dc55f6..53b71ff 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -12,6 +12,7 @@ import 'package:http/http.dart'; import 'package:just_audio/just_audio.dart' as JustAudio; import 'package:just_audio/just_audio.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; +import 'package:mohem_flutter_app/api/my_team/my_team_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/encryption.dart'; @@ -22,6 +23,7 @@ import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; import 'package:mohem_flutter_app/models/chat/get_user_login_token_model.dart' as userLoginToken; import 'package:mohem_flutter_app/models/chat/make_user_favotire_unfavorite_chat_model.dart' as fav; +import 'package:mohem_flutter_app/models/my_team/get_employee_subordinates_list.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/image_picker.dart'; import 'package:open_file/open_file.dart'; @@ -48,9 +50,22 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List favUsersList = []; int paginationVal = 0; int? cTypingUserId = 0; - bool isTextMsg = false, isReplyMsg = false, isAttachmentMsg = false, isVoiceMsg = false; + // Audio Recoding Work + Timer? _timer; + int _recodeDuration = 0; + bool isRecoding = false; + bool isPause = false; + bool isPlaying = false; + String? path; + String? musicFile; + late Directory appDirectory; + late RecorderController recorderController; + late PlayerController playerController; + List getEmployeeSubordinatesList = []; + List teamMembersList = []; + //Chat Home Page Counter int chatUConvCounter = 0; @@ -67,6 +82,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future buildHubConnection() async { + chatHubConnection = await getHubConnection(); await chatHubConnection.start(); if (kDebugMode) { @@ -183,34 +199,32 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void markRead(List data, int receiverID) { - if (data != null) { - for (SingleUserChatModel element in data!) { - if (AppState().chatDetails!.response!.id! == element.targetUserId) { - if (element.isSeen != null) { - if (!element.isSeen!) { - element.isSeen = true; - dynamic data = [ - { - "userChatHistoryId": element.userChatHistoryId, - "TargetUserId": element.currentUserId == receiverID ? element.currentUserId : element.targetUserId, - "isDelivered": true, - "isSeen": true, - } - ]; - updateUserChatHistoryStatusAsync(data); - notifyListeners(); - } + for (SingleUserChatModel element in data!) { + if (AppState().chatDetails!.response!.id! == element.targetUserId) { + if (element.isSeen != null) { + if (!element.isSeen!) { + element.isSeen = true; + dynamic data = [ + { + "userChatHistoryId": element.userChatHistoryId, + "TargetUserId": element.currentUserId == receiverID ? element.currentUserId : element.targetUserId, + "isDelivered": true, + "isSeen": true, + } + ]; + updateUserChatHistoryStatusAsync(data); + notifyListeners(); } - for (ChatUser element in searchedChats!) { - if (element.id == receiverID) { - element.unreadMessageCount = 0; - chatUConvCounter = 0; - } + } + for (ChatUser element in searchedChats!) { + if (element.id == receiverID) { + element.unreadMessageCount = 0; + chatUConvCounter = 0; } } } - notifyListeners(); } + notifyListeners(); } void updateUserChatHistoryStatusAsync(List data) { @@ -610,7 +624,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { //Text if (isTextMsg && !isAttachmentMsg && !isVoiceMsg && !isReplyMsg) { logger.d("// Normal Text Message"); - if (message.text == null || message.text.isEmpty) { + if (message.text.isEmpty) { return; } sendChatToServer( @@ -628,7 +642,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { userStatus: userStatus); } else if (isTextMsg && !isAttachmentMsg && !isVoiceMsg && isReplyMsg) { logger.d("// Text Message as Reply"); - if (message.text == null || message.text.isEmpty) { + if (message.text.isEmpty) { return; } sendChatToServer( @@ -992,7 +1006,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void deleteData() { List exists = [], unique = []; - if(searchedChats != null) exists.addAll(searchedChats!); + if (searchedChats != null) exists.addAll(searchedChats!); exists.addAll(favUsersList!); Map profileMap = {}; for (ChatUser item in exists) { @@ -1125,18 +1139,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await chatHubConnection.invoke("UserTypingAsync", args: [reciptUser, currentUser]); } -// Audio Recoding Work - Timer? _timer; - int _recodeDuration = 0; - bool isRecoding = false; - bool isPause = false; - bool isPlaying = false; - String? path; - String? musicFile; - late Directory appDirectory; - late RecorderController recorderController; - late PlayerController playerController; - //////// Audio Recoding Work //////////////////// Future initAudio({required int receiverId}) async { @@ -1282,4 +1284,56 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } + + Future getTeamMembers() async { + teamMembersList = []; + isLoading = true; + if (AppState().getemployeeSubordinatesList.isNotEmpty) { + print("=============== In App State ====================="); + getEmployeeSubordinatesList = AppState().getemployeeSubordinatesList; + for (GetEmployeeSubordinatesList element in getEmployeeSubordinatesList) { + print(element.eMPLOYEEEMAILADDRESS); + teamMembersList.add( + ChatUser( + id: int.parse(element.eMPLOYEENUMBER!), + email: element.eMPLOYEEEMAILADDRESS, + userName: element.eMPLOYEEDISPLAYNAME, + phone: element.eMPLOYEEMOBILENUMBER, + userStatus: 0, + unreadMessageCount: 0, + isFav: false, + isTyping: false, + isImageLoading: false, + image: element.eMPLOYEEIMAGE ?? "", + isImageLoaded: true, + userLocalDownlaodedImage: await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), + ), + ); + } + } else { + getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates("", "", ""); + AppState().setemployeeSubordinatesList = getEmployeeSubordinatesList; + for (GetEmployeeSubordinatesList element in getEmployeeSubordinatesList) { + print(element.eMPLOYEEEMAILADDRESS); + teamMembersList.add( + ChatUser( + id: int.parse(element.eMPLOYEENUMBER!), + email: element.eMPLOYEEEMAILADDRESS, + userName: element.eMPLOYEEDISPLAYNAME, + phone: element.eMPLOYEEMOBILENUMBER, + userStatus: 0, + unreadMessageCount: 0, + isFav: false, + isTyping: false, + isImageLoading: false, + image: element.eMPLOYEEIMAGE ?? "", + isImageLoaded: true, + userLocalDownlaodedImage: await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), + ), + ); + } + } + isLoading = false; + notifyListeners(); + } } diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index c1a186a..0c313b8 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -3,6 +3,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/api/offers_and_discounts_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; @@ -35,8 +36,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { bool isWorkListLoading = true; int workListCounter = 0; - - //Misssing Swipe bool isMissingSwipeLoading = true; int missingSwipeCounter = 0; @@ -94,7 +93,6 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { accrualList = null; leaveBalanceAccrual = null; - ticketBalance = 0; isServicesMenusLoading = true; homeMenus = null; @@ -215,6 +213,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } List findMyTeam = menuList.where((element) => element.menuType == "M").toList(); if (findMyTeam.isNotEmpty) { + AppState().setempStatusIsManager = true; drawerMenuItemList.insert(2, DrawerMenuItem("assets/images/drawer/my_team.svg", LocaleKeys.myTeamMembers.tr(), AppRoutes.myTeam)); } } catch (ex) { diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 8973f6b..49908dd 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -1,5 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; @@ -8,6 +9,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/chat_home_screen.dart'; import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; +import 'package:mohem_flutter_app/ui/chat/my_team_screen.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; @@ -81,7 +83,7 @@ class _ChatHomeState extends State { children: [ myTab(LocaleKeys.mychats.tr(), 0), myTab(LocaleKeys.favorite.tr(), 1), - myTab("My Team", 2), + AppState().getempStatusIsManager ? myTab("My Team", 2) : const SizedBox(), ], ), ), @@ -96,7 +98,7 @@ class _ChatHomeState extends State { children: [ ChatHomeScreen(), ChatFavoriteUsersScreen(), - ChatFavoriteUsersScreen(), + AppState().getempStatusIsManager ? const MyTeamScreen() : const SizedBox(), ], ).expanded, ], diff --git a/lib/ui/chat/my_team_screen.dart b/lib/ui/chat/my_team_screen.dart new file mode 100644 index 0000000..6b68a58 --- /dev/null +++ b/lib/ui/chat/my_team_screen.dart @@ -0,0 +1,155 @@ +import 'dart:convert'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/colors.dart'; +import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart'; +import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; +import 'package:provider/provider.dart'; + +class MyTeamScreen extends StatefulWidget { + const MyTeamScreen({Key? key}) : super(key: key); + + @override + State createState() => _MyTeamScreenState(); +} + +class _MyTeamScreenState extends State { + late ChatProviderModel provider; + + @override + void initState() { + super.initState(); + provider = Provider.of(context, listen: false); + loadMembers(); + } + + + void loadMembers(){ + provider.getTeamMembers(); + } + + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: MyColors.white, + body: Consumer( + builder: (BuildContext context, ChatProviderModel m, Widget? child) { + if (m.isLoading) { + return ChatHomeShimmer( + isDetailedScreen: false, + ); + } else { + return m.teamMembersList != null && m.teamMembersList.isNotEmpty + ? ListView.separated( + itemCount: m.teamMembersList!.length, + shrinkWrap: true, + physics: const ClampingScrollPhysics(), + padding: const EdgeInsets.only(bottom: 80.0), + itemBuilder: (BuildContext context, int index) { + return SizedBox( + height: 55, + child: Row( + children: [ + Stack( + children: [ + if (m.teamMembersList![index].isImageLoading!) + const SizedBox( + height: 48, + width: 48, + ).toShimmer().circle(30), + if (!m.teamMembersList![index].isImageLoading! && m.teamMembersList![index].userLocalDownlaodedImage == null) + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + if (!m.teamMembersList![index].isImageLoading! && m.teamMembersList![index].userLocalDownlaodedImage != null) + Container( + width: 48.0, + height: 48.0, + decoration: BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + fit: BoxFit.cover, + image: FileImage(m.teamMembersList![index].userLocalDownlaodedImage!), + ), + ), + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: m.teamMembersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + ), + ).circle(10), + ) + ], + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (m.teamMembersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), + ], + ).expanded, + // SizedBox( + // width: 60, + // child: Row( + // crossAxisAlignment: CrossAxisAlignment.center, + // mainAxisAlignment: MainAxisAlignment.end, + // mainAxisSize: MainAxisSize.max, + // children: [ + // Icon( + // m.teamMembersList![index].isFav! ? Icons.star : Icons.star_border, + // color: m.teamMembersList![index].isFav! ? MyColors.yellowColor : MyColors.grey35Color, + // ).onPress(() { + // if (m.teamMembersList![index].isFav!) { + // m.unFavoriteUser( + // userID: AppState().chatDetails!.response!.id!, + // targetUserID: m.teamMembersList![index].id!, + // ); + // } + // }).center, + // ], + // ), + // ), + ], + ), + ).onPress(() { + print(jsonEncode(m.teamMembersList[index])); + // Navigator.pushNamed( + // context, + // AppRoutes.chatDetailed, + // arguments: ChatDetailedScreenParams(m.teamMembersList![index], true), + // ).then( + // (Object? value) { + // m.clearSelections(); + // }, + // ); + }); + }, + separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 70), + ).paddingAll(21) + : Column( + children: [ + Utils.getNoDataWidget(context).expanded, + ], + ); + } + }, + ), + ); + } +} diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index 77501bc..488b50f 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -94,7 +94,7 @@ class _SearchEmployeeBottomSheetState extends State { searchText, int.parse(AppState().chatDetails!.response!.id.toString()), ); - chatUsersList!.removeWhere((element) => element.id == AppState().chatDetails!.response!.id); + chatUsersList!.removeWhere((ChatUser element) => element.id == AppState().chatDetails!.response!.id); Utils.hideLoading(context); setState(() {}); } catch (e) { From b4fc3dd5fd4fa760e1ef27e056ee8ee69d580a8e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 26 Dec 2022 15:16:11 +0300 Subject: [PATCH 271/302] version fixes --- android/app/google-services.json | 2 +- pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/app/google-services.json b/android/app/google-services.json index 5befc36..62fbaea 100644 --- a/android/app/google-services.json +++ b/android/app/google-services.json @@ -10,7 +10,7 @@ "client_info": { "mobilesdk_app_id": "1:679409052782:android:dba155ac0859d7fea78a7f", "android_client_info": { - "package_name": "com.cloudSolutions.mohemmtest" + "package_name": "hmg.cloudSolutions.mohem" } }, "oauth_client": [ diff --git a/pubspec.yaml b/pubspec.yaml index 2f3fffa..f6e6797 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.0+1 +version: 3.1.5+300015 environment: sdk: ">=2.16.0 <3.0.0" From e5310eff4ea349a1082a9a298ca3c757f7402b95 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 26 Dec 2022 17:04:10 +0300 Subject: [PATCH 272/302] Removed Unnecessary API call --- lib/api/marathon/marathon_api_client.dart | 1 + lib/ui/marathon/marathon_provider.dart | 27 ++++++++++------------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 5b1dfc8..28fad0f 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -29,6 +29,7 @@ class MarathonApiClient { (json) { MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); AppState().setMarathonToken = marathonModel.data["token"] ?? ""; + print("marathonToken: ${"AppState(): ${AppState().getMarathonToken}"}"); return marathonModel.data["token"] ?? ""; }, ApiConsts.marathonParticipantLoginUrl, diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 21c5915..1b825e8 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -435,7 +435,6 @@ class MarathonProvider extends ChangeNotifier { } bool checkIfPrivilegedForMarathon() { - return true; for (PrivilegeListModel element in AppState().privilegeListModel!) { if (element.serviceName == "Marathon") { if (element.previlege != null) { @@ -451,20 +450,18 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); isPrivilegedWithMarathon = checkIfPrivilegedForMarathon(); if (isPrivilegedWithMarathon) { - await MarathonApiClient().getMarathonToken().whenComplete(() async { - marathonDetailModel = await MarathonApiClient().getMarathonDetails(); - updateTotalSecondsToWaitForMarathon = marathonDetailModel.marathonBufferTime ?? 30; - if (marathonDetailModel.id == null) { - isUpComingMarathon = false; - isLoading = false; - notifyListeners(); - return; - } - if (DateTime.parse(marathonDetailModel.startTime!).isAfter(DateTime.now())) { - itsMarathonTime = false; - } - populateQuestionStatusesList(); - }); + marathonDetailModel = await MarathonApiClient().getMarathonDetails(); + updateTotalSecondsToWaitForMarathon = marathonDetailModel.marathonBufferTime ?? 30; + if (marathonDetailModel.id == null) { + isUpComingMarathon = false; + isLoading = false; + notifyListeners(); + return; + } + if (DateTime.parse(marathonDetailModel.startTime!).isAfter(DateTime.now())) { + itsMarathonTime = false; + } + populateQuestionStatusesList(); } isLoading = false; notifyListeners(); From 4f780ad0aa32851fd8546483acaaec163401f8d6 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 27 Dec 2022 08:29:26 +0300 Subject: [PATCH 273/302] Fixes --- lib/classes/consts.dart | 4 +- lib/provider/chat_provider_model.dart | 75 +++++++++++++++------------ lib/ui/chat/my_team_screen.dart | 20 +++---- 3 files changed, 54 insertions(+), 45 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 6679cbb..900fd4a 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 24c4532..f46b958 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -330,6 +330,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { user.userStatus = items.first["userStatus"]; } } + + notifyListeners(); } @@ -1292,45 +1294,52 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { print("=============== In App State ====================="); getEmployeeSubordinatesList = AppState().getemployeeSubordinatesList; for (GetEmployeeSubordinatesList element in getEmployeeSubordinatesList) { - print(element.eMPLOYEEEMAILADDRESS); - teamMembersList.add( - ChatUser( - id: int.parse(element.eMPLOYEENUMBER!), - email: element.eMPLOYEEEMAILADDRESS, - userName: element.eMPLOYEEDISPLAYNAME, - phone: element.eMPLOYEEMOBILENUMBER, - userStatus: 0, - unreadMessageCount: 0, - isFav: false, - isTyping: false, - isImageLoading: false, - image: element.eMPLOYEEIMAGE ?? "", - isImageLoaded: true, - userLocalDownlaodedImage: await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), - ), - ); + if (element.eMPLOYEEEMAILADDRESS != null) { + if (element.eMPLOYEEEMAILADDRESS!.isNotEmpty) { + teamMembersList.add( + ChatUser( + id: int.parse(element.eMPLOYEENUMBER!), + email: element.eMPLOYEEEMAILADDRESS, + userName: element.eMPLOYEEDISPLAYNAME, + phone: element.eMPLOYEEMOBILENUMBER, + userStatus: 0, + unreadMessageCount: 0, + isFav: false, + isTyping: false, + isImageLoading: false, + image: element.eMPLOYEEIMAGE ?? "", + isImageLoaded: true, + userLocalDownlaodedImage: await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), + ), + ); + } + } } } else { getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates("", "", ""); AppState().setemployeeSubordinatesList = getEmployeeSubordinatesList; for (GetEmployeeSubordinatesList element in getEmployeeSubordinatesList) { print(element.eMPLOYEEEMAILADDRESS); - teamMembersList.add( - ChatUser( - id: int.parse(element.eMPLOYEENUMBER!), - email: element.eMPLOYEEEMAILADDRESS, - userName: element.eMPLOYEEDISPLAYNAME, - phone: element.eMPLOYEEMOBILENUMBER, - userStatus: 0, - unreadMessageCount: 0, - isFav: false, - isTyping: false, - isImageLoading: false, - image: element.eMPLOYEEIMAGE ?? "", - isImageLoaded: true, - userLocalDownlaodedImage: await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), - ), - ); + if (element.eMPLOYEEEMAILADDRESS != null) { + if (element.eMPLOYEEEMAILADDRESS!.isNotEmpty) { + teamMembersList.add( + ChatUser( + id: int.parse(element.eMPLOYEENUMBER!), + email: element.eMPLOYEEEMAILADDRESS, + userName: element.eMPLOYEEDISPLAYNAME, + phone: element.eMPLOYEEMOBILENUMBER, + userStatus: 0, + unreadMessageCount: 0, + isFav: false, + isTyping: false, + isImageLoading: false, + image: element.eMPLOYEEIMAGE ?? "", + isImageLoaded: true, + userLocalDownlaodedImage: await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), + ), + ); + } + } } } isLoading = false; diff --git a/lib/ui/chat/my_team_screen.dart b/lib/ui/chat/my_team_screen.dart index 6b68a58..3f59ab2 100644 --- a/lib/ui/chat/my_team_screen.dart +++ b/lib/ui/chat/my_team_screen.dart @@ -128,16 +128,16 @@ class _MyTeamScreenState extends State { ], ), ).onPress(() { - print(jsonEncode(m.teamMembersList[index])); - // Navigator.pushNamed( - // context, - // AppRoutes.chatDetailed, - // arguments: ChatDetailedScreenParams(m.teamMembersList![index], true), - // ).then( - // (Object? value) { - // m.clearSelections(); - // }, - // ); + // print(jsonEncode(m.teamMembersList[index])); + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: ChatDetailedScreenParams(m.teamMembersList![index], true), + ).then( + (Object? value) { + m.clearSelections(); + }, + ); }); }, separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 70), From 1e478c9900fcc5f1f2c3fbdec925e24ee30e801e Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 27 Dec 2022 11:59:45 +0300 Subject: [PATCH 274/302] approve & reject button added on PO/PR & after request submission,loading issue fixed on worklist. --- lib/app_state/app_state.dart | 2 + .../add_leave_balance_screen.dart | 10 ++-- lib/ui/misc/request_submit_screen.dart | 5 +- .../dynamic_screens/dynamic_input_screen.dart | 17 +++--- lib/ui/profile/add_update_family_member.dart | 42 +++++++-------- lib/ui/profile/delete_family_member.dart | 37 ++++++++----- .../dynamic_input_address_screen.dart | 12 ++++- .../dynamic_input_basic_details_screen.dart | 14 +++-- lib/ui/profile/phone_numbers.dart | 10 +++- lib/ui/termination/end_employement.dart | 4 ++ .../sheets/update_continue_sheet.dart | 17 +++--- lib/ui/work_list/work_list_screen.dart | 2 +- lib/ui/work_list/worklist_detail_screen.dart | 53 +++++++++---------- 13 files changed, 132 insertions(+), 93 deletions(-) diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 7d175b5..58a8ea7 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -148,4 +148,6 @@ class AppState { String? _base64ImageEmp = "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"; String? get getBase64ImageEmp => _base64ImageEmp; + + bool cancelRequestTrancsection = true; } diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index 9eefc62..a16e81d 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -141,12 +142,13 @@ class _AddLeaveBalanceScreenState extends State { empID: selectedID); Utils.hideLoading(context); - - var res = await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submit.pTRANSACTIONID!, "", "add_leave_balance", selectedEmployeeID: selectedID)); - if (res != null && res == true) { - Utils.showLoading(context); + + if (!AppState().cancelRequestTrancsection) { + return; } + Utils.showLoading(context); await LeaveBalanceApiClient().cancelHrTransaction(submit.pTRANSACTIONID!); Utils.hideLoading(context); } catch (ex) { diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index 50096c7..91cd2b1 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -1,8 +1,6 @@ -import 'dart:convert'; import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; -import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; @@ -58,6 +56,7 @@ class _RequestSubmitScreenState extends State { @override void initState() { super.initState(); + AppState().cancelRequestTrancsection = true; } void getApproverList() async { @@ -138,9 +137,9 @@ class _RequestSubmitScreenState extends State { params!.transactionId, ); } else {} - Utils.hideLoading(context); Utils.showToast(LocaleKeys.yourRequestHasBeenSubmittedForApprovals.tr(), longDuration: true); + AppState().cancelRequestTrancsection = false; Navigator.of(context).popUntil((route) => route.settings.name == AppRoutes.dashboard); Navigator.pushNamed(context, AppRoutes.workList); } catch (ex) { diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index 1ec79a0..c79f929 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -5,6 +5,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -57,7 +58,7 @@ class _DynamicInputScreenState extends State { } void validateTransaction() async { - // try { + try { Utils.showLoading(context); List> values = getEitDffStructureList!.map((e) { String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; @@ -95,13 +96,16 @@ class _DynamicInputScreenState extends State { Utils.hideLoading(context); await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); + if (!AppState().cancelRequestTrancsection) { + return; + } Utils.showLoading(context); await LeaveBalanceApiClient().cancelHrTransaction(submitEITTransactionList.pTRANSACTIONID!); Utils.hideLoading(context); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } } String dESCFLEXCONTEXTCODE = ""; @@ -188,7 +192,8 @@ class _DynamicInputScreenState extends State { // Utils.hideLoading(context); } } else if (values.isNotEmpty) { - ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values, empID: dynamicParams!.selectedEmp); + ESERVICESDV defaultValue = + await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values, empID: dynamicParams!.selectedEmp); int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); getEitDffStructureList![index].eSERVICESDV = defaultValue; } diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index 36a8394..2c2d7ad 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -1,11 +1,16 @@ +import 'dart:io'; + import 'package:easy_localization/easy_localization.dart'; +import 'package:easy_localization/src/public_ext.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; -import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/dyanmic_forms/validate_eit_transaction_model.dart'; @@ -17,11 +22,8 @@ import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart'; import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart'; import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; -import 'dart:io'; -import 'package:flutter/cupertino.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; -import 'package:easy_localization/src/public_ext.dart'; class AddUpdateFamilyMember extends StatefulWidget { const AddUpdateFamilyMember({Key? key}) : super(key: key); @@ -38,8 +40,8 @@ class _AddUpdateFamilyMemberState extends State { SubmitContactTransactionList? submitContactTransactionList; dynamic args; String? date = "MM/DD/YYYY"; - var dateTime = DateTime.now().timeZoneOffset; - var dateTime1 = DateTime.now().timeZoneName; + Duration dateTime = DateTime.now().timeZoneOffset; + String dateTime1 = DateTime.now().timeZoneName; GetApprovesList? getApprovesList; @@ -223,13 +225,8 @@ class _AddUpdateFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - //date = DateFormat('yyyy/MM/dd').format(dateValue); - //date = "2022-10-23T09:17:38.653+03:00"; date = (DateFormat('yyyy-MM-dd').format(dateValue)); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; - print(dateTime); - print(dateTime1); - print(date); setState(() {}); }, ).paddingOnly(bottom: 12); @@ -289,8 +286,6 @@ class _AddUpdateFamilyMemberState extends State { onTap: () async { DateTime dateValue = await _selectDate(context); date = (DateFormat('yyyy-MM-dd').format(dateValue)); - // date = (DateFormat('yyyy-MM-dd').format(dateValue) +"T"+ dateTime.toString() + dateTime1.toString()); - // date = DateFormat('yyyy/MM/dd').format(dateValue); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; setState(() {}); }, @@ -326,7 +321,6 @@ class _AddUpdateFamilyMemberState extends State { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", - // isInputTypeNum: true, onChange: (text) { model.getContactDetailsList!.sEGMENTVALUEDSP = text; }, @@ -349,9 +343,7 @@ class _AddUpdateFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - // date = "2022-10-23T09:17:38.653+03:00"; date = (DateFormat('yyyy-MM-dd').format(dateValue)); - // date = DateFormat('yyyy/MM/dd').format(dateValue); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; setState(() {}); }, @@ -392,7 +384,6 @@ class _AddUpdateFamilyMemberState extends State { } void submitUpdateForm() async { - print("submit"); try { List> values1 = getBasicDetDffStructureList!.map((e) { String? dateVal = ''; @@ -441,12 +432,10 @@ class _AddUpdateFamilyMemberState extends State { return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: varChar).toJson(); }).toList(); List> values3 = getContactColsStructureList!.map((e) { - // String tempVar = e!.getContactDetailsList!.sEGMENTVALUEDSP ?? ""; String? dateVal = ''; - dynamic? varChar1 = ''; + String? varChar1 = ''; int? numberVal; - print("e.dATATYPE:${e?.dATATYPE}"); if (e!.dATATYPE == 'VARCHAR2') { dateVal = null; numberVal = null; @@ -469,11 +458,16 @@ class _AddUpdateFamilyMemberState extends State { List> valuesFinal = [...values1, ...values2, ...values3]; Utils.showLoading(context); submitContactTransactionList = await ProfileApiClient().submitContactTransactionAddAndUpdate(args['actionType'], args['relationID'] ?? null, valuesFinal); - var transactionId = submitContactTransactionList!.pTRANSACTIONID; - var itemKey = submitContactTransactionList!.pITEMKEY; Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, - arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); + await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), submitContactTransactionList!.pTRANSACTIONID!, submitContactTransactionList!.pITEMKEY!, 'family_member')); + + if (!AppState().cancelRequestTrancsection) { + return; + } + Utils.showLoading(context); + await LeaveBalanceApiClient().cancelHrTransaction(submitContactTransactionList!.pTRANSACTIONID!); + Utils.hideLoading(context); setState(() {}); } catch (ex) { print(ex); diff --git a/lib/ui/profile/delete_family_member.dart b/lib/ui/profile/delete_family_member.dart index 16052f8..d42c129 100644 --- a/lib/ui/profile/delete_family_member.dart +++ b/lib/ui/profile/delete_family_member.dart @@ -1,6 +1,11 @@ +import 'dart:io'; + import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -10,13 +15,12 @@ import 'package:mohem_flutter_app/models/get_approves_list_model.dart'; import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart'; import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; -import 'dart:io'; -import 'package:flutter/cupertino.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; class DeleteFamilyMember extends StatefulWidget { int relationId; + DeleteFamilyMember(@required this.relationId, {Key? key}) : super(key: key); @override @@ -26,9 +30,11 @@ class DeleteFamilyMember extends StatefulWidget { class _DeleteFamilyMemberState extends State { String pFunctionName = "HR_PERINFO_SS"; String actionType = "DELETE"; + // int? contactRelationId; String? date = "MM/DD/YYYY"; String? datePar; + // String? itemKey; SubmitContactTransactionList? submitContactTransactionList; @@ -44,12 +50,16 @@ class _DeleteFamilyMemberState extends State { try { Utils.showLoading(context); submitContactTransactionList = await ProfileApiClient().submetConatctTransaction(pFunctionName.toString(), actionType.toString(), widget.relationId!.toInt(), datePar.toString()); - var transactionId = submitContactTransactionList!.pTRANSACTIONID; - var itemKey = submitContactTransactionList!.pITEMKEY; Utils.hideLoading(context); - // getApprovesList = await ProfileApiClient().getApproves(transactionId!.toInt(), itemKey.toString() ); - Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, - arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); + + await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), submitContactTransactionList!.pTRANSACTIONID!, submitContactTransactionList!.pITEMKEY!, 'family_member')); + if (!AppState().cancelRequestTrancsection) { + return; + } + Utils.showLoading(context); + await LeaveBalanceApiClient().cancelHrTransaction(submitContactTransactionList!.pTRANSACTIONID!); + Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -73,7 +83,8 @@ class _DeleteFamilyMemberState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ DynamicTextFieldWidget( - LocaleKeys.endDate.tr(), date.toString(), + LocaleKeys.endDate.tr(), + date.toString(), isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); @@ -85,10 +96,9 @@ class _DeleteFamilyMemberState extends State { ], ), ), - DefaultButton( - LocaleKeys.next.tr(), () async { - deleteFamilyMember(datePar);} - ).insideContainer, + DefaultButton(LocaleKeys.next.tr(), () async { + deleteFamilyMember(datePar); + }).insideContainer, ], )); } @@ -145,8 +155,7 @@ class _DeleteFamilyMemberState extends State { ), ); } else { - DateTime? picked = - await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); + DateTime? picked = await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); if (picked != null && picked != selectedDate) { time = picked; } diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart index 77b2abd..42f0758 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -3,8 +3,10 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -296,8 +298,16 @@ class _DynamicInputScreenState extends State { ); Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(dynamicParams!.title, submitPhoneNumbers.pTRANSACTIONID!, submitPhoneNumbers.pITEMKEY!, 'address')); + + if (!AppState().cancelRequestTrancsection) { + return; + } + Utils.showLoading(context); + await LeaveBalanceApiClient().cancelHrTransaction(submitPhoneNumbers.pTRANSACTIONID!); + Utils.hideLoading(context); + } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart index 749599c..93a8eb3 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart @@ -3,8 +3,10 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -378,7 +380,6 @@ class _DynamicInputScreenState extends State { values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_ACTION", nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: "NEW_ROW").toJson()); values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_EXTRA_INFO_ID", nUMBERVALUE: -1, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); - //values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); List> valuesCols = getBasicDetColsStructureList!.map((e) { if (e.dATATYPE == 'NUMBER') { numberValue = e.userBasicDetail!.nUMBERVALUE ?? 0; @@ -392,11 +393,18 @@ class _DynamicInputScreenState extends State { SubmitBasicDetailsTransactionList submitBasicDetails = await ProfileApiClient().submitBasicDetailsTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, transactionValues, dynamicParams!.correctOrNew); - print(submitBasicDetails); + Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(dynamicParams!.title, submitBasicDetails.pTRANSACTIONID!, submitBasicDetails.pITEMKEY!, 'basicDetails')); + + if (!AppState().cancelRequestTrancsection) { + return; + } + Utils.showLoading(context); + await LeaveBalanceApiClient().cancelHrTransaction(submitBasicDetails.pTRANSACTIONID!); + Utils.hideLoading(context); } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); diff --git a/lib/ui/profile/phone_numbers.dart b/lib/ui/profile/phone_numbers.dart index f4be007..666a029 100644 --- a/lib/ui/profile/phone_numbers.dart +++ b/lib/ui/profile/phone_numbers.dart @@ -1,6 +1,8 @@ import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -117,8 +119,14 @@ class _PhoneNumbersState extends State { setUpdateStatus(); submitPhoneNumbers = await ProfileApiClient().submitPhoneNumbers(widget.getEmployeePhonesList); Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.profile_contactDetails.tr(), submitPhoneNumbers.pTRANSACTIONID!, submitPhoneNumbers.pITEMKEY!, 'phone_numbers')); + if (!AppState().cancelRequestTrancsection) { + return; + } + Utils.showLoading(context); + await LeaveBalanceApiClient().cancelHrTransaction(submitPhoneNumbers.pTRANSACTIONID!); + Utils.hideLoading(context); } void setUpdateStatus() { diff --git a/lib/ui/termination/end_employement.dart b/lib/ui/termination/end_employement.dart index 73e8f79..cdfa46d 100644 --- a/lib/ui/termination/end_employement.dart +++ b/lib/ui/termination/end_employement.dart @@ -6,6 +6,7 @@ import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; import 'package:mohem_flutter_app/api/termination_dff_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -135,6 +136,9 @@ class _EndEmploymentScreenState extends State { Utils.hideLoading(context); await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitTermTransaction.pTRANSACTIONID!, submitTermTransaction.pITEMKEY!, "endEmployment")); + if (!AppState().cancelRequestTrancsection) { + return; + } Utils.showLoading(context); await LeaveBalanceApiClient().cancelHrTransaction(submitTermTransaction.pTRANSACTIONID!); Utils.hideLoading(context); diff --git a/lib/ui/work_list/sheets/update_continue_sheet.dart b/lib/ui/work_list/sheets/update_continue_sheet.dart index 1e4e5f3..1240de2 100644 --- a/lib/ui/work_list/sheets/update_continue_sheet.dart +++ b/lib/ui/work_list/sheets/update_continue_sheet.dart @@ -1,6 +1,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -30,6 +32,7 @@ class _UpdateContinueSheetState extends State { double itemHeight = 0; double itemWidth = 0; List> validatedValues = []; + @override Widget build(BuildContext context) { var size = MediaQuery.of(context).size; @@ -57,11 +60,7 @@ class _UpdateContinueSheetState extends State { index, dataList[index].segmentPrompt, dataList[index].segmentValueDsp, - isNeedToShowEmptyDivider: (dataList.length == index + 1) - ? isOdd - ? true - : false - : false, + isNeedToShowEmptyDivider: (dataList.length == index + 1) ? (isOdd ? true : false) : false, ), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, @@ -95,7 +94,6 @@ class _UpdateContinueSheetState extends State { } void performNextAction() async { - //Resubmit EIT Transaction try { Utils.showLoading(context); List> values = []; @@ -114,7 +112,6 @@ class _UpdateContinueSheetState extends State { } } } - ResubmitEITRequestResponse resubmitEITRequestResponse = await MyAttendanceApiClient().reSubmitEitTransaction(widget.workListData!.iTEMKEY!, widget.workListData!.nOTIFICATIONID, values); Utils.hideLoading(context); await Navigator.pushNamed( @@ -122,6 +119,12 @@ class _UpdateContinueSheetState extends State { AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), resubmitEITRequestResponse.pTRANSACTIONID!, widget.workListData!.iTEMKEY!, 'eit'), ); + if (!AppState().cancelRequestTrancsection) { + return; + } + Utils.showLoading(context); + await LeaveBalanceApiClient().cancelHrTransaction(resubmitEITRequestResponse.pTRANSACTIONID!); + Utils.hideLoading(context); } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); diff --git a/lib/ui/work_list/work_list_screen.dart b/lib/ui/work_list/work_list_screen.dart index 9b7fbe5..bd12531 100644 --- a/lib/ui/work_list/work_list_screen.dart +++ b/lib/ui/work_list/work_list_screen.dart @@ -117,7 +117,7 @@ class _WorkListScreenState extends State { }); workListItemTypes.removeWhere((element) => element.value == 0); if (workListItemTypes.isNotEmpty) { - workListItemIndex = 0; + workListItemIndex = workListItemIndex ?? 0; } else { workListItemIndex = null; } diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 1f62d4e..9bc0222 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -81,7 +81,6 @@ class _WorkListDetailScreenState extends State { GetContactNotificationBodyList? getContactNotificationBodyList; List? getAddressNotificationBodyList = []; - GenericResponseModel? getBasicNTFBody; GenericResponseModel? getICBody; GenericResponseModel? subordinatesLeavesModel; @@ -93,6 +92,9 @@ class _WorkListDetailScreenState extends State { bool isApproveAvailable = false; bool isRejectAvailable = false; + String approveAction = ""; + String rejectAction = ""; + bool isAttachmentLoaded = false; bool isActionHistoryLoaded = false; @@ -169,29 +171,6 @@ class _WorkListDetailScreenState extends State { if (controller.hasClients) { controller.jumpToPage(0); } - - // List dataToFetch = await Future.wait([ - // - // WorkListApiClient().getActionHistory(workListData!.nOTIFICATIONID!), - // WorkListApiClient().getAttachments(workListData!.nOTIFICATIONID!), - // ]); - // - // notificationButtonsList = dataToFetch[0]; - // actionHistoryList = dataToFetch[1]; - // getAttachmentList = dataToFetch[2]; - - // if (notificationButtonsList.isNotEmpty) { - // isCloseAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "CLOSE"); - // isApproveAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "APPROVED"); - // isRejectAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "REJECTED"); - // } - // Utils.hideLoading(context); - // setState(() {}); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // setState(() {}); - // } } List futureRequest = []; @@ -320,14 +299,14 @@ class _WorkListDetailScreenState extends State { if (isRejectAvailable) DefaultButton( LocaleKeys.reject.tr(), - () => performAction("REJECTED"), + () => performAction(rejectAction), colors: const [Color(0xffE47A7E), Color(0xffDE6D71)], ).expanded, if (isApproveAvailable && isRejectAvailable) 8.width, if (isApproveAvailable) DefaultButton( LocaleKeys.approve.tr(), - () => performAction("APPROVED"), + () => performAction(approveAction), colors: const [Color(0xff28C884), Color(0xff1BB271)], ).expanded, if (isCloseAvailable) @@ -417,7 +396,11 @@ class _WorkListDetailScreenState extends State { List viewApiButtonsList(List notificationButtonsList) { List fabs = []; for (int i = 0; i < notificationButtonsList.length; i++) { - if (notificationButtonsList[i].bUTTONACTION! == "REJECTED" || notificationButtonsList[i].bUTTONACTION! == "APPROVED" || notificationButtonsList[i].bUTTONACTION! == "CLOSE") { + if (notificationButtonsList[i].bUTTONACTION! == "REJECTED" || + notificationButtonsList[i].bUTTONACTION! == "REJECT" || + notificationButtonsList[i].bUTTONACTION! == "APPROVED" || + notificationButtonsList[i].bUTTONACTION! == "APPROVE" || + notificationButtonsList[i].bUTTONACTION! == "CLOSE") { continue; } fabs.add(myFab( @@ -989,8 +972,20 @@ class _WorkListDetailScreenState extends State { notificationButtonsList = await WorkListApiClient().getNotificationButtons(workListData!.nOTIFICATIONID!); if (notificationButtonsList.isNotEmpty) { isCloseAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "CLOSE"); - isApproveAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "APPROVED"); - isRejectAvailable = notificationButtonsList.any((element) => element.bUTTONACTION == "REJECTED"); + isApproveAvailable = notificationButtonsList.any((element) { + if (element.bUTTONACTION == "APPROVED" || element.bUTTONACTION == "APPROVE") { + approveAction = element.bUTTONACTION!; + return true; + } + return false; + }); + isRejectAvailable = notificationButtonsList.any((element) { + if (element.bUTTONACTION == "REJECTED" || element.bUTTONACTION == "REJECT") { + rejectAction = element.bUTTONACTION!; + return true; + } + return false; + }); } apiCallCount--; if (apiCallCount == 0) { From 2ab39e0d7b0334fff442bcd068836cf80b6964d5 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 27 Dec 2022 14:22:57 +0300 Subject: [PATCH 275/302] updates --- lib/provider/chat_provider_model.dart | 15 +++++----- lib/ui/chat/chat_bubble.dart | 13 ++++---- lib/ui/chat/my_team_screen.dart | 43 +++++++++++++-------------- 3 files changed, 34 insertions(+), 37 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 24c4532..57abd3a 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -82,7 +82,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future buildHubConnection() async { - chatHubConnection = await getHubConnection(); await chatHubConnection.start(); if (kDebugMode) { @@ -1265,7 +1264,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { await Directory(dirPath).create(); await File('$dirPath/.nomedia').create(); } - File file = File("$dirPath/${data.currentUserId}-${data.targetUserId}-${DateTime.now().microsecondsSinceEpoch}." + ext); + File file = File("$dirPath/${data.currentUserId}-${data.targetUserId}-${DateTime.now().microsecondsSinceEpoch}" + ext); await file.writeAsBytes(bytes); return file.path; } @@ -1297,7 +1296,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ChatUser( id: int.parse(element.eMPLOYEENUMBER!), email: element.eMPLOYEEEMAILADDRESS, - userName: element.eMPLOYEEDISPLAYNAME, + userName: element.eMPLOYEENAME, phone: element.eMPLOYEEMOBILENUMBER, userStatus: 0, unreadMessageCount: 0, @@ -1305,8 +1304,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isTyping: false, isImageLoading: false, image: element.eMPLOYEEIMAGE ?? "", - isImageLoaded: true, - userLocalDownlaodedImage: await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), + isImageLoaded: element.eMPLOYEEIMAGE == null ? false : true, + userLocalDownlaodedImage:element.eMPLOYEEIMAGE == null ? null : await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), ), ); } @@ -1319,7 +1318,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ChatUser( id: int.parse(element.eMPLOYEENUMBER!), email: element.eMPLOYEEEMAILADDRESS, - userName: element.eMPLOYEEDISPLAYNAME, + userName: element.eMPLOYEENAME, phone: element.eMPLOYEEMOBILENUMBER, userStatus: 0, unreadMessageCount: 0, @@ -1327,8 +1326,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isTyping: false, isImageLoading: false, image: element.eMPLOYEEIMAGE ?? "", - isImageLoaded: true, - userLocalDownlaodedImage: await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), + isImageLoaded: element.eMPLOYEEIMAGE == null ? false : true, + userLocalDownlaodedImage: element.eMPLOYEEIMAGE == null ? null : await downloadImageLocal(element.eMPLOYEEIMAGE ?? "", element.eMPLOYEENUMBER!), ), ); } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 824ab48..93fea00 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -1,10 +1,10 @@ -import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; -import 'package:flutter/services.dart'; -import 'package:audio_waveforms/audio_waveforms.dart' as awf; + import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:just_audio/just_audio.dart'; import 'package:mohem_flutter_app/api/chat/chat_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; @@ -16,9 +16,9 @@ import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.da import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/chat_full_image_preview.dart'; import 'package:mohem_flutter_app/ui/chat/common.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:provider/provider.dart'; import 'package:rxdart/rxdart.dart'; -import 'package:just_audio/just_audio.dart'; class ChatBubble extends StatelessWidget { ChatBubble({Key? key, required this.dateTime, required this.cItem}) : super(key: key); @@ -82,7 +82,8 @@ class ChatBubble extends StatelessWidget { Utils.hideLoading(context); await data.voiceController!.play(); } catch (e) { - Utils.showToast("Cannot open file."); + Utils.hideLoading(context); + Utils.showToast(e.toString()); } } } @@ -438,5 +439,3 @@ class ChatBubble extends StatelessWidget { ); } } - - diff --git a/lib/ui/chat/my_team_screen.dart b/lib/ui/chat/my_team_screen.dart index 6b68a58..1752295 100644 --- a/lib/ui/chat/my_team_screen.dart +++ b/lib/ui/chat/my_team_screen.dart @@ -84,24 +84,24 @@ class _MyTeamScreenState extends State { ), ), ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: m.teamMembersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - ), - ).circle(10), - ) + // Positioned( + // right: 5, + // bottom: 1, + // child: Container( + // width: 10, + // height: 10, + // decoration: BoxDecoration( + // color: m.teamMembersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + // ), + // ).circle(10), + // ) ], ), Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - (m.teamMembersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), + (m.teamMembersList![index].userName! ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), ], ).expanded, // SizedBox( @@ -128,16 +128,15 @@ class _MyTeamScreenState extends State { ], ), ).onPress(() { - print(jsonEncode(m.teamMembersList[index])); - // Navigator.pushNamed( - // context, - // AppRoutes.chatDetailed, - // arguments: ChatDetailedScreenParams(m.teamMembersList![index], true), - // ).then( - // (Object? value) { - // m.clearSelections(); - // }, - // ); + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: ChatDetailedScreenParams(m.teamMembersList![index], true), + ).then( + (Object? value) { + m.clearSelections(); + }, + ); }); }, separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 70), From 3871d3f1e389f958a3eb4a510a4c5b532c29bea7 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 27 Dec 2022 14:28:08 +0300 Subject: [PATCH 276/302] Fixes --- lib/api/chat/chat_api_client.dart | 12 +- lib/classes/consts.dart | 2 +- .../chat/get_search_user_chat_model.dart | 54 +- lib/provider/chat_provider_model.dart | 13 +- lib/ui/chat/chat_home_screen.dart | 1 + .../search_employee_bottom_sheet.dart | 475 ++++++++++-------- .../shimmer/dashboard_shimmer_widget.dart | 6 +- 7 files changed, 326 insertions(+), 237 deletions(-) diff --git a/lib/api/chat/chat_api_client.dart b/lib/api/chat/chat_api_client.dart index 43e9f6c..87e684e 100644 --- a/lib/api/chat/chat_api_client.dart +++ b/lib/api/chat/chat_api_client.dart @@ -46,15 +46,15 @@ class ChatApiClient { return userLoginResponse; } - Future?> getChatMemberFromSearch(String sName, int cUserId) async { - Response response = await ApiClient().getJsonForResponse( - "${ApiConsts.chatLoginTokenUrl}getUserWithStatusAndFavAsync/$sName/$cUserId", - token: AppState().chatDetails!.response!.token, - ); + Future getChatMemberFromSearch(String searchParam, int cUserId, int pageNo) async { + ChatUserModel chatUserModel; + Response response = await ApiClient().postJsonForResponse("${ApiConsts.chatLoginTokenUrl}getUserWithStatusAndFavAsync", {"employeeNumber": cUserId, "userName": searchParam, "pageNumber": pageNo}, + token: AppState().chatDetails!.response!.token); if (!kReleaseMode) { logger.i("res: " + response.body); } - return List.from(json.decode(response.body).map((x) => ChatUser.fromJson(x))); + chatUserModel = chatUserModelFromJson(response.body); + return chatUserModel; } //Get User Recent Chats diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 900fd4a..990656f 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,7 +3,7 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server diff --git a/lib/models/chat/get_search_user_chat_model.dart b/lib/models/chat/get_search_user_chat_model.dart index 3d023fd..e1c87a3 100644 --- a/lib/models/chat/get_search_user_chat_model.dart +++ b/lib/models/chat/get_search_user_chat_model.dart @@ -1,5 +1,11 @@ + +import 'dart:convert'; import 'dart:io'; +ChatUserModel chatUserModelFromJson(String str) => ChatUserModel.fromJson(json.decode(str)); + +String chatUserModelToJson(ChatUserModel data) => json.encode(data.toJson()); + class ChatUserModel { ChatUserModel({ this.response, @@ -7,16 +13,40 @@ class ChatUserModel { }); List? response; - dynamic errorResponses; + List? errorResponses; factory ChatUserModel.fromJson(Map json) => ChatUserModel( response: json["response"] == null ? null : List.from(json["response"].map((x) => ChatUser.fromJson(x))), - errorResponses: json["errorResponses"], + errorResponses: json["errorResponses"] == null ? null : List.from(json["errorResponses"].map((x) => ErrorResponse.fromJson(x))), ); Map toJson() => { "response": response == null ? null : List.from(response!.map((x) => x.toJson())), - "errorResponses": errorResponses, + "errorResponses": errorResponses == null ? null : List.from(errorResponses!.map((x) => x.toJson())), + }; +} + +class ErrorResponse { + ErrorResponse({ + this.fieldName, + this.message, + }); + + dynamic? fieldName; + String? message; + + factory ErrorResponse.fromRawJson(String str) => ErrorResponse.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory ErrorResponse.fromJson(Map json) => ErrorResponse( + fieldName: json["fieldName"], + message: json["message"] == null ? null : json["message"], + ); + + Map toJson() => { + "fieldName": fieldName, + "message": message == null ? null : message, }; } @@ -34,6 +64,8 @@ class ChatUser { this.isPin, this.isFav, this.isAdmin, + this.rKey, + this.totalCount, this.isTyping, this.isImageLoaded, this.isImageLoading, @@ -44,7 +76,7 @@ class ChatUser { String? userName; String? email; dynamic? phone; - dynamic? title; + String? title; int? userStatus; dynamic? image; int? unreadMessageCount; @@ -52,17 +84,23 @@ class ChatUser { bool? isPin; bool? isFav; bool? isAdmin; + dynamic? rKey; + int? totalCount; bool? isTyping; bool? isImageLoaded; bool? isImageLoading; File? userLocalDownlaodedImage; + factory ChatUser.fromRawJson(String str) => ChatUser.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + factory ChatUser.fromJson(Map json) => ChatUser( id: json["id"] == null ? null : json["id"], userName: json["userName"] == null ? null : json["userName"], email: json["email"] == null ? null : json["email"], phone: json["phone"], - title: json["title"], + title: json["title"] == null ? null : json["title"], userStatus: json["userStatus"] == null ? null : json["userStatus"], image: json["image"], unreadMessageCount: json["unreadMessageCount"] == null ? null : json["unreadMessageCount"], @@ -70,6 +108,8 @@ class ChatUser { isPin: json["isPin"] == null ? null : json["isPin"], isFav: json["isFav"] == null ? null : json["isFav"], isAdmin: json["isAdmin"] == null ? null : json["isAdmin"], + rKey: json["rKey"], + totalCount: json["totalCount"] == null ? null : json["totalCount"], isTyping: false, isImageLoaded: false, isImageLoading: true, @@ -80,7 +120,7 @@ class ChatUser { "userName": userName == null ? null : userName, "email": email == null ? null : email, "phone": phone, - "title": title, + "title": title == null ? null : title, "userStatus": userStatus == null ? null : userStatus, "image": image, "unreadMessageCount": unreadMessageCount == null ? null : unreadMessageCount, @@ -88,5 +128,7 @@ class ChatUser { "isPin": isPin == null ? null : isPin, "isFav": isFav == null ? null : isFav, "isAdmin": isAdmin == null ? null : isAdmin, + "rKey": rKey, + "totalCount": totalCount == null ? null : totalCount, }; } diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index f46b958..a809488 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -82,7 +82,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future buildHubConnection() async { - chatHubConnection = await getHubConnection(); await chatHubConnection.start(); if (kDebugMode) { @@ -173,7 +172,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (isNewChat) { userChatHistory = []; } else if (loadMore) { - Utils.showToast("No More Data To Load"); + } } else { if (loadMore) { @@ -330,7 +329,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { user.userStatus = items.first["userStatus"]; } } - + if (teamMembersList != null) { + if (teamMembersList.isNotEmpty) { + for (ChatUser user in teamMembersList!) { + if (user.id == items.first["id"]) { + user.userStatus = items.first["userStatus"]; + } + } + } + } notifyListeners(); } diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index 395556a..aed4048 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -238,6 +238,7 @@ class _ChatHomeScreenState extends State { ), ), onPressed: () async { + print(AppState().chatDetails!.response!.token); showMyBottomSheet( context, callBackFunc: () {}, diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index 488b50f..014ce5d 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -24,6 +24,7 @@ import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; +import 'package:pull_to_refresh/pull_to_refresh.dart'; class SearchEmployeeBottomSheet extends StatefulWidget { int? notificationID; @@ -47,6 +48,8 @@ class SearchEmployeeBottomSheet extends StatefulWidget { class _SearchEmployeeBottomSheetState extends State { TextEditingController username = TextEditingController(); + ScrollController sc = ScrollController(); + String searchText = ""; List? optionsList = [ @@ -62,6 +65,7 @@ class _SearchEmployeeBottomSheetState extends State { // Chat Items List? chatUsersList = []; + int pageNo = 1; int _selectedSearchIndex = 0; @@ -88,12 +92,16 @@ class _SearchEmployeeBottomSheetState extends State { } void fetchChatUser({bool isNeedLoading = true}) async { + if (pageNo == 1) + chatUsersList = []; try { Utils.showLoading(context); - chatUsersList = await ChatApiClient().getChatMemberFromSearch( - searchText, - int.parse(AppState().chatDetails!.response!.id.toString()), - ); + await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, pageNo).then((ChatUserModel value) { + print(value.response!.length); + if (value.response != null) { + chatUsersList = value.response; + } + }); chatUsersList!.removeWhere((ChatUser element) => element.id == AppState().chatDetails!.response!.id); Utils.hideLoading(context); setState(() {}); @@ -107,232 +115,263 @@ class _SearchEmployeeBottomSheetState extends State { return null; } - @override - Widget build(BuildContext context) { - return SizedBox( - width: double.infinity, - height: MediaQuery.of(context).size.height - 100, - child: Column( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - widget.title.toText24(isBold: true), - 21.height, - "Search".toText16(), - 11.height, - Row( - children: [ - radioOption("Name", 0, _selectedSearchIndex), - radioOption("User Name", 1, _selectedSearchIndex), - radioOption("Email", 2, _selectedSearchIndex), - ], - ), - 14.height, - Row( - children: [ - DynamicTextFieldWidget( - "Search", - "Search By Username", - inputAction: TextInputAction.done, - suffixIconData: Icons.search, - onChange: (text) { - searchText = text; - setState(() {}); - }, - ).expanded, - IconButton( - constraints: const BoxConstraints(), - onPressed: () async { - await SystemChannels.textInput.invokeMethod('TextInput.hide'); - widget.fromChat ? fetchChatUser() : fetchUserByInput(); - }, - icon: const Icon(Icons.search), - ) - ], - ), - if (replacementList != null) - replacementList!.isEmpty - ? Utils.getNoDataWidget(context).expanded - : ListView( - physics: const BouncingScrollPhysics(), - padding: EdgeInsets.only(top: 21, bottom: 8), - children: [ - if (favouriteUserList?.isNotEmpty ?? false) ...[ - "Favorites".toText16(), - 12.height, - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (cxt, index) => employeeItemView(favouriteUserList![index]), - separatorBuilder: (cxt, index) => Container( - height: 1, - color: MyColors.borderE3Color, - ), - itemCount: favouriteUserList?.length ?? 0), - 12.height, - ], - if (nonFavouriteUserList?.isNotEmpty ?? false) ...[ - "Related".toText16(), - 12.height, - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (cxt, index) => employeeItemView(nonFavouriteUserList![index]), - separatorBuilder: (cxt, index) => Container( - height: 1, - color: MyColors.borderE3Color, - ), - itemCount: nonFavouriteUserList?.length ?? 0), - ] - ], - ).expanded, - if (widget.fromChat) - if (chatUsersList != null && widget.fromChat) - chatUsersList!.isEmpty - ? Column( - children: [ - 20.height, - Utils.getNoDataWidget(context), - ], - ) + void loadMoreChatUsers() async { + try { + await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, pageNo).then((ChatUserModel value) { + if (value.response != null) { + chatUsersList!.addAll(value.response!); + } + }); + chatUsersList!.removeWhere((ChatUser element) => element.id == AppState().chatDetails!.response!.id); + } catch (e) { + Utils.hideLoading(context); + Utils.handleException(e, context, null); + } + } + + void scrollListener() async { + if (sc.position.pixels == + sc.position.maxScrollExtent) { + pageNo++; + setState(() {}); + } + + @override + void initState() { + super.initState(); + sc.addListener(scrollListener); + } + + @override + Widget build(BuildContext context) { + return SizedBox( + width: double.infinity, + height: MediaQuery + .of(context) + .size + .height - 100, + child: Column( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + widget.title.toText24(isBold: true), + 21.height, + "Search".toText16(), + 11.height, + Row( + children: [ + radioOption("Name", 0, _selectedSearchIndex), + radioOption("User Name", 1, _selectedSearchIndex), + radioOption("Email", 2, _selectedSearchIndex), + ], + ), + 14.height, + Row( + children: [ + DynamicTextFieldWidget( + "Search", + "Search By Username", + inputAction: TextInputAction.done, + suffixIconData: Icons.search, + onChange: (text) { + searchText = text; + setState(() {}); + }, + ).expanded, + IconButton( + constraints: const BoxConstraints(), + onPressed: () async { + await SystemChannels.textInput.invokeMethod('TextInput.hide'); + widget.fromChat ? fetchChatUser() : fetchUserByInput(); + }, + icon: const Icon(Icons.search), + ) + ], + ), + if (replacementList != null) + replacementList!.isEmpty + ? Utils + .getNoDataWidget(context) + .expanded : ListView( - physics: const BouncingScrollPhysics(), - padding: const EdgeInsets.only( - top: 15, - ), - children: [ - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (BuildContext cxt, int index) { - return SizedBox( - height: 55, - child: ListTile( - leading: Stack( - children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), - ), - ), - ) - ], + physics: const BouncingScrollPhysics(), + padding: EdgeInsets.only(top: 21, bottom: 8), + children: [ + if (favouriteUserList?.isNotEmpty ?? false) ...[ + "Favorites".toText16(), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (cxt, index) => employeeItemView(favouriteUserList![index]), + separatorBuilder: (cxt, index) => + Container( + height: 1, + color: MyColors.borderE3Color, + ), + itemCount: favouriteUserList?.length ?? 0), + 12.height, + ], + if (nonFavouriteUserList?.isNotEmpty ?? false) ...[ + "Related".toText16(), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (cxt, index) => employeeItemView(nonFavouriteUserList![index]), + separatorBuilder: (cxt, index) => + Container( + height: 1, + color: MyColors.borderE3Color, + ), + itemCount: nonFavouriteUserList?.length ?? 0), + ] + ], + ).expanded, + if (widget.fromChat) + if (chatUsersList != null && widget.fromChat) + chatUsersList!.isEmpty + ? Column( + children: [ + 20.height, + Utils.getNoDataWidget(context), + ], + ) + : ListView + .separated( + physics: const AlwaysScrollableScrollPhysics(), + controller: sc, + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int index) { + return SizedBox( + height: 55, + child: ListTile( + leading: Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), ), - title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), - minVerticalPadding: 0, - onTap: () { - Navigator.pop(context); - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: ChatDetailedScreenParams(chatUsersList![index], true), - ); - }, ), - ); - }, - separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only(right: 10, left: 70, bottom: 0, top: 0), - child: Divider( - color: Color(0xFFE5E5E5), - ), - ), - itemCount: chatUsersList?.length ?? 0, + ) + ], ), - 12.height, - ], - ).expanded, - ], - ).paddingOnly(left: 21, right: 21, bottom: 0, top: 21).expanded, - Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor), - DefaultButton( - LocaleKeys.cancel.tr(), - () { - Navigator.pop(context); - }, - textColor: MyColors.grey3AColor, - colors: const [ - Color(0xffE6E6E6), - Color(0xffE6E6E6), - ], - ).insideContainer - ], - ), - ); - } - - Widget employeeItemView(ReplacementList replacement) { - return InkWell( - onTap: () { - Navigator.pop(context); - widget.onSelectEmployee(replacement); - }, - child: SizedBox( - height: 50, - child: Row( - children: [ - CircularAvatar( - url: replacement.employeeImage ?? "", - height: 30, - width: 30, - isImageBase64: true, - ), - 16.width, - Expanded( - child: (replacement.employeeDisplayName ?? "").toText12(), - ), - Icon(Icons.star, size: 16, color: replacement.isFavorite! ? MyColors.yellowFavColor : MyColors.borderCEColor), + title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), + minVerticalPadding: 0, + onTap: () { + Navigator.pop(context); + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: ChatDetailedScreenParams(chatUsersList![index], true), + ); + }, + ), + ); + }, + separatorBuilder: (BuildContext context, int index) => + const Padding( + padding: EdgeInsets.only(right: 10, left: 70, bottom: 0, top: 0), + child: Divider( + color: Color(0xFFE5E5E5), + ), + ), + itemCount: chatUsersList?.length ?? 0, + ) + .expanded, + ], + ) + .paddingOnly(left: 21, right: 21, bottom: 0, top: 21) + .expanded, + Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor), + DefaultButton( + LocaleKeys.cancel.tr(), + () { + Navigator.pop(context); + }, + textColor: MyColors.grey3AColor, + colors: const [ + Color(0xffE6E6E6), + Color(0xffE6E6E6), + ], + ).insideContainer ], ), - ), - ); - } + ); + } - Widget radioOption(String title, int value, int groupValue) { - return Row( - children: [ - Container( - width: 24, - height: 24, - decoration: BoxDecoration( - color: Colors.transparent, - border: Border.all(color: MyColors.borderColor, width: 1), - borderRadius: const BorderRadius.all( - Radius.circular(100), - ), + Widget employeeItemView(ReplacementList replacement) { + return InkWell( + onTap: () { + Navigator.pop(context); + widget.onSelectEmployee(replacement); + }, + child: SizedBox( + height: 50, + child: Row( + children: [ + CircularAvatar( + url: replacement.employeeImage ?? "", + height: 30, + width: 30, + isImageBase64: true, + ), + 16.width, + Expanded( + child: (replacement.employeeDisplayName ?? "").toText12(), + ), + Icon(Icons.star, size: 16, color: replacement.isFavorite! ? MyColors.yellowFavColor : MyColors.borderCEColor), + ], ), - padding: const EdgeInsets.all(4), - child: Container( - width: double.infinity, - height: double.infinity, + ), + ); + } + + Widget radioOption(String title, int value, int groupValue) { + return Row( + children: [ + Container( + width: 24, + height: 24, decoration: BoxDecoration( - color: value == groupValue ? MyColors.grey3AColor : Colors.transparent, + color: Colors.transparent, + border: Border.all(color: MyColors.borderColor, width: 1), borderRadius: const BorderRadius.all( Radius.circular(100), ), ), + padding: const EdgeInsets.all(4), + child: Container( + width: double.infinity, + height: double.infinity, + decoration: BoxDecoration( + color: value == groupValue ? MyColors.grey3AColor : Colors.transparent, + borderRadius: const BorderRadius.all( + Radius.circular(100), + ), + ), + ), ), - ), - 9.width, - title.toText12(color: MyColors.grey57Color) - ], - ).onPress(() { - _selectedSearchIndex = value; - setState(() {}); - }).expanded; + 9.width, + title.toText12(color: MyColors.grey57Color) + ], + ).onPress(() { + _selectedSearchIndex = value; + setState(() {}); + }).expanded; + } } -} diff --git a/lib/widgets/shimmer/dashboard_shimmer_widget.dart b/lib/widgets/shimmer/dashboard_shimmer_widget.dart index d023898..c11cf16 100644 --- a/lib/widgets/shimmer/dashboard_shimmer_widget.dart +++ b/lib/widgets/shimmer/dashboard_shimmer_widget.dart @@ -273,7 +273,7 @@ class ChatHomeShimmer extends StatelessWidget { children: [ Container( width: double.infinity, - height: 8.0, + height: 20.0, color: Colors.white, ), const Padding( @@ -281,7 +281,7 @@ class ChatHomeShimmer extends StatelessWidget { ), Container( width: double.infinity, - height: 8.0, + height: 15.0, color: Colors.white, ), const Padding( @@ -289,7 +289,7 @@ class ChatHomeShimmer extends StatelessWidget { ), Container( width: 40.0, - height: 8.0, + height: 10.0, color: Colors.white, ), ], From d096559a2fa07998b4f7004b61b5ac1fee38d637 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 27 Dec 2022 14:30:16 +0300 Subject: [PATCH 277/302] Fixes --- .../search_employee_bottom_sheet.dart | 441 +++++++++--------- 1 file changed, 214 insertions(+), 227 deletions(-) diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index 014ce5d..a0041a7 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -92,8 +92,7 @@ class _SearchEmployeeBottomSheetState extends State { } void fetchChatUser({bool isNeedLoading = true}) async { - if (pageNo == 1) - chatUsersList = []; + if (pageNo == 1) chatUsersList!.clear(); try { Utils.showLoading(context); await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, pageNo).then((ChatUserModel value) { @@ -130,248 +129,236 @@ class _SearchEmployeeBottomSheetState extends State { } void scrollListener() async { - if (sc.position.pixels == - sc.position.maxScrollExtent) { + if (sc.position.pixels == sc.position.maxScrollExtent) { pageNo++; setState(() {}); } + } - @override - void initState() { - super.initState(); - sc.addListener(scrollListener); - } + @override + void initState() { + super.initState(); + sc.addListener(scrollListener); + } - @override - Widget build(BuildContext context) { - return SizedBox( - width: double.infinity, - height: MediaQuery - .of(context) - .size - .height - 100, - child: Column( - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - widget.title.toText24(isBold: true), - 21.height, - "Search".toText16(), - 11.height, - Row( - children: [ - radioOption("Name", 0, _selectedSearchIndex), - radioOption("User Name", 1, _selectedSearchIndex), - radioOption("Email", 2, _selectedSearchIndex), - ], - ), - 14.height, - Row( - children: [ - DynamicTextFieldWidget( - "Search", - "Search By Username", - inputAction: TextInputAction.done, - suffixIconData: Icons.search, - onChange: (text) { - searchText = text; - setState(() {}); - }, - ).expanded, - IconButton( - constraints: const BoxConstraints(), - onPressed: () async { - await SystemChannels.textInput.invokeMethod('TextInput.hide'); - widget.fromChat ? fetchChatUser() : fetchUserByInput(); - }, - icon: const Icon(Icons.search), - ) - ], - ), - if (replacementList != null) - replacementList!.isEmpty - ? Utils - .getNoDataWidget(context) - .expanded - : ListView( - physics: const BouncingScrollPhysics(), - padding: EdgeInsets.only(top: 21, bottom: 8), - children: [ - if (favouriteUserList?.isNotEmpty ?? false) ...[ - "Favorites".toText16(), - 12.height, - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (cxt, index) => employeeItemView(favouriteUserList![index]), - separatorBuilder: (cxt, index) => - Container( - height: 1, - color: MyColors.borderE3Color, - ), - itemCount: favouriteUserList?.length ?? 0), - 12.height, - ], - if (nonFavouriteUserList?.isNotEmpty ?? false) ...[ - "Related".toText16(), - 12.height, - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (cxt, index) => employeeItemView(nonFavouriteUserList![index]), - separatorBuilder: (cxt, index) => - Container( - height: 1, - color: MyColors.borderE3Color, - ), - itemCount: nonFavouriteUserList?.length ?? 0), - ] - ], + @override + Widget build(BuildContext context) { + return SizedBox( + width: double.infinity, + height: MediaQuery.of(context).size.height - 100, + child: Column( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + widget.title.toText24(isBold: true), + 21.height, + "Search".toText16(), + 11.height, + Row( + children: [ + radioOption("Name", 0, _selectedSearchIndex), + radioOption("User Name", 1, _selectedSearchIndex), + radioOption("Email", 2, _selectedSearchIndex), + ], + ), + 14.height, + Row( + children: [ + DynamicTextFieldWidget( + "Search", + "Search By Username", + inputAction: TextInputAction.done, + suffixIconData: Icons.search, + onChange: (text) { + searchText = text; + setState(() {}); + }, ).expanded, - if (widget.fromChat) - if (chatUsersList != null && widget.fromChat) - chatUsersList!.isEmpty - ? Column( - children: [ - 20.height, - Utils.getNoDataWidget(context), - ], - ) - : ListView - .separated( - physics: const AlwaysScrollableScrollPhysics(), - controller: sc, - shrinkWrap: true, - itemBuilder: (BuildContext cxt, int index) { - return SizedBox( - height: 55, - child: ListTile( - leading: Stack( - children: [ - SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), + IconButton( + constraints: const BoxConstraints(), + onPressed: () async { + await SystemChannels.textInput.invokeMethod('TextInput.hide'); + widget.fromChat ? fetchChatUser() : fetchUserByInput(); + }, + icon: const Icon(Icons.search), + ) + ], + ), + if (replacementList != null) + replacementList!.isEmpty + ? Utils.getNoDataWidget(context).expanded + : ListView( + physics: const BouncingScrollPhysics(), + padding: EdgeInsets.only(top: 21, bottom: 8), + children: [ + if (favouriteUserList?.isNotEmpty ?? false) ...[ + "Favorites".toText16(), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (cxt, index) => employeeItemView(favouriteUserList![index]), + separatorBuilder: (cxt, index) => Container( + height: 1, + color: MyColors.borderE3Color, + ), + itemCount: favouriteUserList?.length ?? 0), + 12.height, + ], + if (nonFavouriteUserList?.isNotEmpty ?? false) ...[ + "Related".toText16(), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (cxt, index) => employeeItemView(nonFavouriteUserList![index]), + separatorBuilder: (cxt, index) => Container( + height: 1, + color: MyColors.borderE3Color, ), - ), - ) - ], + itemCount: nonFavouriteUserList?.length ?? 0), + ] + ], + ).expanded, + if (widget.fromChat) + if (chatUsersList != null && widget.fromChat) + chatUsersList!.isEmpty + ? Column( + children: [ + 20.height, + Utils.getNoDataWidget(context), + ], + ) + : ListView.separated( + physics: const AlwaysScrollableScrollPhysics(), + controller: sc, + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int index) { + return SizedBox( + height: 55, + child: ListTile( + leading: Stack( + children: [ + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), + ), + ), + ) + ], + ), + title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), + minVerticalPadding: 0, + onTap: () { + Navigator.pop(context); + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: ChatDetailedScreenParams(chatUsersList![index], true), + ); + }, + ), + ); + }, + separatorBuilder: (BuildContext context, int index) => const Padding( + padding: EdgeInsets.only(right: 10, left: 70, bottom: 0, top: 0), + child: Divider( + color: Color(0xFFE5E5E5), ), - title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), - minVerticalPadding: 0, - onTap: () { - Navigator.pop(context); - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: ChatDetailedScreenParams(chatUsersList![index], true), - ); - }, ), - ); - }, - separatorBuilder: (BuildContext context, int index) => - const Padding( - padding: EdgeInsets.only(right: 10, left: 70, bottom: 0, top: 0), - child: Divider( - color: Color(0xFFE5E5E5), - ), - ), - itemCount: chatUsersList?.length ?? 0, - ) - .expanded, - ], - ) - .paddingOnly(left: 21, right: 21, bottom: 0, top: 21) - .expanded, - Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor), - DefaultButton( - LocaleKeys.cancel.tr(), - () { - Navigator.pop(context); - }, - textColor: MyColors.grey3AColor, - colors: const [ - Color(0xffE6E6E6), - Color(0xffE6E6E6), - ], - ).insideContainer + itemCount: chatUsersList?.length ?? 0, + ).expanded, + ], + ).paddingOnly(left: 21, right: 21, bottom: 0, top: 21).expanded, + Container(width: double.infinity, height: 1, color: MyColors.lightGreyEFColor), + DefaultButton( + LocaleKeys.cancel.tr(), + () { + Navigator.pop(context); + }, + textColor: MyColors.grey3AColor, + colors: const [ + Color(0xffE6E6E6), + Color(0xffE6E6E6), + ], + ).insideContainer + ], + ), + ); + } + + Widget employeeItemView(ReplacementList replacement) { + return InkWell( + onTap: () { + Navigator.pop(context); + widget.onSelectEmployee(replacement); + }, + child: SizedBox( + height: 50, + child: Row( + children: [ + CircularAvatar( + url: replacement.employeeImage ?? "", + height: 30, + width: 30, + isImageBase64: true, + ), + 16.width, + Expanded( + child: (replacement.employeeDisplayName ?? "").toText12(), + ), + Icon(Icons.star, size: 16, color: replacement.isFavorite! ? MyColors.yellowFavColor : MyColors.borderCEColor), ], ), - ); - } + ), + ); + } - Widget employeeItemView(ReplacementList replacement) { - return InkWell( - onTap: () { - Navigator.pop(context); - widget.onSelectEmployee(replacement); - }, - child: SizedBox( - height: 50, - child: Row( - children: [ - CircularAvatar( - url: replacement.employeeImage ?? "", - height: 30, - width: 30, - isImageBase64: true, - ), - 16.width, - Expanded( - child: (replacement.employeeDisplayName ?? "").toText12(), - ), - Icon(Icons.star, size: 16, color: replacement.isFavorite! ? MyColors.yellowFavColor : MyColors.borderCEColor), - ], + Widget radioOption(String title, int value, int groupValue) { + return Row( + children: [ + Container( + width: 24, + height: 24, + decoration: BoxDecoration( + color: Colors.transparent, + border: Border.all(color: MyColors.borderColor, width: 1), + borderRadius: const BorderRadius.all( + Radius.circular(100), + ), ), - ), - ); - } - - Widget radioOption(String title, int value, int groupValue) { - return Row( - children: [ - Container( - width: 24, - height: 24, + padding: const EdgeInsets.all(4), + child: Container( + width: double.infinity, + height: double.infinity, decoration: BoxDecoration( - color: Colors.transparent, - border: Border.all(color: MyColors.borderColor, width: 1), + color: value == groupValue ? MyColors.grey3AColor : Colors.transparent, borderRadius: const BorderRadius.all( Radius.circular(100), ), ), - padding: const EdgeInsets.all(4), - child: Container( - width: double.infinity, - height: double.infinity, - decoration: BoxDecoration( - color: value == groupValue ? MyColors.grey3AColor : Colors.transparent, - borderRadius: const BorderRadius.all( - Radius.circular(100), - ), - ), - ), ), - 9.width, - title.toText12(color: MyColors.grey57Color) - ], - ).onPress(() { - _selectedSearchIndex = value; - setState(() {}); - }).expanded; - } + ), + 9.width, + title.toText12(color: MyColors.grey57Color) + ], + ).onPress(() { + _selectedSearchIndex = value; + setState(() {}); + }).expanded; } +} From b34225501ceeb127dec1ffc4ec7bf6d04b0af51a Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Tue, 27 Dec 2022 14:37:07 +0300 Subject: [PATCH 278/302] fix family member --- lib/ui/profile/add_update_family_member.dart | 91 +++++++++----------- lib/ui/profile/family_members.dart | 7 +- 2 files changed, 45 insertions(+), 53 deletions(-) diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index 36a8394..47a2e57 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -23,6 +23,14 @@ import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; import 'package:easy_localization/src/public_ext.dart'; +class FamilyMemberScreenParams { + String? actionType; + int relationID; + int? flag; + + FamilyMemberScreenParams(this.relationID, {this.actionType, this.flag}); +} + class AddUpdateFamilyMember extends StatefulWidget { const AddUpdateFamilyMember({Key? key}) : super(key: key); @@ -36,10 +44,11 @@ class _AddUpdateFamilyMemberState extends State { List getContactDffStructureList = []; List getContactDetailsList = []; SubmitContactTransactionList? submitContactTransactionList; - dynamic args; + //dynamic args; + FamilyMemberScreenParams? params; String? date = "MM/DD/YYYY"; - var dateTime = DateTime.now().timeZoneOffset; - var dateTime1 = DateTime.now().timeZoneName; + Duration dateTime = DateTime.now().timeZoneOffset; + String dateTime1 = DateTime.now().timeZoneName; GetApprovesList? getApprovesList; @@ -52,9 +61,9 @@ class _AddUpdateFamilyMemberState extends State { try { Utils.showLoading(context); getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure(); - getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(args['actionType']); + getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(params!.actionType.toString()); getContactDffStructureList = await ProfileApiClient().getContactDffStructureList(); - if (args['actionType'] == "ADD") { + if (params!.actionType == "ADD") { getBasicDetDffStructureList?.forEach((element) { element?.getContactDetailsList = new GetContactDetailsList(); }); @@ -64,8 +73,8 @@ class _AddUpdateFamilyMemberState extends State { getContactDffStructureList?.forEach((element) { element?.getContactDetailsList = new GetContactDetailsList(); }); - } else if (args['actionType'] == "UPDATE") { - getContactDetailsList = await ProfileApiClient().getContactDetailsList(args['relationID']); + } else if (params!.actionType == "UPDATE") { + getContactDetailsList = await ProfileApiClient().getContactDetailsList(params!.relationID); getBasicDetDffStructureList?.forEach((element) { element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME); @@ -88,8 +97,8 @@ class _AddUpdateFamilyMemberState extends State { @override Widget build(BuildContext context) { - if (args == null) { - args = ModalRoute.of(context)!.settings.arguments; + if (params == null) { + params = ModalRoute.of(context)!.settings.arguments as FamilyMemberScreenParams; callAddAndUpdateFamilyMember(); } return Scaffold( @@ -98,7 +107,7 @@ class _AddUpdateFamilyMemberState extends State { title: LocaleKeys.profile_familyDetails.tr(), ), backgroundColor: MyColors.backgroundColor, - body: args['flag'] == 1 + body: params!.flag == 1 ? Column( children: [ ListView(physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ @@ -108,7 +117,7 @@ class _AddUpdateFamilyMemberState extends State { itemBuilder: (BuildContext cxt, int parentIndex) { return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex); }, - separatorBuilder: (cxt, index) => 0.height, + separatorBuilder: (BuildContext cxt, int index) => 0.height, itemCount: getContactColsStructureList!.length), 12.height, ListView.separated( @@ -117,7 +126,7 @@ class _AddUpdateFamilyMemberState extends State { itemBuilder: (BuildContext cxt, int parentIndex) { return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex); }, - separatorBuilder: (cxt, index) => 0.height, + separatorBuilder: (BuildContext cxt, int index) => 0.height, itemCount: getBasicDetDffStructureList!.length), ListView.separated( physics: const NeverScrollableScrollPhysics(), @@ -125,18 +134,17 @@ class _AddUpdateFamilyMemberState extends State { itemBuilder: (BuildContext cxt, int parentIndex) { return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex); }, - separatorBuilder: (cxt, index) => 0.height, + separatorBuilder: (BuildContext cxt, int index) => 0.height, itemCount: getContactDffStructureList!.length), - ]).expanded, + ],).expanded, DefaultButton(LocaleKeys.next.tr(), () async { submitUpdateForm(); }).insideContainer, ], ) - : args['flag'] == 2 + : params!.flag == 2 ? Column( children: [ - // getContactDetailsList!.isEmpty ListView(physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ ListView.separated( physics: const NeverScrollableScrollPhysics(), @@ -144,7 +152,7 @@ class _AddUpdateFamilyMemberState extends State { itemBuilder: (BuildContext cxt, int parentIndex) { return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex); }, - separatorBuilder: (cxt, index) => 0.height, + separatorBuilder: (BuildContext cxt, int index) => 0.height, itemCount: getContactColsStructureList!.length), 12.height, ListView.separated( @@ -153,7 +161,7 @@ class _AddUpdateFamilyMemberState extends State { itemBuilder: (BuildContext cxt, int parentIndex) { return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex); }, - separatorBuilder: (cxt, index) => 0.height, + separatorBuilder: (BuildContext cxt, int index) => 0.height, itemCount: getBasicDetDffStructureList!.length), ListView.separated( physics: const NeverScrollableScrollPhysics(), @@ -161,7 +169,7 @@ class _AddUpdateFamilyMemberState extends State { itemBuilder: (BuildContext cxt, int parentIndex) { return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex); }, - separatorBuilder: (cxt, index) => 0.height, + separatorBuilder: (BuildContext cxt, int index) => 0.height, itemCount: getContactDffStructureList!.length), ]).expanded, DefaultButton(LocaleKeys.next.tr(), () async { @@ -195,13 +203,12 @@ class _AddUpdateFamilyMemberState extends State { model.getContactDetailsList!.sEGMENTVALUEDSP = getContactColsStructureList[index]!.objectValuesList![popupIndex].mEANING.toString(); model.getContactDetailsList!.vARCHAR2VALUE = getContactColsStructureList[index]!.objectValuesList![popupIndex].cODE.toString(); setState(() {}); - }); + },); } else { return DynamicTextFieldWidget( (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), (model!.getContactDetailsList!.sEGMENTVALUEDSP ?? ""), - //isInputTypeNum: true, - onChange: (text) { + onChange: (String text) { model!.getContactDetailsList!.sEGMENTVALUEDSP = text; }, ).paddingOnly(bottom: 12); @@ -211,7 +218,7 @@ class _AddUpdateFamilyMemberState extends State { (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), (model!.getContactDetailsList!.sEGMENTVALUEDSP ?? ""), isInputTypeNum: true, - onChange: (text) { + onChange: (String text) { model!.getContactDetailsList!.sEGMENTVALUEDSP = text; }, ).paddingOnly(bottom: 12); @@ -223,13 +230,8 @@ class _AddUpdateFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - //date = DateFormat('yyyy/MM/dd').format(dateValue); - //date = "2022-10-23T09:17:38.653+03:00"; date = (DateFormat('yyyy-MM-dd').format(dateValue)); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; - print(dateTime); - print(dateTime1); - print(date); setState(() {}); }, ).paddingOnly(bottom: 12); @@ -260,13 +262,12 @@ class _AddUpdateFamilyMemberState extends State { model.getContactDetailsList!.vARCHAR2VALUE = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); setState(() {}); - }); + },); } else { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", - // isInputTypeNum: true, - onChange: (text) { + onChange: (String text) { model.getContactDetailsList!.sEGMENTVALUEDSP = text; }, ).paddingOnly(bottom: 12); @@ -276,7 +277,7 @@ class _AddUpdateFamilyMemberState extends State { (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", isInputTypeNum: true, - onChange: (text) { + onChange: (String text) { model.getContactDetailsList!.sEGMENTVALUEDSP = text; }, ).paddingOnly(bottom: 12); @@ -289,8 +290,6 @@ class _AddUpdateFamilyMemberState extends State { onTap: () async { DateTime dateValue = await _selectDate(context); date = (DateFormat('yyyy-MM-dd').format(dateValue)); - // date = (DateFormat('yyyy-MM-dd').format(dateValue) +"T"+ dateTime.toString() + dateTime1.toString()); - // date = DateFormat('yyyy/MM/dd').format(dateValue); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; setState(() {}); }, @@ -321,13 +320,12 @@ class _AddUpdateFamilyMemberState extends State { model.getContactDetailsList!.sEGMENTVALUEDSP = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); model.getContactDetailsList!.vARCHAR2VALUE = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); setState(() {}); - }); + },); } else { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", - // isInputTypeNum: true, - onChange: (text) { + onChange: (String text) { model.getContactDetailsList!.sEGMENTVALUEDSP = text; }, ).paddingOnly(bottom: 12); @@ -337,7 +335,7 @@ class _AddUpdateFamilyMemberState extends State { (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", isInputTypeNum: true, - onChange: (text) { + onChange: (String text) { model.getContactDetailsList!.sEGMENTVALUEDSP = text; }, ).paddingOnly(bottom: 12); @@ -349,9 +347,7 @@ class _AddUpdateFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - // date = "2022-10-23T09:17:38.653+03:00"; date = (DateFormat('yyyy-MM-dd').format(dateValue)); - // date = DateFormat('yyyy/MM/dd').format(dateValue); model!.getContactDetailsList!.sEGMENTVALUEDSP = date; setState(() {}); }, @@ -367,13 +363,13 @@ class _AddUpdateFamilyMemberState extends State { if (!Platform.isIOS) { await showCupertinoModalPopup( context: context, - builder: (cxt) => Container( + builder: (BuildContext cxt) => Container( height: 250, color: Colors.white, child: CupertinoDatePicker( backgroundColor: Colors.white, mode: CupertinoDatePickerMode.date, - onDateTimeChanged: (value) { + onDateTimeChanged: (DateTime value) { if (value != null && value != selectedDate) { time = value; } @@ -392,7 +388,6 @@ class _AddUpdateFamilyMemberState extends State { } void submitUpdateForm() async { - print("submit"); try { List> values1 = getBasicDetDffStructureList!.map((e) { String? dateVal = ''; @@ -441,12 +436,9 @@ class _AddUpdateFamilyMemberState extends State { return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: varChar).toJson(); }).toList(); List> values3 = getContactColsStructureList!.map((e) { - // String tempVar = e!.getContactDetailsList!.sEGMENTVALUEDSP ?? ""; String? dateVal = ''; dynamic? varChar1 = ''; int? numberVal; - - print("e.dATATYPE:${e?.dATATYPE}"); if (e!.dATATYPE == 'VARCHAR2') { dateVal = null; numberVal = null; @@ -468,15 +460,14 @@ class _AddUpdateFamilyMemberState extends State { }).toList(); List> valuesFinal = [...values1, ...values2, ...values3]; Utils.showLoading(context); - submitContactTransactionList = await ProfileApiClient().submitContactTransactionAddAndUpdate(args['actionType'], args['relationID'] ?? null, valuesFinal); - var transactionId = submitContactTransactionList!.pTRANSACTIONID; - var itemKey = submitContactTransactionList!.pITEMKEY; + submitContactTransactionList = await ProfileApiClient().submitContactTransactionAddAndUpdate(params!.actionType.toString(), params!.relationID, valuesFinal); + int? transactionId = submitContactTransactionList!.pTRANSACTIONID; + String? itemKey = submitContactTransactionList!.pITEMKEY; Utils.hideLoading(context); Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); setState(() {}); } catch (ex) { - print(ex); Utils.hideLoading(context); Utils.handleException(ex, context, null); } diff --git a/lib/ui/profile/family_members.dart b/lib/ui/profile/family_members.dart index 6c564e3..ffded0b 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -12,6 +12,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/profile/add_update_family_member.dart'; import 'package:mohem_flutter_app/ui/profile/profile_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; @@ -140,7 +141,7 @@ class _FamilyMembersState extends State { LocaleKeys.addNewFamilyMember.tr(), menuEntries.updateButton == 'Y' ? () async { - Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID": relationId, "flag": 1, "actionType": "ADD"}); + Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: FamilyMemberScreenParams( relationId, flag: 1, actionType: "ADD")); // ProfileScreen(); } : null) @@ -166,7 +167,7 @@ class _FamilyMembersState extends State { Navigator.pushNamed( context, AppRoutes.addUpdateFamilyMember, - arguments: {"relationID": relationId, "flag": 2, "actionType": "UPDATE"}, + arguments:FamilyMemberScreenParams(relationId, flag: 2, actionType: "UPDATE"), ); }, ); @@ -202,7 +203,7 @@ class _FamilyMembersState extends State { LocaleKeys.ok.tr(), ), onPressed: () { - Navigator.pushNamed(context, AppRoutes.deleteFamilyMember, arguments: relationId); + Navigator.pushNamed(context, AppRoutes.deleteFamilyMember, arguments: FamilyMemberScreenParams(relationId)); // continueDynamicForms(); }, ); From 83820a8a20e966cc02c8543c452aa68e6970c9c1 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 27 Dec 2022 15:42:48 +0300 Subject: [PATCH 279/302] worklist detail remove type lists when become empty. --- lib/classes/consts.dart | 4 +-- lib/ui/work_list/work_list_screen.dart | 42 ++++++++------------------ 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 6679cbb..56b0008 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/work_list/work_list_screen.dart b/lib/ui/work_list/work_list_screen.dart index bd12531..485921d 100644 --- a/lib/ui/work_list/work_list_screen.dart +++ b/lib/ui/work_list/work_list_screen.dart @@ -115,7 +115,7 @@ class _WorkListScreenState extends State { } } }); - workListItemTypes.removeWhere((element) => element.value == 0); + workListItemTypes.removeWhere((element) => element.value < 1); if (workListItemTypes.isNotEmpty) { workListItemIndex = workListItemIndex ?? 0; } else { @@ -147,17 +147,6 @@ class _WorkListScreenState extends State { } } }); - - // var tempList = providerData.getOpenNotificationsList?.where((notificationElement) { - // return (notificationElement.itemType == workListItemTypes[workListItemIndex].key) && notificationElement.itemType == workListElement.key; - // }).toList(); - // if (tempList!.isNotEmpty) { - // if ((AppState().workList?.length ?? 0) != (tempList.first.openNtfNumber ?? 0)) { - // workListElement.value = AppState().workList?.length ?? 0; - // providerData.workListCounter = providerData.workListCounter - ((tempList.first.openNtfNumber ?? 0) - (AppState().workList?.length ?? 0)); - // providerData.notify(); - // } - // } } }); } @@ -357,28 +346,15 @@ class _WorkListScreenState extends State { if (shouldReloadData != null) { if (shouldReloadData.toString() == "delegate_reload") { providerData.itgFormsModel!.totalCount = providerData.itgFormsModel!.totalCount! - 1; + workListItemIndex = null; calculateCounter(); - setState(() {}); if (workListItemIndex != null) { getWorkList(); + } else { + setState(() {}); } } - // workList!.remove(data); - // AppState().setWorkList = workList; - // if (data.iTEMTYPE == "ITG") { - // - // - // } else { - // providerData.getOpenNotificationsList?.forEach((element) { - // if (element.itemType == data.iTEMTYPE) { - // element.openNtfNumber = element.openNtfNumber! - 1; - // } - // }); - // providerData.workListCounter = providerData.workListCounter - 1; - // providerData.notify(); - // } - // calculateCounter(); - // if (mounted) setState(() {}); + } else { verifyWorkListCounter(); if (mounted) setState(() {}); @@ -477,7 +453,13 @@ class _WorkListScreenState extends State { if (shouldReloadData != null) { if (shouldReloadData.toString() == "delegate_reload") { verifyWorkListCounter(); - getWorkList(); + workListItemIndex = null; + calculateCounter(); + if (workListItemIndex != null) { + getWorkList(); + } else { + setState(() {}); + } } else { workList!.remove(data); AppState().setWorkList = workList; From a383a504aaa8a0365972ee937d8b8cc2d0ec0966 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 27 Dec 2022 15:54:14 +0300 Subject: [PATCH 280/302] improvement. --- lib/ui/profile/add_update_family_member.dart | 155 ++++++++++--------- 1 file changed, 81 insertions(+), 74 deletions(-) diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index 9633aa6..6263b95 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -46,6 +46,7 @@ class _AddUpdateFamilyMemberState extends State { List getContactDffStructureList = []; List getContactDetailsList = []; SubmitContactTransactionList? submitContactTransactionList; + //dynamic args; FamilyMemberScreenParams? params; String? date = "MM/DD/YYYY"; @@ -112,33 +113,37 @@ class _AddUpdateFamilyMemberState extends State { body: params!.flag == 1 ? Column( children: [ - ListView(physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (BuildContext cxt, int parentIndex) { - return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex); - }, - separatorBuilder: (BuildContext cxt, int index) => 0.height, - itemCount: getContactColsStructureList!.length), - 12.height, - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (BuildContext cxt, int parentIndex) { - return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex); - }, - separatorBuilder: (BuildContext cxt, int index) => 0.height, - itemCount: getBasicDetDffStructureList!.length), - ListView.separated( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemBuilder: (BuildContext cxt, int parentIndex) { - return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex); - }, - separatorBuilder: (BuildContext cxt, int index) => 0.height, - itemCount: getContactDffStructureList!.length), - ],).expanded, + ListView( + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.all(21), + children: [ + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (BuildContext cxt, int index) => 0.height, + itemCount: getContactColsStructureList!.length), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (BuildContext cxt, int index) => 0.height, + itemCount: getBasicDetDffStructureList!.length), + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (BuildContext cxt, int index) => 0.height, + itemCount: getContactDffStructureList!.length), + ], + ).expanded, DefaultButton(LocaleKeys.next.tr(), () async { submitUpdateForm(); }).insideContainer, @@ -191,21 +196,22 @@ class _AddUpdateFamilyMemberState extends State { if (model.dATATYPE == "VARCHAR2") { if (model!.objectValuesList?.isNotEmpty ?? false) { return PopupMenuButton( - child: DynamicTextFieldWidget( - (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), - model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", - isEnable: false, - isPopup: true, - ).paddingOnly(bottom: 12), - itemBuilder: (_) => >[ - for (int i = 0; i < getContactColsStructureList[index]!.objectValuesList!.length; i++) - PopupMenuItem(child: Text(getContactColsStructureList[index]!.objectValuesList![i].mEANING.toString()), value: i), - ], - onSelected: (int popupIndex) { - model.getContactDetailsList!.sEGMENTVALUEDSP = getContactColsStructureList[index]!.objectValuesList![popupIndex].mEANING.toString(); - model.getContactDetailsList!.vARCHAR2VALUE = getContactColsStructureList[index]!.objectValuesList![popupIndex].cODE.toString(); - setState(() {}); - },); + child: DynamicTextFieldWidget( + (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < getContactColsStructureList[index]!.objectValuesList!.length; i++) + PopupMenuItem(child: Text(getContactColsStructureList[index]!.objectValuesList![i].mEANING.toString()), value: i), + ], + onSelected: (int popupIndex) { + model.getContactDetailsList!.sEGMENTVALUEDSP = getContactColsStructureList[index]!.objectValuesList![popupIndex].mEANING.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getContactColsStructureList[index]!.objectValuesList![popupIndex].cODE.toString(); + setState(() {}); + }, + ); } else { return DynamicTextFieldWidget( (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), @@ -249,22 +255,23 @@ class _AddUpdateFamilyMemberState extends State { if (model!.fORMATTYPE == "C") { if (model!.eSERVICESVS?.isNotEmpty ?? false) { return PopupMenuButton( - child: DynamicTextFieldWidget( - (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", - isEnable: false, - isPopup: true, - ).paddingOnly(bottom: 12), - itemBuilder: (_) => >[ - for (int i = 0; i < getBasicDetDffStructureList[index]!.eSERVICESVS!.length; i++) - PopupMenuItem(child: Text(getBasicDetDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i), - ], - onSelected: (int popupIndex) { - model.getContactDetailsList!.sEGMENTVALUEDSP = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); - model.getContactDetailsList!.vARCHAR2VALUE = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); + child: DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < getBasicDetDffStructureList[index]!.eSERVICESVS!.length; i++) + PopupMenuItem(child: Text(getBasicDetDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i), + ], + onSelected: (int popupIndex) { + model.getContactDetailsList!.sEGMENTVALUEDSP = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); - setState(() {}); - },); + setState(() {}); + }, + ); } else { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), @@ -308,21 +315,22 @@ class _AddUpdateFamilyMemberState extends State { if (model!.fORMATTYPE == "C") { if (model.eSERVICESVS?.isNotEmpty ?? false) { return PopupMenuButton( - child: DynamicTextFieldWidget( - (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), - model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", - isEnable: false, - isPopup: true, - ).paddingOnly(bottom: 12), - itemBuilder: (_) => >[ - for (int i = 0; i < getContactDffStructureList[index]!.eSERVICESVS!.length; i++) - PopupMenuItem(child: Text(getContactDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i), - ], - onSelected: (int popupIndex) { - model.getContactDetailsList!.sEGMENTVALUEDSP = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); - model.getContactDetailsList!.vARCHAR2VALUE = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); - setState(() {}); - },); + child: DynamicTextFieldWidget( + (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < getContactDffStructureList[index]!.eSERVICESVS!.length; i++) + PopupMenuItem(child: Text(getContactDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i), + ], + onSelected: (int popupIndex) { + model.getContactDetailsList!.sEGMENTVALUEDSP = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); + setState(() {}); + }, + ); } else { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), @@ -463,11 +471,10 @@ class _AddUpdateFamilyMemberState extends State { }).toList(); List> valuesFinal = [...values1, ...values2, ...values3]; Utils.showLoading(context); - submitContactTransactionList = await ProfileApiClient().submitContactTransactionAddAndUpdate(args['actionType'], args['relationID'] ?? null, valuesFinal); + submitContactTransactionList = await ProfileApiClient().submitContactTransactionAddAndUpdate(params!.actionType!, params!.relationID, valuesFinal); Utils.hideLoading(context); await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), submitContactTransactionList!.pTRANSACTIONID!, submitContactTransactionList!.pITEMKEY!, 'family_member')); - if (!AppState().cancelRequestTrancsection) { return; } From a746b607dfda805c461750b371591a57d425e6e7 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 27 Dec 2022 16:21:25 +0300 Subject: [PATCH 281/302] Fixes --- lib/classes/consts.dart | 5 +- .../chat/get_search_user_chat_model.dart | 1 - lib/provider/chat_provider_model.dart | 40 +++- .../search_employee_bottom_sheet.dart | 213 ++++++++++++------ 4 files changed, 183 insertions(+), 76 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 990656f..a2af129 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + //static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -44,7 +44,6 @@ class ApiConsts { static int tabletMinLength = 500; } - class SharedPrefsConsts { static String isRememberMe = "remember_me"; static String username = "username"; diff --git a/lib/models/chat/get_search_user_chat_model.dart b/lib/models/chat/get_search_user_chat_model.dart index e1c87a3..e69fd3b 100644 --- a/lib/models/chat/get_search_user_chat_model.dart +++ b/lib/models/chat/get_search_user_chat_model.dart @@ -1,4 +1,3 @@ - import 'dart:convert'; import 'dart:io'; diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 76a47c2..b4bd451 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -69,6 +69,10 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { //Chat Home Page Counter int chatUConvCounter = 0; + /// Search Provider + List? chatUsersList = []; + int pageNo = 1; + Future getUserAutoLoginToken() async { userLoginToken.UserAutoLoginModel userLoginResponse = await ChatApiClient().getUserLoginToken(); if (userLoginResponse.response != null) { @@ -82,7 +86,6 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } Future buildHubConnection() async { - chatHubConnection = await getHubConnection(); await chatHubConnection.start(); if (kDebugMode) { @@ -173,7 +176,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (isNewChat) { userChatHistory = []; } else if (loadMore) { - Utils.showToast("No More Data To Load"); + } } else { if (loadMore) { @@ -942,8 +945,26 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } + + for (ChatUser user in chatUsersList!) { + if (user.id == favoriteChatUser.response!.targetUserId!) { + user.isFav = favoriteChatUser.response!.isFav; + dynamic contain = favUsersList!.where((ChatUser element) => element.id == favoriteChatUser.response!.targetUserId!); + if (contain.isEmpty) { + favUsersList.add(user); + } + } + } + } + for (ChatUser user in favUsersList) { + if (user.id == targetUserID) { + user.userLocalDownlaodedImage = null; + user.isImageLoading = false; + user.isImageLoaded = false; + } } notifyListeners(); + } Future unFavoriteUser({required int userID, required int targetUserID}) async { @@ -960,6 +981,12 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { ); } + for (ChatUser user in chatUsersList!) { + if (user.id == favoriteChatUser.response!.targetUserId!) { + user.isFav = favoriteChatUser.response!.isFav; + } + } + notifyListeners(); } @@ -1348,6 +1375,15 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } + + for (ChatUser user in searchedChats!) { + for (ChatUser teamUser in teamMembersList!) { + if (user.id == teamUser.id) { + teamUser.userStatus = user.userStatus; + } + } + } + isLoading = false; notifyListeners(); } diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index a0041a7..eada55f 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -20,10 +20,12 @@ import 'package:mohem_flutter_app/models/chat/get_search_user_chat_model.dart'; import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; import 'package:mohem_flutter_app/models/worklist/get_favorite_replacements_model.dart'; import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; +import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/chat_detailed_screen.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; +import 'package:provider/provider.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; class SearchEmployeeBottomSheet extends StatefulWidget { @@ -64,8 +66,7 @@ class _SearchEmployeeBottomSheetState extends State { List? nonFavouriteUserList; // Chat Items - List? chatUsersList = []; - int pageNo = 1; + late ChatProviderModel provider; int _selectedSearchIndex = 0; @@ -92,46 +93,37 @@ class _SearchEmployeeBottomSheetState extends State { } void fetchChatUser({bool isNeedLoading = true}) async { - if (pageNo == 1) chatUsersList!.clear(); + if (provider.pageNo == 1) provider.chatUsersList!.clear(); try { Utils.showLoading(context); - await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, pageNo).then((ChatUserModel value) { - print(value.response!.length); + await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, provider.pageNo).then((ChatUserModel value) { if (value.response != null) { - chatUsersList = value.response; + if (provider.pageNo == 1) { + provider.chatUsersList = value.response; + } else { + print("--------------------------Added More----------------------"); + provider.chatUsersList!.addAll(value.response!); + } } }); - chatUsersList!.removeWhere((ChatUser element) => element.id == AppState().chatDetails!.response!.id); + provider.chatUsersList!.removeWhere((ChatUser element) => element.id == AppState().chatDetails!.response!.id); Utils.hideLoading(context); setState(() {}); } catch (e) { Utils.hideLoading(context); Utils.handleException(e, context, null); } - if (isNeedLoading) Utils.hideLoading(context); setState(() {}); return null; } - void loadMoreChatUsers() async { - try { - await ChatApiClient().getChatMemberFromSearch(searchText, AppState().chatDetails!.response!.id!, pageNo).then((ChatUserModel value) { - if (value.response != null) { - chatUsersList!.addAll(value.response!); - } - }); - chatUsersList!.removeWhere((ChatUser element) => element.id == AppState().chatDetails!.response!.id); - } catch (e) { - Utils.hideLoading(context); - Utils.handleException(e, context, null); - } - } - void scrollListener() async { if (sc.position.pixels == sc.position.maxScrollExtent) { - pageNo++; - setState(() {}); + provider.pageNo++; + logger.w(provider.chatUsersList!.length); + logger.w(provider.pageNo); + fetchChatUser(); } } @@ -139,6 +131,15 @@ class _SearchEmployeeBottomSheetState extends State { void initState() { super.initState(); sc.addListener(scrollListener); + provider = Provider.of(context, listen: false); + } + + @override + void dispose() { + print("// TODO: implement dispose"); + super.dispose(); + provider.chatUsersList = []; + provider.pageNo = 1; } @override @@ -157,7 +158,7 @@ class _SearchEmployeeBottomSheetState extends State { 11.height, Row( children: [ - radioOption("Name", 0, _selectedSearchIndex), + radioOption(widget.fromChat ? "UserId" : "Name", 0, _selectedSearchIndex), radioOption("User Name", 1, _selectedSearchIndex), radioOption("Email", 2, _selectedSearchIndex), ], @@ -222,8 +223,8 @@ class _SearchEmployeeBottomSheetState extends State { ], ).expanded, if (widget.fromChat) - if (chatUsersList != null && widget.fromChat) - chatUsersList!.isEmpty + if (provider.chatUsersList != null && widget.fromChat) + provider.chatUsersList!.isEmpty ? Column( children: [ 20.height, @@ -231,56 +232,126 @@ class _SearchEmployeeBottomSheetState extends State { ], ) : ListView.separated( - physics: const AlwaysScrollableScrollPhysics(), - controller: sc, + itemCount: provider.chatUsersList!.length, shrinkWrap: true, - itemBuilder: (BuildContext cxt, int index) { + physics: const ClampingScrollPhysics(), + controller: sc, + padding: const EdgeInsets.only(bottom: 80.0, top: 20), + itemBuilder: (BuildContext context, int index) { return SizedBox( height: 55, - child: ListTile( - leading: Stack( - children: [ + child: Row( + children: [ + Stack( + children: [ SvgPicture.asset( - "assets/images/user.svg", - height: 48, - width: 48, - ), - Positioned( - right: 5, - bottom: 1, - child: Container( - width: 10, - height: 10, - decoration: BoxDecoration( - color: chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), + "assets/images/user.svg", + height: 48, + width: 48, ), - ), - ) - ], - ), - title: (chatUsersList![index].userName ?? "").toText14(color: MyColors.darkTextColor), - minVerticalPadding: 0, - onTap: () { - Navigator.pop(context); - Navigator.pushNamed( - context, - AppRoutes.chatDetailed, - arguments: ChatDetailedScreenParams(chatUsersList![index], true), - ); - }, + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: provider.chatUsersList![index].userStatus == 1 ? MyColors.green2DColor : Colors.red, + ), + ).circle(10), + ) + ], + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (provider.chatUsersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "") + .toText14(color: MyColors.darkTextColor) + .paddingOnly(left: 11, top: 13), + provider.chatUsersList![index].isTyping! + ? 'Typing...' + .toText10( + color: MyColors.textMixColor, + ) + .paddingOnly(left: 11.0) + : const SizedBox() + ], + ).expanded, + SizedBox( + width: 60, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + if (provider.chatUsersList![index].unreadMessageCount! > 0) + Container( + alignment: Alignment.center, + width: 18, + height: 18, + decoration: const BoxDecoration( + color: MyColors.redColor, + borderRadius: BorderRadius.all( + Radius.circular(20), + ), + ), + child: (provider.chatUsersList![index].unreadMessageCount!.toString()) + .toText10( + color: MyColors.white, + ) + .center, + ).paddingOnly(right: 10).center, + Icon( + provider.chatUsersList![index].isFav != null && provider.chatUsersList![index].isFav == false ? Icons.star_sharp : Icons.star_sharp, + color: provider.chatUsersList![index].isFav != null && provider.chatUsersList![index].isFav == true ? MyColors.yellowColor : MyColors.grey35Color, + ).onPress( + () { + if (provider.chatUsersList![index].isFav == null || provider.chatUsersList![index].isFav == false) { + provider + .favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: provider.chatUsersList![index].id!, + ) + .then((value) { + setState(() {}); + }); + } else if (provider.chatUsersList![index].isFav == true) { + provider + .unFavoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: provider.chatUsersList![index].id!, + ) + .then((value) { + setState(() {}); + }); + } else { + provider + .favoriteUser( + userID: AppState().chatDetails!.response!.id!, + targetUserID: provider.chatUsersList![index].id!, + ) + .then((value) { + setState(() {}); + }); + } + }, + ).center + ], + ), + ), + ], ), - ); + ).onPress(() { + Navigator.pop(context); + Navigator.pushNamed( + context, + AppRoutes.chatDetailed, + arguments: ChatDetailedScreenParams(provider.chatUsersList![index], true), + ); + }); }, - separatorBuilder: (BuildContext context, int index) => const Padding( - padding: EdgeInsets.only(right: 10, left: 70, bottom: 0, top: 0), - child: Divider( - color: Color(0xFFE5E5E5), - ), - ), - itemCount: chatUsersList?.length ?? 0, + separatorBuilder: (BuildContext context, int index) => const Divider(color: MyColors.lightGreyE5Color).paddingOnly(left: 59), ).expanded, ], ).paddingOnly(left: 21, right: 21, bottom: 0, top: 21).expanded, @@ -289,6 +360,8 @@ class _SearchEmployeeBottomSheetState extends State { LocaleKeys.cancel.tr(), () { Navigator.pop(context); + provider.chatUsersList = []; + provider.pageNo = 1; }, textColor: MyColors.grey3AColor, colors: const [ From 5028a3b860c6786fc9bad7df09bad0a81dcb2949 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Wed, 28 Dec 2022 10:16:15 +0300 Subject: [PATCH 282/302] App Bar online / Offline & Fixes --- lib/provider/chat_provider_model.dart | 19 ++- lib/ui/chat/chat_detailed_screen.dart | 1 - lib/ui/chat/chat_home_screen.dart | 2 + .../search_employee_bottom_sheet.dart | 2 + lib/widgets/chat_app_bar_widge.dart | 113 ++++++++++-------- 5 files changed, 79 insertions(+), 58 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index b4bd451..0851392 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -175,9 +175,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { if (response.statusCode == 204) { if (isNewChat) { userChatHistory = []; - } else if (loadMore) { - - } + } else if (loadMore) {} } else { if (loadMore) { List temp = getSingleUserChatModel(response.body).reversed.toList(); @@ -933,7 +931,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return f.format(data); } - Future favoriteUser({required int userID, required int targetUserID}) async { + Future favoriteUser({required int userID, required int targetUserID, required bool fromSearch}) async { fav.FavoriteChatUser favoriteChatUser = await ChatApiClient().favUser(userID: userID, targetUserID: targetUserID); if (favoriteChatUser.response != null) { for (ChatUser user in searchedChats!) { @@ -956,15 +954,16 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } } } - for (ChatUser user in favUsersList) { - if (user.id == targetUserID) { - user.userLocalDownlaodedImage = null; - user.isImageLoading = false; - user.isImageLoaded = false; + if (fromSearch) { + for (ChatUser user in favUsersList) { + if (user.id == targetUserID) { + user.userLocalDownlaodedImage = null; + user.isImageLoading = false; + user.isImageLoaded = false; + } } } notifyListeners(); - } Future unFavoriteUser({required int userID, required int targetUserID}) async { diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index dcbda22..595dc13 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -87,7 +87,6 @@ class _ChatDetailScreenState extends State { context, title: params!.chatUser!.userName.toString().replaceAll(".", " ").capitalizeFirstofEach, showHomeButton: false, - image: params!.chatUser!.image == null || params!.chatUser!.image.isEmpty ? null : params!.chatUser!.image, showTyping: true, chatUser: params!.chatUser, actions: [ diff --git a/lib/ui/chat/chat_home_screen.dart b/lib/ui/chat/chat_home_screen.dart index aed4048..aa47053 100644 --- a/lib/ui/chat/chat_home_screen.dart +++ b/lib/ui/chat/chat_home_screen.dart @@ -179,6 +179,7 @@ class _ChatHomeScreenState extends State { m.favoriteUser( userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!, + fromSearch: false ); } else if (m.searchedChats![index].isFav == true) { m.unFavoriteUser( @@ -189,6 +190,7 @@ class _ChatHomeScreenState extends State { m.favoriteUser( userID: AppState().chatDetails!.response!.id!, targetUserID: m.searchedChats![index].id!, + fromSearch: false ); } }, diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index eada55f..d06bfdc 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -312,6 +312,7 @@ class _SearchEmployeeBottomSheetState extends State { .favoriteUser( userID: AppState().chatDetails!.response!.id!, targetUserID: provider.chatUsersList![index].id!, + fromSearch: true ) .then((value) { setState(() {}); @@ -330,6 +331,7 @@ class _SearchEmployeeBottomSheetState extends State { .favoriteUser( userID: AppState().chatDetails!.response!.id!, targetUserID: provider.chatUsersList![index].id!, + fromSearch: true ) .then((value) { setState(() {}); diff --git a/lib/widgets/chat_app_bar_widge.dart b/lib/widgets/chat_app_bar_widge.dart index a67ae7d..790840c 100644 --- a/lib/widgets/chat_app_bar_widge.dart +++ b/lib/widgets/chat_app_bar_widge.dart @@ -11,56 +11,75 @@ import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; import 'package:provider/provider.dart'; AppBar ChatAppBarWidget(BuildContext context, - {required String title, - bool showHomeButton = true, - String? image, - ChatUser? chatUser, - bool showTyping = false, - List? actions, - void Function()? onHomeTapped, - void Function()? onBackTapped}) { + {required String title, bool showHomeButton = true, ChatUser? chatUser, bool showTyping = false, List? actions, void Function()? onHomeTapped, void Function()? onBackTapped}) { return AppBar( leadingWidth: 0, - title: Row( - children: [ - GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: Feedback.wrapForTap(() { - (onBackTapped == null ? Navigator.maybePop(context) : onBackTapped()); - }, context), - child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), - ), - 4.width, - if (image != null) - CircularAvatar( - url: image, - height: 40, - width: 40, - isImageBase64: true, + title: Consumer(builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { + return Row( + children: [ + GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: Feedback.wrapForTap(() { + (onBackTapped == null ? Navigator.maybePop(context) : onBackTapped()); + }, context), + child: const Icon(Icons.arrow_back_ios, color: MyColors.darkIconColor), ), - if (image != null) 14.width, - SizedBox( - height: 40, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - title.toText20(color: MyColors.darkTextColor, isBold: true).expanded, - if (showTyping) - Consumer( - builder: (BuildContext cxt, ChatProviderModel data, Widget? child) { - if (chatUser!.isTyping!) { - return ("Typing ...").toText10(color: MyColors.textMixColor); - } else { - return const SizedBox(); - } - }, - ), - ], - ), - ) - ], - ), + 4.width, + if (chatUser != null) + Stack( + children: [ + if (chatUser.isImageLoading!) + const SizedBox( + height: 48, + width: 48, + ).toShimmer().circle(30), + if (!chatUser.isImageLoading! && chatUser.userLocalDownlaodedImage == null) + SvgPicture.asset( + "assets/images/user.svg", + height: 48, + width: 48, + ), + if (!chatUser.isImageLoading! && chatUser.userLocalDownlaodedImage != null) + Container( + width: 48.0, + height: 48.0, + decoration: BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + fit: BoxFit.cover, + image: FileImage(chatUser.userLocalDownlaodedImage!), + ), + ), + ), + Positioned( + right: 5, + bottom: 1, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + color: chatUser.userStatus == 1 ? MyColors.green2DColor : Colors.red, + ), + ).circle(10), + ) + ], + ), + if (chatUser != null) 14.width, + SizedBox( + height: 40, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + title.toText20(color: MyColors.darkTextColor, isBold: true).expanded, + if (showTyping) + if (chatUser!.isTyping!) ("Typing ...").toText10(color: MyColors.textMixColor) else const SizedBox(), + ], + ), + ) + ], + ); + }), centerTitle: false, elevation: 0, backgroundColor: Colors.white, From 24c118a66e2e215011c2d22badbfd96b5ec4a818 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Wed, 28 Dec 2022 15:33:18 +0300 Subject: [PATCH 283/302] Removed GapTime for last question and some minor bugs fixed! --- assets/langs/ar-SA.json | 2 ++ assets/langs/en-US.json | 2 ++ lib/api/marathon/marathon_api_client.dart | 1 - lib/generated/codegen_loader.g.dart | 4 ++++ lib/generated/locale_keys.g.dart | 2 ++ lib/ui/marathon/marathon_provider.dart | 21 +++++++++++-------- .../countdown_timer_detail_screen.dart | 4 +++- .../widgets/marathon_progress_container.dart | 21 ++++++++++++------- .../marathon_qualifiers_container.dart | 2 +- 9 files changed, 39 insertions(+), 20 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index f5f734d..c7259fd 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -489,9 +489,11 @@ "sponsoredBy": "برعاية:", "question": "سؤال", "marathoners": "الماراثون", + "marathoner": "ماراثونر", "prize": "جائزة:", "winnerSelection": "اختيار الفائز", "qualifiers": "تصفيات", + "qualifier": "المؤهل", "getReadyForContest": "استعد للمسابقة القادمة:", "winnerSelectedRandomly": "سيتم اختيار الفائز عشوائياً من بين التصفيات.", "fingersCrossed": "تشابك الاصابع!!!", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 7f67e89..f1eac93 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -478,6 +478,7 @@ "sponsoredBy": "Sponsored By:", "question": "Question", "marathoners": "Marathoners", + "marathoner": "Marathoner", "prize": "Prize:", "advancedSearch": "Advanced Search", "openNot": "Open Notifications", @@ -492,6 +493,7 @@ "none": "None", "winnerSelection": "Winner Selection", "qualifiers": "Qualifiers", + "qualifier": "Qualifier", "getReadyForContest": "Get Ready for the coming contest:", "winnerSelectedRandomly": "The winner will be selected randomly among the qualifiers.", "fingersCrossed": "Fingers Crossed!!!", diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 28fad0f..5b1dfc8 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -29,7 +29,6 @@ class MarathonApiClient { (json) { MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); AppState().setMarathonToken = marathonModel.data["token"] ?? ""; - print("marathonToken: ${"AppState(): ${AppState().getMarathonToken}"}"); return marathonModel.data["token"] ?? ""; }, ApiConsts.marathonParticipantLoginUrl, diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 271d2e5..27bae71 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -498,9 +498,11 @@ class CodegenLoader extends AssetLoader { "sponsoredBy": "برعاية:", "question": "سؤال", "marathoners": "الماراثون", + "marathoner": "ماراثونر", "prize": "جائزة:", "winnerSelection": "اختيار الفائز", "qualifiers": "تصفيات", + "qualifier": "المؤهل", "getReadyForContest": "استعد للمسابقة القادمة:", "winnerSelectedRandomly": "سيتم اختيار الفائز عشوائياً من بين التصفيات.", "fingersCrossed": "تشابك الاصابع!!!", @@ -1000,6 +1002,7 @@ class CodegenLoader extends AssetLoader { "sponsoredBy": "Sponsored By:", "question": "Question", "marathoners": "Marathoners", + "marathoner": "Marathoner", "prize": "Prize:", "advancedSearch": "Advanced Search", "openNot": "Open Notifications", @@ -1014,6 +1017,7 @@ class CodegenLoader extends AssetLoader { "none": "None", "winnerSelection": "Winner Selection", "qualifiers": "Qualifiers", + "qualifier": "Qualifier", "getReadyForContest": "Get Ready for the coming contest:", "winnerSelectedRandomly": "The winner will be selected randomly among the qualifiers.", "fingersCrossed": "Fingers Crossed!!!", diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 3d02540..1114c23 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -475,9 +475,11 @@ abstract class LocaleKeys { static const sponsoredBy = 'sponsoredBy'; static const question = 'question'; static const marathoners = 'marathoners'; + static const marathoner = 'marathoner'; static const prize = 'prize'; static const winnerSelection = 'winnerSelection'; static const qualifiers = 'qualifiers'; + static const qualifier = 'qualifier'; static const getReadyForContest = 'getReadyForContest'; static const winnerSelectedRandomly = 'winnerSelectedRandomly'; static const fingersCrossed = 'fingersCrossed'; diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 1b825e8..c1338eb 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -136,6 +136,8 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } + // 9c47d281-c5b5-4b5d-a90a-08dacb8cbdb6 + // MarathonI //****************TIMERS********** int sponsorsSecondsCounter = 0; @@ -208,8 +210,6 @@ class MarathonProvider extends ChangeNotifier { } if (totalCurrentQuestionTime == currentGapTime) { - totalCurrentQuestionTime--; - updateCardStatusToAnswer(); scheduleMicrotask(() async { @@ -222,20 +222,23 @@ class MarathonProvider extends ChangeNotifier { }); } }); - } - if (totalCurrentQuestionTime == 0) { - gapTimeImage = currentQuestion.gapImage; - gapTimeText = currentQuestion.gapText; - gapTimeType = currentQuestion.gapType; - updateCardData(); - if (currentQuestionNumber - 1 == marathonDetailModel.totalQuestions!) { + if (currentQuestionNumber == marathonDetailModel.totalQuestions!) { isGettingQualifiers = true; updateQuestionCardStatus(QuestionCardStatus.findingWinner); timer.cancel(); cancelTimer(); notifyListeners(); } + totalCurrentQuestionTime--; + } + + if (totalCurrentQuestionTime == 0) { + gapTimeImage = currentQuestion.gapImage; + gapTimeText = currentQuestion.gapText; + gapTimeType = currentQuestion.gapType; + updateCardData(); + return; } else { if (totalCurrentQuestionTime != currentGapTime) { diff --git a/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart index 2f5f727..8cc4f93 100644 --- a/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart +++ b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart @@ -10,6 +10,7 @@ import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_banner.dart'; class CountdownTimerForDetailScreen extends StatelessWidget { final int timeToMarathon; @@ -192,7 +193,8 @@ class CountdownTimerForDetailScreen extends StatelessWidget { @override Widget build(BuildContext context) { return CountdownTimer( - endTime: timeToMarathon, + endTime: dummyTime, + // endTime: timeToMarathon, onEnd: null, widgetBuilder: (BuildContext context, CurrentRemainingTime? time) { return buildCountdownTimer(time); diff --git a/lib/ui/marathon/widgets/marathon_progress_container.dart b/lib/ui/marathon/widgets/marathon_progress_container.dart index 29c9d8c..20763b6 100644 --- a/lib/ui/marathon/widgets/marathon_progress_container.dart +++ b/lib/ui/marathon/widgets/marathon_progress_container.dart @@ -31,7 +31,7 @@ class MarathonProgressContainer extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), child: "${provider.currentQuestionNumber.toString()} / ${provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}".toText12(color: MyColors.white), ), - "${provider.totalMarathoners} ${LocaleKeys.marathoners.tr()}".toText14(), + "${provider.totalMarathoners} ${provider.totalMarathoners == 1 ? LocaleKeys.marathoner.tr() : LocaleKeys.marathoners.tr()}".toText14(), provider.questionCardStatus == QuestionCardStatus.question ? "00:${(provider.totalCurrentQuestionTime - provider.currentGapTime) < 10 ? "0${provider.totalCurrentQuestionTime - provider.currentGapTime}" : provider.totalCurrentQuestionTime - provider.currentGapTime}" .toText18(color: provider.totalCurrentQuestionTime - provider.currentGapTime < 5 ? MyColors.redColor : MyColors.black) @@ -46,9 +46,7 @@ class MarathonProgressContainer extends StatelessWidget { children: [ "${provider.currentQuestionNumber == 1 ? 0 : (((provider.currentQuestionNumber - 1) / provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}" .toText14(), - provider.isUserOutOfGame - ? LocaleKeys.youAreOutOfContest.tr().toText14(color: MyColors.redColor) - : const SizedBox(), + provider.isUserOutOfGame ? LocaleKeys.youAreOutOfContest.tr().toText14(color: MyColors.redColor) : const SizedBox(), ], ), ], @@ -97,21 +95,28 @@ class MarathonProgressContainer extends StatelessWidget { Widget roundContainer(Color color, bool isNeedLeftBorder) { if (isNeedLeftBorder) { return Row( - children: [ - Divider(thickness: 6, color: color).expanded, + children: [ + Divider( + thickness: 6, + color: color, + ).expanded, Container( + margin: EdgeInsets.zero, + padding: EdgeInsets.zero, width: 10, height: 10, - decoration: BoxDecoration(shape: BoxShape.circle, color: color), + decoration: BoxDecoration(shape: BoxShape.circle, color: color, border: Border.all(color: color, width: 2)), ), ], ).expanded; } return Container( + margin: EdgeInsets.zero, + padding: EdgeInsets.zero, width: 10, height: 10, - decoration: BoxDecoration(shape: BoxShape.circle, color: color), + decoration: BoxDecoration(shape: BoxShape.circle, color: color, border: Border.all(color: color, width: 2)), ); } } diff --git a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart index ed5132e..e3c5d00 100644 --- a/lib/ui/marathon/widgets/marathon_qualifiers_container.dart +++ b/lib/ui/marathon/widgets/marathon_qualifiers_container.dart @@ -57,7 +57,7 @@ class _QualifiersContainerState extends State { children: [ widget.provider.totalQualifiers != null ? widget.provider.totalQualifiers.toString().toText30(color: MyColors.greenColor, isBold: true) : const SizedBox(), 2.width, - LocaleKeys.qualifiers.tr().toText16(color: MyColors.greenColor), + (widget.provider.totalQualifiers == 1 ? LocaleKeys.qualifier.tr() : LocaleKeys.qualifiers.tr()).toText16(color: MyColors.greenColor), ], ), ], From 3083a0e9da4bfa53bab3f290ad4804158a444f92 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 1 Jan 2023 15:50:53 +0300 Subject: [PATCH 284/302] improvement. --- lib/classes/consts.dart | 4 ++-- lib/ui/leave_balance/leave_balance_screen.dart | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 56b0008..6679cbb 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 881828e..9fb925c 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -72,7 +72,7 @@ class _LeaveBalanceState extends State { physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ - BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true, selectedEmp: employeeId), + BalancesDashboardWidget(LocaleKeys.currentLeaveBalance.tr(), true, selectedEmp: employeeId, showLoading: false), 12.height, ListView.separated( physics: const NeverScrollableScrollPhysics(), From 54961c875f1ac3234cbf1a38692e2f8fbdd6f66f Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Sun, 1 Jan 2023 16:02:39 +0300 Subject: [PATCH 285/302] Ios Stream Audio --- assets/langs/ar-SA.json | 3 +- assets/langs/en-US.json | 3 +- lib/generated/locale_keys.g.dart | 1 + lib/ui/chat/chat_bubble.dart | 65 ++++++++++++++----- lib/ui/chat/chat_detailed_screen.dart | 1 - lib/ui/chat/chat_home.dart | 2 +- .../search_employee_bottom_sheet.dart | 1 - 7 files changed, 55 insertions(+), 21 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index c7259fd..60b88a8 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -518,5 +518,6 @@ "winners": "الفائزين!!!", "noUpcoming": "لا يوجد قادم", "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية", - "noWinner": "حزين! لم يفز أحد اليوم." + "noWinner": "حزين! لم يفز أحد اليوم.", + "myTeam" : "فريقي" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index f1eac93..10cfbdf 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -518,5 +518,6 @@ "winners": "WINNERS!!!", "noUpcoming": "There is no upcoming", "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified.", - "noWinner": "Sad! No one won today." + "noWinner": "Sad! No one won today.", + "myTeam" : "My Team" } \ No newline at end of file diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 1114c23..035d458 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -505,5 +505,6 @@ abstract class LocaleKeys { static const noUpcoming = 'noUpcoming'; static const fakeLocation = 'fakeLocation'; static const noWinner = 'noWinner'; + static const myTeam = 'myTeam'; } diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 93fea00..ee28c95 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -61,11 +61,17 @@ class ChatBubble extends StatelessWidget { required SingleUserChatModel data, }) async { if (data.voice != null && data.voice!.existsSync()) { - await data.voiceController!.setFilePath(data!.voice!.path); await data.voiceController!.setLoopMode(LoopMode.off); - Duration? duration = await data.voiceController!.load(); - await data.voiceController!.seek(duration); - await data.voiceController!.play(); + if (Platform.isIOS) { + Duration? duration = await data.voiceController!.setAudioSource(MyCustomStream(data.voice!.readAsBytesSync())); + await data.voiceController!.seek(duration); + data.voiceController!.play(); + } else { + await data.voiceController!.setFilePath(data!.voice!.path); + Duration? duration = await data.voiceController!.load(); + await data.voiceController!.seek(duration); + await data.voiceController!.play(); + } } else { Utils.showLoading(context); Uint8List encodedString = await ChatApiClient().downloadURL(fileName: data.contant!, fileTypeDescription: provider.getFileTypeDescription(data.fileTypeResponse!.fileTypeName ?? "")); @@ -74,13 +80,19 @@ class ChatBubble extends StatelessWidget { File file = File(path!); await file.readAsBytes(); data.voice = file; - Duration? duration = await data.voiceController!.setFilePath(file.path); - await data.voiceController!.setLoopMode(LoopMode.off); - await data.voiceController!.seek(duration); - await data.voiceController!.setVolume(1.0); - await data.voiceController!.load(); - Utils.hideLoading(context); - await data.voiceController!.play(); + if (Platform.isIOS) { + Duration? duration = await data.voiceController!.setAudioSource(MyCustomStream(encodedString)); + await data.voiceController!.seek(duration); + data.voiceController!.play(); + } else { + Duration? duration = await data.voiceController!.setFilePath(file.path); + await data.voiceController!.setLoopMode(LoopMode.off); + await data.voiceController!.seek(duration); + await data.voiceController!.setVolume(1.0); + await data.voiceController!.load(); + Utils.hideLoading(context); + await data.voiceController!.play(); + } } catch (e) { Utils.hideLoading(context); Utils.showToast(e.toString()); @@ -114,7 +126,7 @@ class ChatBubble extends StatelessWidget { Widget currentUser(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ if (isReplied) ClipRRect( borderRadius: BorderRadius.circular(5.0), @@ -200,7 +212,7 @@ class ChatBubble extends StatelessWidget { ), ), ], - ).paddingOnly(top: 11, left: 13, right: 13, bottom: 5).objectContainerView(disablePadding: true).paddingOnly(left: MediaQuery.of(context).size.width * 0.3); + ).paddingOnly(top: 11, left: 13, right: 13, bottom: 5).objectContainerView(disablePadding: true, radius: 10).paddingOnly(left: MediaQuery.of(context).size.width * 0.3); } Widget receiptUser(BuildContext context) { @@ -340,6 +352,7 @@ class ChatBubble extends StatelessWidget { Widget currentWaveBubble(BuildContext context, SingleUserChatModel data) { return Container( margin: const EdgeInsets.all(0), + constraints: const BoxConstraints(), decoration: BoxDecoration( border: Border( left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), @@ -411,7 +424,7 @@ class ChatBubble extends StatelessWidget { child: const CircularProgressIndicator(), ); } else if (playing != true) { - return Icon( + return const Icon( Icons.play_arrow, size: 30, color: MyColors.lightGreenColor, @@ -419,7 +432,7 @@ class ChatBubble extends StatelessWidget { playVoice(context, data: modelData); }); } else if (processingState != ProcessingState.completed) { - return Icon( + return const Icon( Icons.pause, size: 30, color: MyColors.lightGreenColor, @@ -427,7 +440,7 @@ class ChatBubble extends StatelessWidget { pausePlaying(context, data: modelData); }); } else { - return Icon( + return const Icon( Icons.replay, size: 30, color: MyColors.lightGreenColor, @@ -439,3 +452,23 @@ class ChatBubble extends StatelessWidget { ); } } + +// Feed your own stream of bytes into the player +class MyCustomStream extends StreamAudioSource { + final Uint8List bytes; + + MyCustomStream(this.bytes); + + @override + Future request([int? start, int? end]) async { + start ??= 0; + end ??= bytes.length; + return StreamAudioResponse( + sourceLength: bytes.length, + contentLength: end - start, + offset: start, + stream: Stream.value(bytes.sublist(start, end)), + contentType: 'audio/aac', + ); + } +} diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index 595dc13..f597fe2 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -275,7 +275,6 @@ class _ChatDetailScreenState extends State { : null, ), onChanged: (String val) { - print(val.length); if (val.isNotEmpty) { m.isTextMsg = true; } else { diff --git a/lib/ui/chat/chat_home.dart b/lib/ui/chat/chat_home.dart index 49908dd..bbb3048 100644 --- a/lib/ui/chat/chat_home.dart +++ b/lib/ui/chat/chat_home.dart @@ -83,7 +83,7 @@ class _ChatHomeState extends State { children: [ myTab(LocaleKeys.mychats.tr(), 0), myTab(LocaleKeys.favorite.tr(), 1), - AppState().getempStatusIsManager ? myTab("My Team", 2) : const SizedBox(), + AppState().getempStatusIsManager ? myTab(LocaleKeys.myTeam.tr(), 2) : const SizedBox(), ], ), ), diff --git a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart index d06bfdc..b20674e 100644 --- a/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart +++ b/lib/widgets/bottom_sheets/search_employee_bottom_sheet.dart @@ -136,7 +136,6 @@ class _SearchEmployeeBottomSheetState extends State { @override void dispose() { - print("// TODO: implement dispose"); super.dispose(); provider.chatUsersList = []; provider.pageNo = 1; From 088fd6f318bec4c63a74125ab8a8a7ce6a6287cc Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Sun, 1 Jan 2023 17:03:31 +0300 Subject: [PATCH 286/302] Ios Fix --- lib/provider/chat_provider_model.dart | 24 ++++++++---- lib/ui/chat/chat_bubble.dart | 56 +++++++++++++++++---------- 2 files changed, 52 insertions(+), 28 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 0851392..d4e90a4 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1295,15 +1295,23 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { return numberStr; } - Future downChatVoice(Uint8List bytes, String ext, SingleUserChatModel data) async { - String dirPath = '${(await getApplicationDocumentsDirectory()).path}/chat_audios'; - if (!await Directory(dirPath).exists()) { - await Directory(dirPath).create(); - await File('$dirPath/.nomedia').create(); + Future downChatVoice(Uint8List bytes, String ext, SingleUserChatModel data) async { + File file; + try { + String dirPath = '${(await getApplicationDocumentsDirectory()).path}/chat_audios'; + if (!await Directory(dirPath).exists()) { + await Directory(dirPath).create(); + await File('$dirPath/.nomedia').create(); + } + file = File("$dirPath/${data.currentUserId}-${data.targetUserId}-${DateTime.now().microsecondsSinceEpoch}" + ext); + await file.writeAsBytes(bytes); + } catch (e) { + if (kDebugMode) { + print(e); + } + file = File(""); } - File file = File("$dirPath/${data.currentUserId}-${data.targetUserId}-${DateTime.now().microsecondsSinceEpoch}." + ext); - await file.writeAsBytes(bytes); - return file.path; + return file; } void scrollToMsg(SingleUserChatModel data) { diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index ee28c95..764ccea 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -56,47 +56,64 @@ class ChatBubble extends StatelessWidget { userName = AppState().chatDetails!.response!.userName == cItem.currentUserName.toString() ? "You" : cItem.currentUserName.toString(); } + Future getCurrentUrl(String url)async{ + if(Platform.isIOS){ + String a = url.substring(url.indexOf("Documents/") + 10, url.length) ; + Directory dir = await getApplicationDocumentsDirectory(); + a = "${dir.path}/$a"; + return a; + } + else{ + return url; + } + } + void playVoice( BuildContext context, { required SingleUserChatModel data, }) async { if (data.voice != null && data.voice!.existsSync()) { - await data.voiceController!.setLoopMode(LoopMode.off); if (Platform.isIOS) { Duration? duration = await data.voiceController!.setAudioSource(MyCustomStream(data.voice!.readAsBytesSync())); await data.voiceController!.seek(duration); + await data.voiceController!.setLoopMode(LoopMode.off); + await data.voiceController!.setVolume(1.0); + await data.voiceController!.load(); data.voiceController!.play(); } else { await data.voiceController!.setFilePath(data!.voice!.path); Duration? duration = await data.voiceController!.load(); await data.voiceController!.seek(duration); + await data.voiceController!.setLoopMode(LoopMode.off); await data.voiceController!.play(); } } else { Utils.showLoading(context); Uint8List encodedString = await ChatApiClient().downloadURL(fileName: data.contant!, fileTypeDescription: provider.getFileTypeDescription(data.fileTypeResponse!.fileTypeName ?? "")); - try { - String path = await provider.downChatVoice(encodedString, data.fileTypeResponse!.fileTypeName ?? "", data); - File file = File(path!); - await file.readAsBytes(); - data.voice = file; + // try { + File sFile = await provider.downChatVoice(encodedString, data.fileTypeResponse!.fileTypeName ?? "", data); + data.voice = sFile; if (Platform.isIOS) { - Duration? duration = await data.voiceController!.setAudioSource(MyCustomStream(encodedString)); + Duration? duration = await data.voiceController!.setAudioSource(MyCustomStream(data.voice!.readAsBytesSync())); await data.voiceController!.seek(duration); + await data.voiceController!.setLoopMode(LoopMode.off); + await data.voiceController!.setVolume(1.0); + await data.voiceController!.load(); + Utils.hideLoading(context); data.voiceController!.play(); } else { - Duration? duration = await data.voiceController!.setFilePath(file.path); + Duration? duration = await data.voiceController!.setFilePath(sFile.path); await data.voiceController!.setLoopMode(LoopMode.off); await data.voiceController!.seek(duration); - await data.voiceController!.setVolume(1.0); - await data.voiceController!.load(); + Utils.hideLoading(context); await data.voiceController!.play(); } - } catch (e) { - Utils.hideLoading(context); - Utils.showToast(e.toString()); - } + + // } catch (e) { + // Utils.hideLoading(context); + // Utils.showToast(e.toString()); + // } } } @@ -126,7 +143,7 @@ class ChatBubble extends StatelessWidget { Widget currentUser(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ if (isReplied) ClipRRect( borderRadius: BorderRadius.circular(5.0), @@ -212,7 +229,7 @@ class ChatBubble extends StatelessWidget { ), ), ], - ).paddingOnly(top: 11, left: 13, right: 13, bottom: 5).objectContainerView(disablePadding: true, radius: 10).paddingOnly(left: MediaQuery.of(context).size.width * 0.3); + ).paddingOnly(top: 11, left: 13, right: 13, bottom: 5).objectContainerView(disablePadding: true).paddingOnly(left: MediaQuery.of(context).size.width * 0.3); } Widget receiptUser(BuildContext context) { @@ -352,7 +369,6 @@ class ChatBubble extends StatelessWidget { Widget currentWaveBubble(BuildContext context, SingleUserChatModel data) { return Container( margin: const EdgeInsets.all(0), - constraints: const BoxConstraints(), decoration: BoxDecoration( border: Border( left: BorderSide(width: 6, color: isCurrentUser ? MyColors.gradiantStartColor : MyColors.white), @@ -424,7 +440,7 @@ class ChatBubble extends StatelessWidget { child: const CircularProgressIndicator(), ); } else if (playing != true) { - return const Icon( + return Icon( Icons.play_arrow, size: 30, color: MyColors.lightGreenColor, @@ -432,7 +448,7 @@ class ChatBubble extends StatelessWidget { playVoice(context, data: modelData); }); } else if (processingState != ProcessingState.completed) { - return const Icon( + return Icon( Icons.pause, size: 30, color: MyColors.lightGreenColor, @@ -440,7 +456,7 @@ class ChatBubble extends StatelessWidget { pausePlaying(context, data: modelData); }); } else { - return const Icon( + return Icon( Icons.replay, size: 30, color: MyColors.lightGreenColor, From 0d2052346e258fdeddc8d5e938362e0b74ea517a Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Sun, 1 Jan 2023 17:21:39 +0300 Subject: [PATCH 287/302] updates --- lib/provider/dashboard_provider_model.dart | 2 +- lib/ui/landing/dashboard_screen.dart | 2 +- lib/widgets/image_picker.dart | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index c851570..aa9a38f 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -244,7 +244,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void getCategoryOffersListAPI(BuildContext context) async { try { // Utils.showLoading(context); - getOffersList = await OffersAndDiscountsApiClient().getOffersList(0, 6); + getOffersList = await OffersAndDiscountsApiClient().getOffersList(0, 10); isOffersLoading = false; notifyListeners(); } catch (ex) { diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index c64cfa6..ba622b2 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -417,7 +417,7 @@ class _DashboardScreenState extends State { ); }, separatorBuilder: (BuildContext cxt, int index) => 8.width, - itemCount: 6), + itemCount: 9), ); }, ), diff --git a/lib/widgets/image_picker.dart b/lib/widgets/image_picker.dart index 75466fc..834695b 100644 --- a/lib/widgets/image_picker.dart +++ b/lib/widgets/image_picker.dart @@ -20,7 +20,7 @@ class ImageOptions { if (Platform.isAndroid) { cameraImageAndroid(image); } else { - File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.camera, imageQuality: 10))?.path ?? ""); + File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.camera, imageQuality: 20))?.path ?? ""); String fileName = _image.path; var bytes = File(fileName).readAsBytesSync(); String base64Encode = base64.encode(bytes); @@ -33,7 +33,7 @@ class ImageOptions { if (Platform.isAndroid) { galleryImageAndroid(image); } else { - File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.gallery, imageQuality: 10))?.path ?? ""); + File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.gallery, imageQuality: 20))?.path ?? ""); String fileName = _image.path; var bytes = File(fileName).readAsBytesSync(); String base64Encode = base64.encode(bytes); @@ -114,7 +114,7 @@ class ImageOptions { } void galleryImageAndroid(Function(String, File) image) async { - File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.gallery, imageQuality: 10))?.path ?? ""); + File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.gallery, imageQuality: 20))?.path ?? ""); String fileName = _image.path; var bytes = File(fileName).readAsBytesSync(); String base64Encode = base64.encode(bytes); @@ -124,7 +124,7 @@ void galleryImageAndroid(Function(String, File) image) async { } void cameraImageAndroid(Function(String, File) image) async { - File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.camera, imageQuality: 10))?.path ?? ""); + File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.camera, imageQuality: 20))?.path ?? ""); String fileName = _image.path; var bytes = File(fileName).readAsBytesSync(); String base64Encode = base64.encode(bytes); From 16ea3b7c663d964d29870742a014959a1c15b4f4 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 2 Jan 2023 10:46:28 +0300 Subject: [PATCH 288/302] Ios Fix --- lib/provider/chat_provider_model.dart | 8 -------- lib/ui/chat/chat_bubble.dart | 9 ++++++++- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index d4e90a4..a88a08c 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -119,16 +119,8 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void getUserRecentChats() async { - if (chatHubConnection.state != HubConnectionState.Connected) { - getUserAutoLoginToken().whenComplete(() async { - await buildHubConnection(); - getUserRecentChats(); - }); - return; - } ChatUserModel recentChat = await ChatApiClient().getRecentChats(); ChatUserModel favUList = await ChatApiClient().getFavUsers(); - if (favUList.response != null && recentChat.response != null) { favUsersList = favUList.response!; favUsersList.sort( diff --git a/lib/ui/chat/chat_bubble.dart b/lib/ui/chat/chat_bubble.dart index 764ccea..6d1e2eb 100644 --- a/lib/ui/chat/chat_bubble.dart +++ b/lib/ui/chat/chat_bubble.dart @@ -12,6 +12,7 @@ import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/models/chat/get_single_user_chat_list_model.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/ui/chat/chat_full_image_preview.dart'; @@ -92,13 +93,19 @@ class ChatBubble extends StatelessWidget { Uint8List encodedString = await ChatApiClient().downloadURL(fileName: data.contant!, fileTypeDescription: provider.getFileTypeDescription(data.fileTypeResponse!.fileTypeName ?? "")); // try { File sFile = await provider.downChatVoice(encodedString, data.fileTypeResponse!.fileTypeName ?? "", data); + if(sFile.path.isEmpty){ + logger.d("Path Is Emptyyyyyyy"); + }else{ + logger.d("Path Exsists"); + } data.voice = sFile; if (Platform.isIOS) { + logger.d("isIOS"); Duration? duration = await data.voiceController!.setAudioSource(MyCustomStream(data.voice!.readAsBytesSync())); await data.voiceController!.seek(duration); await data.voiceController!.setLoopMode(LoopMode.off); await data.voiceController!.setVolume(1.0); - await data.voiceController!.load(); + await data.voiceController!.load(); Utils.hideLoading(context); data.voiceController!.play(); } else { From 5592989b44f4537e837306dad5b02418b0ff2e75 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 2 Jan 2023 11:25:34 +0300 Subject: [PATCH 289/302] Added Demo Marathon Module --- assets/json/demo_questions_marathon | 522 ++++++++++++++++++ assets/json/demo_upcoming_marathon | 46 ++ assets/langs/ar-SA.json | 4 +- assets/langs/en-US.json | 4 +- lib/api/marathon/demo_marathon_repo.dart | 27 + lib/api/marathon/marathon_api_client.dart | 3 +- lib/app_state/app_state.dart | 6 + lib/classes/consts.dart | 4 +- lib/generated/codegen_loader.g.dart | 11 +- lib/generated/locale_keys.g.dart | 2 + lib/ui/landing/dashboard_screen.dart | 6 +- lib/ui/marathon/marathon_intro_screen.dart | 14 +- lib/ui/marathon/marathon_provider.dart | 77 ++- lib/ui/marathon/marathon_screen.dart | 239 +++++--- .../countdown_timer_detail_screen.dart | 13 +- lib/ui/marathon/widgets/marathon_banner.dart | 22 +- .../widgets/marathon_details_card.dart | 110 ++-- lib/ui/marathon/widgets/marathon_footer.dart | 14 +- .../widgets/marathon_progress_container.dart | 41 +- pubspec.yaml | 1 + 20 files changed, 980 insertions(+), 186 deletions(-) create mode 100644 assets/json/demo_questions_marathon create mode 100644 assets/json/demo_upcoming_marathon create mode 100644 lib/api/marathon/demo_marathon_repo.dart diff --git a/assets/json/demo_questions_marathon b/assets/json/demo_questions_marathon new file mode 100644 index 0000000..7ec04fd --- /dev/null +++ b/assets/json/demo_questions_marathon @@ -0,0 +1,522 @@ +[ + { + "id": "b8f10b10-221c-495d-b99b-6a8094892549", + "titleEn": "How many time Uruguay won FIFA World Cups?", + "titleAr": "How many time Uruguay won FIFA World Cups?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/51b598b6-c837-45be-8734-1374978bd426_congratulations-gif.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 1, + "questionOptions": [ + { + "id": "772e6062-543c-4ddc-e516-08dae8b36b35", + "titleEn": "1", + "titleAr": "1", + "questionId": "b8f10b10-221c-495d-b99b-6a8094892549", + "sequence": 1, + "image": "null", + "isCorrectOption": false + }, + { + "id": "ea3c673e-78c7-41dd-e517-08dae8b36b35", + "titleEn": "2", + "titleAr": "2", + "questionId": "b8f10b10-221c-495d-b99b-6a8094892549", + "sequence": 2, + "image": "null", + "isCorrectOption": true + }, + { + "id": "7adbdfec-ef77-417e-e518-08dae8b36b35", + "titleEn": "3", + "titleAr": "3", + "questionId": "b8f10b10-221c-495d-b99b-6a8094892549", + "sequence": 3, + "image": "null", + "isCorrectOption": false + }, + { + "id": "895eab85-e321-4d3e-e519-08dae8b36b35", + "titleEn": "4", + "titleAr": "4", + "questionId": "b8f10b10-221c-495d-b99b-6a8094892549", + "sequence": 4, + "image": "null", + "isCorrectOption": false + } + ] + }, + { + "id": "0d60d55f-4067-48f9-9ace-b6309c6a7cf0", + "titleEn": "Who is the current FIFA World Cup Winner?", + "titleAr": "Who is the current FIFA World Cup Winner?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/24dddc50-7583-48b4-9fec-8a490d246191_great-thumbs.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 0, + "questionOptions": [ + { + "id": "dd0ba127-26ed-4308-e50e-08dae8b36b35", + "titleEn": "Brazil", + "titleAr": "Brazil", + "questionId": "0d60d55f-4067-48f9-9ace-b6309c6a7cf0", + "sequence": 1, + "image": "null", + "isCorrectOption": false + }, + { + "id": "4748df31-95f0-4fee-e50f-08dae8b36b35", + "titleEn": "Argentina", + "titleAr": "Argentina", + "questionId": "0d60d55f-4067-48f9-9ace-b6309c6a7cf0", + "sequence": 2, + "image": "null", + "isCorrectOption": true + }, + { + "id": "4079d32a-891b-4e83-e510-08dae8b36b35", + "titleEn": "Germany", + "titleAr": "Germany", + "questionId": "0d60d55f-4067-48f9-9ace-b6309c6a7cf0", + "sequence": 3, + "image": "null", + "isCorrectOption": false + }, + { + "id": "1c17cfcd-9f19-4020-e511-08dae8b36b35", + "titleEn": "France", + "titleAr": "France", + "questionId": "0d60d55f-4067-48f9-9ace-b6309c6a7cf0", + "sequence": 4, + "image": "null", + "isCorrectOption": false + } + ] + }, + { + "id": "489659b0-0400-4b64-8ce2-e6fe48db61db", + "titleEn": "How many times England won FIFA World Cups?", + "titleAr": "How many times England won FIFA World Cups?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/a9ffa364-231c-4877-824f-84febac51086_thumbs-up-simon-cowell.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 0, + "questionOptions": [ + { + "id": "7f63cd45-ce2c-417f-e502-08dae8b36b35", + "titleEn": "1", + "titleAr": "1", + "questionId": "489659b0-0400-4b64-8ce2-e6fe48db61db", + "sequence": 1, + "image": "null", + "isCorrectOption": true + }, + { + "id": "34690bfa-0ffd-453f-e503-08dae8b36b35", + "titleEn": "2", + "titleAr": "2", + "questionId": "489659b0-0400-4b64-8ce2-e6fe48db61db", + "sequence": 2, + "image": "null", + "isCorrectOption": false + }, + { + "id": "4526efdd-ff6f-4340-e504-08dae8b36b35", + "titleEn": "3", + "titleAr": "3", + "questionId": "489659b0-0400-4b64-8ce2-e6fe48db61db", + "sequence": 3, + "image": "null", + "isCorrectOption": false + }, + { + "id": "65d06188-fa63-49fd-e505-08dae8b36b35", + "titleEn": "4", + "titleAr": "4", + "questionId": "489659b0-0400-4b64-8ce2-e6fe48db61db", + "sequence": 4, + "image": "null", + "isCorrectOption": false + } + ] + }, + { + "id": "253fc396-dab9-41ca-82bd-511f98c5dee8", + "titleEn": "How many time Germany won FIFA World Cups?", + "titleAr": "How many time Germany won FIFA World Cups?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/012d6493-3612-42c9-8f6f-84417d4736d4_good-job-well-done.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 0, + "questionOptions": [ + { + "id": "dce4999c-5629-45f4-e4f6-08dae8b36b35", + "titleEn": "1", + "titleAr": "null", + "questionId": 1, + "sequence": 1, + "image": "null", + "isCorrectOption": false + }, + { + "id": "00913ba1-5ccc-4d7c-e4f7-08dae8b36b35", + "titleEn": "2", + "titleAr": "2", + "questionId": "253fc396-dab9-41ca-82bd-511f98c5dee8", + "sequence": 2, + "image": "null", + "isCorrectOption": false + }, + { + "id": "9e5f5e89-608e-4fc9-e4f8-08dae8b36b35", + "titleEn": "3", + "titleAr": "3", + "questionId": "253fc396-dab9-41ca-82bd-511f98c5dee8", + "sequence": 3, + "image": "null", + "isCorrectOption": false + }, + { + "id": "a535cacf-ee4d-4895-e4f9-08dae8b36b35", + "titleEn": "4", + "titleAr": "4", + "questionId": "253fc396-dab9-41ca-82bd-511f98c5dee8", + "sequence": 4, + "image": "null", + "isCorrectOption": true + } + ] + }, + { + "id": "669c4fe2-a3e6-4e29-8c56-ae09efa9ba6c", + "titleEn": "How many times Portugal won FIFA World Cups?", + "titleAr": "How many times Portugal won FIFA World Cups?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/ca3f32a1-ed9f-45df-b2fb-3d1df78d5651_congrats-14.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 0, + "questionOptions": [ + { + "id": "597c308e-3f09-4a05-e506-08dae8b36b35", + "titleEn": "0", + "titleAr": "0", + "questionId": "669c4fe2-a3e6-4e29-8c56-ae09efa9ba6c", + "sequence": 1, + "image": "null", + "isCorrectOption": true + }, + { + "id": "2face927-7c8e-4945-e507-08dae8b36b35", + "titleEn": "1", + "titleAr": "1", + "questionId": "669c4fe2-a3e6-4e29-8c56-ae09efa9ba6c", + "sequence": 2, + "image": "null", + "isCorrectOption": false + }, + { + "id": "bde21640-798e-4750-e508-08dae8b36b35", + "titleEn": "2", + "titleAr": "2", + "questionId": "669c4fe2-a3e6-4e29-8c56-ae09efa9ba6c", + "sequence": 3, + "image": "null", + "isCorrectOption": false + }, + { + "id": "9312acac-f0c3-4ed4-e509-08dae8b36b35", + "titleEn": "3", + "titleAr": "3", + "questionId": "669c4fe2-a3e6-4e29-8c56-ae09efa9ba6c", + "sequence": 4, + "image": "null", + "isCorrectOption": false + } + ] + }, + { + "id": "f91774ce-14f0-4af0-9a77-e649bc013b44", + "titleEn": "How many times Spain won FIFA World Cups?", + "titleAr": "How many times Spain won FIFA World Cups?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/6484c5bc-09fd-4586-8036-67868afbe27b_good-job-well-done.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 0, + "questionOptions": [ + { + "id": "2f968964-ce91-4478-e512-08dae8b36b35", + "titleEn": "1", + "titleAr": "1", + "questionId": "f91774ce-14f0-4af0-9a77-e649bc013b44", + "sequence": 1, + "image": "null", + "isCorrectOption": true + }, + { + "id": "4fed9355-2c9f-458d-e513-08dae8b36b35", + "titleEn": "2", + "titleAr": "2", + "questionId": "f91774ce-14f0-4af0-9a77-e649bc013b44", + "sequence": 2, + "image": "null", + "isCorrectOption": false + }, + { + "id": "8f232a43-3792-4cd0-e514-08dae8b36b35", + "titleEn": "3", + "titleAr": "3", + "questionId": "f91774ce-14f0-4af0-9a77-e649bc013b44", + "sequence": 3, + "image": "null", + "isCorrectOption": false + }, + { + "id": "24478e43-bf4c-4852-e515-08dae8b36b35", + "titleEn": "4", + "titleAr": "4", + "questionId": "f91774ce-14f0-4af0-9a77-e649bc013b44", + "sequence": 4, + "image": "null", + "isCorrectOption": false + } + ] + }, + { + "id": "fd3a90e6-5b35-4035-bc1c-4483facaf6d3", + "titleEn": "How many times France won FIFA World Cups?", + "titleAr": "How many times France won FIFA World Cups?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/24dddc50-7583-48b4-9fec-8a490d246191_great-thumbs.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 0, + "questionOptions": [ + { + "id": "9d0743e0-9f3f-48d0-e4fa-08dae8b36b35", + "titleEn": "1", + "titleAr": "1", + "questionId": "fd3a90e6-5b35-4035-bc1c-4483facaf6d3", + "sequence": 1, + "image": "null", + "isCorrectOption": false + }, + { + "id": "a81eda99-d9ad-49e0-e4fb-08dae8b36b35", + "titleEn": "2", + "titleAr": "2", + "questionId": "fd3a90e6-5b35-4035-bc1c-4483facaf6d3", + "sequence": 2, + "image": "null", + "isCorrectOption": true + }, + { + "id": "7ca78891-890d-4023-e4fc-08dae8b36b35", + "titleEn": "3", + "titleAr": "3", + "questionId": "fd3a90e6-5b35-4035-bc1c-4483facaf6d3", + "sequence": 3, + "image": "null", + "isCorrectOption": false + }, + { + "id": "d1a98bd9-8afa-49c1-e4fd-08dae8b36b35", + "titleEn": "4", + "titleAr": "4", + "questionId": "fd3a90e6-5b35-4035-bc1c-4483facaf6d3", + "sequence": 4, + "image": "null", + "isCorrectOption": false + } + ] + }, + { + "id": "3a35855d-3ed7-4d45-8864-9135d71378de", + "titleEn": "How many time Argentina won FIFA World Cups?", + "titleAr": "How many time Argentina won FIFA World Cups?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/24dddc50-7583-48b4-9fec-8a490d246191_great-thumbs.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 0, + "questionOptions": [ + { + "id": "f0766816-837f-47e6-e51a-08dae8b36b35", + "titleEn": "1", + "titleAr": "1", + "questionId": "3a35855d-3ed7-4d45-8864-9135d71378de", + "sequence": 1, + "image": "null", + "isCorrectOption": false + }, + { + "id": "dc9c68de-afa4-4b63-e51b-08dae8b36b35", + "titleEn": "2", + "titleAr": "2", + "questionId": "3a35855d-3ed7-4d45-8864-9135d71378de", + "sequence": 2, + "image": "null", + "isCorrectOption": false + }, + { + "id": "52f2d024-8a29-4781-e51c-08dae8b36b35", + "titleEn": "3", + "titleAr": "3", + "questionId": "3a35855d-3ed7-4d45-8864-9135d71378de", + "sequence": 3, + "image": "null", + "isCorrectOption": true + }, + { + "id": "122636e4-5e98-499e-e51d-08dae8b36b35", + "titleEn": "4", + "titleAr": "4", + "questionId": "3a35855d-3ed7-4d45-8864-9135d71378de", + "sequence": 4, + "image": "null", + "isCorrectOption": false + } + ] + }, + { + "id": "6c9d809d-683b-4d77-b98e-62a0d083488a", + "titleEn": "How many times Brazil won FIFA World Cups?", + "titleAr": "How many times Brazil won FIFA World Cups?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/a9ffa364-231c-4877-824f-84febac51086_thumbs-up-simon-cowell.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 0, + "questionOptions": [ + { + "id": "4e94437a-b10d-46c6-e4fe-08dae8b36b35", + "titleEn": "2", + "titleAr": "2", + "questionId": "6c9d809d-683b-4d77-b98e-62a0d083488a", + "sequence": 1, + "image": "null", + "isCorrectOption": false + }, + { + "id": "6e0e8baa-c13e-45f1-e4ff-08dae8b36b35", + "titleEn": "3", + "titleAr": "3", + "questionId": "6c9d809d-683b-4d77-b98e-62a0d083488a", + "sequence": 2, + "image": "null", + "isCorrectOption": false + }, + { + "id": "3065d26a-9aa4-4626-e500-08dae8b36b35", + "titleEn": "4", + "titleAr": "4", + "questionId": "6c9d809d-683b-4d77-b98e-62a0d083488a", + "sequence": 3, + "image": "null", + "isCorrectOption": false + }, + { + "id": "6cc3ff60-02cc-4e59-e501-08dae8b36b35", + "titleEn": "5", + "titleAr": "5", + "questionId": "6c9d809d-683b-4d77-b98e-62a0d083488a", + "sequence": 4, + "image": "null", + "isCorrectOption": true + } + ] + }, + { + "id": "e8c8442e-f370-444d-bee9-f7f75d146e5c", + "titleEn": "How many times Italy won FIFA World Cups?", + "titleAr": "How many times Italy won FIFA World Cups?", + "marathonId": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "questionTypeId": 1, + "questionTime": 10, + "nextQuestGap": 5, + "gapType": 0, + "gapText": null, + "gapImage": "Questions/34f3c402-1244-4320-98c2-751cb2a347c5_congrats-1.gif", + "questOptionsLimit": 0, + "remainingParticipantCount": 0, + "questionOptions": [ + { + "id": "53d456b7-8f56-4c58-e50a-08dae8b36b35", + "titleEn": "1", + "titleAr": "1", + "questionId": "e8c8442e-f370-444d-bee9-f7f75d146e5c", + "sequence": 1, + "image": "null", + "isCorrectOption": false + }, + { + "id": "280df6d7-ca61-4d78-e50b-08dae8b36b35", + "titleEn": "2", + "titleAr": "2", + "questionId": "e8c8442e-f370-444d-bee9-f7f75d146e5c", + "sequence": 2, + "image": "null", + "isCorrectOption": false + }, + { + "id": "769939dc-4a46-4f4f-e50c-08dae8b36b35", + "titleEn": "3", + "titleAr": "3", + "questionId": "e8c8442e-f370-444d-bee9-f7f75d146e5c", + "sequence": 3, + "image": "null", + "isCorrectOption": false + }, + { + "id": "c389fae7-0019-4922-e50d-08dae8b36b35", + "titleEn": "4", + "titleAr": "4", + "questionId": "e8c8442e-f370-444d-bee9-f7f75d146e5c", + "sequence": 4, + "image": "null", + "isCorrectOption": true + } + ] + } +] \ No newline at end of file diff --git a/assets/json/demo_upcoming_marathon b/assets/json/demo_upcoming_marathon new file mode 100644 index 0000000..2fdabf0 --- /dev/null +++ b/assets/json/demo_upcoming_marathon @@ -0,0 +1,46 @@ +{ + "id": "979813be-eafa-4d3e-d27e-08dae8a08a3b", + "titleEn": "FIFA World Cup", + "titleAr": "undefined", + "descEn": "FIFA World Cup Description", + "descAr": "undefined", + "questionTime": 10, + "winDeciderTime": 30, + "winnersCount": 1, + "questGapTime": 5, + "startTime": "2022-12-28T10:44:41", + "endTime": null, + "marathoneStatusId": 4, + "scheduleTime": "2022-12-28T10:14:41", + "selectedLanguage": 0, + "projects": { + "id": "b1cd3fa3-bb27-422e-a4c1-08dac09254df", + "nameEn": "Cloud Solutions", + "nameAr": "333شركة حلول السحابة للاتصالات وتقنية المعلومات", + "projectCode": "CS" + }, + "sponsors": [ + { + "id": "3272b127-b388-4f09-425b-08dac2eb788e", + "nameEn": "Cloud Solutions", + "nameAr": "حل السحابة", + "image": "SponsorImage/b9aed4a8-42b2-45fc-b6f1-47ee0c7b4138_sponsor.jpeg", + "video": "SponsorVideo/9ab678ab-1b4c-4ea4-aaf2-32ce1353d3fe_sample-10s.mp4", + "logo": "SponsorLogo/eb029f0d-bce1-4a61-b0c0-abaa484912a0_sponsor.jpeg", + "videoDuration": null, + "sponsorPrizes": [ + { + "id": "e657a18c-6fb2-4099-07c8-08dae89efcd3", + "marathonPrizeEn": "SAR 500", + "marathonPrizeAr": "SAR 500" + } + ] + } + ], + "questions": null, + "isEmailSent": false, + "totalQuestions": 10, + "cancelReason": null, + "marathonBufferTime": 30, + "currentTime": "2022-12-28T08:03:24.3671803Z" +} diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index c7259fd..1cf1205 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -480,6 +480,7 @@ "gameTime": "وقت اللعب:", "joinMarathon": "انضم إلى ماراثون", "joinDemoMarathon": "انضم إلى الماراثون التجريبي", + "demo":"تجريبي", "minutes": "الدقائق", "seconds": "ثواني", "note": "ملحوظة:", @@ -518,5 +519,6 @@ "winners": "الفائزين!!!", "noUpcoming": "لا يوجد قادم", "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية", - "noWinner": "حزين! لم يفز أحد اليوم." + "noWinner": "حزين! لم يفز أحد اليوم.", + "youCanPlayDemo": "لكن يمكنك لعب العرض" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index f1eac93..61aba9b 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -469,6 +469,7 @@ "gameTime": "Game Time:", "joinMarathon": "Join Marathon", "joinDemoMarathon": "Join Demo Marathon", + "demo":"Demo", "minutes": "Minutes", "seconds": "Seconds", "note": "Note:", @@ -518,5 +519,6 @@ "winners": "WINNERS!!!", "noUpcoming": "There is no upcoming", "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified.", - "noWinner": "Sad! No one won today." + "noWinner": "Sad! No one won today.", + "youCanPlayDemo": "But you can play demo" } \ No newline at end of file diff --git a/lib/api/marathon/demo_marathon_repo.dart b/lib/api/marathon/demo_marathon_repo.dart new file mode 100644 index 0000000..b019e51 --- /dev/null +++ b/lib/api/marathon/demo_marathon_repo.dart @@ -0,0 +1,27 @@ +import 'dart:convert'; + +import 'package:flutter/services.dart'; +import 'package:logger/logger.dart' as L; +import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; +import 'package:mohem_flutter_app/models/marathon/question_model.dart'; + +class DemoMarathonRepo { + L.Logger logger = L.Logger(); + + Future getDemoMarathonDetails() async { + String response = await rootBundle.loadString('assets/json/demo_upcoming_marathon'); + var json = jsonDecode(response); + logger.i("json in getDemoMarathonDetails: $json"); + MarathonDetailModel marathonDetailModel = MarathonDetailModel.fromJson(json); + return marathonDetailModel; + } + + Future getDemoNextQuestion({required int currentQuestionNumber}) async { + String response = await rootBundle.loadString('assets/json/demo_questions_marathon'); + List json = jsonDecode(response); + logger.i("json in getDemoNextQuestion: $json"); + QuestionModel currentQuestion = QuestionModel.fromJson(json.elementAt(currentQuestionNumber)); + + return currentQuestion; + } +} diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 5b1dfc8..ee3810f 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -14,10 +14,8 @@ import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/models/marathon/winner_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:provider/provider.dart'; -import 'package:signalr_netcore/hub_connection.dart'; class MarathonApiClient { - late HubConnection hubConnection; L.Logger logger = L.Logger(); Future getMarathonToken() async { @@ -184,6 +182,7 @@ class MarathonApiClient { return null; } +// late HubConnection hubConnection; // Future buildHubConnection(BuildContext context, String prizeId) async { // HttpConnectionOptions httpOptions = HttpConnectionOptions(skipNegotiation: false, logMessageContent: true); // hubConnection = HubConnectionBuilder() diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index f6f5ae9..e43c774 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -64,6 +64,12 @@ class AppState { String? get getMarathonProjectId => _projectID; + bool _isDemoMarathon = false; + + set setIsDemoMarathon(bool value) => _isDemoMarathon = value; + + bool get getIsDemoMarathon => _isDemoMarathon; + final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 3.8, mobileType: Platform.isAndroid ? "android" : "ios"); void setPostParamsInitConfig() { diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 56b0008..56ddde6 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 27bae71..c33ec06 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -489,6 +489,7 @@ class CodegenLoader extends AssetLoader { "gameTime": "وقت اللعب:", "joinMarathon": "انضم إلى ماراثون", "joinDemoMarathon": "انضم إلى الماراثون التجريبي", + "demo":"تجريبي", "minutes": "الدقائق", "seconds": "ثواني", "note": "ملحوظة:", @@ -527,7 +528,8 @@ class CodegenLoader extends AssetLoader { "winners": "الفائزين!!!", "noUpcoming": "لا يوجد قادم", "fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية", - "noWinner": "حزين! لم يفز أحد اليوم." + "noWinner": "حزين! لم يفز أحد اليوم.", + "youCanPlayDemo": "لكن يمكنك لعب العرض" }; static const Map en_US = { "mohemm": "Mohemm", @@ -993,10 +995,11 @@ class CodegenLoader extends AssetLoader { "gameTime": "Game Time:", "joinMarathon": "Join Marathon", "joinDemoMarathon": "Join Demo Marathon", + "demo":"Demo", "minutes": "Minutes", "seconds": "Seconds", "note": "Note:", - "demoMarathonNoteP1": "You can play the demo Marathon to learn how it works. You can join the Marathon", + "demoMarathonNoteP1": "You can play the demo_questions_marathon.json Marathon to learn how it works. You can join the Marathon", "demoMarathonNoteP2": "5 Minutes", "demoMarathonNoteP3": "before the actual time.", "sponsoredBy": "Sponsored By:", @@ -1042,7 +1045,9 @@ class CodegenLoader extends AssetLoader { "winners": "WINNERS!!!", "noUpcoming": "There is no upcoming", "fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified.", - "noWinner": "Sad! No one won today." + "noWinner": "Sad! No one won today.", + "youCanPlayDemo": "But you can play demo" + }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 1114c23..e4a3bca 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -466,6 +466,7 @@ abstract class LocaleKeys { static const gameTime = 'gameTime'; static const joinMarathon = 'joinMarathon'; static const joinDemoMarathon = 'joinDemoMarathon'; + static const demo = 'demo'; static const minutes = 'minutes'; static const seconds = 'seconds'; static const note = 'note'; @@ -505,5 +506,6 @@ abstract class LocaleKeys { static const noUpcoming = 'noUpcoming'; static const fakeLocation = 'fakeLocation'; static const noWinner = 'noWinner'; + static const youCanPlayDemo = 'youCanPlayDemo'; } diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index c64cfa6..6c782fc 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -32,8 +32,6 @@ import 'package:signalr_netcore/signalr_client.dart'; late HubConnection chatHubConnection; - - class DashboardScreen extends StatefulWidget { DashboardScreen({Key? key}) : super(key: key); @@ -435,9 +433,7 @@ class _DashboardScreenState extends State { mainAxisSize: MainAxisSize.min, children: [ ServicesWidget(), - context.watch().isLoading - ? const MarathonBannerShimmer().paddingAll(20) - : MarathonBanner(isMarathonUpcoming: context.watch().isUpComingMarathon).paddingOnly(left: 21, right: 21, bottom: 21, top: 8), + context.watch().isLoading ? const MarathonBannerShimmer().paddingAll(20) : const MarathonBanner().paddingOnly(left: 21, right: 21, bottom: 21, top: 8), ], ), ), diff --git a/lib/ui/marathon/marathon_intro_screen.dart b/lib/ui/marathon/marathon_intro_screen.dart index f47b47e..9d4f81d 100644 --- a/lib/ui/marathon/marathon_intro_screen.dart +++ b/lib/ui/marathon/marathon_intro_screen.dart @@ -23,12 +23,14 @@ class MarathonIntroScreen extends StatelessWidget { ListView( padding: const EdgeInsets.all(21), children: [ - MarathonDetailsCard(provider: provider), - 10.height, - MarathonTimerCard( - provider: provider, - timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, - ), + MarathonDetailsCard(marathonDetailModel: provider.isUpComingMarathon ? provider.marathonDetailModel : provider.demoMarathonDetailModel), + 20.height, + provider.isUpComingMarathon + ? MarathonTimerCard( + provider: provider, + timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, + ) + : const SizedBox(), ], ).expanded, 1.divider, diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index c1338eb..9781475 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/api/marathon/demo_marathon_repo.dart'; import 'package:mohem_flutter_app/api/marathon/marathon_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; @@ -16,11 +17,12 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; import 'package:video_player/video_player.dart'; class MarathonProvider extends ChangeNotifier { - //****************VARIABLES********** + //************************************************ VARIABLES ********************************************************** final AppinioSwiperController swiperController = AppinioSwiperController(); MarathonDetailModel marathonDetailModel = MarathonDetailModel(); + MarathonDetailModel demoMarathonDetailModel = MarathonDetailModel(); List cardContentList = []; QuestionModel currentQuestion = QuestionModel(); List answerStatusesList = []; @@ -53,6 +55,7 @@ class MarathonProvider extends ChangeNotifier { set isUpComingMarathon(bool value) { _isUpComingMarathon = value; + notifyListeners(); } @@ -65,6 +68,15 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } + bool _canPlayDemo = true; + + bool get canPlayDemo => _canPlayDemo; + + set canPlayDemo(bool value) { + _canPlayDemo = value; + notifyListeners(); + } + bool _isButtonEnabled = false; bool get isButtonEnabled => _isButtonEnabled; @@ -138,7 +150,7 @@ class MarathonProvider extends ChangeNotifier { // 9c47d281-c5b5-4b5d-a90a-08dacb8cbdb6 // MarathonI - //****************TIMERS********** + //************************************************ TIMERS ********************************************************** int sponsorsSecondsCounter = 0; int totalSponsorVideoSeconds = 0; @@ -213,7 +225,7 @@ class MarathonProvider extends ChangeNotifier { updateCardStatusToAnswer(); scheduleMicrotask(() async { - if (isUserOutOfGame) { + if (AppState().getIsDemoMarathon || isUserOutOfGame) { await callNextQuestionApi(); } else { await callSubmitOptionApi().then((bool value) async { @@ -223,7 +235,7 @@ class MarathonProvider extends ChangeNotifier { } }); - if (currentQuestionNumber == marathonDetailModel.totalQuestions!) { + if (currentQuestionNumber == (AppState().getIsDemoMarathon ? demoMarathonDetailModel.totalQuestions! : marathonDetailModel.totalQuestions!)) { isGettingQualifiers = true; updateQuestionCardStatus(QuestionCardStatus.findingWinner); timer.cancel(); @@ -275,19 +287,26 @@ class MarathonProvider extends ChangeNotifier { ); } - //****************FUNCTIONS********* + //************************************************ FUNCTIONS ********************************************************** Future callSubmitOptionApi() async { return await MarathonApiClient().submitSelectedOption(marathonId: marathonDetailModel.id!, questionId: currentQuestion.id, selectedAnswerId: selectedOptionId); } Future callGetQualifiersApi() async { - totalQualifiers = await MarathonApiClient().getQualifiers(marathonId: marathonDetailModel.id!); + if (AppState().getIsDemoMarathon) { + totalQualifiers = isUserOutOfGame ? 0 : 1; + } else { + totalQualifiers = await MarathonApiClient().getQualifiers(marathonId: marathonDetailModel.id!); + } isGettingQualifiers = false; notifyListeners(); } Future callGetSelectedWinnersApi() async { + if (AppState().getIsDemoMarathon) { + return; + } selectedWinners = await MarathonApiClient().getSelectedWinner(marathonId: marathonDetailModel.id!); if (selectedWinners != null) { selectedWinners!.removeWhere((WinnerModel element) { @@ -304,10 +323,14 @@ class MarathonProvider extends ChangeNotifier { } Future callNextQuestionApi() async { - if (currentQuestionNumber < marathonDetailModel.totalQuestions!) { + if (currentQuestionNumber < (AppState().getIsDemoMarathon ? demoMarathonDetailModel.totalQuestions! : marathonDetailModel.totalQuestions!)) { if (currentQuestionNumber == 0) { - Utils.showLoading(AppRoutes.navigatorKey.currentContext!); - currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: null, marathonId: marathonDetailModel.id!)); + if (!AppState().getIsDemoMarathon) { + Utils.showLoading(AppRoutes.navigatorKey.currentContext!); + } + currentQuestion = AppState().getIsDemoMarathon + ? await DemoMarathonRepo().getDemoNextQuestion(currentQuestionNumber: currentQuestionNumber) + : (await MarathonApiClient().getNextQuestion(questionId: null, marathonId: marathonDetailModel.id!)); gapTimeImage = currentQuestion.gapImage; gapTimeText = currentQuestion.gapText; gapTimeType = currentQuestion.gapType; @@ -318,7 +341,9 @@ class MarathonProvider extends ChangeNotifier { updateCardData(); Navigator.pushReplacementNamed(AppRoutes.navigatorKey.currentContext!, AppRoutes.marathonScreen); } else { - currentQuestion = (await MarathonApiClient().getNextQuestion(questionId: currentQuestion.id, marathonId: marathonDetailModel.id!)); + currentQuestion = AppState().getIsDemoMarathon + ? await DemoMarathonRepo().getDemoNextQuestion(currentQuestionNumber: currentQuestionNumber) + : (await MarathonApiClient().getNextQuestion(questionId: currentQuestion.id, marathonId: marathonDetailModel.id!)); } notifyListeners(); } @@ -340,12 +365,21 @@ class MarathonProvider extends ChangeNotifier { } void populateQuestionStatusesList() { - if (marathonDetailModel.totalQuestions != null) { - for (int i = 0; i < marathonDetailModel.totalQuestions!; i++) { + answerStatusesList.clear(); + if (demoMarathonDetailModel.totalQuestions != null) { + for (int i = 0; i < demoMarathonDetailModel.totalQuestions!; i++) { answerStatusesList.add(QuestionCardStatus.question); } notifyListeners(); } + if (isUpComingMarathon) { + if (marathonDetailModel.totalQuestions != null) { + for (int i = 0; i < marathonDetailModel.totalQuestions!; i++) { + answerStatusesList.add(QuestionCardStatus.question); + } + notifyListeners(); + } + } } void updateAnswerStatusesList(QuestionCardStatus status) { @@ -369,9 +403,11 @@ class MarathonProvider extends ChangeNotifier { } void updateQuestionCardStatus(QuestionCardStatus status) { - // if (status == QuestionCardStatus.wrongAnswer || status == QuestionCardStatus.skippedAnswer) { - // updateIsUserOutOfGame = true; - // } + if (status == QuestionCardStatus.wrongAnswer || status == QuestionCardStatus.skippedAnswer) { + if (AppState().getIsDemoMarathon) { + updateIsUserOutOfGame = true; + } + } questionCardStatus = status; notifyListeners(); } @@ -417,11 +453,13 @@ class MarathonProvider extends ChangeNotifier { isUserOutOfGame = false; isButtonEnabled = false; isUserWaiting = false; + canPlayDemo = true; totalCurrentQuestionTime = 0; sponsorsSecondsCounter = 0; totalSponsorVideoSeconds = 0; totalSecondsToWaitForWinner = 30; totalSecondsToWaitForMarathon = 30; + AppState().setIsDemoMarathon = false; currentGapTime = 0; currentQuestion = QuestionModel(); if (answerStatusesList.isNotEmpty) { @@ -452,15 +490,19 @@ class MarathonProvider extends ChangeNotifier { isLoading = true; notifyListeners(); isPrivilegedWithMarathon = checkIfPrivilegedForMarathon(); + demoMarathonDetailModel = await DemoMarathonRepo().getDemoMarathonDetails(); + if (isPrivilegedWithMarathon) { marathonDetailModel = await MarathonApiClient().getMarathonDetails(); updateTotalSecondsToWaitForMarathon = marathonDetailModel.marathonBufferTime ?? 30; if (marathonDetailModel.id == null) { isUpComingMarathon = false; isLoading = false; + populateQuestionStatusesList(); notifyListeners(); return; } + isUpComingMarathon = true; if (DateTime.parse(marathonDetailModel.startTime!).isAfter(DateTime.now())) { itsMarathonTime = false; } @@ -478,4 +520,9 @@ class MarathonProvider extends ChangeNotifier { Utils.confirmDialog(context, e.toString()); } } + + Future onJoinDemoMarathonPressed(BuildContext context) async { + AppState().setIsDemoMarathon = true; + await callNextQuestionApi(); + } } diff --git a/lib/ui/marathon/marathon_screen.dart b/lib/ui/marathon/marathon_screen.dart index f8bc969..9d76cf7 100644 --- a/lib/ui/marathon/marathon_screen.dart +++ b/lib/ui/marathon/marathon_screen.dart @@ -45,106 +45,179 @@ class MarathonScreen extends StatelessWidget { return Image.asset(MyLottieConsts.congratsGif, height: 200); } + Widget getDemoWinnerWidget(BuildContext context, {required MarathonProvider provider}) { + return provider.isUserOutOfGame + ? Column( + children: [ + Lottie.asset(MyLottieConsts.noWinnerLottie), + Center( + child: LocaleKeys.noWinner.tr().toText18(color: MyColors.grey3AColor, isCentered: true), + ), + ], + ) + : Stack( + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 50, + child: Stack( + children: [ + Align( + alignment: Alignment.center, + child: SvgPicture.asset("assets/images/winner_ribbon.svg", height: 50), + ), + Align( + alignment: Alignment.center, + child: LocaleKeys.winner.tr().toText32(color: MyColors.white, isBold: true, isCentered: true).paddingOnly(top: 07), + ) + ], + ), + ), + 16.height, + Column( + children: [ + (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn)!.toText22( + color: MyColors.grey3AColor, + isCentered: true, + ), + 8.height, + AppState().memberInformationList!.eMPLOYEENUMBER!.toText22(color: MyColors.grey57Color), + ], + ), + 60.height, + if (provider.demoMarathonDetailModel.sponsors != null && provider.demoMarathonDetailModel.sponsors!.isNotEmpty) ...[ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + "${LocaleKeys.sponsoredBy.tr()} ".toText14(color: MyColors.grey77Color), + (AppState().isArabic(context) ? provider.demoMarathonDetailModel.sponsors!.first.nameAr ?? "" : provider.demoMarathonDetailModel.sponsors!.first.nameEn ?? "").toText14( + color: MyColors.darkTextColor, + isBold: true, + ), + ], + ), + 5.height, + Image.network( + ApiConsts.marathonBaseUrlServices + provider.demoMarathonDetailModel.sponsors!.first.logo!, + height: 50, + width: 150, + fit: BoxFit.contain, + errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + return Image.asset("assets/images/logos/main_mohemm_logo.png", height: 50, width: 150); + }, + ) + ], + ], + ), + Lottie.asset(MyLottieConsts.celebrate1Lottie), + ], + ); + } + Widget getWinnerWidget(BuildContext context, {required MarathonProvider provider}) { return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20), - child: provider.selectedWinners == null || (provider.selectedWinners!.isEmpty && !provider.iAmWinner) - ? Column( - children: [ - Lottie.asset(MyLottieConsts.noWinnerLottie), - Center( - child: LocaleKeys.noWinner.tr().toText18(color: MyColors.grey3AColor, isCentered: true), - ), - ], - ) - : Stack( - children: [ - Column( - mainAxisAlignment: MainAxisAlignment.center, + child: (AppState().getIsDemoMarathon) + ? getDemoWinnerWidget(context, provider: provider) + : provider.selectedWinners == null || (provider.selectedWinners!.isEmpty && !provider.iAmWinner) + ? Column( children: [ - SizedBox( - height: 50, - child: Stack( - children: [ - Align( - alignment: Alignment.center, - child: SvgPicture.asset("assets/images/winner_ribbon.svg", height: 50), - ), - Align( - alignment: Alignment.center, - child: ((provider.selectedWinners!.length == 1 && !provider.iAmWinner) || (provider.selectedWinners!.isEmpty && provider.iAmWinner) - ? LocaleKeys.winner.tr() - : LocaleKeys.winners.tr()) - .toText32(color: MyColors.white, isBold: true, isCentered: true) - .paddingOnly(top: 07), - ) - ], - ), + Lottie.asset(MyLottieConsts.noWinnerLottie), + Center( + child: LocaleKeys.noWinner.tr().toText18(color: MyColors.grey3AColor, isCentered: true), ), - 16.height, - provider.iAmWinner - ? Column( + ], + ) + : Stack( + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 50, + child: Stack( children: [ - (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn)!.toText22( - color: MyColors.grey3AColor, - isCentered: true, + Align( + alignment: Alignment.center, + child: SvgPicture.asset("assets/images/winner_ribbon.svg", height: 50), ), - 8.height, - AppState().memberInformationList!.eMPLOYEENUMBER!.toText22(color: MyColors.grey57Color), + Align( + alignment: Alignment.center, + child: ((provider.selectedWinners!.length == 1 && !provider.iAmWinner) || (provider.selectedWinners!.isEmpty && provider.iAmWinner) + ? LocaleKeys.winner.tr() + : LocaleKeys.winners.tr()) + .toText32(color: MyColors.white, isBold: true, isCentered: true) + .paddingOnly(top: 07), + ) ], - ) - : const SizedBox(), - 36.height, - if (provider.selectedWinners != null) ...[ - ListView.separated( - shrinkWrap: true, - itemCount: provider.selectedWinners!.length, - separatorBuilder: (BuildContext context, int index) { - return const Divider(); - }, - itemBuilder: (BuildContext context, int index) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, + ), + ), + 16.height, + provider.iAmWinner + ? Column( + children: [ + (AppState().isArabic(context) ? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr : AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn)!.toText22( + color: MyColors.grey3AColor, + isCentered: true, + ), + 8.height, + AppState().memberInformationList!.eMPLOYEENUMBER!.toText22(color: MyColors.grey57Color), + ], + ) + : const SizedBox(), + 36.height, + if (provider.selectedWinners != null) ...[ + ListView.separated( + shrinkWrap: true, + itemCount: provider.selectedWinners!.length, + separatorBuilder: (BuildContext context, int index) { + return const Divider(); + }, + itemBuilder: (BuildContext context, int index) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (AppState().isArabic(context) ? provider.selectedWinners![index].nameEn : provider.selectedWinners![index].nameEn)!.toText16( + color: MyColors.grey3AColor, + ), + provider.selectedWinners!.first.employeeId!.toText16(color: MyColors.grey57Color), + ], + ); + }, + ), + ], + 60.height, + if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ + Row( + mainAxisAlignment: MainAxisAlignment.center, children: [ - (AppState().isArabic(context) ? provider.selectedWinners![index].nameEn : provider.selectedWinners![index].nameEn)!.toText16( - color: MyColors.grey3AColor, + "${LocaleKeys.sponsoredBy.tr()} ".toText14(color: MyColors.grey77Color), + (AppState().isArabic(context) ? provider.marathonDetailModel.sponsors!.first.nameAr ?? "" : provider.marathonDetailModel.sponsors!.first.nameEn ?? "").toText14( + color: MyColors.darkTextColor, + isBold: true, ), - provider.selectedWinners!.first.employeeId!.toText16(color: MyColors.grey57Color), ], - ); - }, - ), - ], - 60.height, - if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - "${LocaleKeys.sponsoredBy.tr()} ".toText14(color: MyColors.grey77Color), - (AppState().isArabic(context) ? provider.marathonDetailModel.sponsors!.first.nameAr ?? "" : provider.marathonDetailModel.sponsors!.first.nameEn ?? "").toText14( - color: MyColors.darkTextColor, - isBold: true, ), + 5.height, + Image.network( + ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.logo!, + height: 50, + width: 150, + fit: BoxFit.contain, + errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + return Image.asset("assets/images/logos/main_mohemm_logo.png", height: 50, width: 150); + }, + ) ], - ), - 5.height, - Image.network( - ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.logo!, - height: 50, - width: 150, - fit: BoxFit.contain, - errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { - return Image.asset("assets/images/logos/main_mohemm_logo.png", height: 50, width: 150); - }, - ) - ], + ], + ), + Lottie.asset(MyLottieConsts.celebrate1Lottie), ], ), - Lottie.asset(MyLottieConsts.celebrate1Lottie), - ], - ), ); } diff --git a/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart index 8cc4f93..86b8b96 100644 --- a/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart +++ b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart @@ -10,7 +10,6 @@ import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; -import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_banner.dart'; class CountdownTimerForDetailScreen extends StatelessWidget { final int timeToMarathon; @@ -122,6 +121,15 @@ class CountdownTimerForDetailScreen extends StatelessWidget { } Widget buildCountdownTimer(CurrentRemainingTime? time) { + if (provider.marathonDetailModel.startTime != null) { + int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; + if (remainingTimeInMinutes <= 30) { + scheduleMicrotask(() { + provider.canPlayDemo = true; + }); + } + } + if (time == null) { if (!provider.itsMarathonTime) { scheduleMicrotask(() { @@ -193,8 +201,7 @@ class CountdownTimerForDetailScreen extends StatelessWidget { @override Widget build(BuildContext context) { return CountdownTimer( - endTime: dummyTime, - // endTime: timeToMarathon, + endTime: timeToMarathon, onEnd: null, widgetBuilder: (BuildContext context, CurrentRemainingTime? time) { return buildCountdownTimer(time); diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index ff374c3..1c4d6b8 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -18,14 +18,11 @@ import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:mohem_flutter_app/ui/marathon/widgets/countdown_timer_main_screen.dart'; import 'package:provider/provider.dart'; - // It is used to pass a dummy time to test Marathon int dummyTime = DateTime.now().millisecondsSinceEpoch + 8690; class MarathonBanner extends StatelessWidget { - final bool isMarathonUpcoming; - - const MarathonBanner({Key? key, required this.isMarathonUpcoming}) : super(key: key); + const MarathonBanner({Key? key}) : super(key: key); Widget getUnPrivilegedMarathon(BuildContext context) { return Container( @@ -274,6 +271,16 @@ class MarathonBanner extends StatelessWidget { height: 32 / 22, ), ), + Text( + LocaleKeys.youCanPlayDemo.tr(), + style: TextStyle( + fontSize: isTablet ? 20 : 11, + fontStyle: FontStyle.italic, + fontWeight: FontWeight.w600, + color: MyColors.white.withOpacity(0.83), + letterSpacing: -0.4, + ), + ), ], ).paddingOnly( left: AppState().isArabic(context) ? 12 : 3, @@ -331,7 +338,9 @@ class MarathonBanner extends StatelessWidget { ).paddingOnly(top: 5), ], ), - ); + ).onPress(() { + Navigator.pushNamed(context, AppRoutes.marathonIntroScreen); + }); } @override @@ -340,7 +349,7 @@ class MarathonBanner extends StatelessWidget { return !provider.isPrivilegedWithMarathon ? getUnPrivilegedMarathon(context) - : provider.marathonDetailModel.startTime != null + : provider.isUpComingMarathon ? Container( decoration: MyDecorations.shadowDecoration, height: isTablet ? MediaQuery.of(context).size.height * 0.17 : MediaQuery.of(context).size.height * 0.11, @@ -432,7 +441,6 @@ class MarathonBanner extends StatelessWidget { isTablet ? 10.height : 3.height, CountdownTimerForMainScreen( timeToMarathon: DateTime.parse(provider.marathonDetailModel.startTime!).millisecondsSinceEpoch, - // timeToMarathon: dummyTime, provider: provider, ), ], diff --git a/lib/ui/marathon/widgets/marathon_details_card.dart b/lib/ui/marathon/widgets/marathon_details_card.dart index b888915..dda7ef8 100644 --- a/lib/ui/marathon/widgets/marathon_details_card.dart +++ b/lib/ui/marathon/widgets/marathon_details_card.dart @@ -6,72 +6,86 @@ import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; +import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; +import 'package:provider/provider.dart'; class MarathonDetailsCard extends StatelessWidget { - final MarathonProvider provider; + final MarathonDetailModel marathonDetailModel; - const MarathonDetailsCard({Key? key, required this.provider}) : super(key: key); + const MarathonDetailsCard({Key? key, required this.marathonDetailModel}) : super(key: key); @override Widget build(BuildContext context) { return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 14), + padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 14), child: Column( - mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.contestTopicAbout.tr().toText16(color: MyColors.grey77Color), - "${AppState().isArabic(context) ? provider.marathonDetailModel.titleAr : provider.marathonDetailModel.titleEn}".toText20(color: MyColors.textMixColor, isBold: true), - Row( - children: [ - Flexible( - child: "${AppState().isArabic(context) ? provider.marathonDetailModel.descAr : provider.marathonDetailModel.descEn}".toText14(color: MyColors.grey77Color), - ) - ], - ), - if (provider.marathonDetailModel.sponsors != null && provider.marathonDetailModel.sponsors!.isNotEmpty) ...[ - 5.height, - provider.marathonDetailModel.sponsors!.first.sponsorPrizes != null - ? Row( - children: [ - "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), - "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr : provider.marathonDetailModel.sponsors?.first.sponsorPrizes?.first.marathonPrizeAr}" - .toText16(color: MyColors.greenColor, isBold: true), - ], - ) - : const SizedBox(), - Row( - children: [ - "${LocaleKeys.sponsoredBy.tr()} ".toText16(color: MyColors.grey77Color), - "${AppState().isArabic(context) ? provider.marathonDetailModel.sponsors?.first.nameAr : provider.marathonDetailModel.sponsors?.first.nameEn}" - .toText16(color: MyColors.darkTextColor, isBold: true), - ], - ), - 10.height, - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.network( - ApiConsts.marathonBaseUrlServices + provider.marathonDetailModel.sponsors!.first.logo!, - height: 50, - width: 150, - fit: BoxFit.contain, - errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { - return Image.asset("assets/images/logos/main_mohemm_logo.png", height: 50, width: 150); - }, - ) + context.read().isUpComingMarathon + ? const SizedBox() + : Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Container( + decoration: BoxDecoration(color: MyColors.yellowColorII, borderRadius: BorderRadius.circular(100)), + child: LocaleKeys.demo.tr().toText10(color: MyColors.white).paddingAll(4), + ), ], ), - ] + 7.height, + LocaleKeys.contestTopicAbout.tr().toText16(color: MyColors.grey77Color), + "${AppState().isArabic(context) ? marathonDetailModel.titleAr : marathonDetailModel.titleEn}".toText20(color: MyColors.textMixColor, isBold: true), + Row( + children: [ + Flexible( + child: "${AppState().isArabic(context) ? marathonDetailModel.descAr : marathonDetailModel.descEn}".toText14(color: MyColors.grey77Color), + ) ], ), + if (marathonDetailModel.sponsors != null && marathonDetailModel.sponsors!.isNotEmpty) ...[ + 5.height, + marathonDetailModel.sponsors!.first.sponsorPrizes != null + ? Row( + children: [ + "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), + Row( + children: marathonDetailModel.sponsors!.first.sponsorPrizes! + .map( + (SponsorPrizes prizes) => + "${AppState().isArabic(context) ? prizes.marathonPrizeAr : prizes.marathonPrizeAr}".toText16(color: MyColors.greenColor, isBold: true).paddingOnly(right: 5), + ) + .toList(), + ), + ], + ) + : const SizedBox(), + Row( + children: [ + "${LocaleKeys.sponsoredBy.tr()} ".toText16(color: MyColors.grey77Color), + "${AppState().isArabic(context) ? marathonDetailModel.sponsors?.first.nameAr : marathonDetailModel.sponsors?.first.nameEn}".toText16(color: MyColors.darkTextColor, isBold: true), + ], + ), + 10.height, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.network( + ApiConsts.marathonBaseUrlServices + marathonDetailModel.sponsors!.first.logo!, + height: 50, + width: 150, + fit: BoxFit.contain, + errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { + return Image.asset("assets/images/logos/main_mohemm_logo.png", height: 50, width: 150); + }, + ) + ], + ), + ] ], ), ); diff --git a/lib/ui/marathon/widgets/marathon_footer.dart b/lib/ui/marathon/widgets/marathon_footer.dart index 4146cb3..2c82d94 100644 --- a/lib/ui/marathon/widgets/marathon_footer.dart +++ b/lib/ui/marathon/widgets/marathon_footer.dart @@ -41,9 +41,15 @@ class MarathonFooter extends StatelessWidget { @override Widget build(BuildContext context) { - return DefaultButton( - LocaleKeys.joinMarathon.tr(), - provider.isButtonEnabled ? () => provider.onJoinMarathonPressed(context) : null, - ).insideContainer; + return provider.isUpComingMarathon && !provider.canPlayDemo + ? DefaultButton( + LocaleKeys.joinMarathon.tr(), + provider.isButtonEnabled ? () => provider.onJoinMarathonPressed(context) : null, + ).insideContainer + : DefaultButton( + LocaleKeys.joinDemoMarathon.tr(), + () => provider.onJoinDemoMarathonPressed(context), + color: MyColors.yellowColorII, + ).insideContainer; } } diff --git a/lib/ui/marathon/widgets/marathon_progress_container.dart b/lib/ui/marathon/widgets/marathon_progress_container.dart index 20763b6..6a71b32 100644 --- a/lib/ui/marathon/widgets/marathon_progress_container.dart +++ b/lib/ui/marathon/widgets/marathon_progress_container.dart @@ -1,5 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -14,24 +15,47 @@ class MarathonProgressContainer extends StatelessWidget { const MarathonProgressContainer({Key? key, required this.provider}) : super(key: key); + Widget getDemoMarathonerText() { + if (provider.isUserOutOfGame) { + return "0 ${LocaleKeys.marathoner.tr()}".toText14(); + } + return "1 ${LocaleKeys.marathoner.tr()}".toText14(); + } + @override Widget build(BuildContext context) { return Container( width: double.infinity, decoration: MyDecorations.shadowDecoration, - padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 13), + padding: EdgeInsets.fromLTRB(13, AppState().getIsDemoMarathon ? 5 : 18, 13, 18), child: Column( mainAxisSize: MainAxisSize.min, children: [ + AppState().getIsDemoMarathon + ? Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Container( + decoration: BoxDecoration(color: MyColors.yellowColorII, borderRadius: BorderRadius.circular(100)), + child: LocaleKeys.demo.tr().toText10(color: MyColors.white).paddingAll(4), + ), + ], + ) + : const SizedBox(), + 5.height, Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( decoration: BoxDecoration(color: MyColors.greenColor, borderRadius: BorderRadius.circular(5)), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 8), - child: "${provider.currentQuestionNumber.toString()} / ${provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}".toText12(color: MyColors.white), + child: + "${provider.currentQuestionNumber.toString()} / ${AppState().getIsDemoMarathon ? provider.demoMarathonDetailModel.totalQuestions.toString() : provider.marathonDetailModel.totalQuestions.toString()} ${LocaleKeys.question.tr()}" + .toText12(color: MyColors.white), ), - "${provider.totalMarathoners} ${provider.totalMarathoners == 1 ? LocaleKeys.marathoner.tr() : LocaleKeys.marathoners.tr()}".toText14(), + AppState().getIsDemoMarathon + ? getDemoMarathonerText() + : "${provider.totalMarathoners} ${provider.totalMarathoners == 1 ? LocaleKeys.marathoner.tr() : LocaleKeys.marathoners.tr()}".toText14(), provider.questionCardStatus == QuestionCardStatus.question ? "00:${(provider.totalCurrentQuestionTime - provider.currentGapTime) < 10 ? "0${provider.totalCurrentQuestionTime - provider.currentGapTime}" : provider.totalCurrentQuestionTime - provider.currentGapTime}" .toText18(color: provider.totalCurrentQuestionTime - provider.currentGapTime < 5 ? MyColors.redColor : MyColors.black) @@ -39,14 +63,19 @@ class MarathonProgressContainer extends StatelessWidget { ], ), 12.height, - stepper(provider.currentQuestionNumber, provider.answerStatusesList, provider.marathonDetailModel.totalQuestions!, provider.isUserOutOfGame), + stepper( + provider.currentQuestionNumber, + provider.answerStatusesList, + AppState().getIsDemoMarathon ? provider.demoMarathonDetailModel.totalQuestions! : provider.marathonDetailModel.totalQuestions!, + provider.isUserOutOfGame, + ), 8.height, Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "${provider.currentQuestionNumber == 1 ? 0 : (((provider.currentQuestionNumber - 1) / provider.marathonDetailModel.totalQuestions!) * 100).toInt()}% ${LocaleKeys.completed.tr()}" + "${provider.currentQuestionNumber == 1 ? 0 : (((provider.currentQuestionNumber - 1) / (AppState().getIsDemoMarathon ? provider.demoMarathonDetailModel.totalQuestions! : provider.marathonDetailModel.totalQuestions!)) * 100).toInt()}% ${LocaleKeys.completed.tr()}" .toText14(), - provider.isUserOutOfGame ? LocaleKeys.youAreOutOfContest.tr().toText14(color: MyColors.redColor) : const SizedBox(), + provider.isUserOutOfGame ? LocaleKeys.youAreOutOfContest.tr().toText13(color: MyColors.redColor) : const SizedBox(), ], ), ], diff --git a/pubspec.yaml b/pubspec.yaml index d0758c5..95f6b3e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -138,6 +138,7 @@ flutter: - assets/icons/ - assets/lottie/ - assets/audio/ + - assets/json/ - assets/images/ - assets/images/worklist/ - assets/images/services_icons/ From 83b8691a311a9d886b18d012a5d9ca73d5b0c6a7 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 2 Jan 2023 12:16:03 +0300 Subject: [PATCH 290/302] Ios Stream Audio --- lib/provider/chat_provider_model.dart | 32 ++++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index a88a08c..8a91ddd 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1202,19 +1202,35 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { void startRecoding() async { PermissionStatus status = await Permission.microphone.request(); - if (status.isDenied == true) { + if (status.isDenied) { startRecoding(); + } else if (status.isGranted) { + sRecoding(); } else { - isVoiceMsg = true; - recorderController.reset(); - await recorderController.record(path); - _recodeDuration = 0; - _startTimer(); - isRecoding = !isRecoding; - notifyListeners(); + startRecoding(); } } + // else { + // isVoiceMsg = true; + // recorderController.reset(); + // await recorderController.record(path); + // _recodeDuration = 0; + // _startTimer(); + // isRecoding = !isRecoding; + // notifyListeners(); + // } + + void sRecoding() async { + isVoiceMsg = true; + recorderController.reset(); + await recorderController.record(path); + _recodeDuration = 0; + _startTimer(); + isRecoding = !isRecoding; + notifyListeners(); + } + Future _startTimer() async { _timer?.cancel(); _timer = Timer.periodic(const Duration(seconds: 1), (Timer t) async { From fe5807c9977b2ac2a9cedb76833b938f30438130 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 2 Jan 2023 14:36:57 +0300 Subject: [PATCH 291/302] version update --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index d0758c5..074cc08 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 3.1.5+300015 +version: 3.6.0+300060 environment: sdk: ">=2.16.0 <3.0.0" From 377fd486934c3e8b0779f7d0fb880d6cf53349bf Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 2 Jan 2023 14:47:38 +0300 Subject: [PATCH 292/302] Ios Fix --- lib/provider/chat_provider_model.dart | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 8a91ddd..d6e3b57 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1201,14 +1201,17 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void startRecoding() async { - PermissionStatus status = await Permission.microphone.request(); - if (status.isDenied) { - startRecoding(); - } else if (status.isGranted) { - sRecoding(); - } else { - startRecoding(); - } + await Permission.microphone.request().then((PermissionStatus status){ + if (status.isPermanentlyDenied) { + // startRecoding(); + } else if (status.isDenied) { + startRecoding(); + } else if (status.isGranted) { + sRecoding(); + } else { + startRecoding(); + }}); + } // else { From dbb13515fcc6806265843c140ec7f8a33df6de9a Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Mon, 2 Jan 2023 15:35:21 +0300 Subject: [PATCH 293/302] Audio Fix --- lib/provider/chat_provider_model.dart | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index d6e3b57..53dbade 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1201,17 +1201,23 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void startRecoding() async { - await Permission.microphone.request().then((PermissionStatus status){ + // if (await Permission.microphone.request().isGranted) { + // sRecoding(); + // } else { + // Utils.showToast("Permission Issue"); + // openAppSettings(); + // } + await Permission.microphone.request().then((PermissionStatus status) { if (status.isPermanentlyDenied) { - // startRecoding(); + openAppSettings(); } else if (status.isDenied) { - startRecoding(); + openAppSettings(); } else if (status.isGranted) { sRecoding(); } else { startRecoding(); - }}); - + } + }); } // else { From 538fd133aa49bf39895216ee1ca343900efd8e9d Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 3 Jan 2023 14:35:35 +0300 Subject: [PATCH 294/302] Title Fix On AppBar --- lib/widgets/chat_app_bar_widge.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/widgets/chat_app_bar_widge.dart b/lib/widgets/chat_app_bar_widge.dart index 790840c..25ed34c 100644 --- a/lib/widgets/chat_app_bar_widge.dart +++ b/lib/widgets/chat_app_bar_widge.dart @@ -76,7 +76,7 @@ AppBar ChatAppBarWidget(BuildContext context, if (chatUser!.isTyping!) ("Typing ...").toText10(color: MyColors.textMixColor) else const SizedBox(), ], ), - ) + ).expanded ], ); }), From e685cf188c355b3d5b55f25dbc38746d50d9b53b Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 3 Jan 2023 15:44:22 +0300 Subject: [PATCH 295/302] updates --- lib/ui/chat/my_team_screen.dart | 2 +- lib/ui/landing/dashboard_screen.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ui/chat/my_team_screen.dart b/lib/ui/chat/my_team_screen.dart index 5d36a68..091226d 100644 --- a/lib/ui/chat/my_team_screen.dart +++ b/lib/ui/chat/my_team_screen.dart @@ -101,7 +101,7 @@ class _MyTeamScreenState extends State { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - (m.teamMembersList![index].userName!.replaceFirst(".", " ").capitalizeFirstofEach ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), + (m.teamMembersList![index].userName! ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), ], ).expanded, // SizedBox( diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index 23d2c16..98bf976 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -463,7 +463,7 @@ class _DashboardScreenState extends State { "assets/icons/create_req.svg", color: currentIndex == 1 ? MyColors.grey3AColor : MyColors.grey98Color, ).paddingAll(4), - label: LocaleKeys.createRequest.tr(), + label: LocaleKeys.mowadhafhiRequest.tr(), ), BottomNavigationBarItem( icon: Stack( From f933539395d618258f391f5fef1fbc79474364dc Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 3 Jan 2023 16:00:25 +0300 Subject: [PATCH 296/302] dialog added to app settings --- lib/provider/chat_provider_model.dart | 20 ++++++++++++++++---- lib/ui/chat/chat_detailed_screen.dart | 2 +- lib/ui/chat/my_team_screen.dart | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 53dbade..fb61891 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1200,7 +1200,7 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { playerController.dispose(); } - void startRecoding() async { + void startRecoding(BuildContext context) async { // if (await Permission.microphone.request().isGranted) { // sRecoding(); // } else { @@ -1209,13 +1209,25 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { // } await Permission.microphone.request().then((PermissionStatus status) { if (status.isPermanentlyDenied) { - openAppSettings(); + Utils.confirmDialog( + context, + "The app needs microphone access to be able to record audio.", + onTap: () { + openAppSettings(); + }, + ); } else if (status.isDenied) { - openAppSettings(); + Utils.confirmDialog( + context, + "The app needs microphone access to be able to record audio.", + onTap: () { + openAppSettings(); + }, + ); } else if (status.isGranted) { sRecoding(); } else { - startRecoding(); + startRecoding(context); } }); } diff --git a/lib/ui/chat/chat_detailed_screen.dart b/lib/ui/chat/chat_detailed_screen.dart index f597fe2..3e02d96 100644 --- a/lib/ui/chat/chat_detailed_screen.dart +++ b/lib/ui/chat/chat_detailed_screen.dart @@ -301,7 +301,7 @@ class _ChatDetailScreenState extends State { Icons.mic, color: MyColors.lightGreenColor, ).paddingOnly(right: 15).onPress(() { - m.startRecoding(); + m.startRecoding(context); }), SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26) .onPress( diff --git a/lib/ui/chat/my_team_screen.dart b/lib/ui/chat/my_team_screen.dart index 091226d..79da90d 100644 --- a/lib/ui/chat/my_team_screen.dart +++ b/lib/ui/chat/my_team_screen.dart @@ -101,7 +101,7 @@ class _MyTeamScreenState extends State { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ - (m.teamMembersList![index].userName! ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), + (m.teamMembersList[index].userName! ?? "").toText14(color: MyColors.darkTextColor).paddingOnly(left: 11, top: 13), ], ).expanded, // SizedBox( From a72ac3412220ab30f4be2bc6b44263ae4069acb8 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 3 Jan 2023 16:31:48 +0300 Subject: [PATCH 297/302] Updated the text --- assets/langs/en-US.json | 4 ++-- lib/generated/codegen_loader.g.dart | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 61aba9b..e836721 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -508,8 +508,8 @@ "favorite": "My Favorites", "searchfromchat": "Search from chat", "yourAnswerCorrect": "Your answer is correct", - "youMissedTheQuestion": "You ran out of time. You are out of the game. But you can continue and as a viewer.", - "wrongAnswer": "Your answer is Incorrect. You are out of the game. But you can continue and as a viewer.", + "youMissedTheQuestion": "You ran out of time. You are out of the game. But you can continue as a viewer.", + "wrongAnswer": "Your answer is Incorrect. You are out of the game. But you can continue as a viewer.", "oops": "Ooopsss!!!!", "winner": "WINNER", "youWantToLeaveMarathon": "Are you sure you want to go back? You will be out of the contest.", diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index c33ec06..f01aa0d 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -1034,8 +1034,8 @@ class CodegenLoader extends AssetLoader { "favorite": "My Favorites", "searchfromchat": "Search from chat", "yourAnswerCorrect": "Your answer is correct", - "youMissedTheQuestion": "You ran out of time. You are out of the game. But you can continue and as a viewer.", - "wrongAnswer": "Your answer is Incorrect. You are out of the game. But you can continue and as a viewer.", + "youMissedTheQuestion": "You ran out of time. You are out of the game. But you can continue as a viewer.", + "wrongAnswer": "Your answer is Incorrect. You are out of the game. But you can continue as a viewer.", "oops": "Ooopsss!!!!", "winner": "WINNER", "youWantToLeaveMarathon": "Are you sure you want to go back? You will be out of the contest.", From 1f69ee262db5dc3919c6bec374882c4ae9ca8521 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 3 Jan 2023 16:33:27 +0300 Subject: [PATCH 298/302] Permission Issue --- lib/provider/chat_provider_model.dart | 84 +++++++++++++++------------ 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index fb61891..23feefc 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1201,47 +1201,59 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void startRecoding(BuildContext context) async { - // if (await Permission.microphone.request().isGranted) { - // sRecoding(); - // } else { - // Utils.showToast("Permission Issue"); - // openAppSettings(); - // } - await Permission.microphone.request().then((PermissionStatus status) { - if (status.isPermanentlyDenied) { - Utils.confirmDialog( - context, - "The app needs microphone access to be able to record audio.", - onTap: () { - openAppSettings(); - }, - ); - } else if (status.isDenied) { - Utils.confirmDialog( - context, - "The app needs microphone access to be able to record audio.", - onTap: () { - openAppSettings(); - }, - ); - } else if (status.isGranted) { - sRecoding(); + await Permission.microphone.request().then((PermissionStatus status) async { + if (Platform.isIOS) { + if (status.isPermanentlyDenied) { + Utils.confirmDialog( + context, + "The app needs microphone access to be able to record audio.", + onTap: () { + openAppSettings().then((bool value) { + if (status.isGranted) { + Navigator.of(context).pop(); + } + }); + }, + ); + } else if (status.isDenied) { + Utils.confirmDialog( + context, + "The app needs microphone access to be able to record audio.", + onTap: () { + openAppSettings().then((bool value) { + if (status.isGranted) { + Navigator.of(context).pop(); + } + }); + }, + ); + } else if (status.isGranted) { + sRecoding(); + } else { + startRecoding(context); + } } else { - startRecoding(context); + if (status.isPermanentlyDenied) { + Utils.confirmDialog( + context, + "The app needs microphone access to be able to record audio.", + onTap: () { + openAppSettings().then((bool value) { + if (status.isGranted) { + Navigator.of(context).pop(); + } + }); + }, + ); + } else if (status.isGranted) { + sRecoding(); + } else { + startRecoding(context); + } } }); } - // else { - // isVoiceMsg = true; - // recorderController.reset(); - // await recorderController.record(path); - // _recodeDuration = 0; - // _startTimer(); - // isRecoding = !isRecoding; - // notifyListeners(); - // } - void sRecoding() async { isVoiceMsg = true; recorderController.reset(); From b152f8a6d6c97eadf3615fb2bced096cb72ca360 Mon Sep 17 00:00:00 2001 From: "Aamir.Muhammad" Date: Tue, 3 Jan 2023 17:14:49 +0300 Subject: [PATCH 299/302] Permission Issue --- lib/provider/chat_provider_model.dart | 70 +++++++++------------------ 1 file changed, 22 insertions(+), 48 deletions(-) diff --git a/lib/provider/chat_provider_model.dart b/lib/provider/chat_provider_model.dart index 23feefc..460a338 100644 --- a/lib/provider/chat_provider_model.dart +++ b/lib/provider/chat_provider_model.dart @@ -1201,55 +1201,29 @@ class ChatProviderModel with ChangeNotifier, DiagnosticableTreeMixin { } void startRecoding(BuildContext context) async { - await Permission.microphone.request().then((PermissionStatus status) async { - if (Platform.isIOS) { - if (status.isPermanentlyDenied) { - Utils.confirmDialog( - context, - "The app needs microphone access to be able to record audio.", - onTap: () { - openAppSettings().then((bool value) { - if (status.isGranted) { - Navigator.of(context).pop(); - } - }); - }, - ); - } else if (status.isDenied) { - Utils.confirmDialog( - context, - "The app needs microphone access to be able to record audio.", - onTap: () { - openAppSettings().then((bool value) { - if (status.isGranted) { - Navigator.of(context).pop(); - } - }); - }, - ); - } else if (status.isGranted) { - sRecoding(); - } else { - startRecoding(context); - } + await Permission.microphone.request().then((PermissionStatus status) { + if (status.isPermanentlyDenied) { + Utils.confirmDialog( + context, + "The app needs microphone access to be able to record audio.", + onTap: () { + Navigator.of(context).pop(); + openAppSettings(); + }, + ); + } else if (status.isDenied) { + Utils.confirmDialog( + context, + "The app needs microphone access to be able to record audio.", + onTap: () { + Navigator.of(context).pop(); + openAppSettings(); + }, + ); + } else if (status.isGranted) { + sRecoding(); } else { - if (status.isPermanentlyDenied) { - Utils.confirmDialog( - context, - "The app needs microphone access to be able to record audio.", - onTap: () { - openAppSettings().then((bool value) { - if (status.isGranted) { - Navigator.of(context).pop(); - } - }); - }, - ); - } else if (status.isGranted) { - sRecoding(); - } else { - startRecoding(context); - } + startRecoding(context); } }); } From c337b82676021f51e44fc21d29104fee0ecf1bd7 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Thu, 5 Jan 2023 10:19:30 +0300 Subject: [PATCH 300/302] Pushing before removing the isCorrectOption --- assets/json/demo_questions_marathon | 4 ++-- lib/api/marathon/demo_marathon_repo.dart | 1 + lib/ui/marathon/widgets/countdown_timer_detail_screen.dart | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/assets/json/demo_questions_marathon b/assets/json/demo_questions_marathon index 7ec04fd..5e0bc8e 100644 --- a/assets/json/demo_questions_marathon +++ b/assets/json/demo_questions_marathon @@ -172,8 +172,8 @@ { "id": "dce4999c-5629-45f4-e4f6-08dae8b36b35", "titleEn": "1", - "titleAr": "null", - "questionId": 1, + "titleAr": "1", + "questionId": "253fc396-dab9-41ca-82bd-511f98c5dee8", "sequence": 1, "image": "null", "isCorrectOption": false diff --git a/lib/api/marathon/demo_marathon_repo.dart b/lib/api/marathon/demo_marathon_repo.dart index b019e51..a93a146 100644 --- a/lib/api/marathon/demo_marathon_repo.dart +++ b/lib/api/marathon/demo_marathon_repo.dart @@ -17,6 +17,7 @@ class DemoMarathonRepo { } Future getDemoNextQuestion({required int currentQuestionNumber}) async { + print("currentNumber: $currentQuestionNumber"); String response = await rootBundle.loadString('assets/json/demo_questions_marathon'); List json = jsonDecode(response); logger.i("json in getDemoNextQuestion: $json"); diff --git a/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart index 86b8b96..cbf9884 100644 --- a/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart +++ b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart @@ -125,7 +125,7 @@ class CountdownTimerForDetailScreen extends StatelessWidget { int remainingTimeInMinutes = DateTime.parse(provider.marathonDetailModel.startTime!).difference(DateTime.now()).inMinutes; if (remainingTimeInMinutes <= 30) { scheduleMicrotask(() { - provider.canPlayDemo = true; + provider.canPlayDemo = false; }); } } From 7f02dff6894a6562e510280e4c9a724c2c2c2cfc Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 16 Jan 2023 15:39:57 +0300 Subject: [PATCH 301/302] Added the Sequence Number in Question Options and Removed isCorrectOption --- assets/json/demo_questions_marathon | 8 +- lib/api/marathon/demo_marathon_repo.dart | 3 - lib/classes/consts.dart | 2 +- lib/extensions/string_extensions.dart | 9 +++ lib/models/marathon/question_model.dart | 1 + lib/ui/marathon/marathon_provider.dart | 75 ++++++++++++++----- .../marathon_sponsor_video_screen.dart | 14 ++-- .../countdown_timer_detail_screen.dart | 1 + lib/ui/marathon/widgets/marathon_banner.dart | 20 +++-- .../widgets/marathon_details_card.dart | 26 +++++-- .../widgets/marathon_progress_container.dart | 2 +- 11 files changed, 110 insertions(+), 51 deletions(-) diff --git a/assets/json/demo_questions_marathon b/assets/json/demo_questions_marathon index 5e0bc8e..b735fc1 100644 --- a/assets/json/demo_questions_marathon +++ b/assets/json/demo_questions_marathon @@ -27,7 +27,7 @@ "titleEn": "2", "titleAr": "2", "questionId": "b8f10b10-221c-495d-b99b-6a8094892549", - "sequence": 2, + "sequence": 3, "image": "null", "isCorrectOption": true }, @@ -36,7 +36,7 @@ "titleEn": "3", "titleAr": "3", "questionId": "b8f10b10-221c-495d-b99b-6a8094892549", - "sequence": 3, + "sequence": 2, "image": "null", "isCorrectOption": false }, @@ -79,7 +79,7 @@ "titleEn": "Argentina", "titleAr": "Argentina", "questionId": "0d60d55f-4067-48f9-9ace-b6309c6a7cf0", - "sequence": 2, + "sequence": 4, "image": "null", "isCorrectOption": true }, @@ -97,7 +97,7 @@ "titleEn": "France", "titleAr": "France", "questionId": "0d60d55f-4067-48f9-9ace-b6309c6a7cf0", - "sequence": 4, + "sequence": 2, "image": "null", "isCorrectOption": false } diff --git a/lib/api/marathon/demo_marathon_repo.dart b/lib/api/marathon/demo_marathon_repo.dart index a93a146..1e53472 100644 --- a/lib/api/marathon/demo_marathon_repo.dart +++ b/lib/api/marathon/demo_marathon_repo.dart @@ -11,16 +11,13 @@ class DemoMarathonRepo { Future getDemoMarathonDetails() async { String response = await rootBundle.loadString('assets/json/demo_upcoming_marathon'); var json = jsonDecode(response); - logger.i("json in getDemoMarathonDetails: $json"); MarathonDetailModel marathonDetailModel = MarathonDetailModel.fromJson(json); return marathonDetailModel; } Future getDemoNextQuestion({required int currentQuestionNumber}) async { - print("currentNumber: $currentQuestionNumber"); String response = await rootBundle.loadString('assets/json/demo_questions_marathon'); List json = jsonDecode(response); - logger.i("json in getDemoNextQuestion: $json"); QuestionModel currentQuestion = QuestionModel.fromJson(json.elementAt(currentQuestionNumber)); return currentQuestion; diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 6679cbb..56ddde6 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -4,7 +4,7 @@ class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server - // static String baseUrl = "https://hmgwebservices.com"; // Live server + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 41b8952..b916f23 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -13,6 +13,15 @@ extension CapExtension on String { String get capitalizeFirstofEach => this.trim().length > 0 ? this.trim().toLowerCase().split(" ").map((str) => str.inCaps).join(" ") : ""; } +extension TrimString on String { + String trimString(int minThreshold) { + if (length > minThreshold) { + return "${substring(0, 10)}...${substring(length - 4, length)}"; + } + return this; + } +} + extension EmailValidator on String { Widget get toWidget => Text(this); diff --git a/lib/models/marathon/question_model.dart b/lib/models/marathon/question_model.dart index 4501947..d79e42f 100644 --- a/lib/models/marathon/question_model.dart +++ b/lib/models/marathon/question_model.dart @@ -51,6 +51,7 @@ class QuestionModel { json['questionOptions'].forEach((v) { questionOptions!.add(QuestionOptions.fromJson(v)); }); + questionOptions!.sort((QuestionOptions a, QuestionOptions b) => a.sequence!.compareTo(b.sequence!)); } } diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 9781475..9185a19 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -221,19 +221,19 @@ class MarathonProvider extends ChangeNotifier { getCorrectAnswerAndUpdateAnswerColor(); } - if (totalCurrentQuestionTime == currentGapTime) { + if (totalCurrentQuestionTime - currentGapTime == -2) { updateCardStatusToAnswer(); - scheduleMicrotask(() async { - if (AppState().getIsDemoMarathon || isUserOutOfGame) { - await callNextQuestionApi(); - } else { - await callSubmitOptionApi().then((bool value) async { - updateIsUserOutOfGame = !value; - await callNextQuestionApi(); - }); - } - }); + // scheduleMicrotask(() async { + // if (AppState().getIsDemoMarathon || isUserOutOfGame) { + // await callNextQuestionApi(); + // } else { + // await callSubmitOptionApi().then((bool value) async { + // updateIsUserOutOfGame = !value; + // await callNextQuestionApi(); + // }); + // } + // }); if (currentQuestionNumber == (AppState().getIsDemoMarathon ? demoMarathonDetailModel.totalQuestions! : marathonDetailModel.totalQuestions!)) { isGettingQualifiers = true; @@ -253,7 +253,7 @@ class MarathonProvider extends ChangeNotifier { return; } else { - if (totalCurrentQuestionTime != currentGapTime) { + if (totalCurrentQuestionTime - currentGapTime != -2) { totalCurrentQuestionTime--; } } @@ -414,10 +414,31 @@ class MarathonProvider extends ChangeNotifier { void getCorrectAnswerAndUpdateAnswerColor() { if (selectedOptionIndex != null) { - if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) { - updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!); - } else { - updateCurrentQuestionOptionStatus(QuestionsOptionStatus.wrong, selectedOptionIndex!); + scheduleMicrotask(() async { + if (AppState().getIsDemoMarathon) { + if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) { + updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!); + } else { + updateCurrentQuestionOptionStatus(QuestionsOptionStatus.wrong, selectedOptionIndex!); + } + } else { + await callSubmitOptionApi().then((bool value) async { + updateIsUserOutOfGame = !value; + if (value) { + updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!); + } else { + updateCurrentQuestionOptionStatus(QuestionsOptionStatus.wrong, selectedOptionIndex!); + } + }); + } + }); + } else { + if (!AppState().getIsDemoMarathon) { + scheduleMicrotask(() async { + await callSubmitOptionApi().then((bool value) async { + updateIsUserOutOfGame = !value; + }); + }); } } } @@ -427,7 +448,16 @@ class MarathonProvider extends ChangeNotifier { return; } - if (selectedOptionIndex != null) { + scheduleMicrotask(() async { + await callNextQuestionApi(); + }); + + if (selectedOptionIndex == null) { + updateQuestionCardStatus(QuestionCardStatus.skippedAnswer); + updateAnswerStatusesList(QuestionCardStatus.skippedAnswer); + return; + } + if (AppState().getIsDemoMarathon) { if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) { updateQuestionCardStatus(QuestionCardStatus.correctAnswer); updateAnswerStatusesList(QuestionCardStatus.correctAnswer); @@ -435,10 +465,15 @@ class MarathonProvider extends ChangeNotifier { updateQuestionCardStatus(QuestionCardStatus.wrongAnswer); updateAnswerStatusesList(QuestionCardStatus.wrongAnswer); } - } else { - updateQuestionCardStatus(QuestionCardStatus.skippedAnswer); - updateAnswerStatusesList(QuestionCardStatus.skippedAnswer); + return; + } + if (!isUserOutOfGame) { + updateQuestionCardStatus(QuestionCardStatus.correctAnswer); + updateAnswerStatusesList(QuestionCardStatus.correctAnswer); + return; } + updateQuestionCardStatus(QuestionCardStatus.wrongAnswer); + updateAnswerStatusesList(QuestionCardStatus.wrongAnswer); } void resetValues() async { diff --git a/lib/ui/marathon/marathon_sponsor_video_screen.dart b/lib/ui/marathon/marathon_sponsor_video_screen.dart index 88c66f9..0bd8a1b 100644 --- a/lib/ui/marathon/marathon_sponsor_video_screen.dart +++ b/lib/ui/marathon/marathon_sponsor_video_screen.dart @@ -15,13 +15,13 @@ import 'package:video_player/video_player.dart'; class SponsorVideoScreen extends StatelessWidget { const SponsorVideoScreen({Key? key}) : super(key: key); - @override Widget build(BuildContext context) { MarathonProvider provider = context.watch(); return WillPopScope( onWillPop: () { - provider.videoController.dispose(); + provider.videoController.pause(); + provider.disposeVideoPlayer(); provider.sponsorsSecondsCounter = 0; provider.totalSponsorVideoSeconds = 0; provider.timerForSponsorVideo.cancel(); @@ -52,11 +52,12 @@ class SponsorVideoScreen extends StatelessWidget { child: provider.totalSponsorVideoSeconds == 0 ? InkWell( onTap: () { - provider.videoController.dispose(); + Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); + provider.videoController.pause(); + provider.disposeVideoPlayer(); provider.sponsorsSecondsCounter = 0; provider.totalSponsorVideoSeconds = 0; provider.timerForSponsorVideo.cancel(); - Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); }, child: const Icon(Icons.close, size: 12), ) @@ -73,11 +74,12 @@ class SponsorVideoScreen extends StatelessWidget { alignment: Alignment.topLeft, child: InkWell( onTap: () { - provider.videoController.dispose(); + Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); + provider.videoController.pause(); + provider.disposeVideoPlayer(); provider.sponsorsSecondsCounter = 0; provider.totalSponsorVideoSeconds = 0; provider.timerForSponsorVideo.cancel(); - Navigator.pushReplacementNamed(context, AppRoutes.marathonIntroScreen); }, child: Container( decoration: BoxDecoration(color: MyColors.white, borderRadius: BorderRadius.circular(15)), diff --git a/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart index cbf9884..c12a452 100644 --- a/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart +++ b/lib/ui/marathon/widgets/countdown_timer_detail_screen.dart @@ -201,6 +201,7 @@ class CountdownTimerForDetailScreen extends StatelessWidget { @override Widget build(BuildContext context) { return CountdownTimer( + // endTime: dummyTime, endTime: timeToMarathon, onEnd: null, widgetBuilder: (BuildContext context, CurrentRemainingTime? time) { diff --git a/lib/ui/marathon/widgets/marathon_banner.dart b/lib/ui/marathon/widgets/marathon_banner.dart index 1c4d6b8..f6adff6 100644 --- a/lib/ui/marathon/widgets/marathon_banner.dart +++ b/lib/ui/marathon/widgets/marathon_banner.dart @@ -11,6 +11,7 @@ import 'package:mohem_flutter_app/classes/decorations_helper.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; +import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/main.dart'; @@ -428,14 +429,17 @@ class MarathonBanner extends StatelessWidget { letterSpacing: -0.4, ), ), - Text( - AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "", - style: TextStyle( - fontStyle: FontStyle.italic, - fontSize: isTablet ? 30 : 19, - fontWeight: FontWeight.bold, - color: MyColors.white.withOpacity(0.83), - height: 32 / 22, + Flexible( + child: Text( + (AppState().isArabic(context) ? provider.marathonDetailModel.titleAr ?? "" : provider.marathonDetailModel.titleEn ?? "").trimString(15), + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: isTablet ? 30 : 19, + fontWeight: FontWeight.bold, + color: MyColors.white.withOpacity(0.83), + height: 32 / 22, + ), ), ), isTablet ? 10.height : 3.height, diff --git a/lib/ui/marathon/widgets/marathon_details_card.dart b/lib/ui/marathon/widgets/marathon_details_card.dart index dda7ef8..11a3d84 100644 --- a/lib/ui/marathon/widgets/marathon_details_card.dart +++ b/lib/ui/marathon/widgets/marathon_details_card.dart @@ -53,14 +53,24 @@ class MarathonDetailsCard extends StatelessWidget { ? Row( children: [ "${LocaleKeys.prize.tr()} ".toText16(color: MyColors.grey77Color, isBold: true), - Row( - children: marathonDetailModel.sponsors!.first.sponsorPrizes! - .map( - (SponsorPrizes prizes) => - "${AppState().isArabic(context) ? prizes.marathonPrizeAr : prizes.marathonPrizeAr}".toText16(color: MyColors.greenColor, isBold: true).paddingOnly(right: 5), - ) - .toList(), - ), + Expanded( + child: SizedBox( + height: 30, + child: ListView.builder( + scrollDirection: Axis.horizontal, + shrinkWrap: true, + itemCount: marathonDetailModel.sponsors!.first.sponsorPrizes!.length, + itemBuilder: (BuildContext context, int index) { + SponsorPrizes prizes = marathonDetailModel.sponsors!.first.sponsorPrizes![index]; + return Container( + decoration: BoxDecoration(color: MyColors.backgroundColor, borderRadius: BorderRadius.circular(100), border: Border.all(color: MyColors.grey57Color.withOpacity(0.1))), + child: "${AppState().isArabic(context) ? prizes.marathonPrizeAr : prizes.marathonPrizeEn}" + .toText16(color: MyColors.greenColor, isBold: true) + .paddingOnly(left: 5, right: 5), + ).paddingOnly(left: 5); + }), + ), + ) ], ) : const SizedBox(), diff --git a/lib/ui/marathon/widgets/marathon_progress_container.dart b/lib/ui/marathon/widgets/marathon_progress_container.dart index 6a71b32..3de86ce 100644 --- a/lib/ui/marathon/widgets/marathon_progress_container.dart +++ b/lib/ui/marathon/widgets/marathon_progress_container.dart @@ -57,7 +57,7 @@ class MarathonProgressContainer extends StatelessWidget { ? getDemoMarathonerText() : "${provider.totalMarathoners} ${provider.totalMarathoners == 1 ? LocaleKeys.marathoner.tr() : LocaleKeys.marathoners.tr()}".toText14(), provider.questionCardStatus == QuestionCardStatus.question - ? "00:${(provider.totalCurrentQuestionTime - provider.currentGapTime) < 10 ? "0${provider.totalCurrentQuestionTime - provider.currentGapTime}" : provider.totalCurrentQuestionTime - provider.currentGapTime}" + ? "00:${provider.totalCurrentQuestionTime - provider.currentGapTime < 0 ? "00" : (provider.totalCurrentQuestionTime - provider.currentGapTime) < 10 ? "0${provider.totalCurrentQuestionTime - provider.currentGapTime}" : provider.totalCurrentQuestionTime - provider.currentGapTime}" .toText18(color: provider.totalCurrentQuestionTime - provider.currentGapTime < 5 ? MyColors.redColor : MyColors.black) : const SizedBox(), ], From 5f525f16a07b8d3b85bb540a27bba3ee58aec2c7 Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Thu, 19 Jan 2023 09:04:18 +0300 Subject: [PATCH 302/302] local network test --- android/app/build.gradle | 2 +- android/app/src/main/AndroidManifest.xml | 2 +- lib/classes/consts.dart | 3 +- lib/ui/login/login_screen.dart | 39 ++++++++++++++++++++++-- 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 9cd8b0e..7792554 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -44,7 +44,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.cloudSolutions.mohemmtest" + applicationId "hmg.cloudSolutions.mohem" minSdkVersion 21 targetSdkVersion 32 versionCode flutterVersionCode.toInteger() diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 30555e1..10d72b4 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -9,9 +9,9 @@ { isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool; if (!kReleaseMode) { // username.text = "15444"; // Maha User - // username.text = "15153"; // Tamer User - // password.text = "Abcd@1234"; + username.text = "15153"; // Tamer User + password.text = "Abcd@12345"; // username.text = "206535"; // Hashim User // password.text = "Namira786"; @@ -224,6 +225,14 @@ class _LoginScreenState extends State { Navigator.pushNamed(context, AppRoutes.forgotPassword); }), ), + 20.height, + DefaultButton( + "Connect HMG Network", + () async { + SystemChannels.textInput.invokeMethod('TextInput.hide'); + connectWithHmgNetwork(); + }, + ), ], ), ) @@ -239,4 +248,30 @@ class _LoginScreenState extends State { ), ); } + + void connectWithHmgNetwork() async { + try { + bool isConnected = await WiFiForIoTPlugin.connect("MOHEMM-CONNECT", password: "0987654321", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false); + + if (isConnected) { + await WiFiForIoTPlugin.forceWifiUsage(true); + // if (Platform.isIOS) { + // await closeWifiRequest(); + // await Future.delayed(Duration(seconds: 6)); + // } else { + // await WiFiForIoTPlugin.forceWifiUsage(true); + // } + } + } catch (e) { + print("----------------o----"); + print(e); + } + } + + Future closeWifiRequest() async { + if (Platform.isAndroid) { + await WiFiForIoTPlugin.forceWifiUsage(false); + } + return await WiFiForIoTPlugin.disconnect(); + } }

    vk&j7lR0Mr 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≥Z317Iku_Up%I4bJ()Lq(}BZ!3)!kDX`bw#jjdz~%oB4+LK&uP*Y z=`hCkYVD3-{s#v6Z;Ee89iSJ%#WT=t#>RPqZS3J?85&XI>E7Q<&CoXV+Y|tDiHyq^ z7@_ivY11M-WJ~twKjw#RM!UiQ@k3+B?Zrz01x*A4j`%7A*3g(DIde8;&++t?zuDmn zN!l(2t#_whfh3%s);8*xVt2znY)(!7DhRJIY5+SSVYDj<(?*?i0hCI9iaA0-9qAu> z50<<}NMXR|R*Zg+UK3sZtnn3+KBZpt9=^j3bK!Rt8`M-pUd6L_Ts~^WDlo_0={9pRd{VT$_TJ-8W^4-4Gm@4)pdnUx4^zUC&0PLz`wkPsltEDy?5Y2yaQ=&q z7+7#=@S4skCYTON{O=P0e;6o@sozGXu-_n1*Ve+kSECPC#iN(_m|_OJ0h3@WmU_5B z+Yf6~x4ix7NHdBmWl^%-EYz_}yzKclfW?twKymYY{F!iF=GfzotmEVv^)gonfwMI9 z%GtT15Oe+0ExDrr56F!iS)f)^-PyKQ(voG{RX+yY6eYi_0TB%V2d;%;R=e$yI;bpY zG{z8r1TJ&-o>Ot?hq%)xuxGL{8ccrV_^gup)fe+{a&wl$fV19ilD74CLtM`~I~%#h z?_+)SNLkjsw< zBC}Vsq7@v+I(CEmK~BFH!6kGMqMcfE)?g5K1M<4eH9`dgUL{bFHL>XG3SFfi6pQh}RLO+O8H5S$lI(ag}JjWq2LydAg;RQsuM_#=g z$cJ!%M!4KS+YQXV6RD>Jlxvb&v=!X5r=$;M7Y7jSI38pb{%%@fsCXB?q6H_N_mw*`8aFFfvf#-uGmO`A0{A- zHsp?P8U+Bte@IfeJCtNKSQHsHr)HQULbP>}zOKOJBgrD|PK_&?o&+cp;BuopGO}0c zy`d&XX9yB`wtqBws@2uaLnSBPJWMG2qByp+Os|zIT|A%l;+W+He5f$fGm@fr2q^PG zT4skf${d$PR50#4N&R3Wxku^EN9l(O5*GX<-M?XqMMmO=Z)o*sl7ExA`yT~ zpu^HXH&zTucKvHc{zcO<0#yZG-*;?%lCe+wlZjybHRVQ|zh-pLWWrlgFLm3?<@9?% z;|xe9j#P6!$YVYzBIBcF`>^e&;9VeEzqF}r{&!K+ZX*xZW9GtC&?cb)wQG&o-3bUJ zqs@t)TbsI|icmXFQdjc9uNHcd#H675P`gTL^Dw+o7~_<0vPXcFoKQj}Lcqj4C;a|w zP`wwD9W{UrpSUI%p_Hf>(e^bg>)cGF2*kFUQNeLgKLO>3AL*_CLp4NKAKzA3RJU0i zmi$IL8yVw!PVcy-w9aagwn}kHMGEMu=94qVe(ZLl(L%n@1%FB{0!lVw#C7V&C z%!ye>VL21oxGjdnBmf;u;PZ~!26(+jwS!aGXa%s%@f(B}e3MTAlO1ZGf^%f~)qcy; z0hQUmUV8U2;($8@*|MzL%t`ebDeq^Fm)C%ge+xovq?}IXq>%P)vt-w#?~dx{eAfTk ze|PEUh!MzqIDsQai@GMWtM4rm$1EFvOf4y)Nd9#HvuCOFDzu2NgH435p*hHpr(MrJ zm+?Kr5|rtts)vdq*OsG53(i=b^wHx�}P6w}PfMVx&N#nJT04Gpl_?j}@3R5oz)I zn4X_b*0mv=DW_Uqxbxu5g*a}i#2K<2fPC4qE|fB*nZ7eT002Hbr@ zeCrGP4#0MzEdLa503sIU?GH}TrmQc6*{CA4v~H}WcVSYR%~%s^MIJ^GHI^Pv;rg1L z3t^7w85i&VRdse){A|AEl8ck{t5?j3*-zh^cD3x?HYw^leO~m;TKD1+kor01J$F2^ z3Vx=}_1R_|T-7f zd;71NcAI0%gpOrCW+k{|&j#W{O+x0o4m-xWyFdG2jnNyngdS)3jDGwZzSy(~)6X|x z5c03>9mqth$BQ?82rBTF047I2#*(p~VMiCP1~hYY9`x*@8On#E9>4gA28bHVPyq5i z8Sqnwe9(mOxL-!0zD;@G(a(Mpt^WI22U%(N`G59n*)AJ>a<6OKHFreaAE4gWSgMt& z{vQbU>=kTL-PxWC-|401t!zV8s+5El-8%fJ>HUO8KK^T!Yud)ip2xCquVE}3`U8-x zsC@Oo@0v%!?XwCsmu|Mz2MK-x#Lbn3xIxSxhA=mZReh;BMa>0ksq7)!LO^$jyFmmfd9}* z^-L_eXsZh&gJ;OwImi2}FH{TAgY8kL+M{l_TPTZ3hM>F2LaQtuaz9%+B*^23L6XYb zi#h|JS0DamKPD2h_$yiN%UKO8l3oZb-&eho-X9pUaO7#=S|MaW4$vdA;Oep9*K6d(Glo^6C3ths+8s~CSMxP|s)g0Yu~<%^6vy$46)2j@%;1C}<^ z|Hn}{f}P2iN);02J%P>vlB%`}S9#$=0Ei4o--3V$G!mPP#zbBDRe# zLB(YB8(rgV+M7J9Efe|<*%U&qf11Ct?`rmN+F4cCBJ%^>*B{HSE#Kk&{XObgV;(hE z^%r&8Ex$n7v-cCDp0XBJva}~fH4T_J1jOk6CY5_sc5U9PFzoR+bP&cqEWLSTcj0nR zWUUcoE1wNBLHe=TGEg>~ib~V)JxDOoz(Hig%!%|YLp+YIpw=sLlsp)Wr=$>0$Ofi#7DX<2$_OHbgqw{qo`(Ou>&8&lVmX;ihgidKmf%v8iV$AYM=gsJrkYtc*--boWu z)y5e$4+Ka)?p?0Y3L*@v)Qns~>bE7UX&))r3VVAYN)Wcac+vk)T4wC^Wfx|BR%>+i zrSvUfj=J}Em+Q4{fBHNU$E}Aqo2&jc)S5nxyo50uS(wXJO>k;QY6N#;MOS-dtUvD2 zud@+})rv~dlnGQm-QwQB4Nud}N0-A=Wb8+x9raxI6LUZmdcte49`mz{g4d3NPdTxd z@J=N*Qu1bQdomdWQ(~}hho87=>@+|w^MxnBBJ;f_k#&h&Aa_5Znf=XUunFVV^dAk0K3V+#3`Tmy=`L6z>;SN~E& zBBj4mlka&*$2B%^WirV{G@RUCqZtsF07RlcUfQ>osGh!-7#3VDJXdROqQ3_~lxFin z)L6GaQG8Bni|TNeGnKLxx&EY}S%8nzxtqewM0I&KrdM>wi~d2nt!@5@QAy8*1I>G# z|926PmVKY*oF`FM@A-%T^pL7pi?iI$e+kKP#Ju{$m6J)%Hjn0riJQVRljlZsGmqwZ zkm`dFYSq#QwcPhiW)ky<$HY9BQQY}rqHWvWlZ)T2GXFdvsi4?xTWU57xjSc&$(T32 zQHHW{_bKVs4e#^<+CR^T=U;K8eRTh3&0FObP!IwXYYe+&K|MIol9kOR7u%>gF%(2d zH17#W1=D>teMw!iud`EsV?Dx}xA47jtV_%daQW#ld#_=%?DEadbkRwoPPLA^7pxf? z6_}~+hg4d@zQuP89{g`+M%$bL6SsdAHJ^Hg40Rw?ZDfod2~G4z{(DnZY3ju)Hbcjl z=GaX0^)47CK8TM4A^+iGwzbd2nSPa%b_Vl9Fo~ReOVrg12osl2hoK{8s5EbW}-4$f_xT;(yuMu+_=r_k6LD576bn5`Y*6aaRbxajC5MsJ1DS zBaQ$)G%VvZ1?Xfb7UeG)hY*o2q@l5XNzFb_Q}?-ZUqaN##ZV^z7)>5O=0?ikluN0a z{91L=Iyq0Devl_Cw*oB|!6sX}xiaa~N4eioJ;B#w_GHW-Rv1^@vjL0w(R1*xJI~+$ z&I-OQa!ua_n2#Ld-Wh&6s>#DW35pD~xohogv0n4Uql|MN`+3!B;zkwZ!q43X>T=p4 z!W+lBd%7Gp!d6h*Bi7qWv{3**WVNp9=^bpD+8j09lOQ>e!0AhpTjwoFW?)s9hkJcP zk?l-Si4jRdEDF;YK3rZ9tZ_+#vZd}cx4^joXu@>Nf+!tqEIDKc-dd7DSY2y+S@(}Ei$)ok7TLC4xw6t54e~|hC%^k?T^1?tE-+2zTeYYGZev5q^V(#_`GK2aWIki zVe7+U(?%QT&46fY0VY#Z1Ch>J2mMc=X?6rxB^S(Sl+>@@al`>^NEbE z4*@k6w*PK+OYc=$7;cj*y9gmGgv_EsI;C>ftM8dA{jWH6ZrZu`8GUv9BleWrYQ9X@ z3^(}J&Fu$C6~txT=haQMi{O4Q&(C@h3G29=+&+C;oTrQI%6o9}iuw)o4Zp;vD93Vq>U?Zc(|Hx%Bv3EkMoh{aAKbvof(Y8o48k$~Bf2;h`OL7Bf zGqoaB5}sv{PQ>g%D!-f5@Y46t5rR|~+5#S4?|4;t5NZ`DT)<3Q98ByvKMMNr?Y?oS z-Jy^16~#EO%|fJneb$}RkW(o=z1|b9@6CW@Xa&<*pSge@e&4CEa+)W4tjW*e-!PV8 z3uJRphItJ1I11!OM%xZ(`r@9~J7PV8tzUx;H1qw8aO2e;FUhpyS)_$ z|0c*R_qZrO!F<`~Ub~6LJVst(?1u2pe3SAF*Y?zGL>Bv`B)mfKXAiv&J7NgY&xn!& zK>-J6P~nl79s1<2daqqh)|-?Vw?@KKie0+}y~Y@^$&u28+!Kz zzoR;MYek*EY+HAO*daPHz(?KZN<@}<<+x)1D@OPL!TQCnTYP-dJZMizblmnm?5zOB z(}b9EGM2TeJM;#5k&WPW!s6BvedxYtEScQw1LXQ7J#7$?6{=Jk{-e+6y)BXFJ-tbN8*Y>kb6EFiD4-L_V;sND#xC_a%5UaBTEjSqn0?#` z?D8pOSn5{UUS}9RFDGM%q9r|xQ9l}I=5bu3LU}zs<4%C&i~vEbXbdugWxX1 z@ppaDi2zq@7g&!EQk?;L&F;VPQ(J-qWeMPw09=m%+rvf;Z@a?d-$C6w)2HF5W@V!u z#xRfb9JFC_W?gDt?^w(Arp|1Y2W!Za0)(LJ^nr(`#~DhabPPEr`RYjNj~suTi|$>@ zzH-_*6bvoyzb}a@pI?l$zY+&}oags_Ux5Ig-zk4~2!5Ueb={!|M1-poC087S!y8WN z`G;Qj(E_lbDXv(7sjA&-g6Od$BoQpfBk1WEJqT1$1Ugqc7V4-SiGN?=S zdSW<;3^FWU1cj`FB_0+hZuu@X)jYghW7Y}O+x`*oaWex_a%x|ul&uNQkbuaxMwbIh z)oxmR9)x-Q8w1h&w7KR`XkKoAVg)M!Fq{{mFy03)3POP zIqmk(*b$Axr6WPXfTP|y`^#Ls-_Z3J2!&*qJLA}!Gw?*V-Q}FjUTGs=>$4dXH9+;aoC&TpPNZ1!5siA-VureKol-H&GVY zaBa_?ywLZt4j-vjc0eZ?mdZm0rfIvljChmxY0RRAi-CBD1wD-Ki9R!lJQp8jCfRrp z=Cb>Ud)}s$ze}uq9tob}gPdcbZZ>-SYf@C*oYo(KW|0pS7&zS_3njef8p**u~XGHnZkbip+uDHFIo z_v@7)Y1zqw_KC~Ip(Q{yY|g@^n%!BAi)P^RGKeB8^rd&nIsc=l5pp13Em;Em9!u;d z08vqbyhgx$gm;dR;)b?G=qUFyRuQ{LoUn+i@ho@7cQb7<2ojC=FA|s)(~-L_A&w2e zi}@JUY7fMS*-5pQvYTxS>vb(CT_QsVQd9nv0@4g%@8)9QV!edq=E8?&iN8@WNg+OI$P-6eL~HtFY`((@%knd0+iMxWohO~ z#4y@2lfibK;Idro4?&+JLn49=D^)`e0xT!PZcMFV5xH3FHTy#R^_j{V7X_de32elY z^`S#RYX;{pg}$n9F_PukBp%i40aviZo{-Q{44A!5*wEUw2@Oo-V*F*9uy{S~2DvVr z2Ib1tIQ8w!-3+L|{kh#&5y*?hWhY7S;~(Hh0mvJ4RDUM9cHJyc0NE*Go2~)J?3|7d z6P;+Gxxee4yBe+d>F;1G7hD|gtt8x^L01eIz3NMO?&@$p3Jb7x1{^cYuQa4p@L{hj z-pYW?I+s~J4`pr0xhi&MCGD(I4Mh7y zAEFELgD(6*f*g*Aoh(Ma55T0N@fnQthWD4u={1o!rdZm6*ENm7!jJ$0)Bzjo78S~M zEpb04Y3O6z9S(FWMn5Krm9ikwSoux{`jXv1A7S_C2N)-7(#Kq2Q)rsVkZ*YZXy@7SJ6WwL^@|9T``Kd>(jyvj$#(SXT*u)zt zdBF*K3>5E?<9egY3w@)v`+P2qSWn6szI|m=(X+R5IQ7%BJJKbQs$H$XPN2>Js30vE z$%xG(22QKpURl}G^J_2yBu!-DH9rU<^?hUZlXkGh(|JOK2_%9IPyBXN)e}1ivzMAN;hx`R#?}a6KmrJG9~St2;NH^5DHRpU%ak2sJ1}+)v&_I8CPB{M zM@Tl0w2@Gk)*NtX`Qq-bJw5OvlDfCesmGE||L&3hWia?#i9CECUWY|QZl_;P09agP zqukOIDX;EnJ~A+ub$F*PX|L}<&odp@$(Imvav!OTcVjF^R3P=BQ}y9__PEBW0)_Cx zwdU(jR=B^__|=X?LlKzcbhrMu^XWjTW`puBuIs`4EcFZt@wO1Sy0j-pIst z=ZW9%zSBPTyMqQ&)Dg}V9@8N-tJo+FH+QSxN2xUsPQ2(6Q}~$eR5@thduwzpNR~@^ z{O-ANO3~vDoet#cU}cTQ{}$#3ta`l{g{}g~|23PQltW%5k*kAeqh9*W5%Ah7dCwaf zFFZZbQKp=1jk&P1Yg!OI_^_meq}aA89*D*c|M0-)+3KZXF0HlGVzPFdexo1v2WH>B zabmPfOLxY|<=E}U+j_Bawe?^{vURZV>^6WD*|d*11MLFW{VVRf+bgCZBHXcfua^v5 zY>T?fKJA2uYmfmIht_>?M;k88F{s%ckBE+scq8F$UNd}bZ=qIl(#yY1?=WIZBw;Jk z)Vp^!MeWFJVCf8g>E~GuKlYNdEwNv__jLadd1c8LWZan`7akwcz>-fQkz=cu8{9gE z|A2KCI}b!-_RT5EVW*QmbtGCZT7Miqd`IMwyY0uNi`4We>G=aQ`x&23Jt@hg9n;i> zUhD#vyOeek^A1d5blXVon>Y5?%;&7ai%XtJ=_*YrIV^!-QX zVXp8}kmyw&M5nC}bN)Q`{N*!D#72z9U-lCH+uYq?`Iy{gS({#ECAs!|xcYgx6>~YG z7Jj(}TI6`G5Pm82^%b_$#YJ4%=h5yqmFdGwtB-C?oi4y`b6BnB1hKAZ_DZQ_yP*S2 zkEodUIo0CP-cy;GjGAv?do10&_NAvs{^N6#tUigsH1Q^XHVcm!JFe=EQ8^PPw;y=D zl8dn3xrb`5F5hOLxQjgU(rfn(NXYcrq=bNp+&39tcte+9lgsPvD4brh?j`Bx(NA_s zI+KeeQ5Fwk+XkzfYOibk>QcAAyUVz;kZ7P!tOhTGY4T-+T^NueU-c>=9`ua#6kXLnH~g^wIT{p0prN*Jw@G+*06P zo!j8kbb2kxM^^?=E%*fnAN&-OKk_MV75AP$ojJxxf)vkO~&i`=Kdbt*COpg~b z+W^}H&)&<2IpfO>Uu&rkh1`9GKixfi?UiDT!`p&C-5J3&t3@>JipWRG$i#BTXOqv^ zzSUJeP4hGU{fX+rna`CgpFv>qA{hjR$?4EHphdby8%rZN1x2flihoM z0k=p<&6Ct{osF-t6PD5qZWC!IuoNr~w@ThKsH0Av1 z?xn9A2%LT(zp+VcZ4f1)+?$<3q{P58rJo|PG$U@6JlN^VSu2D39seSn#lwqbCu{k| z8lK)A(qE*p!uFG&SZP8zvc{2%)?Q;H(_!>{tpjfdBATw6#{Mkjov$bl@x%l*dmw>$F;40{xMX(qcgxmp%^5yAm)qQD52`>wwi&=O*B1yn?wd>z7F_uDdRQM`K3{32$w@nnL zg-ge&5sOa5rrr`6GTxmvI;1^94C!^RWaP6>wpdzY9z$u*Y(lH9oCo?sKkThTC-<25 zf&Y7rK<{idFLbVn5}Y!5jkBE;F{rN0?cXWMp<}Ya3cb}73kFPB3KT$XzRaRoD_xc< z@ZOx5&e#(>w~C~mCs7$rn-dvW$K7wdfTiT_`XuYw&YmqoUm)NUV#Kc`&XdMi(10`+hSdKYFv zY;%_FAK=xJLJ{60S?^;_^uRpM5yF_31VOKHA?UPM+r<^vkNi{;Qs%2%qga34F}^}| zFuX>+xjUf}7gPIW4j>p}UHx28?GXXmw?BTM4S7!XO-ZP|6>ts-j>jB5Uvor})@Vr^ z(>yC;j8F(~0}oe0`)mP8jq6+QD3AC9`>pTE!k)+0bGEWl6Yp36lDBkWQP$G_Fjh1= z!50IWSC{m>3w0wga(b||&>OhWli{`-#~0@Fsmj-w;V?~s3RS(}Z2e6~y;;PV`|@dE z6xCAQkM@s~Ex05UD`16}WJPhyJe0dyXh?r@J#YV?Ek4-`RLIbr7V)^P1CLDlFJmbU$kT$XO|pR?Ta*(2fjqC}A`q(SLxj~K-Wv;q)0cKgT!j8#Rj!-6fzB>m zA#~Q*9nr3}cJj?d=dU-FlZMRCw0=<#M?v2^u_>7fs(h-hd~$Mo{}&Nxr$}r(>tox0 zcVn5+)Z=}hh_+I@o2bK~aEX}V87s=>v+?h{$x_TH`D|Mgx0(g~9%g-vPG-HN#x@9s z5xStONmH1uek8LJ^np?GE!n(+OR1V(Zgs*_eiy0S4jWZpDd?ak%X?67Z8E6V&j6t` z)l~f6>b`ZrP)BODncx`m>_dL0hyNAM`&-cb&UZ%&_10%0DbGS^k^&bR4nmLop`;AUMxgRC~Ttbwx?H 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νg@j`^T}M| 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�jbOgR3^tCO} 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 _{3m==6ES?B;XNt>q&%f8^UkWn)G9I}J@9 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

  • Bp$o0z%s$t!Dm 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 SQiaL)4SgN-_)zB+VM_d-9)db3 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]GJ)q9V^ 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