From 7c1ac6b5465216d4303cb90e1a0ec9c9b17e2f9e Mon Sep 17 00:00:00 2001 From: louiscklaw Date: Fri, 20 Jun 2025 03:15:15 +0800 Subject: [PATCH] feat: add new CarousellMe routes for OffersMade and MyProfile pages with corresponding API integrations and UI components --- 03_source/mobile/src/PATHS.ts | 2 + 03_source/mobile/src/api/getCategory.tsx | 49 ++ 03_source/mobile/src/api/getFreshFinds.tsx | 76 ++++ 03_source/mobile/src/api/getProductList.tsx | 76 ++++ 03_source/mobile/src/api/getSegments.tsx | 14 + .../mobile/src/api/getSuggestedCategory.tsx | 33 ++ 03_source/mobile/src/api/getTestSvg.tsx | 97 ++++ 03_source/mobile/src/api/getTopPicks.tsx | 38 ++ 03_source/mobile/src/api/getTopSearches.tsx | 60 +++ .../mobile/src/api/getYourDailyPicks.tsx | 76 ++++ .../src/components/ProductCard/index.tsx | 71 +++ .../components/TopPicksProductCard/index.tsx | 46 ++ .../src/pages/Carousell/Home/Following.tsx | 8 + .../src/pages/Carousell/Home/FreeItems.tsx | 8 + .../src/pages/Carousell/Home/Nearby.tsx | 8 + .../src/pages/Carousell/Home/TopPicks.tsx | 57 +++ .../mobile/src/pages/Carousell/Home/index.tsx | 429 ++++++++++++++++++ .../src/pages/Carousell/Home/style.scss | 32 ++ .../src/pages/Carousell/ProductPage/index.tsx | 410 +++++++++++++++++ .../pages/Carousell/ProductPage/style.scss | 47 ++ ...sell-me-my-profile-2025-06-20-02_10_29.png | Bin 0 -> 21619 bytes ...ousell-me-insights-2025-06-20-02_11_40.png | Bin 0 -> 55704 bytes 03_source/mobile/src/pages/MainTabs/index.tsx | 14 +- .../mobile/src/pages/OffersMade/index.tsx | 68 +++ ...sell-me-OffersMade-2025-06-20-02_11_15.png | Bin 0 -> 19641 bytes .../mobile/src/pages/OffersMade/style.scss | 2 + ...ousell-me-settings-2025-06-20-02_12_04.png | Bin 0 -> 29978 bytes 27 files changed, 1717 insertions(+), 4 deletions(-) create mode 100644 03_source/mobile/src/api/getCategory.tsx create mode 100644 03_source/mobile/src/api/getFreshFinds.tsx create mode 100644 03_source/mobile/src/api/getProductList.tsx create mode 100644 03_source/mobile/src/api/getSegments.tsx create mode 100644 03_source/mobile/src/api/getSuggestedCategory.tsx create mode 100644 03_source/mobile/src/api/getTestSvg.tsx create mode 100644 03_source/mobile/src/api/getTopPicks.tsx create mode 100644 03_source/mobile/src/api/getTopSearches.tsx create mode 100644 03_source/mobile/src/api/getYourDailyPicks.tsx create mode 100644 03_source/mobile/src/components/ProductCard/index.tsx create mode 100644 03_source/mobile/src/components/TopPicksProductCard/index.tsx create mode 100644 03_source/mobile/src/pages/Carousell/Home/Following.tsx create mode 100644 03_source/mobile/src/pages/Carousell/Home/FreeItems.tsx create mode 100644 03_source/mobile/src/pages/Carousell/Home/Nearby.tsx create mode 100644 03_source/mobile/src/pages/Carousell/Home/TopPicks.tsx create mode 100644 03_source/mobile/src/pages/Carousell/Home/index.tsx create mode 100644 03_source/mobile/src/pages/Carousell/Home/style.scss create mode 100644 03_source/mobile/src/pages/Carousell/ProductPage/index.tsx create mode 100644 03_source/mobile/src/pages/Carousell/ProductPage/style.scss create mode 100644 03_source/mobile/src/pages/CarousellMe/MyProfile/screencapture-localhost-8081-tabs-carousell-me-my-profile-2025-06-20-02_10_29.png create mode 100644 03_source/mobile/src/pages/Insights/screencapture-localhost-8081-tabs-carousell-me-insights-2025-06-20-02_11_40.png create mode 100644 03_source/mobile/src/pages/OffersMade/index.tsx create mode 100644 03_source/mobile/src/pages/OffersMade/screencapture-localhost-8081-tabs-carousell-me-OffersMade-2025-06-20-02_11_15.png create mode 100644 03_source/mobile/src/pages/OffersMade/style.scss create mode 100644 03_source/mobile/src/pages/tabs/carousell_me/settings/screencapture-localhost-8081-carousell-me-settings-2025-06-20-02_12_04.png diff --git a/03_source/mobile/src/PATHS.ts b/03_source/mobile/src/PATHS.ts index bca10ac..fc3883a 100644 --- a/03_source/mobile/src/PATHS.ts +++ b/03_source/mobile/src/PATHS.ts @@ -108,6 +108,8 @@ const PATHS = { CAROUSELL_ME_QR: '/tabs/carousell_me/qr_page', CAROUSELL_ME_SETTINGS: '/carousell_me/settings', CAROUSELL_ME_INSIGHTS: '/tabs/carousell_me/insights', + CAROUSELL_ME_OFFERS_MADE: '/tabs/carousell_me/OffersMade', + CAROUSELL_ME_MY_PROFILE: '/tabs/carousell_me/my_profile', // HOTEL_WELCOME_TOUR: '/hotel_service_intro', HOTEL_INTRO: '/tabs/hotel_intro', diff --git a/03_source/mobile/src/api/getCategory.tsx b/03_source/mobile/src/api/getCategory.tsx new file mode 100644 index 0000000..3df08af --- /dev/null +++ b/03_source/mobile/src/api/getCategory.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import getTestSvg from './getTestSvg'; + +async function getCategory(): Promise { + let list = [ + { name: 'Following', avatar: '' }, + { name: 'Computers & Tech', avatar: '' }, + { name: "Women's Fashion", avatar: '' }, + { name: "Men's Fashion", avatar: '' }, + { name: 'Beauty & Personal Care', avatar: '' }, + { name: 'Free Items', avatar: '' }, + { name: 'Audio', avatar: '' }, + { name: 'Furniture & Home Living', avatar: '' }, + { name: 'Babies & Kids', avatar: '' }, + { name: 'Health & Nutrition', avatar: '' }, + { name: 'Food & Drinks', avatar: '' }, + { name: 'Tickets & Vouchers', avatar: '' }, + { name: 'Auto Accessories', avatar: '' }, + { name: 'Community', avatar: '' }, + { name: 'Looking For', avatar: '' }, + { name: 'Announcements', avatar: '' }, + { name: 'Services', avatar: '' }, + { name: 'Mobile Phones & Gadgets', avatar: '' }, + { name: 'Property', avatar: '' }, + { name: 'Cars', avatar: '' }, + { name: 'Luxury', avatar: '' }, + { name: 'Video Gaming', avatar: '' }, + { name: 'Photography', avatar: '' }, + { name: 'TV & Home Appliances', avatar: '' }, + { name: 'Hobbies & Toys', avatar: '' }, + { name: 'Sports', avatar: '' }, + { name: 'Equipment', avatar: '' }, + { name: 'Pet Supplies', avatar: '' }, + { name: 'Motorbikes', avatar: '' }, + { name: 'Jobs', avatar: '' }, + { name: 'Preorders', avatar: '' }, + { name: 'Everything Else', avatar: '' }, + ]; + + for (var i = 0; i < list.length; i++) { + list[i].avatar = await getTestSvg(); + } + + return new Promise((res, rej) => { + res(list); + }); +} + +export default getCategory; diff --git a/03_source/mobile/src/api/getFreshFinds.tsx b/03_source/mobile/src/api/getFreshFinds.tsx new file mode 100644 index 0000000..86e2bdf --- /dev/null +++ b/03_source/mobile/src/api/getFreshFinds.tsx @@ -0,0 +1,76 @@ +import React from 'react'; +import getUnsplashRandomImage from './getUnsplashRandomImage'; + +const ContentMd = `幫個忙,睇埋落去先啦.... + +🈺 視乎難度收費,或者你比個 budget plan 諗下都得 +Charge subject to difficulties with the task(s), or bring your budget plan to me... + +💁‍♂️ 服務內容 : +- 代寫程式 ... ( html/javascript/python coding commission) +- 簡易 個人 / 公司網站 / 靜態網站 製作 (static/pwa webpage) +- 網店 / 網購平台製作, 網址 / 域名註冊,網站發佈 (deploy) +- 手機應用程式 (expo/ionic/android) +- 任何自定義 / 量身定做方案, 其他 IT 相關解決方案 (solution / AI) +- Wordpress 公司/個人網頁 +- 網上資料搜集 scraping/harvesting/crawing +- source code 想知點解咁寫開聲問,唔明講到你明 +- 補習 / 指導 + - 如需補習/備課的話,請給我看看所需要課堂資料或者問題, + - 我對你個人資料沒有興趣,你大可以將個人資料屏蔽先 send 比我 + - 世界這麼大,我只是想知道你遇到什麽問題,謝謝 +- 寫bot (請先 PM 我, 要睇睇目的先答做唔做.... book場/搶飛 唔洗問 😊) + +💬 吹水閒偈/諮詢攞下意見免費 😊 (睇心情 / 難度答 😂) +Please DM / PM consultation for free ( But no guaranteed answer... depends... ) + +👋 髒話說在前面 ( Salutations being said in front ) : +- 一般黎講,我會維持對客人應有嘅禮貌同埋尊重 (a.k.a. 互相尊重, implicatively 講左D乜請自己諗... ) +- 同一時間我嘅禮貎都只會展示俾對我有禮貌嘅人睇。 +- 我就是我本人,不是中介,由對接到做嘅都係我,有懷疑者不用找我 👋 👋 。 +- 我唔係你肚入面條蟲,我唔會知你心入面有乜 requirement ... 最簡單係叫你比份 requirements/pdf 我,如果你覺得比個原始 file 我係好難接受嘅話(前題係當然你可以預先 blur 敏感資料),唔使搵我👋 👋 + +多謝你睇到喱度,我知我好長氣,若然仲有興趣搵我做野的話, +第一句同我講 “Hi, 寶達邨的豬~”,我會講整個購物體驗應該會對你有利 😊... +完... + +🍖 Some demo: +- some site demos: +https://louiscklaw.github.io/work + +若果想做 opencv/machine learning 野,可到此 post +https://www.carousell.com.hk/p/1338018892/ + +🔖 Tags: +#reactjs #nodejs #nextjs #typescript #programming #python #html #css #coding #vue #expo #frontend #backend #laravel #github #bot #vba #docker #opencv #mobile-app #LLM #GPT #huggingface #llama #ollama #debug #figma #ICT #opensource #processing #flow-field #網站 #爬蟲 #scraping #RPA #ABAP #FYP #STEM #project #tkinter #shopping-cart #網頁製作 #公司網站 #網店 #整網頁 #一對一教學 #私補 #私教 #補習 #教材 #代編程 #定制程序代寫 #internship #intern #colab #jupyter #raspberry-pi #arduino #openai-gym #gymnasium #app-inventor #microbit #團購 #賭波 #賭馬 #股票 #六合彩 #港股工具 #股票工具 #求助 #28car #智慧轉型 + +#switch2 #switch-2 #adidas #airpods-pro-2 #babymonster #celine #chanel #chiikawa #coach #crybaby #dear jane #dior #fujifilm #fujifilm #goyard #hermes #hermes #ipad #iphone #jellycat #labubu #loewe #longchamp #lululemon #lululemon #lv #macbook #minecraft #pokemon #prada #ps4 #ps5 #rolex #samsung #sony #lego #metal-build #yoga #hottoys #riize #roblox #part-time #街馬-2025 #Blackpink演唱會 #淘佳佳 #i-am-gloria + +# updated: 2025-06-16 +`.trim(); + +const userJson = { + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + name: 'louis_coding', + since: 'Joined 4 years ago', + verified: true, + rating: 5.0, + total_comment: 37, +}; + +const productSample = { + category: { main: 'Services', sub_cat: ['Learning & Enrichment', 'Enrichment & Tuition'] }, + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + title: '#html #css #開發 #指導 ', + price: 30, + content: ContentMd, + user: userJson, +}; + +function getFreshFinds(): Promise { + return new Promise((res, rej) => { + res([productSample, productSample, productSample, productSample, productSample, productSample]); + }); +} + +export default getFreshFinds; diff --git a/03_source/mobile/src/api/getProductList.tsx b/03_source/mobile/src/api/getProductList.tsx new file mode 100644 index 0000000..8293cf5 --- /dev/null +++ b/03_source/mobile/src/api/getProductList.tsx @@ -0,0 +1,76 @@ +import React from 'react'; +import getUnsplashRandomImage from './getUnsplashRandomImage'; + +const ContentMd = `幫個忙,睇埋落去先啦.... + +🈺 視乎難度收費,或者你比個 budget plan 諗下都得 +Charge subject to difficulties with the task(s), or bring your budget plan to me... + +💁‍♂️ 服務內容 : +- 代寫程式 ... ( html/javascript/python coding commission) +- 簡易 個人 / 公司網站 / 靜態網站 製作 (static/pwa webpage) +- 網店 / 網購平台製作, 網址 / 域名註冊,網站發佈 (deploy) +- 手機應用程式 (expo/ionic/android) +- 任何自定義 / 量身定做方案, 其他 IT 相關解決方案 (solution / AI) +- Wordpress 公司/個人網頁 +- 網上資料搜集 scraping/harvesting/crawing +- source code 想知點解咁寫開聲問,唔明講到你明 +- 補習 / 指導 + - 如需補習/備課的話,請給我看看所需要課堂資料或者問題, + - 我對你個人資料沒有興趣,你大可以將個人資料屏蔽先 send 比我 + - 世界這麼大,我只是想知道你遇到什麽問題,謝謝 +- 寫bot (請先 PM 我, 要睇睇目的先答做唔做.... book場/搶飛 唔洗問 😊) + +💬 吹水閒偈/諮詢攞下意見免費 😊 (睇心情 / 難度答 😂) +Please DM / PM consultation for free ( But no guaranteed answer... depends... ) + +👋 髒話說在前面 ( Salutations being said in front ) : +- 一般黎講,我會維持對客人應有嘅禮貌同埋尊重 (a.k.a. 互相尊重, implicatively 講左D乜請自己諗... ) +- 同一時間我嘅禮貎都只會展示俾對我有禮貌嘅人睇。 +- 我就是我本人,不是中介,由對接到做嘅都係我,有懷疑者不用找我 👋 👋 。 +- 我唔係你肚入面條蟲,我唔會知你心入面有乜 requirement ... 最簡單係叫你比份 requirements/pdf 我,如果你覺得比個原始 file 我係好難接受嘅話(前題係當然你可以預先 blur 敏感資料),唔使搵我👋 👋 + +多謝你睇到喱度,我知我好長氣,若然仲有興趣搵我做野的話, +第一句同我講 “Hi, 寶達邨的豬~”,我會講整個購物體驗應該會對你有利 😊... +完... + +🍖 Some demo: +- some site demos: +https://louiscklaw.github.io/work + +若果想做 opencv/machine learning 野,可到此 post +https://www.carousell.com.hk/p/1338018892/ + +🔖 Tags: +#reactjs #nodejs #nextjs #typescript #programming #python #html #css #coding #vue #expo #frontend #backend #laravel #github #bot #vba #docker #opencv #mobile-app #LLM #GPT #huggingface #llama #ollama #debug #figma #ICT #opensource #processing #flow-field #網站 #爬蟲 #scraping #RPA #ABAP #FYP #STEM #project #tkinter #shopping-cart #網頁製作 #公司網站 #網店 #整網頁 #一對一教學 #私補 #私教 #補習 #教材 #代編程 #定制程序代寫 #internship #intern #colab #jupyter #raspberry-pi #arduino #openai-gym #gymnasium #app-inventor #microbit #團購 #賭波 #賭馬 #股票 #六合彩 #港股工具 #股票工具 #求助 #28car #智慧轉型 + +#switch2 #switch-2 #adidas #airpods-pro-2 #babymonster #celine #chanel #chiikawa #coach #crybaby #dear jane #dior #fujifilm #fujifilm #goyard #hermes #hermes #ipad #iphone #jellycat #labubu #loewe #longchamp #lululemon #lululemon #lv #macbook #minecraft #pokemon #prada #ps4 #ps5 #rolex #samsung #sony #lego #metal-build #yoga #hottoys #riize #roblox #part-time #街馬-2025 #Blackpink演唱會 #淘佳佳 #i-am-gloria + +# updated: 2025-06-16 +`.trim(); + +const userJson = { + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + name: 'louis_coding', + since: 'Joined 4 years ago', + verified: true, + rating: 5.0, + total_comment: 37, +}; + +const productSample = { + category: { main: 'Services', sub_cat: ['Learning & Enrichment', 'Enrichment & Tuition'] }, + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + title: '#html #css #開發 #指導 ', + price: 30, + content: ContentMd, + user: userJson, +}; + +function getProductList(): Promise { + return new Promise((res, rej) => { + res([productSample, productSample, productSample, productSample, productSample, productSample]); + }); +} + +export default getProductList; diff --git a/03_source/mobile/src/api/getSegments.tsx b/03_source/mobile/src/api/getSegments.tsx new file mode 100644 index 0000000..c449840 --- /dev/null +++ b/03_source/mobile/src/api/getSegments.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +function getSegments(): Promise { + return new Promise((res, rej) => { + res([ + { name: 'Top picks', slug: 'top-picks' }, + { name: 'Free items', slug: 'free-items' }, + { name: 'Following', slug: 'following' }, + { name: 'Nearby', slug: 'nearby' }, + ]); + }); +} + +export default getSegments; diff --git a/03_source/mobile/src/api/getSuggestedCategory.tsx b/03_source/mobile/src/api/getSuggestedCategory.tsx new file mode 100644 index 0000000..3b83300 --- /dev/null +++ b/03_source/mobile/src/api/getSuggestedCategory.tsx @@ -0,0 +1,33 @@ +import React from 'react'; + +function getSuggestedCategory(): Promise { + return new Promise((res, rej) => { + res([ + '代做', + 'cisco', + 'm1', + 'pro', + '顯示器支架', + 'kfc', + 'nas', + 'la', + 'prairie', + 'vr', + '代做', + 'cisco', + 'm1', + 'pro', + '顯示器支架', + 'kfc', + 'nas', + 'la', + 'prairie', + 'vr', + '顯示器支架', + 'kfc', + 'nas', + ]); + }); +} + +export default getSuggestedCategory; diff --git a/03_source/mobile/src/api/getTestSvg.tsx b/03_source/mobile/src/api/getTestSvg.tsx new file mode 100644 index 0000000..4ac276f --- /dev/null +++ b/03_source/mobile/src/api/getTestSvg.tsx @@ -0,0 +1,97 @@ +import React from 'react'; + +import airConditioningCoolingHeatTemperatureSvgrepoComSvg from './svgs/air-conditioning-cooling-heat-temperature-svgrepo-com.svg'; +import alertAttentionCautionDangerousWarningSvgrepoComSvg from './svgs/alert-attention-caution-dangerous-warning-svgrepo-com.svg'; +import alertBellCallMessageSignSvgrepoComSvg from './svgs/alert-bell-call-message-sign-svgrepo-com.svg'; +import assistanceBusinessPersonReceptionServiceSvgrepoComSvg from './svgs/assistance-business-person-reception-service-svgrepo-com.svg'; +import bagBaggageLuggageSuitcaseTravelSvgrepoComSvg from './svgs/bag-baggage-luggage-suitcase-travel-svgrepo-com.svg'; +import baggageBellhopHotelServiceWaiterSvgrepoComSvg from './svgs/baggage-bellhop-hotel-service-waiter-svgrepo-com.svg'; +import bagHolidayJourneySuitcaseVacationSvgrepoComSvg from './svgs/bag-holiday-journey-suitcase-vacation-svgrepo-com.svg'; +import bankingFinancialMoneyPaymentTransactionSvgrepoComSvg from './svgs/banking-financial-money-payment-transaction-svgrepo-com.svg'; +import barCafeChairClubStoolSvgrepoComSvg from './svgs/bar-cafe-chair-club-stool-svgrepo-com.svg'; +import bathBathroomCottonTextileTowelSvgrepoComSvg from './svgs/bath-bathroom-cotton-textile-towel-svgrepo-com.svg'; +import bathroomBathtubBubbleFoamWaterSvgrepoComSvg from './svgs/bathroom-bathtub-bubble-foam-water-svgrepo-com.svg'; +import bathroomFaucetRoomSinkWashSvgrepoComSvg from './svgs/bathroom-faucet-room-sink-wash-svgrepo-com.svg'; +import bedFurnitureInteriorPillowRest2SvgrepoComSvg from './svgs/bed-furniture-interior-pillow-rest-2-svgrepo-com.svg'; +import bedFurnitureInteriorPillowRest3SvgrepoComSvg from './svgs/bed-furniture-interior-pillow-rest-3-svgrepo-com.svg'; +import bedFurnitureInteriorPillowRestSvgrepoComSvg from './svgs/bed-furniture-interior-pillow-rest-svgrepo-com.svg'; +import bookCatalogDocumentGuidebookInstructionSvgrepoComSvg from './svgs/book-catalog-document-guidebook-instruction-svgrepo-com.svg'; +import businessFinanceMoneySavingWalletSvgrepoComSvg from './svgs/business-finance-money-saving-wallet-svgrepo-com.svg'; +import cafeCardFoodMenuVintageSvgrepoComSvg from './svgs/cafe-card-food-menu-vintage-svgrepo-com.svg'; +import cafeCupDrinkMugTeaSvgrepoComSvg from './svgs/cafe-cup-drink-mug-tea-svgrepo-com.svg'; +import calendarDateDayMonthTimeSvgrepoComSvg from './svgs/calendar-date-day-month-time-svgrepo-com.svg'; +import cappuccinoCoffeeCupDrinkEspresso2SvgrepoComSvg from './svgs/cappuccino-coffee-cup-drink-espresso-2-svgrepo-com.svg'; +import cappuccinoCoffeeCupDrinkEspressoSvgrepoComSvg from './svgs/cappuccino-coffee-cup-drink-espresso-svgrepo-com.svg'; +import cardCreditCurrencyFinanceMoneySvgrepoComSvg from './svgs/card-credit-currency-finance-money-svgrepo-com.svg'; +import cardDoorKeyLockSecuritySvgrepoComSvg from './svgs/card-door-key-lock-security-svgrepo-com.svg'; +import chairComfortableDecorationGardenTerraceSvgrepoComSvg from './svgs/chair-comfortable-decoration-garden-terrace-svgrepo-com.svg'; +import cleanClothingLaundryWashingWindSvgrepoComSvg from './svgs/clean-clothing-laundry-washing-wind-svgrepo-com.svg'; +import comfortableFabricFootwearShoeSlipperSvgrepoComSvg from './svgs/comfortable-fabric-footwear-shoe-slipper-svgrepo-com.svg'; +import couponEntertainmentEventPaperTicketSvgrepoComSvg from './svgs/coupon-entertainment-event-paper-ticket-svgrepo-com.svg'; +import doorElevatorEntranceFloorLiftSvgrepoComSvg from './svgs/door-elevator-entrance-floor-lift-svgrepo-com.svg'; +import doorEnterEntryExitOpenSvgrepoComSvg from './svgs/door-enter-entry-exit-open-svgrepo-com.svg'; +import doorEntranceHandleKeySecuritySvgrepoComSvg from './svgs/door-entrance-handle-key-security-svgrepo-com.svg'; +import doorKeyLockRoomSecuritySvgrepoComSvg from './svgs/door-key-lock-room-security-svgrepo-com.svg'; +import electronicInternetScreenTechnologyTelevisionSvgrepoComSvg from './svgs/electronic-internet-screen-technology-television-svgrepo-com.svg'; +import holidayHotelJourneyServiceTravel2SvgrepoComSvg from './svgs/holiday-hotel-journey-service-travel-2-svgrepo-com.svg'; +import holidayHotelJourneyServiceTravelSvgrepoComSvg from './svgs/holiday-hotel-journey-service-travel-svgrepo-com.svg'; +import holidayHotelMotelSignTravelSvgrepoComSvg from './svgs/holiday-hotel-motel-sign-travel-svgrepo-com.svg'; +import holidayJourneyLuggageSuitcaseVacation2SvgrepoComSvg from './svgs/holiday-journey-luggage-suitcase-vacation-2-svgrepo-com.svg'; +import hotelLocationMapPinTravelSvgrepoComSvg from './svgs/hotel-location-map-pin-travel-svgrepo-com.svg'; + +const svgList = [ + airConditioningCoolingHeatTemperatureSvgrepoComSvg, + alertAttentionCautionDangerousWarningSvgrepoComSvg, + alertBellCallMessageSignSvgrepoComSvg, + assistanceBusinessPersonReceptionServiceSvgrepoComSvg, + bagBaggageLuggageSuitcaseTravelSvgrepoComSvg, + baggageBellhopHotelServiceWaiterSvgrepoComSvg, + bagHolidayJourneySuitcaseVacationSvgrepoComSvg, + bankingFinancialMoneyPaymentTransactionSvgrepoComSvg, + barCafeChairClubStoolSvgrepoComSvg, + bathBathroomCottonTextileTowelSvgrepoComSvg, + bathroomBathtubBubbleFoamWaterSvgrepoComSvg, + bathroomFaucetRoomSinkWashSvgrepoComSvg, + bedFurnitureInteriorPillowRest2SvgrepoComSvg, + bedFurnitureInteriorPillowRest3SvgrepoComSvg, + bedFurnitureInteriorPillowRestSvgrepoComSvg, + bookCatalogDocumentGuidebookInstructionSvgrepoComSvg, + businessFinanceMoneySavingWalletSvgrepoComSvg, + cafeCardFoodMenuVintageSvgrepoComSvg, + cafeCupDrinkMugTeaSvgrepoComSvg, + calendarDateDayMonthTimeSvgrepoComSvg, + cappuccinoCoffeeCupDrinkEspresso2SvgrepoComSvg, + cappuccinoCoffeeCupDrinkEspressoSvgrepoComSvg, + cardCreditCurrencyFinanceMoneySvgrepoComSvg, + cardDoorKeyLockSecuritySvgrepoComSvg, + chairComfortableDecorationGardenTerraceSvgrepoComSvg, + cleanClothingLaundryWashingWindSvgrepoComSvg, + comfortableFabricFootwearShoeSlipperSvgrepoComSvg, + couponEntertainmentEventPaperTicketSvgrepoComSvg, + doorElevatorEntranceFloorLiftSvgrepoComSvg, + doorEnterEntryExitOpenSvgrepoComSvg, + doorEntranceHandleKeySecuritySvgrepoComSvg, + doorKeyLockRoomSecuritySvgrepoComSvg, + electronicInternetScreenTechnologyTelevisionSvgrepoComSvg, + holidayHotelJourneyServiceTravel2SvgrepoComSvg, + holidayHotelJourneyServiceTravelSvgrepoComSvg, + holidayHotelMotelSignTravelSvgrepoComSvg, + holidayJourneyLuggageSuitcaseVacation2SvgrepoComSvg, + hotelLocationMapPinTravelSvgrepoComSvg, +]; + +function getRandomInt(max: number) { + return Math.floor(Math.random() * max); +} + +function getTestSvg(): Promise { + let { length } = svgList; + let randomIdx = getRandomInt(length - 1); + + console.log({ findme: svgList[randomIdx] }); + return new Promise((res, rej) => { + res(svgList[randomIdx]); + }); +} + +export default getTestSvg; diff --git a/03_source/mobile/src/api/getTopPicks.tsx b/03_source/mobile/src/api/getTopPicks.tsx new file mode 100644 index 0000000..9c08d82 --- /dev/null +++ b/03_source/mobile/src/api/getTopPicks.tsx @@ -0,0 +1,38 @@ +import React from 'react'; +import getUnsplashRandomImage from './getUnsplashRandomImage'; + +const ContentMd = `helloworld `.trim(); + +const userJson = { + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + name: 'louis_coding', + since: 'Joined 4 years ago', + verified: true, + rating: 5.0, + total_comment: 37, +}; + +const productSample = { + category: { main: 'Services', sub_cat: ['Learning & Enrichment', 'Enrichment & Tuition'] }, + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + title: '#html #css #開發 #指導 ', + price: 30, + content: ContentMd, + user: userJson, +}; + +function getTopPicks(): Promise { + return new Promise((res, rej) => { + res([ + productSample, + productSample, + productSample, + productSample, + productSample, + productSample, + productSample, + ]); + }); +} + +export default getTopPicks; diff --git a/03_source/mobile/src/api/getTopSearches.tsx b/03_source/mobile/src/api/getTopSearches.tsx new file mode 100644 index 0000000..945196f --- /dev/null +++ b/03_source/mobile/src/api/getTopSearches.tsx @@ -0,0 +1,60 @@ +import React from 'react'; + +function getTopSearches(): Promise { + return new Promise((res, rej) => { + res([ + 'blackpink', + 'ps5', + 'blackpink 演唱會', + 'chanel', + 'iphone', + '陳奕迅演唱會', + 'hermes', + '海港城coupon', + '利是封', + 'ipad', + 'apple watch', + 'dior', + 'celine', + '迪士尼門票', + 'lv', + 'nike', + '張敬軒', + 'gucci', + 'lego', + 'ps4', + 'loewe', + 'casetify', + '單車', + 'eason 演唱會', + 'rolex', + 'slam dunk', + 'airpods pro', + 'coach', + '電視', + 'bearbrick', + '雪櫃', + 'mc', + 'prada', + 'samsung', + 'dyson', + 'burberry', + '張敬軒演唱會', + 'pokemon', + 'ikea', + 'linabell', + 'dunk low', + '陳奕迅', + 'balenciaga', + '梳化', + 'mirror', + 'sony', + '麻雀', + 'tory burch', + 'marshall', + '行李箱', + ]); + }); +} + +export default getTopSearches; diff --git a/03_source/mobile/src/api/getYourDailyPicks.tsx b/03_source/mobile/src/api/getYourDailyPicks.tsx new file mode 100644 index 0000000..a213379 --- /dev/null +++ b/03_source/mobile/src/api/getYourDailyPicks.tsx @@ -0,0 +1,76 @@ +import React from 'react'; +import getUnsplashRandomImage from './getUnsplashRandomImage'; + +const ContentMd = `幫個忙,睇埋落去先啦.... + +🈺 視乎難度收費,或者你比個 budget plan 諗下都得 +Charge subject to difficulties with the task(s), or bring your budget plan to me... + +💁‍♂️ 服務內容 : +- 代寫程式 ... ( html/javascript/python coding commission) +- 簡易 個人 / 公司網站 / 靜態網站 製作 (static/pwa webpage) +- 網店 / 網購平台製作, 網址 / 域名註冊,網站發佈 (deploy) +- 手機應用程式 (expo/ionic/android) +- 任何自定義 / 量身定做方案, 其他 IT 相關解決方案 (solution / AI) +- Wordpress 公司/個人網頁 +- 網上資料搜集 scraping/harvesting/crawing +- source code 想知點解咁寫開聲問,唔明講到你明 +- 補習 / 指導 + - 如需補習/備課的話,請給我看看所需要課堂資料或者問題, + - 我對你個人資料沒有興趣,你大可以將個人資料屏蔽先 send 比我 + - 世界這麼大,我只是想知道你遇到什麽問題,謝謝 +- 寫bot (請先 PM 我, 要睇睇目的先答做唔做.... book場/搶飛 唔洗問 😊) + +💬 吹水閒偈/諮詢攞下意見免費 😊 (睇心情 / 難度答 😂) +Please DM / PM consultation for free ( But no guaranteed answer... depends... ) + +👋 髒話說在前面 ( Salutations being said in front ) : +- 一般黎講,我會維持對客人應有嘅禮貌同埋尊重 (a.k.a. 互相尊重, implicatively 講左D乜請自己諗... ) +- 同一時間我嘅禮貎都只會展示俾對我有禮貌嘅人睇。 +- 我就是我本人,不是中介,由對接到做嘅都係我,有懷疑者不用找我 👋 👋 。 +- 我唔係你肚入面條蟲,我唔會知你心入面有乜 requirement ... 最簡單係叫你比份 requirements/pdf 我,如果你覺得比個原始 file 我係好難接受嘅話(前題係當然你可以預先 blur 敏感資料),唔使搵我👋 👋 + +多謝你睇到喱度,我知我好長氣,若然仲有興趣搵我做野的話, +第一句同我講 “Hi, 寶達邨的豬~”,我會講整個購物體驗應該會對你有利 😊... +完... + +🍖 Some demo: +- some site demos: +https://louiscklaw.github.io/work + +若果想做 opencv/machine learning 野,可到此 post +https://www.carousell.com.hk/p/1338018892/ + +🔖 Tags: +#reactjs #nodejs #nextjs #typescript #programming #python #html #css #coding #vue #expo #frontend #backend #laravel #github #bot #vba #docker #opencv #mobile-app #LLM #GPT #huggingface #llama #ollama #debug #figma #ICT #opensource #processing #flow-field #網站 #爬蟲 #scraping #RPA #ABAP #FYP #STEM #project #tkinter #shopping-cart #網頁製作 #公司網站 #網店 #整網頁 #一對一教學 #私補 #私教 #補習 #教材 #代編程 #定制程序代寫 #internship #intern #colab #jupyter #raspberry-pi #arduino #openai-gym #gymnasium #app-inventor #microbit #團購 #賭波 #賭馬 #股票 #六合彩 #港股工具 #股票工具 #求助 #28car #智慧轉型 + +#switch2 #switch-2 #adidas #airpods-pro-2 #babymonster #celine #chanel #chiikawa #coach #crybaby #dear jane #dior #fujifilm #fujifilm #goyard #hermes #hermes #ipad #iphone #jellycat #labubu #loewe #longchamp #lululemon #lululemon #lv #macbook #minecraft #pokemon #prada #ps4 #ps5 #rolex #samsung #sony #lego #metal-build #yoga #hottoys #riize #roblox #part-time #街馬-2025 #Blackpink演唱會 #淘佳佳 #i-am-gloria + +# updated: 2025-06-16 +`.trim(); + +const userJson = { + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + name: 'louis_coding', + since: 'Joined 4 years ago', + verified: true, + rating: 5.0, + total_comment: 37, +}; + +const productSample = { + category: { main: 'Services', sub_cat: ['Learning & Enrichment', 'Enrichment & Tuition'] }, + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + title: '#html #css #開發 #指導 ', + price: 30, + content: ContentMd, + user: userJson, +}; + +function getYourDailyPicks(): Promise { + return new Promise((res, rej) => { + res([productSample, productSample, productSample, productSample, productSample, productSample]); + }); +} + +export default getYourDailyPicks; diff --git a/03_source/mobile/src/components/ProductCard/index.tsx b/03_source/mobile/src/components/ProductCard/index.tsx new file mode 100644 index 0000000..dc97e7b --- /dev/null +++ b/03_source/mobile/src/components/ProductCard/index.tsx @@ -0,0 +1,71 @@ +import React, { useState } from 'react'; + +import { + IonHeader, + IonTitle, + IonToolbar, + IonContent, + IonPage, + IonButtons, + IonBadge, + IonMenuButton, + IonButton, + IonIcon, + IonDatetime, + IonSelectOption, + IonList, + IonItem, + IonLabel, + IonSelect, + IonPopover, + IonText, + IonCard, + IonCardHeader, + IonCardTitle, + IonCardSubtitle, + IonCardContent, + IonTabs, + IonTabBar, + IonTabButton, + IonSegment, + IonSegmentButton, + useIonRouter, + IonSearchbar, + IonRow, + IonCol, +} from '@ionic/react'; + +// const ProductCard: React.FC = ({product}) => +function ProductCard({ product }: { product: any }) { + return ( + <> + console.log('helloworld')} + > +
+ + + {'#html #css #開發 #指導 #代做 #電子平台 #programming #coding #javascript #python #react #debug' + .split('') + .slice(0, 20)} + + Card Subtitle + + View Insights +
+ + ); +} + +export default ProductCard; diff --git a/03_source/mobile/src/components/TopPicksProductCard/index.tsx b/03_source/mobile/src/components/TopPicksProductCard/index.tsx new file mode 100644 index 0000000..5b96a62 --- /dev/null +++ b/03_source/mobile/src/components/TopPicksProductCard/index.tsx @@ -0,0 +1,46 @@ +import { + IonCard, + IonCardHeader, + IonCardTitle, + IonCardSubtitle, + IonCardContent, +} from '@ionic/react'; + +// const ProductCard: React.FC = ({product}) => +function TopPicksProductCard({ product }: { product: any }) { + return ( + <> + console.log('helloworld')} + > +
+ + + {'#html #css #開發 #指導 #代做 #電子平台 #programming #coding #javascript #python #react #debug' + .split('') + .slice(0, 20)} + + Card Subtitle + + View Insights +
+ + ); +} + +export default TopPicksProductCard; diff --git a/03_source/mobile/src/pages/Carousell/Home/Following.tsx b/03_source/mobile/src/pages/Carousell/Home/Following.tsx new file mode 100644 index 0000000..edd1ba6 --- /dev/null +++ b/03_source/mobile/src/pages/Carousell/Home/Following.tsx @@ -0,0 +1,8 @@ +import React from 'react'; + +function Following({ hide }: { hide: boolean }) { + if (hide) return <>; + return <>Following; +} + +export default Following; diff --git a/03_source/mobile/src/pages/Carousell/Home/FreeItems.tsx b/03_source/mobile/src/pages/Carousell/Home/FreeItems.tsx new file mode 100644 index 0000000..5049cb9 --- /dev/null +++ b/03_source/mobile/src/pages/Carousell/Home/FreeItems.tsx @@ -0,0 +1,8 @@ +import React from 'react'; + +function FreeItems({ hide }: { hide: boolean }) { + if (hide) return <>; + return <>FreeItems; +} + +export default FreeItems; diff --git a/03_source/mobile/src/pages/Carousell/Home/Nearby.tsx b/03_source/mobile/src/pages/Carousell/Home/Nearby.tsx new file mode 100644 index 0000000..b87fdc2 --- /dev/null +++ b/03_source/mobile/src/pages/Carousell/Home/Nearby.tsx @@ -0,0 +1,8 @@ +import React from 'react'; + +function Nearby({ hide }: { hide: boolean }) { + if (hide) return <>; + return <>Nearby; +} + +export default Nearby; diff --git a/03_source/mobile/src/pages/Carousell/Home/TopPicks.tsx b/03_source/mobile/src/pages/Carousell/Home/TopPicks.tsx new file mode 100644 index 0000000..fef444e --- /dev/null +++ b/03_source/mobile/src/pages/Carousell/Home/TopPicks.tsx @@ -0,0 +1,57 @@ +import { useState, useEffect } from 'react'; +import { IonCol, IonRow, IonGrid } from '@ionic/react'; +import getTopPicks from '../../../api/getTopPicks'; +import TopPicksProductCard from '../../../components/TopPicksProductCard'; +import { IonInfiniteScrollCustomEvent } from '@ionic/core'; + +function TopPicks({ hide }: { hide: boolean }) { + const [items, setItems] = useState([]); + const [topPicks, setTopPicks] = useState([]); + + const generateItems = () => { + const newItems = []; + for (let i = 0; i < 50; i++) { + newItems.push(`Item ${1 + items.length + i}`); + } + setItems([...items, ...newItems]); + }; + + const initialLoadTopPicks = () => { + getTopPicks().then((res: any) => setTopPicks(res)); + }; + const loadTopPicksOnScroll = (ev: IonInfiniteScrollCustomEvent) => { + getTopPicks() + .then((res: any) => setTopPicks([...topPicks, ...res])) + .then(() => { + ev.target.complete(); + }); + }; + + useEffect(() => { + generateItems(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + useEffect(() => { + initialLoadTopPicks(); + }, []); + + if (hide) return <>; + return ( + <> +
+ + + {topPicks.map((product: any) => ( + + + + ))} + + +
+ + ); +} + +export default TopPicks; diff --git a/03_source/mobile/src/pages/Carousell/Home/index.tsx b/03_source/mobile/src/pages/Carousell/Home/index.tsx new file mode 100644 index 0000000..3803142 --- /dev/null +++ b/03_source/mobile/src/pages/Carousell/Home/index.tsx @@ -0,0 +1,429 @@ +import { + createGesture, + IonBackButton, + IonButton, + IonButtons, + IonChip, + IonCol, + IonContent, + IonGrid, + IonHeader, + IonIcon, + IonItem, + IonItemDivider, + IonItemGroup, + IonLabel, + IonList, + IonPage, + IonPopover, + IonRefresher, + IonRefresherContent, + IonRow, + IonSegment, + IonSegmentButton, + // IonSlide, + // IonSlides, + IonText, + IonToolbar, + RefresherEventDetail, + IonCard, +} from '@ionic/react'; +import React, { useEffect, useRef, useState } from 'react'; +// import { SuperTabsContainer, SuperTab, SuperTabs, SuperTabsToolbar, SuperTabButton } from '@ionic-super-tabs/react'; +import { + star, + home, + heart, + pin, + call, + globe, + basket, + barbell, + trash, + person, +} from 'ionicons/icons'; + +import { + mailSharp, + chevronDownSharp, + chevronForwardSharp, + arrowBackSharp, + starOutline, + share, + chevronDownCircleOutline, + chevronForwardOutline, + chatbubblesOutline, + menuOutline, +} from 'ionicons/icons'; + +import ProductCard from '../../../components/ProductCard'; +// +import getSuggestedCategory from '../../../api/getSuggestedCategory'; +import getProductList from '../../../api/getProductList'; +import getTopSearches from '../../../api/getTopSearches'; +import getCategory from '../../../api/getCategory'; +import getYourDailyPicks from '../../../api/getYourDailyPicks'; +import getFreshFinds from '../../../api/getFreshFinds'; +import getSegments from '../../../api/getSegments'; +import TopPicks from './TopPicks'; +import Following from './Following'; +import FreeItems from './FreeItems'; +import Nearby from './Nearby'; + +import './style.scss'; + +interface CarousellHome {} + +const Card = () => ( + <> + HelloCard + +); + +const CarousellHome: React.FC = () => { + const [showPopover, setShowPopover] = useState(false); + const [popoverEvent, setPopoverEvent] = useState(); + const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison'); + const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00'); + + const pageRef = useRef(); + + const handleRefresh = (event: CustomEvent) => { + setTimeout(() => { + // Any calls to load data go here + event.detail.complete(); + }, 2000); + }; + + const [suggestedCategories, setSuggestedCategories] = useState([]); + useEffect(() => { + getSuggestedCategory().then((res: any) => setSuggestedCategories(res)); + }, []); + + const [categories, setCategories] = useState([]); + useEffect(() => { + getCategory().then((res: any) => setCategories(res)); + }, []); + + const [productList, setProductList] = useState([]); + useEffect(() => { + getProductList().then((res: any) => setProductList(res)); + }, []); + + const [yourDailyPicks, setYourDailyPicks] = useState([]); + useEffect(() => { + getYourDailyPicks().then((res: any) => setYourDailyPicks(res)); + }, []); + + const [freshFinds, setFreshFinds] = useState([]); + useEffect(() => { + getFreshFinds().then((res: any) => setFreshFinds(res)); + }, []); + + const [topSearches, setTopSearches] = useState([]); + useEffect(() => { + getTopSearches().then((res: any) => setTopSearches(res)); + }, []); + + const [categorySegments, setCategorySegments] = useState([]); + const [segment, setSegment] = useState(''); + useEffect(() => { + getSegments().then((res: any) => { + setCategorySegments(res); + setSegment(res[0].slug); + }); + }, []); + + const onMove = (detail: any) => { + console.log({ detail }); + }; + const segmentRef = useRef(null); + useEffect(() => { + if (segmentRef?.current) { + const gesture = createGesture({ + gestureName: 'helloworld', + el: segmentRef.current, + onMove: (detail) => { + onMove(detail); + }, + }); + gesture.enable(); + } + }, [segmentRef]); + + // const slider = useRef(null); + const [value, setValue] = useState('0'); + const slideOpts = { + initialSlide: 0, + speed: 400, + loop: false, + pagination: { + el: null, + }, + }; + const handleSlideChange = async (event: any) => { + let index: number = 0; + await event.target.getActiveIndex().then((value: any) => { + index = value; + }); + setSegment(categorySegments[index].slug); + setValue('' + index); + }; + + return ( + + + + CarousellLogo + + {}}> + + + {}}> + + + + + + + +
+
+
一個網上申請 多個貸款報價任您揀!
+
+ +
+
+ top button placeholder +
+
+ +
+
+ slider placeholder +
+
+
+ +
+ + + +
Looks like your kinda thing
+
+ +
+
+ {suggestedCategories.map((category: any, index: number) => ( +
+ {category} +
+ ))} +
+
+
+ + + +
Explore Carousell
+
+ +
+ +
+
+ {categories.map((category: any, index: number) => ( +
+
+
+
+
+ {category.name || ''} +
+
+ ))} +
+
+ +
+
+
+
+ + + +
Your Daily Picks
+
+ +
+
+ {yourDailyPicks.map((product: any, index: number) => ( + + ))} +
+
+
+ + + +
Fresh Finds
+
+ +
+
+ {freshFinds.map((product: any, index: number) => ( + + ))} +
+
+
+ + + +
Top searches
+
+ +
+
+ {freshFinds.map((product: any, index: number) => ( + + ))} +
+
+
+ + + + { + console.log(e.target); + setSegment(e.detail.value as any); + }} + selectOnFocus + > + {categorySegments.map((seg: any, index: number) => ( + + {seg.name} + + ))} + + + + ion slide should be here + +
+
+ +
+ +
Follow Us
+
+
2023 louiscklaw
+ +
Help Centre
+
Contact Us
+
Press
+
Jobs
+
Advertise with Us
+
Terms
+
Privacy
+
+ +
+
English
+
+ +
+ Explore Carousell Following Computers & Tech Women's Fashion Men's Fashion Beauty & + Personal Care Free Items Audio Furniture & Home Living Babies & Kids Health & Nutrition + Food & Drinks Tickets & Vouchers Auto Accessories Community Looking For Announcements + Services Mobile Phones & Gadgets Property Cars Luxury Video Gaming Photography TV & Home + Appliances Hobbies & Toys Sports Equipment Pet Supplies Motorbikes Jobs Preorders + Everything Else +
+ + + + +
CarousellHome
+
+
+ ); +}; + +export default React.memo(CarousellHome); diff --git a/03_source/mobile/src/pages/Carousell/Home/style.scss b/03_source/mobile/src/pages/Carousell/Home/style.scss new file mode 100644 index 0000000..2f838f4 --- /dev/null +++ b/03_source/mobile/src/pages/Carousell/Home/style.scss @@ -0,0 +1,32 @@ +#carousell-home-page { + ::-webkit-scrollbar, + *::-webkit-scrollbar { + display: none; + } + + ion-slides { + --offset-bottom: auto !important; + --overflow: hidden; + overflow: auto; + &::-webkit-scrollbar { + display: none; + } + } + + #top-pick-product-list { + ion-card { + --margin-inline: 0; + } + } + + #top-picks { + --padding-start: 0; + --inner-padding-start: 0; + --padding-end: 0; + --inner-padding-end: 0; + + ion-item { + --background: gold; + } + } +} diff --git a/03_source/mobile/src/pages/Carousell/ProductPage/index.tsx b/03_source/mobile/src/pages/Carousell/ProductPage/index.tsx new file mode 100644 index 0000000..b119911 --- /dev/null +++ b/03_source/mobile/src/pages/Carousell/ProductPage/index.tsx @@ -0,0 +1,410 @@ +import { + IonBackButton, + IonBreadcrumb, + IonBreadcrumbs, + IonButton, + IonButtons, + IonChip, + IonContent, + IonIcon, + IonPage, + IonText, + IonToolbar, + ScrollDetail, + useIonRouter, + useIonViewDidEnter, + useIonViewWillEnter, + useIonViewWillLeave, + IonCard, +} from '@ionic/react'; + +import { + heartOutline, + shareOutline, + flagOutline, + timerOutline, + pricetagOutline, +} from 'ionicons/icons'; + +import React, { useContext, useEffect, useRef, useState } from 'react'; + +// import AboutPopover from '../../components/AboutPopover'; +import { useIonAlert } from '@ionic/react'; +import StarRatings from 'react-star-ratings'; + +import './style.scss'; +import { AppContext } from '../../../data/AppContext'; +import { createGesture } from '@ionic/react'; +import ReactMarkdown from 'react-markdown'; +import getUnsplashRandomImage from '../../../api/getUnsplashRandomImage'; + +const ContentMd = `helloworld`.trim(); + +const userJson = { + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + name: 'louis_coding', + since: 'Joined 4 years ago', + verified: true, + rating: 5.0, + total_comment: 37, +}; + +const productSample = { + category: { main: 'Services', sub_cat: ['Learning & Enrichment', 'Enrichment & Tuition'] }, + avatar: getUnsplashRandomImage({ keyword: 'hotel' }), + title: '#html #css #開發 #指導 ', + price: 30, + content: ContentMd, + user: userJson, +}; + +const commentSample = { + user: userJson, + content: '準時有禮', + product: productSample, + time: '5 days', + properties: 'Review from seller', +}; + +const commentList = [commentSample, commentSample, commentSample, commentSample, commentSample]; +const productList = [ + productSample, + productSample, + productSample, + productSample, + productSample, + productSample, +]; + +interface ProductPageProps {} + +const ProductPage: React.FC = () => { + const [showPopover, setShowPopover] = useState(false); + const [popoverEvent, setPopoverEvent] = useState(); + const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison'); + const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00'); + const [showAlert, hideAlert] = useIonAlert(); + + const { browser_store } = useContext(AppContext); + + const refRectangle = useRef(null); + const [swipeType, setSwipeType] = useState(); + const [deltaX, setDeltaX] = useState(); + const [velocityX, setVelocityX] = useState(); + const [swipeVerdict, setSwipeVerdict] = useState('helloworld'); + + const contentRef = useRef(null); + + const route = useIonRouter(); + const [maxBreadcrumbs, setMaxBreadcrumbs] = useState(2); + + const [isPageTop, setIsPageTop] = useState(true); + + useEffect(() => { + if (swipeVerdict == 'swipe-left') + if (route.canGoBack() == true) { + route.goBack(); + } else { + route.push('/tabs/schedule'); + } + }, [swipeVerdict]); + + useIonViewWillEnter(() => {}); + + useIonViewWillLeave(() => {}); + + const onMove = (detail: any) => { + const type = detail.type; + const currentX = detail.currentX; + const deltaX = detail.deltaX; + const velocityX = detail.velocityX; + setSwipeType(type); + setDeltaX(deltaX); + setVelocityX(velocityX); + + if (type == 'pan') + if (Math.abs(deltaX) > 50) + if (velocityX > 0) { + setSwipeVerdict('swipe-right'); + } else { + setSwipeVerdict('swipe-left'); + } + }; + + useIonViewDidEnter(() => { + let gesture: any = {}; + if (refRectangle?.current) { + gesture = createGesture({ + gestureName: 'helloworld', + el: refRectangle.current, + onMove: (detail) => { + onMove(detail); + }, + }); + + gesture.enable(); + } + + return () => { + gesture?.destroy(); + }; + }, [refRectangle]); + + return ( + + ) => { + if (ev.detail.deltaY > 10) { + setIsPageTop(false); + } else { + setIsPageTop(true); + } + }} + > +
+ + + + + + + {}}> + + + {}}> + + + + +
+ + + +
+ setMaxBreadcrumbs(undefined)} + > + + {productSample.category.main} + + + {productSample.category.sub_cat[0]} + + + {productSample.category.sub_cat[1]} + + + +

{productSample.title}

+
+
+ + + 10 hours ago by kylema11201 + + + + + HK$0 + + + + 234 Likes + + + In Enrichment & Tuition + Type of Rate Hourly +
+

+ {productSample.content} +

+ + read more + + +

Kowloon Tong (九龍塘)

+
+ +

Region Kowloon

+
+ +

Tutor Qualification Master's

+
+ +

Type of Tutor Full-Time Tutor

+
+ +

Levels to Tutor University, Asso, IVE, Secondary

+
+ +

Subjects Stem, Computer Science, IT

+
+ +

Preferred Days / Times TBA

+
+ Share This Listing + Advertisement +
+
+

Meet The Seller

+
+
+ +
+
+

+ {productSample.user.name} +
+ {productSample.user.since} +
+ {productSample.user.verified ? 'Verified' : 'not Verified'} +
+ {}} + numberOfStars={5} + name="rating" + starDimension="1rem" + starSpacing="0px" + // + /> + {productSample.user.rating} ({productSample.user.total_comment})
+

+
+
+
+ {commentList.map((commentJson) => ( +
+
+ +
+ +
+
{commentJson.user.name}
+
{commentJson.content}
+ +
+
+
+
+ {commentJson.product.title} +
+
HK${commentJson.product.price}
+
+
+
+ {commentJson.time}∙{commentJson.properties} +
+
+
+ ))} + + Read all + +
+

What others also search for

+
+ mirror 緣份小卡 + mirror 咭 + maskon mirror + mirror pin + 緣份小卡 + csl mirror card + mirror yes card + mirror csl 交換 + error yes card + mirror tee +
+
+ {/* similar-listings */} +
+

Similar listings

+
+ {productList.map((product) => ( + +
+
+
{product.title}
+
HK${product.price}
+
+
+ ))} +
+
+
+
+
+ ); +}; + +export default React.memo(ProductPage); diff --git a/03_source/mobile/src/pages/Carousell/ProductPage/style.scss b/03_source/mobile/src/pages/Carousell/ProductPage/style.scss new file mode 100644 index 0000000..91620a4 --- /dev/null +++ b/03_source/mobile/src/pages/Carousell/ProductPage/style.scss @@ -0,0 +1,47 @@ +.product-properties { + display: flex; + flex-direction: row; + align-items: center; + + ion-icon { + margin-right: 1rem; + } +} + +#product-page { + .txt-grey { + color: grey; + } + + .product-listing { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + gap: 4%; + row-gap: calc(100vw * 0.04); + } + + ion-card { + width: 48%; + margin: 0; + padding: 0; + + .product-image { + background-size: cover; + background-position: center; + background-repeat: no-repeat; + width: 100%; + height: 100px; + } + + .product-name { + font-weight: bold; + font-size: 0.9rem; + } + + .product-price { + font-size: 0.8rem; + } + } +} diff --git a/03_source/mobile/src/pages/CarousellMe/MyProfile/screencapture-localhost-8081-tabs-carousell-me-my-profile-2025-06-20-02_10_29.png b/03_source/mobile/src/pages/CarousellMe/MyProfile/screencapture-localhost-8081-tabs-carousell-me-my-profile-2025-06-20-02_10_29.png new file mode 100644 index 0000000000000000000000000000000000000000..35bd5fa7edc8c7aabe57534a226e8831623e4e7b GIT binary patch literal 21619 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 NmYUwf(g)AO{|ECH6P5q~ literal 0 HcmV?d00001 diff --git a/03_source/mobile/src/pages/Insights/screencapture-localhost-8081-tabs-carousell-me-insights-2025-06-20-02_11_40.png b/03_source/mobile/src/pages/Insights/screencapture-localhost-8081-tabs-carousell-me-insights-2025-06-20-02_11_40.png new file mode 100644 index 0000000000000000000000000000000000000000..c293b0ff202e3d41eecf3836957151334cc4c857 GIT binary patch literal 55704 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%0D8Ve98 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 = () => { } exact={true} /> + + {/* - - - - */} + */} + + } exact={true} /> + {/* } exact={true} /> */} + {/* } exact={true} /> */} diff --git a/03_source/mobile/src/pages/OffersMade/index.tsx b/03_source/mobile/src/pages/OffersMade/index.tsx new file mode 100644 index 0000000..ad18d24 --- /dev/null +++ b/03_source/mobile/src/pages/OffersMade/index.tsx @@ -0,0 +1,68 @@ +import { + IonBackButton, + IonButton, + IonButtons, + IonContent, + IonHeader, + IonIcon, + IonItem, + IonLabel, + IonList, + IonPage, + IonTitle, + IonToolbar, +} from '@ionic/react'; +import React, { useRef, useState } from 'react'; +// import AboutPopover from '../../../components/AboutPopover'; + +import { star, starOutline, share } from 'ionicons/icons'; +import './style.scss'; +import { useTranslation } from 'react-i18next'; + +interface SampleBlankBottomNav {} + +const OffersMade: React.FC = ({}) => { + const { t } = useTranslation(); + + return ( + <> + + + + + + + +

{t('Offers Made')}

+
+ + + {}}> + {false ? ( + + ) : ( + + )} + + {}}> + + + +
+
+ + + + + +

{t('No items found')}

+
+
+
+
+
+ + ); +}; + +export default React.memo(OffersMade); diff --git a/03_source/mobile/src/pages/OffersMade/screencapture-localhost-8081-tabs-carousell-me-OffersMade-2025-06-20-02_11_15.png b/03_source/mobile/src/pages/OffersMade/screencapture-localhost-8081-tabs-carousell-me-OffersMade-2025-06-20-02_11_15.png new file mode 100644 index 0000000000000000000000000000000000000000..10ac28117a472e9143aad78585565c9f7397884f GIT binary patch literal 19641 zcmeIa_cz<`AOByg)b2oS+N##Bnz4c!wW}reC~AulD`sn!qH1qy*Qzauyjn$3gs2fk z?HG~TGkl+YpY!<-zUO>D=X?5-lj~fr=QHMBrjC#-H0_(S4jsG)MDc9>)R$`zg~PoF5i2(ZG>GUUGSMPBYOgfXZ6 z#J-5V#{_l0pIyPyDeVFI!)DcUi^#`pRv1`xOI7<(kBXMWWvXGg%5h!f4Z%P6;TXeC zHNMoBPx-J+&64De2P1bH&QBB+9gjM46@p%^{s>)tEZ2CJ-51d(BIl^Mr!eBPsxW_& zPmsmf^(Au3MY5Ap@q~kWuI=*_3VP(AdB_>TJU4g>r>`@Due_#a0!m@sXd$39Jp2_m z_zDTRz>DzkS~Q(%BT#{aG&=++VyrMAA#GQYrX5lNK2bRx0!83L6$&aG^{ki#4e$wQ zkn;b%24C0S_gu^KSFe%?JwN_r-t0cp((m3n%iMgH>oc5eg@mU$a8ltK#P;q{!Jx0D z=K@p}4=VN5sMy8{!E16=SD$pB9L_*92w|6J&vKMb`t=8<9Sbbe-;20{l}>TR-aj7o zy%>rvDx%^sV0&F~dA{a-@DrlZQ>K?E(8nDX>`W~Oxwg>hG*$4>xu%u|6^ec^>Iso~pNoLGnKRd>K#J zw@x?fG6*4rpl6z{<$IAg^*m?ZZm&?u(6iSBe)NQaPV!xKH(m0RnWa{Y(- zBF)jR;CY`B1@A%ORsx8jMp+{}raYl7r;>R%EbjV~~x;U$M1^F)yai{uWT1eHPIi>DubFT#fb;o;z}oes$P{V^mxIk`W%8fHR>q8*npteh{Eo%hu`le zr9LZG@AvBCWIaf z<;wE>xQh~uS5x2n^BGgeJflzUnXP(eL0^6PCM#Q7q~Hr2!GFGRx=aEu!=$S=HaDiB zxSLG>^SAO({=$WGpy%psx_vJv|BRUjt7~*oZgegYkLFP}cthbrg*Dd4uS%jD6=S+4 z4$3w^_|Z@*X-}t!1cLp0JTLYNE;)4RT-@B;S}i|(VNO>7hNc6y$$50wIZW`Uo>7IK zcwv&l;naj*55wFIbkseBQpSJ35I)5V@d`)3o-3YBj|^A^;eUFJ+Cyb(CW%L=OUu=v z9RAbieIfk%`4-0eYXxD78wM*IBrMcU_}8xdrKwN>J~~{0jQ@*6Ou+?AEzkKDLt8*w zDN%tdp#6dk4q|fr@`j>@V~2+pIsDnJlagHp8FqOwYF7}njc{5Uor9ix!L2(jpB~wR zQD?J+bZE$?c>^$f27hEdE>42=ujwnQ6BtG~H~QwA_EWz7{t~gW-9hlcMCf(Z^SQ!c z+zVc5{DrTB_J*Vf8%Goc`SW0gw`wINC9~MDD@RvL&8I)3K+o*Oyv2 ztqi2e2KAlFN0EYro)5I#L{qeQQe~0R%M{Lfs^7j70JK%S@H&BAx(xq{G`s4z^l1vZce#%E-^+g<)N9u)0 z?k;bW!aXfU+6R3n3WwtY&UgA8*2hY>-TQaRqexFbRn^7~L{2|&mh`<{@-jwdk#1Xn zk|v&Y5zWeI3P+!ig7&qn0~VqxVsfOKJ`VTuMp`JG2Y_7}Oc_?4lB{Ed_HDjTqAq+- zdZoKY?-!@KNtJNiQwD#f=KN(2z zum(TDlAJHb7%j8^yGW0p_5en0Te}eddG3_MmilEaZ{lzgt(k!yi9(j@$ek`i*V#u* z$7G!~cL*Fa^X=_Thu{Cb-UWim;9LIu+Y|w{m98spK1JcfW9gr$oh*xLJwN$B!fXN0 z@9fL^h3k)S>*s=bPw~ntx-yt$Fg(AyF!2(MUgou+pax3heCU}PGL7+j|7Bl{b5r!h1WmQ8O!*Lg!juP8 zTTL0z)Ozc(Et_^d7{9d-;ir3$1-?CpeoW=7*T|JQVKAX@3aTz^l#-}E_>gzD-BD)| zgl}f@N*nZGN4KvaemV6YhEekxjFQ5gpDCCdj8tPjUmS&9`e%td#Et*_sfG{5H%~s% z_ZW?TuudXL*Q?bwP6Xzm2QK!;_FOSl);+e%~)O*IGy9Pv3P+7Gj z)5Q|^<$EBgNVktWVRiL&vK~7oc5Ye{;?jTqxBVl>3c3A;MkH3RW&JyzNC*qtUoT9B zvPUfT*!dE7apN_~WzZ(G2)a&T z{qhWTDfo%?Y^za!|6$=c%OC#2cr2~ZyDOwoL>=N3c(5qQK6#}~^$zzbI_4wcfzV3Shke8~oRE3A!(Zp42Y4VklDzUKfJ17a zVnmy!np_2p5sn;iPB+nkT7P|4{1uWswYUE_R>$q^WAq7V=&K26*aTsD40>~_D-#AkS>9(Zc|O2N8ZeReidxcks zAuNp@j9bClu8$eDtvHJV{n`YU&uu=cZvBId#>P(+Ztn~T);%Gqx%~QB9s5T;Sohji z+}ySVJ>Xakcx0QdLtoxrrBag2Ee`)X6#Z~*KEYe2+?rI7-^^uCsd&(Q6e$~x>rFeB1_zBH8?5((>Z7zegPZj9)zpp@7qqfu%ZAu8j{9${U^9;u znSNI31DlL4cjIX0R`UJm)c=45G$$RR2d>L~{B)bsWYvbAnH3Pe))MnKL!A-)8Y42JezHv~Da!f2 zTGw9C9h;X1B6DVBb@VL4P`^+`2-AM6z^33q&=#>sRV@_Nwemb_>3%89h?)^?gqZGR zpS^+RA4w^O=zTDs?286r$zj^>>8Ofw&%?Ts_JEk+BcttVB0Xsq_`+vIin@!^%9(EO z&*g-Hhjj3by0q%q7EAXaG{wY2ZEzpUt9$HSu(D2{+_Bb5OX1cRP83{*|68O&u*WfUtwi`dmjFwe}B;{tlRW+q6zG zL6Fy+5|PMR5;*#Tk|*K3oSOHe%ZcF}BWsuK%%OaNZ9z20XLa!mNO z!3=KP+kwb|`pUq>IA&mP3EzVmFWn&FguguJ~Kjfj@n<@VI^X!%HgqvhSh)|SUVn4Pnf$1V~I-OaIcBg$Vz&Ta^d#$8AA zz1cEz@Fs`d-Z&1S!sXeaY_&{Voc)IQ%OkzkCY+t#R(g$vt!*WL3_{lzB{m4{#E^_z&{24DezB$e+v9l;GY8j z6!@pWKL!3N@K1q%3j9;x|6T>eh>M>8hXweztN*9KKL!3N@K1q%3j9;x{|^cn@RG{; zZN-|66>B6>J6|6H|92la(mxM?y`@n3p5ErR>Kz&MN`P4?;tGl7Rr~xqmW7SoGMj$9 zO^sUh7L@=%XBclNS`Ka|_b$@av|+iicwu;r5ncMBBvD%|D5jmyO*qNHU-|!B9E0u| z=(I66y2Y?PUyg{oHvckRxPet@ZU|_{ql+w{I&|XmP`ibbUH#yiS?fzO$<1BUj6JdP zSChAR3OiQ)@TtuMHwvTDAHq;aaZJ?HDo3to4MIyuu5khzDLHI%DlxB%IqHq%JQ1-i z_@eQJV4k4C9))`mqX;al604V2D+~tv2ekE*H&Mq)8QgvrhX_9;yrR$ z#$4xxAjGZWeg?y({)J9U=Qwg*8)$ez6?BdJ@5_*-iT@Y%y<|}wVcWH2g z0PqSq*~YCLBzdCm4!Vws&R@*k0_31v1O6ny)j5sZw_%g0>V;gv%*LyJ;y<(zwI?dl zlOa)WvfqoWFn?qw8B#Q83g^pRQe|~U0bCnWH>g1oQk3?c4d5dW-)Z$k$l#BHk?YkX zMioQ9lCJ!(J~*8>HdvVh-m^33MYS3LUfXnFnZ-?!?H;^Q1@lLMKsuM9o7F{np?7PpMK%S#6mZv5A76`7?<*p^mNt z&UM5AVoYkn#65^WX20ig$*0>CvJ&bXNSH{!+z>h1xk9Bmmzt4ql?d#mzrS8~yL) zS5tEi?&tI*NPw%v5frj7gn}e;MHE_z&Em$jV8NCncwOf+|D>%7Ss7{^KwCB+e!}!t zt2)IrM8b^RR^#06kys|@l44X$9qF8ikV((n{kc>7l^XkeW_Nr@o5VO#hEqg-aIKTT`=TlS#3q{4K!1;tU&9d{%}3H(I=Pb%)_VBbgMPytpgs=;Z*F9w9$6l zs0lNU?cs zrv*H&VE&+yqBRcqNXVSoJzuEhi=RAn9kUP2{n#h5@$?Goo_`D=BC<@PlO_^K+^0FF zfw2J6cA+0XiT3~+ZQhNJZmq1W%n4_ABweoQj+r$|7&Y;U?nInbKZta7aRF$8-Jxxs z!YX)*zsu4!oZd>^Ilt(w;r6TjkI9x4*3dx{J8KH_x9@grn;4x4=9Nd~1kt8Jj!f7N z3cF2UGESKsF|UN$KS}$lN#uvu#ts=E5+2+__cxMvzkP7}Tve95>G0zj6!gq*dgsMT zty^?Da(2mJ8hvz8al}Dt7S_9_S)S*vDGDMJiEp|IFuD(Ssh6p7O(}+7g%Xde>FAt^ z#N%eUTWy(`FVlS2okCRSpKZi**vyoYkCkDfY!i{j|}d}!O>?P zaz=ieI~pwSA#5)8TMm>O%`Db?j?*2r{VRcUSg+X5Dc7g23?RjC*Ly!o!kQg9qosB& z=Oh%*7shPjjGKYA`e)8a>kiPxia~dQT6%h;UTfYI`va04gORM1YCQfr)`HzvQR{C~ zn9;WFmb+Ujy+xK%%B=!gVE?Ki%U=V25``&^(h?QTEcoe&?RVi5HhMWj*HQA$yQG)S z3a_GN<7PxVFk|E}e=Jt5*0qZ)vfq@Wh_YsZAB05N8ZU6!KZD(u|c@awTp@P&_zri`ZI93Lq> z@BH%tkL~TnSW4Kgcu9XfZdr_yWGMbUfQLUY+!Gz)eQW1|W_J|~4AZ2a5>c%knA@M$hq z5^vf<11)c;%jPRwf_#o=@G>E7->F%>spLHydQ@(9vNbu+JsUEZk)KwqIF;#tf}L&g z{r)0GMuh<+`|UdFlVy?M3}1}oz@s16TbyO{t5n;V{uF9G7H|b`_RT}ALyZ21SBD(U z@;@)v6TXcOJMQMTpKfsQ2I%bX0CbFn6KAQX((|z7v&r(-P5>o|S9!Vsw%z?JG};QL zK?=&{ZMz^yQgj}~Q7D+DzrD=A_)HQc>5F^U%?NbhlHFgllGZMD@8i?476g19nE2=(7&P0DM3?7x^&HR@W2WM*}r`pkPOYxCcg=^z5~ zZUOQTTV``5JG2nfI1%5+bRQ8;oNTTuwLl zcvM%g{Tra<&0!zFkWOcP*ivu8ZZA9ZyW-i_-41+<`DT21SC>_7+amR7U{8@o%jLz{ zVCuu?AN|h^=csk-F>7%n%bHhVw&xBTaC!a*RwnZr+o2U8e^`TBqrrV9s*q`&IBQ0%@hhFY{RKdc6q9v; zDe+!OgQ%aGP1vbW#2bGhb&&`d(7;qx$KObVgZyqKc6QU`ng5?!hEjybCn%m27pfq^oF7&ej>)iJH4b2m!1ZJNc zX=wfyFt>W-zjeBqlA4)Uau23(=g48)OjBG<8@X)w$Lp?q|=;ra@1ymUSyC0gcVntO5}Ca$^C}O=4>YfHYCFL`v@9&laI4 zE2Ewo2oHyAPIy~~leRR6QeXb@q=U=Ty31^bolmCflbdBZ9v_UVuwjn#r5RQN5tIyx za18LhJX-Y#0ey1z!@05mf>!&Ag?q80DSRS-VY2H`GVpNPaRz@EettigG)L0acwm@W!fR>xc-hyiE>_NRQScoNSFu>i-?YUd#ItpcH7dx;nQMZ#NK}FIGn0< ziI8A%C45rl08rB^+;DQI^N2bF)rQ#U;}Lnxc4%I0z_9FE>VA|O14zM4K(^3#J`>0& z8P*wR;2vgs=S%>QKRRA(PQl0K=Ksrj1|Iy2B zeRcwU%aF@vW+s=6(7}5K5=%>xni=i#y1CFZd?npv2=2WqeR5Ac%OH^P zP_S28T!&GPxa!-SVcevMeU_^f)^)zff^upN#gdHu8ZGcy8y=FKss06h$;5)z;0|dz zp9~{Ha>6Gf9-i(9{c3jsZ^r8|FmA+aLdhuUQ~Oi+HB>=x%vo~`anSlg9Q6AW;n1%4 zUGm*TnUBk&4@leFNzG!eAMhBP9pkcbuB#E;=Qd3YeDljouAd6N?cWUs76Py}Y*cOZ zskd|MXtBoNRK49wpVEcb=Ihg@6^VG*k1meZI2xRg;H(iDsB`cV7(gtoGVrpKSZ11eH!llc;bv^<ib)eRUL3Bp9%ks;zW=Dh*vFR zbXp9ks`L>tcIu_AFOGH&ussB)OScIPGNPl%Ko+BVc#KH;i(zNKsAw4=V*7J0Qki!c zfc@in6ES*nx{4P&Ng9rzzqvA_5}`rX7IpkM>E?K{*d`pGayn z=6zjWU}@j9sC8yHT z=ev$nuL3b+4!e03H&DNv9CIrSaXdwds++pjKF+P)G5W@PhQb*uJPUdLbF2r2e=%#h z1Luw*Wfi=J-EK zMMh+@uyvO_<}Iaa41L1=-x+sGYRci|mLB6iTuqDXtTFJ-@2qc3ReA6)pma;eEPZ|x zm2-%)X&^EYZsKpPhhCq10xvrwyX}$d zdWZe`p=0tZwNv3Du=;z0m2;+(NRB}V1hdAuVBH6n&7)3cjoO<=Fym;hbLx?r87=*9 z=uJeVxxdmgwL0yOP=kds&hq1L z@X?Vly-1YX*2EhLyns+UA>T|yu~=nh3xk>s>J}kCbc4J>y5Hd>rNJaM__x+Es$rtH z(45F@%SW45i4Jmb$qsw5AWM(b=SUg?MeatP*jN$`8+r$LGab`9x1(=2^`F?*hh?kp7M0+}mbLjyeTs+m6&X`T9-!2lBH_2J`4z&mU9DWZd_{X+b7_NPXbxRXQa9O+ z2AV~`)lt?^UQ3y;_}ILjruvZ=e)zM-@!$ppHA-ie6Z5l#3hU9ei$2~s^h{Gn)(;+r>!_*I6F82};V zs9zyJzHBr3kVx>`m%G+XEbY=_%U~Dogm@xGGe>DeI~gq-M&KB(me4KW6~$c52X>AV zEo?r$5Itt8&;%X&kGkp(E%sI6_8R_LlRIetH=~G1ip@OU>?gSD?t%mXk3P zyyWJ^ZD3qKny)bYgio`8%yL%c^&7N154pr{X33t=<@!uSYlT>l=?=9?hLba*VH4 zf7&hng0gM-8zI%=-toH?MJA-cJ*|;8<1M z91;6*ojdG)VWUfeU-;8|4|n&SyIkBN8Y*a^r9R%hRGYSKGDx7fNkY- zmnf;1%0tR^5j2$azQ?LzVUBeg4kOtbE1Z)0{UQpJ+9O=Ld8CaY8VQ}qknqkqSVbom z_O7!9pE(iFBbJ}iC#zz((Uu0ZcsC6ww#Yn$yD%e4-m@PFS`uZ`o-Qz=y z4YutTGAB=BBo-ZMqcI&zkEK754E<4GKm4LsIo_m~E@~zuXuU1k-KYP4f$-~IPD$PV ztdaTBo|(4!$PLPUrR6WKW&LBPE&7sMzYyZKu`E6j@{R4!uF|nSNIQtyfqsvev=FGG zFSw7<Gy8y-Iql7)G@_Re=Ft-S%nqqw0T9pa|!%XldYh~%+P67tJFMR zb1>~pO#ze7O>tz7wt_WCbM}^~5b;VtrQgUbeaCg3w zFZDQ;U?qB75A3kw>ReGb_4>mkzWFXOgrv4h55k4i9A@~fE3ANf&=+jw3K+oCq(0;7 z6;tUND*=C`yvcp8FdJ97{FC)yQ#qU)EAcg3a#=#dVxP9XZiHq*h{nLwO@`F2(GQ!; zUpmZl{c0(!u_HJkUyy8S@gO4`*%pM>L)?FRfG1Y zt&^Jg_-1i&X0)zo-FrUmNzI7;}$Hb)fqx^Jfq3ug6 zryUagy+(uf(@X63@#Fo!AC(XM@y9%o#x)=^NZS13B4gM|08q~{}+{ZE)A+FWSRk;-NkR>P~X(z5=TeMbn0-jtAbNuwKqB5ft@*`EUdpP6mT~`OZrS!mJC`)taS zeN#Nr_mZlUC25A!rsBve7DqZ zj*YdYqLh-jXoxt^mK5Lex#{ptZerjoR3tsr+R4gFDSIR%-hSgDv2+2F^xY>WA??}O z>O~M{X>a9|5t+kQ7<~p7^&_LogGKgC?zzKp?H%2uk>rO*xvf6N6}< zzJUq`?gzesSR42>4EF_3*1kTvX@9=UEAD^#pfbfseC=0<{j4Hof9#`fhd+h9;uT(% z7NI>_vQE2CSTQIo<~a%Ljmsq$#A(Uvu|HeXriZh#4Tpt$4&y};_EYa)H`w;`d8b%R z?Vdg*-){*%`B}u|67pUfEb3g5g8g$}9`^AEXWfz%UBi|ji#Bnc#(vRuNN(v^Bj)>? z_?YP_HxCjiSGac5Fwx!UA-Ch34v&$-@NK2 z-dXe9T&9;j8U|%~;co{%RQ$Gc{xWM5_%2GJTFP z-2CDKkPmh2mSkVJwpqI70xb&H+Z^hRkeFsqw4RZb&Ao1Iyjhlq2bCV zI9!_eO4g{jt3`qk(yeGeN72x@ps|6kFvq@!Zfzj0nC1I;k_0q}uJ|GF@a?wO4I8~X zyT5IH9I#$HiCWJSQT%+H4m&*<2aGI@{a4H{wVvRoCsIhPGZj3a+{@MHU zl4l!ciluMel6xUZ@B5!6DSLGfo4S*PSPhoH)opN@SX)Wvo&QjOz%rOSTPBIRxk=-F zc+;@8Z@6ktvddVo+-m0hnXZzGNT)+(^)HjV5mzM!Hl)>Cg6*~0$+S<*bCLqt1~8>N zj~nf`xPYbcow{ttK?3ikUMe*6Zlt$-ZZ}~kBDf#8dP?GE)EWM*$qpTsyr1Vv_o175 zC*GZ}TbA72TSs=zJn@oCMJm$gI4ph6XDsUxT=l`A-5TN`{VDDy9R{xBrRZ`dnw6&E`{Wp zKrJsCB*izd@%C+9{jJw#+(>Gmv1|i;zT$tHSjBffAG_KV3w3OXPajvVT6xswB-V*^uB)3quEvwBFV9c@ z@~i#zEGWt%q?f1iExf<}w~Gm%v|a)KW{GjO%ZB~8V{L~mTWtKm#8q<%rafHhBb*e2 z{;SxQu()c@Moke=yMyvjnGaVouaD#RiuP4~2Gbz)$zE0FffLFtkj!kqxM$6NDBQN8 zVS&oDkZ=sg*v8e#^V@kiUAs%1k-F~8Irab@aWQZ;i?O%Gor^CRwg+5Ob?mpRJzxG5 z!@go!Y~K4uy6%H)3X3*M)LPi?pwKZGDcQ+#kg^HAEl73%9!5g?Q>{6l6;diZXX_pL za4lv$)~za|C&T*A2!|4+jB{r9k;fi2!ec$hi@COZ>&g8iw>}C2?L4m&wT)&Zl$lWx$WwpVBm%^!gwH~Q^#l&{^|D2NCPigFy zqx-va7}#37jGst#H9gxnbl#SP!UM{3&-QUnE+(h*lr40hqK(8a|vxn`Ov3i*fn!vPOr4&ILwe3Eo5(hO*&e%K6{8qe^1s|78Dd1>B z(Ls@pC(I}_ejs7<;e58d1$;(FYae$=B0MwkopWs{Rq_(i2x(kj@A1Yr50-R6YxbwR z)LiJZ?oH}&34|1rF=PyWm~<&^ajc=e`1879yZ=Ji4v&DN_ew7cr24b@+0~?^wT4Dh zRDXtLQo0A=z z;e#OgYRu}3@+jzP)npGGeMh&!IYo2cDb!_A^0Rxf5b8t#LEO1ti5F}rtu)qaw}|PP z=x<<$rt*b3e^8XXlaRAvzxA%lVLzNBY#w5d`6Ro0GOe%4&H0L5OeOljOdz4Jxznn^ zS}4P!UWaYobVdi^s>JGdYMjY3@FvTf!@`%Gud+xw)E zqddADEd`=;`|A4w!ozkx=hfvc?iQ`M&OE!{YEmczQ4mD4uN$P8nk<^y?ZYIuYT=aT zo$$0g%3Z!h^-md5m}|iFtBiZQWszU`+!)3>p|p<|gghu&I$Fzlo6J03 z#OF*&>2r`xb5Q0JWm_9K>TGMS^I(nLUvJZrrQCYBG^gAGx5-ZXkD2VE79dKx zVY6qid!k{r{|)aRwZSxkMozvyhL|{>1f@S(bJ>*jCn$6@OaRyI)%a&dHT97&vynEm zP_htmJviL7w>ZT%yR=+)1o6pl=97yMiKS6aRRdd2owPa5=4Izv?m04(%cqFTx5ze1 zs3@;A!{UdhmV>*R+4FvYu;GK|2{@V8^X4)4ntttMRBKQ#veBCmgk5j5;3=((@66`@7H_q&t?eKjK5 m(I!3D~!jN9#^8cI!s=Q0KY|c<*Az9lUfy)v(Ooipd$nZICl*IQM)-m3lVy`QH#MoU8l7mErD0RaJ5O;u3`0Ra(=fPl1# zfd+iS6jZwl{6TcrQISWenWXuHfWUyDrU-iJW4_lF zm=u{bw?4uiY$e#z@T7&QpHEP3#J^{IJny~xWZrvmLHEf`+vA*|nepxI6Zb7&nUnj@ zZ(!`Geyc+zBo;X&7E5s?5v--Rj(vzJ2$;#is==XK5x~cCNMujsKqekmV%$Uwh(r*G zFK#mYdnHUQD47`rUL1;QFbX@^9Qm;iZ6uN=CGyCACPbhyR?a-o5&_dN9RbyODq^h; zXbJCD_&>kfDy3iOvX>!ZklMhrN?&RU)O^vIy=W9w%O)Z*&mEFXUNcTS3xcyJS*EF3 zpR}O9U&b|n$tVkk&`Nq)?k_d3ljzr&#_$Cm#reLUjK;i9QK9>C5O^WUZPb8baeth3 zB4Fet4_}N$0)oxklMfFxBDuKk+mnN$Jy#P>IbT~RqcMz=Pk;`v-Rde0YKOLEF52SJ zC$ZqGl8lce@3V36aDU*|k1GnPs>12;J{a1X$UPz28tH)ierw+1WMq!~_sa0aIS7eG z%Mc~-yz#@@lnVWz?8Awy&H6yhdg=7O*G9_^7r}rcUs9ppPS<`7$iNbZVcw4Q++qVp zTUd={@>oX~*VN$6TLejWpH;u1T-LRA_a%n6Hiowj;l}8^+REi{#O(O}E$IFP?BYT; zR&DYbkFV!efG+6vDE$m2X8U?H4#Kf*niX@V7K}2^z%bJG=@Wr(5zXg8zh;=D8cw>$4&f@xSl=t|`kC$;aDus&m^fdyCB5vDXkz zH``%VZFW&_Gkn-}5P;t&OU`2)PRgafDfLztmFI9X9aeVWejXR*K z;AcyR!Zu+*Lth4lkKY5k=ZTsfpix zl<-EbpsVn&ax5N(@3iQuegoyEfo##s@doCo>T0?5;ZA8Ns=Z*O=H}*g#KOa-UwlDV z&#NqY=z^}le;9BX9UD_p!|q{Z2^T;AyMkRi?|4cuaDL1SZvOZ_&|$Q_K^wj|Fjd!Z z*D&Q7%dR5G%?V2U54tX5ll-uas6(sFc*$$JuU|`@FW8jc!F~W+J+;Zzfe3}?MFAh& zDbyh$u9Yc8l%Ym^ASJa87~}c;tNZ3}*oq5zl=u1o=Ft`2no4@O|2D8O&6d@%Ukxbt zD8GOzYliPXx*9^1@a%@emup8G!}b1GZ;#59o6Y;eIQIAVvjyy84fP3HrueXyz(r0; zz=572N)F7m8H%SY%FEYq7;W2I?V@dRMNnYTzsmkFaVj1H< z$z+6YT|x#qP!fWNml}L7e!wLC*z0lNkH;e*V)>y!8lS`G0#yhOol}VUe=vnC#Nu|H zJXTg0+6i}ds=Z9WeB!uKq5vNwhx8hWM5q??@$IoAVl5S6_gleV1_J7YBiu`)a6bzU zZGrW<8p00|0=hou7sbJ`XKuC;Ygo_7=fA=EaG61QMWIcuS(X|Eg|7 zQV36P?t1?y^e*-w3=)UL&?B;%Bd0I$#Kt`0PRK3sNDl;6{Gs$Ilfzl%&W~PFixFAW zb5*$6WGuj6h)bny*>%u&~Eilruebu6DEZDC(`%?ICIAUZhrCgW0& z+`kVGWpDsZ4Yjwvn; zcmZ-&1pJ!NpexG5Ve(*E^x!n|hGO9@N8;#ImV5V-1GcwV&x&an5xf>E({lQ* zw~aXVDkBf47_6nbs_KvWz$P9msQdG|&q@0{{kQjK_Mw?kSP0zCN|oQLDc4=2JM@E` z{J-{*e!4b@osIL$rEZ)TUo-!M_$zvUocVXtjZTzSxSL0@K5Jk#Z4=ahC)|8se%z_Y zYO_D%ItC2X{t*1+x^7%gC~{MB zrSW0f9{kP+E6*d$(t8p3JZ%8tj_HO_aTv#k$ugfQLwwg#4z^;mkLEiv$U|mTKt}7?0i@{w$?bF^3; z4;X>ZZ{tw1*!;Z9vTza35BCzR zf!&PVtu;?Y_vg5!O=XGpX>B0HScg79=ZYtx!`7uY+mrI_OOR5>f77Zz%b5-A9WV3 z2y1`j*PdXumwR9wWaSM_ah3gA`W8SkFLgUV$22$ve^Rahb5kAK*ZJ&&OmHK4U$+0b zRE_wF49&3Sm!s{C1<5n4PHh>~gA9#m)pu>k^s2|3Rs~mel5n?7@f3-f3FgsQ0{Kq3 zeghmNn-Dp3)PUh{i7@Ny1t1Oxn^TI70CpADd*E}k5e9Kl_+$JzKJ`i%%#WxzlGh7FaYf~}*l1xS9$PdOB@Mz`>IE{_60(QZB#+Y$H-tDnBsdu8{9{{!bZfB z;LBdbgd1Y35ga<1N9p*u*ycdU@UKKimBAee7;W6}akOK3pcS_LKMBoyVhBXgVTcND zZZbL0%ACKE__5?<>3SS;0w?lwmpY9A<(rv zGk*(ez$1tpj_J?V*U$&x>)Uoth74C~wbdiu-Q*^Bw~(K;7+*H*acz7lsjTawYl)C) zqT5mU-b4~H_?FJnzH-v{_2=Ja`lt^(LIEYzjjs;Sp(2$;v||k&crU2QsOi#Bj@e)b z-35fdh%W-BXDFJy-{Ust(r|Jp4gC44E%%2_LIRbC-@PBz>A1IzCw>z3k3)`@{J{i6 zTxr55c@TAfN;L(DfiG0%ofSn%634@K)E_kZ>oODmLa=GOwNV$}UoQiRDcZk^>hjnr z_~kzq6Ap(4yc>7;3#ZvhJWhW^x|_(_%jO}|V=ZMrkFJi#M6%I>N_eThj){K2ErHtf z#qO~*%hRM#gQS9q@ISC%8FS_e3@}AdSZ9?UQwIx0{*DB{mIwI`sD4CHs5EcOpXg3Rixb+DFhkMm!>NF^`B>m8Xx5n zw@)P)&$z_4lwA&e?35Wemhn^_wiaD@T3AspuBMA3?O}_~+xZ)n;OgNUUQ~$pWZqcx zAvzyblAFk#RA5}GXVlj;gV{u=7Q2vfyS;-$KZTB?l(J%5|1 zrtJ8ON>bC4zMfkC#j~k5$jO+joZE_pucDNFCCfOo5=m8CvLIC1^m1pY(L9wa{l$`-jL)9 zd-wI+^3vSd+Vpj@eM6W&ri@;+jdG*UVW!R`!pHm%OnXH+arQ7}ZDmP+;!jbVQQ?^K za|E(YJxYpRy8?`r_mUm773WeyKXekzbnjyYcHS7qblB}b-S#qS5Wxh)vAWRU?-$p@ zi&7|^Ll0ibXQ>R6A6En(OEN|D*YEKz@h?+eZK*nuv!_NMFny1p$SHl&=Jt`YwlrC2 z=i`9|R;_BE2Hk-s52%`7uc0nXc?4(u$JF3kClED^$%u zsK)hTq*s;lJSIsGyXHmyNQ?N22T(UeF4YH>b&3?+epf=|*#vJA3BtGN_^=OHKberK9kp zp;rGKRH_N}G4~LyQ++c25nbtMpWG$FilTw5fxuND>tycj~Je~zb)Y__f0pW@p{X6oO zA}b|Y8+n=rR$;ocOz-k!4|$wc(ys3tpM3m|Ase5}sL<7^il$@ZxZXzKPei_Jr`9nx zx~BDLQaUqD-2|0Q{Ec3Lt^WxhU4BE}KKOL>J5>pZxNk)+=Vbo5+9XNa-j1+d^ApUD z**}pcqhb1+&)6JIB;B7B$K^z*F(|-;uz@&>-iV7;Jsbss(?wx-L8_&2J!#BP-W(rs z-nKgj%H}jrE08tcT<)ci)f}_UAPt7?2d3e@1e&_W*O@3d4B&Ula7SZ`Q<@`u4{- zXbZJ*7fW!zfJ1SFBEy?dnZvakfpw9Sq}39LAk$DE{Bvbs$$5pqaFjs6+zbOC2!C|% z5w#kCbl3qgK@X1J4D>+K?5|}{|A<{>H;6v6SgsgOUbD`4WMR9?Z0KVGkeAXi6SLxp%GpZ&BGnQ=if z{m}m>pxal&p2$vuOKQ@B*t= z>@lUgc25K8#Pj?*a)QcVq`*= zyna({D^Ub{VE;3*xgh;F3R7>t#I0ahR#nApZR_+n)YU{SmODE zgBX(|Nl+zjBiHgF&%Uw`Gpcif(i*#REKu1=yDfM(#((jNU`xuEMEW8TQa2KcXMY8i?bNpEJnY*FCbSfZH6ak11(8!+^xpNjIYm? zKn||L_25FFhT>V{#1gL)J7j>q(P6hzNaM+7&i#3|2w4~=HH({NI;k@SL2uUGS(|uz zTkP&P$Ds@|ao`b4C1kU-0!0z{e4?GGH2LMre4O9Yv>bEI_Sy1opEP!*LLW!s(1(=M z0I534kN=`XS*Yf;mklkEODn*eOQfn=K?%*o{9)(W%K)z6=_e+xGrDYl!FNgeg*#TV zoZVAV_bN1$+@&P%ysgHrG-jT}2zs|U8QvDrs{h;ocj z*L3lU_kvplq%1%oV%wgN>cFf2q!a^>^n_~a+6jB7^i}XXZ~P^Cu;N&p3=YO%+`jAb zaxhuKamv|StFa$(Yh9jCCGe2yB#$oK{V(UUUQ)EBP5x@Po|0#_)CQr~pZr|Ret0QI z66Ow)w$GwhI$*73H@ca2K@pi7=sqtaYI1zVA(iXT-qnqECb~HFc_mC58DW$fy1yDs z)m0z1kVxiQvl24*#eV!@j?U7U*w4Q@ySN!!!>{>r%2Yc-_zmJ@lvi&@JJs)Y7qUfc zV^MT9=yOx{mA#PKnV6iCMym_&{zem&s7U8PCqn{s^5q}#JK~PNi1nXuN|A;|b*wEu zN&np6%oD6(bT#6)X!RMLFz+Sqyz_601=R7LTAaJu)1nh4dii<%;2Bn zA0#KEP&^3hK0*|J>^`+CL}z?QD{=8AWVZrl8hH!O)kVFamOE=yso$7X5pl#7GPHN=hYaS1)~$XI+t8exLVdv9 z4KGo~Nt;{(k8Agk!5;)kxz3S13qVdrMN7tXuZEW^4J^MkS3=3bAq0l195AJPiaj0L zU-{>jN1J{gUn2gVoN*@Z@-m=*-lhkf+q8=8VV_7!*2-Uh$ z=n`ueX&}y=dmfmU03?5cUGaw9!I;_HFr9RZ49-Y`zFtCL=M$g4!hg+%9cA-%y)m%L z?PcK=gt$7yT*xff7+O=qFG2pvfFI>spTNu;zTt`hm8rKjJEU|AofLQm5bC)xNX9iO3~#g#B|w8q+XN6~SB4mZBgF z7B=&fUcH@|P+rRw*Vpff_zj?oQsqnma&fff9X7nB;BofDx9DEoq^pA^v7pbFH+8R- zt(n{DU1IjxHv}TNXOI|iPIj!F-apwJ*|xmIxtw zv{`$|`7S&Y8- zO=!JY(Y-5(6O{F{3pq^FfNS1Jf`!{z@!K!IkE0vOUQpEr$)6{^B;$7)EVcdJ9@t3V z=1cDGaMa$m){_Rj%SkuFX-F9=c$t2dFBQl&I9r&4z8~d+mkN1KUB5Bo_mT@wt3;vi z5?Rs@AM^RapD&g|Hj#{p^)-Uyu4n@{s^P>9>v>D^sv029jn&`?{cm&CSjpmc=p}cV@#It zhKu+zNTHVdr$X`JNAAad9eNl>#dY-fXO(f&6!SlHFSR!d%OqK7j*Ge#FC!Erx44bs zD{`sp*IZ=Eb$oW#;!g?c${`Vj00P%jjv07cZhwIlGfoXh<-WZ7!eIk78?Ik>Mcy&+ zW@L~Gb@J{zQ;aGUQ zZOIG7sixgd`S7T`0Vu;cBqWl;`LbS9po-V#zbNq-)T;yGIu$L~Bahbx)aTr<8ay9E zf1n7MFD#+|NXofmvS3^<)Z19Oci8U2JBM>?o%h$fvDPiFVlP0ujKhz-oTUI_q}U6z z@h$i`3?_itEt`e_0SVC4zyxw}vL_zdnijw?r?2&oWyI_kfMJyUx&I=bwV;csHqwuV zy$1{vuoTgRkG2See~nLu{T>Yy01UJ3bt-r?4A5CPJWo7>=OMkefMH*Q7o{Ez0~TyD zlV@Dj!^yI09fj^JP5!@X4`g!B7BdmRLrZ_Q{7F zvW<7wU$d+qG(hCncEeY|_%KHPqR{SfcMGTZpzD#?TdZqW>Wb2iwJhD7#n}5h^>V1f zq`Vzcl0l)bGQ9*j3w1iYa%X8GrbMZ?!cOnN>d8G2uD}=~&tRDYiCVq)PWi@nuM;V{ z%0=|hRWB5LA=<@s|87dy;8#(}=K+cWr$wThi@03!jgFpNmivnUdTE|}_vP6jN1B8E zvpSyB-jdX$$5Ngt49~l0sP*T#vs#ua2iToFq&h8F9G>qUn#hLl!?5cTsEJf=Ptv~g zAIy8NNs>N<1a3hW-u)JDy5jiCNCzhR%fQMkW?e&l_QXgkt?5mrVQ9cS*V(?Mu&l|h=#{AfjQ6;Eo7R`XB z%x##ViBeV&4e^#t!3mRUD8h7vpa+&QLE{UT9WAx09uhkO+zv78jtf`h{tQG^&!mWvi8 zvp9`RR{R(%P!u0f(Wc@(qa)ey25r*$F8j{)$#O%k##&&Lm>|(ee()32fb*^+cInIP zPoas$X+c13i9Vs>N6D+rKLB(~uWR~-4S`F={v@nQdCWp;_Oz2;^ zFm546BBBzUBi1!&yVbxb`yefT7<)f$n?;{f2ntqK@NblWzb|8a*nOsgWOLX+V`K)` z#`JN&w+x^$uUw1epj4t|(F1ytyC^LYH-+ots=e$;nM9{hOTx)~Zo+L5rqE2hPHT&A zjigO@_44MdXL!a-e_sC`IOz<_j55+WfG~ILsTRZ^o5aq6inYmwegKDp$&wO;|A9IR zdUW)(r4&;l0lHa;>B%iF&>Gz&J!R%qaoNzstYN{bW*?)EW87sUtOs=|$ERQ*T*R=ROoRIqZ-MoOFGRaB_u}SUNk~&!Jbq1_IVSyZN-A3@f zrrNuW;7_00yKNdl12=O93nzIDe*RLPEsF?y5+X%h7Y_MGN1uefJ;YJ!QVJPNERuie zQE^r7{gQnuRK8SY_x{;$#9zH}d`Hyi^)xfl zt2dHeO^_wXp7}zT(EUfHz`m3TLQ<4B16A*(EbjIaQMffM2T*xvu`0v?Wlb2Fvf!Ee zY)gRv8gA4CfEXkMA%vt&w_3@eypYORU4R4O5AOw3T76e;1jqSlU9DjvwgHP6fc}D= zm7fVH+0`+g{`A3!3M)2)7W?drdjL)^juvQsTn=eEqfaRbw0?O?i*Xm-$U zRA!pca6~AQ3Ce3RtG;uUS;#YVa0@_Eg#Zj`2ui3$E)6(L(u^oqtMLkIaum z$Fe#84|#~>atu|zo(?JT@MkrBYx~rCDkypQmCU-_sxq^(%Ruk~8n7&i0NJW}dHY6N z;@bz|S0+b3mZm9&J$r9%h9e=xqUaCPF5z~4@fbfs<`e?JIhn#b39*Px6BXeqeAf8|vYC!v2+%7L;5-#_D zdmF1l9}8?L${+E>*#XX|VPOuJJAU4+YFA}73==Wq5-ZO6GWBmN@{g|GP%0%=*2j|2 zP)|uKi52C(8$*kv!31WFPqgyV*XPB$doX65gMZM)l|GtGKoG~~emht?Irs^D+zb4l zNzdaZEzdss5O~>oL$y=BvXEkmkA#;pf9?g9`ceqEALKw@NGq8pPS#&kYF0-1(%?7?cefTdX>|4@CFc+w47}H zh5U|krHW(uD%|kgvjPu+`S?Vw4~S|x6RTDMQOo#^@O)2Kj!Ev>PwI^VdT;26U`_5)NY{XZu(~2yykm z7N$C?%DHua!qMM0P{d!UL z45*{uyTA?(^S|`;KXky{{9oPj9i1PdAEupr7}A^!!jcug;PAglb#QffZ;kvbhG^+C~zTmK)51iwr&+Ec{5G6@DDT}=! zA#qk3l+#vw*1*gGe#N$vLVNv$=JL<@y6TOGH5z_};t<2wdi3AyjgD0(FKF-9!PvH6EBk&pl& zv@!jY_*;X^JzZB_ykLloD}!a&Fdw~oym^ip{A#an-1d*pjucqwfy848I}=s4mjTI_ zxM|MkcanQqPSRAUNVHk1eX5;&_75(2iUH)L%xo~X!8+11JZIHb4p?8up%^pZw@*=& zm7yZkL!_E=h8S)zA8n`vLp^{Ya$gAf^`L6661YMqL^MRl*DG!Y8lHTY4WIsz*S=fN z0Czv}_DH3eOE~Nsvcj}kcl=C_-SD6t0>#W`g2_h>!6W5lx&IKaK;j|8-iZI0wS)p$ z3#yR*BjfK6=ifo^1K_?`jts~-xFPje|6#mIW`GqI7P`tv{6nC~A$`K^JRaqWMQX9+ zR|TC^JnA5@2^KoMYjvP&uGyh2y?w42@bsXU;=fwm_dml(P!NKm6t>;GKFiv$lvrH) z40#%cz%wajt`I`v)848ZL2G+1>ZIdUsT6HmGC+k3C_;f8jc%fHxE{a}5+TIzsM4o5 z^g{?k_ZA2W{XQ3O&h1d<@@SjjS&NS?^FKb7lrlm6jnzQ|=cU0#;j5gVR1%}KE(){E zc&E-)Q@q@rvMadTEkK!&h3ts8v2bo4o(StZG68FrgYts(w2isLZLiFwenag% zPD`p=OeFdj@^?XFqGD89pH8d{t~*zb0aDWQ7sTPs|57&y=s^ELip2ze)cmQlfj$;~ zDvWGSn770m1@_Ctk+tb#jyXb)3NyP?X^O72Qiw|bc8CoN;&Va(_sY(tA}{>1UXW zG!c~>XFms4gEBT%bcF7>7`ysAy*l7D1?K^gq#rxK;6_Ha{~MDbPa-Z`qIFes5pPhX zbyrb3ZEO{eHk6uL=VLD=3z&W5=T5e`(E2(WH%cy0vQSm996-sR7)|H7d?hkVwDWQ7 zE}_RFs)ps2lQpH9)8ZaP*rwyz8dXD>@+LL1&VA`Zcb{(5TLXX3rV{3 z%Hk;Jy;+d5S(;#&&>Tz1>ooh z<00ATLJ>S<%ZnuAm<2)1Iah?5R%sDZ)<+fz+=;M6v9}{Jr}z~Z8*aD~s}}Y7A?1y)S^w?Idu#vGqQdZo$bCpj=4_NZLQ~IZ<=ezrbg-X1 zO)5b|p2Hxc<*mV8c(=)g0jKUIgJf%5qRCTbjzRpy8BLDY<9d=Ud8@;#o@NBxibyu; z!5pD7^$$uo2_2@2?I&GFh5s}-E-uMnf_{eU45EpZF@v;2VPcScca zdE}j00ne`t)|MMsnFn6IQ zr$;5(TV{aEA4+O|G+hWV{S|nT{}J?*fr3~9y(2sq2z~_^^&Q$^^{+ut^QmR$;I1C= zJFq6Dg?9b$DJ4?_?7wJW74SagkV=68)fL7fA1iyJKxNP6)-d<6vIh*98<~mwSlM#{ zP)>t9M;)nohB7+Br>Xarbam#~xkv|alakTXN zs-Smj&KJ@Eq?Qr>g`gxMK~AIO)ZrdkRZkaENrf;z?Rn8%ihYyn1~*TX`zy&7DWfPX z&$Yf*b1`gSsicSizUKLuwv144$U4?bz6#~RKjt1T7a)({($Zr0n|WddjIt81x2&(m zK#*3N+0XMuNQfRit;EO*!R}`Ce)Jv#qbeu?G?SXh-CfB4umuc$=7)WQ z8gUoXnBZq9E{2CNq*HA4;uqCR@tidkS_w_(5J#QOgZlUsYJDYD}@3e!Ic%&F5A6Ze88UL_fio7YdB7&_RVAo{K>lImI-e!lAkfb0 z*86AuBcZ_Ug=$n~OVRHaVpT1zCS|_o^zYDzRJGF5i|&@3;UNm9M-^)VoP6`mK!cFJ_Ft7&YKtFB)B-XqSH`;yQKkkl|+m3wXFa z@Kl=pTT>arf$9&QK*9z<<4j1N83?+XvzJdBfIdRj6r#e1icWarpr$TI;2VUDT!7g2X)R!Z= z^UcGqs{s~O9D!wThNo^FUZm(PXXL*|%_nR24b}J|4E#fg4Y)cMHhw=;o(Qo_C(wd! znPWo2A_#~G(2Z{c422a8<^hBP+yEspMOP>t!1a72E0|W^6KkfM)frO3LK(u42wV`` z{#p!cV=MTQ@-#pnIHn9CBq++Y5X4Kmnt?qPkHdNxf7}F(p&J&c zW!!PhpDBcb{}FHKmF;3e6auT-+OQ_xEUhh3$ZZp`Dx44l>fU795N#eX&efEcJL&Sf zh|NE+FrG9t!i8DVfQmXA+#k0Kbqq{u#a>W(lP~*YYlaIUh--*B)Q)uv;-nO?!OW~8 zP1!&=WhU~a(8l4z%5*)vlu$@au@XwA@4y}{{Y|LI&6(UEIYp(5QR;0#2Q^P6wYDJ7 z{pp94P%_c6s1B&VfuMx>nF^g6IlW-5a{s8l5T7Tf*J(r`qgx=bIzz-GNst73Q4=`6 zgoLumfyi%(+(UtHiZg(#OvVO@8-O=t_W|7J7rv)#fKB|y0GCtj`CH88fA<5Jp)$V5 zwynP$CNSY-P%k?}ox?Y}L3U?yUQ^(H)|WoFXuysL&0iS?=Gs^iGRWrQR?mh>%8h(Kbi!4R~SPzO^02}Jt{^kikJ^@f)p-Srn0Gtf5 z0yndqY9t-taRU~B6UCM(Vv4|W)T;q$NAB*V5dbamNWkr}|H&be$w42ayb(Vv-*&{i zc6M(T|F0>olT|bK;g6LwM+rFZ<9|l4dtYlZt^#?u%8`d|A}(1&Rpm!|2*4=tOXV4#ji~3 z1p{GAr9Q{|PC@hWD%AaO$4}^V9?YHEZCT_f<{hh;PRF)Qg4=i!8?!d3M0F^L-vKS_ z4t_mm0X5ywUZRDa(Av*PYW_e|e{^Y=V`0i!O+B%a@a6%kyIhO8a;5=>a9X;81pP8< z7e)^OK(}TRVyqXffK|z)CCjbtj|-|f=G)!TbOn^DIuVkpq20% zug0_bu=-_lal!WVKyJ8ITyG?RDAPpz=Fl~(yp;bRI27KigAK)b7-)O4Lm^`@$|IxzEP8sW0sU zRIXFiB#hDO7h06dSqkG_70Sb@V+tXr^QrKwxu-_Fh$Zzs-q7Zu z?Tl1|;vzT|7eC1pO(%MkBHtqinnn4&1xbE%jmp+z!kAB3>|1-XxyU$WRwMY7gz$q6 zZM&^#-hw~Lv0i{mF8grJEY55tJ^9{G>%V>817bwi5ThNVDo&)V zJzSRo(<#0C-AVO$QHT<_Ua79kJM=2JruLo#h4yP$A{PHdVXizhdhD}j(39oHqP8ij zP%pM0pg2aNC??yqMZ6q(8sGq@0CylOVO$YaT?!fUv_MWY9meVRwkjhu(*+Mt43D89 zjqGh>Gafzh+jhYO5F2*Ji1#A1@B4-~kIn+T*zTw%WTYHUa2y?Qrr8ljCZYC$w2(~b z;~oK{v!-9Ua=^!YqRW5N0=PODlc}V>!M8ba?=wp4jV2h0gY=URt=*Qsr&O=A{e!p= z8%gSklK|QcoRQ?5L!QgxcFja7J>I zw+rn#0VK`RS1_p&5MVQq!}Y{7ntyw*y!~UJ0#38T-bHyMudad(1bss9VSSusK2rW~ zbrbj{Icx@vyJ3qBfBt)xLc&nqdW*2HL3i}U8G^%)aWy3|zY?^MotGx=!EYr((BUYG z`omYS>wKr1Xe@6IL8Y$8;;=x)w?4p|vhXiqX0w9Dv$4z2jw<60#-nF(**+*tZ8iWK z@G-_GAqwflyw+5g9gqGIwbU&Sa!`zq0Jc3=0^n%Oz)&&z$AJGoSJnHUS$!h{c#DPl z|FOshml+^E$_)N{kx%|KTSS{)>Kz;oo;_Sp!);E3~Pm zcFukGiylLXAU(7HX&Ifmrcm*kUk9V1Jo-|-j}2=3{4D#@_uHF)NSK}`;2P`baU>2a zeL^@Atlj%5mH8o~7)tM7#r_j>C&QNoRtJxju^YML*CoI4#?7X~=c1^8b(+38c_c>O z|4WHrlJFbw%Oof-h&^2AvBqm$R2Z!7(k)0++`yI$Or!{;7khFCX|p40-`_M_c|}mm zG`ptV1vFv%jU=^*>$&zIrU%VMELEaI@76VNa1dvK2qIBZFs11Q^!#nQrcRKAJcSrh z{Oy!^0`83$#44vili;6=;Bpd3TNr*|e0|fW%e>?Koc@puTw02O=iq?kU z%Oz}!wP$TYV77g<`%D@QZ;`)E49|3U6`lU2rSNZ;(Ai0_fBCZsE#x0@okP1`QWrgW zlcNbmKDH2NF;Sj>`vB;Ap&M1n%xy7~`3!qt`)*!+tc$LcdHj zXRjY4wFTnR*@WUrnMaIf1kSpMx7$R(!5)Uc3?pcA^`r$W|E?0ofS~17Owzz5dcGZhuDZ*g8kYmvz8sue z!bP4oTst+-@|0b@C8-YHL~bXjQuGGeAWMkUs{CQLD__}sj2YAz5gA=>58n#))Dho< zXCQ#`xgFhj$}32C)NYku$E>DsB2Ig22k9SyYN9m*pla3KmBO&=?4RWTtBM9+=2?%Q zdmtpue7T!O&@v8bcks3x)9DdF^*9gd(i zEt{vbrUm_XC3Ezcfm4(XNKm4{xsQf1P^O8Pi}jnzyK*Y(#J_S1@c=(6Rq6jcpuQ8Kbam{V?+|_?TGOE#I!sg4aNM}a+|QQ>>rV?ExqA` z_g2wPh;-3FKK9Pjcd0_kY2S*txGFj%pewuM6M3b5g$-0kwjx*G zgF$HKLy4EI6uiP&eRri&6P@lDSbvh|Cv_ z|5h4Q=z>{r#Sy63{g8PXHYdFjOD#A0T$h!((DaXkfz|e0<_Pc8;w%l&fpJK~j#v0I z>M6liI(LMDxlc0@JSvjfWn#*zQY_C=Xfj=NDi=bW zF0s>jJ5pf_4dE&0@w`vSL?VLKLdk}x1`39$wJuz5` zWoOZ?iIV+9384o&#zPI65Vuo*0VDe+=hv#!0y-QS4tA6K>5=v1kCk}tz>kN#=SMH7 zjBqa@*QLu`A+eco9Qff~E4MhYkFnB%INXI>QN=)?!?jgpQ%*-4B?2jZnc5~1&sgtT zc;nCZ+9NVgU}IvMC7BYD7?lT?CHz+ioyWZidb|0lHK4MrG4}63N|1b4A876o$FlEY z57z}_rSNq$WRZMUMsDw?W{R>x!;)BYY_z{YY+8AVc|pBoF^?!aCsqOV*E+v97cCus z6~^yA9I6NIeD{=Wb#F%1@p+fem#&HO0%qHu^kRE6ww%c2?1#F;lAn0l83I{?jG>~oKq}R{N-piQ>fqx@%C1DD^6p7Am28wVK>>#yjB#d@rkYyMMzDr}99c*F72 zjOXe4%L-S^*}wWF0%&?#0J6pwuESzXC71 zCXZf9d~&s@w=q#(U%H&Ztt$zq`k4d2+&@$eYfH~47D*wjg1+9c1tY;jCdeMeAv zPOCJQ@Tc`CfM^6i4P(RhhJ*R2!X{PB!ym z;qqV7?6>Zcq3pwXk}HPw!01HqA1bruWO1tu zTgerCf#^vMy>_O*rqe+UvPLgY$r1iWuW~`_M|c0V5rU{_OV##eu7^Zi>?Pf3#4jVm z$m{*DTPf_|hhn{Qzl9Ikiz(~OOe=>2(9zB_>jLjjw+su(N#p0Opv(_$bqf z)z|16dkKmUkc;Xp=lc{<)3E}uuu;!5g>b5q(%Rbo5bP0A8(2)+5$P4)pPxboy+hLs(cFh zY`uaf!|%BZN`=v}};N*W32mIkG}hejIdk`Rzi$)TmCdl2c8Mv#z}azHvI zq`RAYW`1k^Ki_-TUH2P{nc44t&z#xMyZ3(fbJ`H26cF-rf6S(Q_ z!u{P~wdG)yhG@U6W2mPqAk)AP-E8C^Hny`laQnb%?nnrCo91lXRi$!U63p0v@Mf=`+W2zH;us6Lb15>nqoO~%B*q_C&*Gv0nWtai$d7XG1l-d!RUqw6V=0g2 zdsj{u&#T;}vq?~V+o}?ou@8OcpE_mMP5ah2n{ELQw_5?tyimFE@0R>^_NtwqT_9Kn z6Bm7KBf|IFX`&E5zl_x0wVK$Dt}hQwhh!1omyf@FC%&q*kt0hfX9)j$UgFIbB-s_q z(jMYj(!ud#KI~>YdIkS?#yfS@KG*JjXAe}^_m>a*v=>?27y^xWq8{%`mUn_Ii>Mzy zt*f_X9(}h=Vt_^iog-r33kkjGomQ*ygn$^J%7(n1wjUb7cCjZJQeTeGiut+qyHboQ zmU@v6ywd$u3gqb_m&eKu?&g=^XO9d(FEkd|ORuxyDf{rDC%iRBvbKZ#TL|$cvzP*{ zSczr;QCrrJqp-biX;1N!B`TRnyzJKV<4Q?mB+%U~*={a)dtWhpt~7GKbrmG`l$AAd z0Q>l`K)_GGpvB{Jsz%sb;KG_);#jRxW)9HNUmQEpbjgStL}VP3i_(bAy!LJ;&ozG1 zS)2vaUkJZgEMtFh9l|;m5p3ZxalNB~S5y3o_LjJK*Roq0u255iVL;J-(|g7mr@#Ej|5Xh5cRRc+HiV2T#hDd%1Ts4!ezQ+snx)t8eH#Fkiab z$=?#j)}ZM;<>!(=S3cju_uOTvE=a_8-)j=H!fh{!AX``r4;RTSaG+O5;}>7}v{9%A z(gmNu?BVrpi8loP6RkdOXEyr1;5PD_hhN0n_F|2ctx>Npg(OLtcwbhnE+dY!)=o#u1cj-6VWrQX*X#DSLH_b+U-^(+&!nARhUJaRl- z`Nnb731g4~3K0AhEaZr;pe0a&>~pqagD2c(fx93eZ67 zPOO!J=hNKbKx6J1xDhc+8xBzLvB85+fz(2wlN9K`@lebnNGJchi~Pqk`NpGKhZw=7 z2{uAU@Jx0PJd;i7WDkUC8kCQhn2+|QS3|_`N!gIU|H*0$guy$8FiT^EV~K!cbVmG$ zLc@2UC+e2p--6f|9k4IiW`|7pzFgrd8Pf6pnUw`Rj&h#mMRW||k{4lAyNKCQ3PLCS=+EUH+53L~4I5yF18N$S zJGY#p5AF0E&8x~1!OhP)@!%|ZrlwK(s*C@U?P?*E>8)HtdF?0vqaan_$@e;w2P^&qpb>Ku zsFv5?K`kEKzGma{`-rglW@1R#cGkH+>O9>8NG)A_$Wn)Y7=d$!qd^GiCke!uFU@2; z=0|Hdw^C}t9T{V;G~M266j5b|{|fTps1N!@=!33jHvk$}yap5LEA z+TVn(Tq=)o|G?=G<=0q0xwhx((`wTBJ6>zCCMf5XY|tfrCZ-^=jY7hU_nk#bW~mRk zNlBTgUPl+Q1_J}6(8rBMJn@?A1PjnMh*De+a%5JjUyQsQhhcDac=I;RaxG|C=AkHtmFE7b%Rx{l@c$luiOKhbDcHXPe=1E`5>ue<1`XaGXU;m3b3bMMYu z0YM?E?4YCX$2BK_Mv&7F-+mQswG1<)hJlDi%M8}3?231ay0zcH()yAzL5X;n78WVe ztdYNXS#e9cSzeL#%d!xD^^L%d^_*}UJC3EjaFpKD@{xHntXII%i_JB18@W_sLCc`H z@vBQ|{I)jh4N72C(yDyQ0HY>uWOXod8X>@NA%t^%b_J;Ws+TEM*x;o8m7lN7N)$A7 zm0|mQ&#$t`(q077)sk!Nk!m%R(X!h$u`8<1QTBhOuP-Lhk%g)K3(o%HxK9q2Wp$CV zKX}kONFeMd$g8UFjyY85y~v+S9O~azCu&B?Bj)l!p1j5P3|b2!tQ-r`zb38k*e{uS zQ?5SZBI~uf-R?r_oKk}Uup)>j_p^=WerHI<`;kYUt z)dz(EZ~UR{kEWk|u>9SZmay5ASO1=*d!MA&NH4tD1ZDmxbRr*K<^Jo|!*n7A+-h7q zK*f6@@Kq_aJO3CxPnD_)MsVhaB>~B_^L&zSMYyU!Z<~T7$0Cy4#it27sh1SOb2KlS zld}J--QO7|=-gHH_W3-j_AGbla{OUJu&*KWPIpe{EAoZ98=xkSrSs=wLF@LqeTo|F z*C-ip2Q8_y4t)P1!2Xx+ZfT4p{6#ci%mLvmZ&;kgJ>zrs>09?eZ#7gZ){AX7$Iv;5g3I&bju*%95XhvXJ9Kh06mx6}ORj%CnF=|Lfy=+UAr zHhDY7j=ibbDNrtQV)o{Y>2LZrniX2}jU}wiNhn6j<}A_7+#Vhzy4>@Q+M=l`L~&^M zt1eF(nlBcpJv0(PZ8I(`2e)V1=pwcSrb1#RUm8MECH82sd=$(h&LF8&pT>Z1xG;s$ z%B95f&H(C;CH&S}k)ebx{6m7bLWv;KB%b9evYjZ1KwU1`Vp>u2X58APB=5qCIASc1 ztT8PRu920gW@}5jwsg>Udz&lmeWWt@7RTtA%x~rIvSlyx&@s%Wnl~-7ZzZD&+(sB$ z9QPgbvz^@GnSu8gi!nx9^Tto4->?=f9vVEKiKe>ctU}d6C5A9*^VsY)nYxwSgYXl> zuvKKAce$P|qVGqTNwo^G%KEphZ?@sRG2HRCSA^SP#L=2xC%lH-bp< zceYvF$h~R0U$$i2jwhnHR$DtLI^*8ytQIU;-WTS?a!-{yKQM6fqpusoTq`!0eKF+H zgt-q^?JWb_S7w*ZMs<>E+T|}oX>RsJmt6)$NW(z73kcxohwPCKq`FeLpj~D7! zCs0cAN9z|GdM2+tb)_;(a}$PU3cARWI@1|}DKIK=zQ{kn@1KRt2ZUicfvK=11oz)- zKc40F?LnMZ;SfrLPpTo6=e@q{vVkU{SJ8KySJGKu#Z-j{N8}hE6nfUJ*Al+i%({-m zB<5WU@n0N%#=bOke&X=%m|E?{DVr=3V8t@EGZNDP8gLN%*w;M7RM5Qo#L^RA&;<_O zFgos4$VM$334vh+;I!iN4*vK57j0q!keHw#>HT9i9u9nUfWkrGz27iRv^X!FkB2Ju znXRiGaavF^yF6G_k^*#=F*DN;;v@P&z`2H4AB2P8s@4N%v>%+nS>gYWj3#i+v6yiz zjJBVDQ*Dl6Lr}~ZpmYgdQn+ocxHh(-X{w`2#^3$%J8F) z5=}Kk{88dD?DFz^QWsaPp85D@U{5cCFHC@xARra-o2vU)+D2iRiRbQdGP6Sv?k8_dNX$%93EYD$!!Wn4Y?F#M|*A(`+6H~)jX(Xl6z z9UGE9gn;kCyZ9kF4%?mrZPDJ}W{FmJcQCXiPN9G~~)r zIWUxUnQEV;DGE#N?2y*`qE-4z7*N+P`pLG84vfgG72*3(A1BBI-vwDnoT4aye2FbB z)~T!$|FP5aomXRzo`c>z^%gT8zrqzHRXdX@&-6?K$jNb^dSD2PisE>85J}t0_?Dt_ z+}#)YqKQBJ9H}%dHYl zf+iCt&FO*IMF41Q`7ahNue>=j0z!ZcA)dI1i5p`*sLk^s;&@Ws$b4XsaqrVV^O(ti zx0yNeEk^Djc`Sp(&&9cgteoshv-wJByb8d)p-+?m%eg8YfmgiTG4@+}ejq(F8>d~- zGZlx#qQ%<-6qZIg=@&A+ir4lSzH7@W-FJh^&)&YS{3gd<)LIGf7YaqUctvbwd#z4z z3|lbs&||{S=$fIm2W&h~wKoUwj-!%}hmL;^9Zq6+(FQ*x+^X z(_4_pcT)KOb$+`L`|F;myfa_%y?Rz0Pb zfB4}yE;`p#2LzD&V2-6K;ZeVcV>ar|4?KPIxT-j9I#4b@(Iw30ik-9iGH`yZ^^?r! z;wpnD2bbD2aezoO16~$%GAj4x@XyTk9M9hMGK-)3ceJ$OyYXp^63D~9Goj{ldXm4X zY@?Tx%nAic_~qAl!*A!=CSEGH2XFa#H{!$#?_`%J&)P+k>_YeX1}*k$Zkmwyw(HZ- z=jLol2ww-6i69{neS<$EKw%e3nL<}fAXI}hmtsmh&2n9_dnJJRadoe6APWT0az@FVn>^h4ppT&eDKDy4mhTM zshacjQ=Oz5a%Se(Suop}>otkXBU`Mu``yc2gN|p>25r;~MX21<2=(a(0tF-3B=Jpt zgsIf;PjbzdUUTJq|CZqZ2d%;w#*!kzrR;81{}B`A?__B?k9O=uE)hONe=}ufoJS=9 z1kg9rpbc% z{coCTwyJOMDsmj*-~(T%6k41+7hTX4fb~6$!?x}EeYVFRFs%8mtL5qF2x91_5|pf2 zs$JIL#&NHd^ydvR@APgAp`|D6ksGp1oc-TKFti&2Gm+85Ts#gpco<3X{iVQbYv1> zmf1KCQKg^-ke&8#4I6xKJplhJE{U@rK_JEhB_}bfGu8Rg)ET8TF(JR~j-wgahC9nX#7sX{|0h?4H3?2Y2-b6Us-tT?S zzo^RgVoCO6JBhAFgND9PUb;qVtlW}(6o+me6NG;#bNmF<5?2nC``;g!&R5v&7rtIz zYNEFE;vD0b3a}GXt`f0BNyKRJnN%NhUGyH=)jPqKY}eQgoTA=~2g95kx@$+pURF@| z9c>|994>;4$&gLvNbg^U;`s&5?o_i}PcCP;f@|>8Ng%pJsJ0F@{A6iRuXC0y-QK%S zD)$Pq-p(FUeh%z`R0syTimh6}%2kb55jt?EOK_i~E=*o13`3T}ObW>h3?~ftUFLsZ zkQz8W0lPbVmBXZe>2Hlbn7ML7Zgr2YB%*8Bv`?8eL5?l)_LgSd-^=n*p?mV;~7_?6t-R#MV?%d_%Z-ixpC2WlFEn+IjC`E}9}XR3-b9(a zY%H1mR77bP#|qKyWsE}dFrSruS1lPVjb7%2XqsS5_^%yJdDHT`M(XbGkK3c;jWK=H{m+@&?0o2RYpKSpA}cgjj_db( zV-ja*IaLZxqTc5`skXQ~>#saFrW-s(__wZol@yg^0l9}j0MEJ;b*!?;D@#hnp!0DgtClvMC?4QxGfMwWNPZRAu27afiCH&G$ zqB%R05%OgRPx6a>#9ZJDXE7ZCgnWCXYUu> zHd$!#%AuxgCNUDi{k}t8)cZsz; zh2Vp!Q`&rXw0(LMqs#PMd*XMPA8(*aAmihEDeh~ zK6goduCGl^0#c=`q16hdOvAJrm0--%=6sz5vLLKy+4NBTZ6R}tTjO@~bT9jw!Gy~s zl8xN7fAvm7)b(Jx5Jvypy;or>L135_!wLUcR$`i<$qYq3jiQhEw6P*Bqz>G(W-XMz zhFs$ItQvi;Vs4A;3~J*%Q{v0x+D%15e^^tm9DEwhDt^7~g}#xa$P3Zcvs6E|IwAb6 zTKq|p9m4Ts!sPpM)Z0g;S^*bYs*DGa`1H*);gbjplKS!;$@HU>m4q9H<2zGte+#5XO$tAGPJ|tTlGqVefQQ?{ipp=!L~@p zL5HI6ruRPi(O9dpm7#V{rmM_eb_~FzvC1t7flJbrb#Q0{OE4iM_Y~jSBWwBc0W89^h?C>=rLgiJTCM zn`w;-ce>}r-r&c|H(=x7yoxjKbm$O4lTH;DV=UQKs9SU?6J9j5E%N1#-uKCBcRe3D z=B@Xyj}PHtlRFS#ux}Zu#pn9}cxg+WFayYkLk}<*m~0F4F$VtmBNsyb%`Mi&Sh z{LJ_C$Lj8ZQdda?P(;eY>}J{jgL^wb&8K*~zF8M|MFp;#=CQB<&s#D92(c69s7e7s zz7_x>DwF~OKz%%c35fEUYSH#Ulpi1h5K60mWCTE{uTcO(75!N?05IZ}98iFtaB+j9 z@Bg{^!9;qnlAQtfv=aOz^Om*~U6_q|#2>x}90gnG*C4` zn$3VMQ~)Sg=Q_RsN5LIn3#B5jIN>PB25g}soA(k9vckX?cH&~N0FWKP1h(-1#JmOm z*{=*b&MRPig-6tH$mvTZ3v~%DIbys>j4)Caw&`cjj@Lxk#907+f^TUF`05J~?Wb=s z+ydcyU`(Kt>ZrjU629g6AW`=3$xMeAVd`+m+WcfO^y8cMges0(9?#;ML1y3l3S@aD z8GTCEML^%FdoeA}e5)woNsS1wV|LIg;hDhYQ-h-@uBu3`-h4$zQnC0nidW->GlWrl zD2}@0`i4U#>kxAzeKRFtRw?o|Vi1%0<hMV*ZLUt`IP0||;pqLCHro&h#VKYCV*< zJE>GKXT_Qy`*C7Fz@bm^tNEQ`T7;XZpH|@hr_f1LVaBiVma=toZ*G>GF1K+{76Q4z z6DgW3xe)$PhssGtMYqL!?$cib);3G2;^s)nO|WN!Qp0!i=eZD@j*H;)l&l(bwM~HVQ%&5GNR#nS)ko z2hljG4jM}vbhAj>)U*CFo!4_x7K+R&OI~%ZKWDLh{iW&BW0;n({+ecd>DTkOSl1rj zMt@gD_~KMhGHCG(VEr9|eAYHhmdL6020?BTm(uK(Ss^W_trryKbAyzLsRbh@&xFb( z-~aw4&tW?&qX8zOehIlKYvq4u%+W->i|^`8P-2L3&b7sQ-tK89M14VK!|C(aT7D_) zT#S^;9n+Z8z$Vw=;=?C3n0!l*juxdj8ppkKJg<{!Qy$5O7!U#Dn@33FN$Y1r7Y)uT zuKF2G;yBk=)ywv?R&70_siQ~3hjVelN>Z&_0@iW!#M@JEdTHk)4n3G}8aJ#M-cW;H z(c12p^xPPqdwqUkQZpx0nM*n|zjD);KRc>}@kNzs!>+s-$uGLv z(#0^(0tufNpUQdLWIs5pl_q!{qla!wlP6-EgBrU&Yh$D}f8B=CAIMnI3>g0V^+Q0? zST}mVm!nGWA2;-CnYOA;pWBj;c(rX2xGVQF!+b}kB-g(2z*C0_tY8>KS1LQ;#&h_` zIUV=Mr%If-IxsC$L$XMXp}dZ-7%jYpAXjYLo4-2xSFO0HFG6DBhjM5xx-6Y7zQXZD z>($#^$6!JKt-sv^dH%XkaR?^%8W!IjFSSZl5#a7GO`}P$jS-3lRF+dI%Lt==C z(iXr%J#XCT;0pn!AUJ)|m57Xo2XM`zLkeivos<%^hW)7ve}ho?qEyJq3%B; zHaX%d zO`$U|ZEd9F=zHJ3kFGXeAab8t@?78o3gpx%QJ6RP-Cp|kzPHm(bpdL!|D{X;G4rMD z)SVA)S>JkaSvnkZx58?llCogu`w5jzATqShi}ricR;@;Y`@{R&7H)2ya8>1hmis$e zFtHgzGn05eyItyr4dHJdWWt^fk-15xxej0yGA1BrRPMhtzu27Ti}_8}fmEGq`zK(@ zd#T*p=?;3~R<+O0>)v2kVq=o|E#QN}Y*a+RG5K7_a=`I!y5o*?H)CG-_>KJ-MJ!W} z`I)Fm7fkgZEq#(fiOvlXZwsuUItV%AD)t_E3`=-oY9<4Kb|T<6!>M-1aRPoEGw6BE zoVMDc_Xxt}yk@?$yTxiJDgJRqqsu|sEn#{lMr7k^&{2fzB;741a7EQ!p3h`~fHpe> zv~3YrZ}FW?h(A4I*^`AIj3`lB` z9>pmL?+nK_@uSd4ezCyO4C$1Zb*n-;39{wLQ~_9~2$e&XuA>enB=wN+X19ZqoC23E zWI6w+4#23t@txUNE!x`L9`zWNgn?w`&>_JdLw8yOqCcSbVC53}&N-YjJ*715l2zv- zwPBwS^cLmnE$&S{;OT|W|6xTmcvdg8_*c0|T|A}j(4hzzXMR`;aR44q_E*Ym6jjW> z0>3vyl=#PWY$(W)-dw3~Am2AN83S^`8TIMai|b3g2F7K5ZvhR{PUn(wQHdTZteILc8dJ99?^jLg51TS2Of za=w6PtI86T@auU|dx*eRdGa{2C@8@~g!Qb}IlA%`axDyhEY{jG;z}bwD3bx7Ylv z&eRB^>(bnQWI43ie_T1dwX{hQ1=3Xf`-oIq6gj14SJMhS>=a2+PEEE-+6?l)0G5es ACIA2c literal 0 HcmV?d00001