From 813cdcda912ba5f3057f7217a23cf38d97cd491c Mon Sep 17 00:00:00 2001
From: Ali-Alammori Enhance business communication with multimedia messaging and ERPNext integration.
+ Enhance business communication with multimedia messaging, ERPNext integration, and multi-platform customer messaging.
ClefinCode Chat
-
- Learn More »
-
-
+ Documentation »
+ ·
Issues
·
Discussions
+
+
+ Google Play
+ ·
+ App Store
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+Use your email and password, then confirm the correct server URL. You can switch servers when needed.
-### 2. Set Up the WhatsApp Profile
+- Enter your email and password.
+- Confirm the server domain, for example `erp.clefincode.com`.
+- Use **Change server** when you need to switch environments.
-
+Web access depends on your ERPNext permissions and enabled chat configuration.
-**Important Tips:**
+### Start a direct chat
-- When entering the WhatsApp number, do not include `00` or `+`. Start directly with the country code and the number, e.g., `971xxxxxxxxx`.
-
-- There are two types of WhatsApp profiles you can create:
-
- 1. **Personal** 👤: Opens a direct communication channel between the sender and the receiver.
- 2. **Support** 👥: Opens a group channel between the sender and receiver, allowing the admin to add or remove other members from the channel.
+- Open the chat panel.
+- Click the `+` button or new chat action.
+- Search and select a contact.
+- Send your first message to start the conversation.
-- After saving the WhatsApp profile, a WhatsApp template will be automatically created.
+
-
-
+### Start a group chat
-🎉Now, you can begin sending and receiving WhatsApp messages directly using our chat app within your ERP system🎉
+- Open the chat panel.
+- Start a new conversation.
+- Select multiple contacts.
+- Confirm to create the group.
+- Use group tools to manage the subject, topic, and contributors.
-
-Twilio WhatsApp Integration
+
-Connect WhatsApp through Twilio to manage inbound and outbound messages directly inside ERPNext.
+### Manage contributors
-1. Enter Twilio Credentials
+- Open group details.
+- Add contributors as needed.
+- Remove contributors when the scope changes.
+- Use **Exit group** when you no longer need access.
-Add your Twilio credentials:
+
-Twilio Account SID
+### Link chats to DocTypes and topics
-Auth Token
+Attach a chat topic to a document so the conversation stays aligned with a specific ERPNext record.
-
-2. Create a Twilio WhatsApp Profile
+- Open the chat and access topic controls.
+- Select the related DocType, such as Task, Issue, Project, Sales Invoice, or Item.
+- Save the topic so linked messages remain organized.
-Select the WhatsApp-enabled number from Twilio
+
-Select Provider: Twilio
+## Messaging & Sharing
-Choose a Type (Personal or Support) and save
+### Share media and documents
-Important tip: A template will be created automatically and its preview will be visible.
+Users can share PDFs, images, camera captures, videos, links, and other files directly in the chat thread.
-
-3. Test WhatsApp Messaging
-Test Sent Messages
+On web, users can upload files or drag and drop them into the chat window.
-Text
+### Voice clips
-Image
+Voice messages are supported from the chat composer alongside other sharing options.
-Voice note
+
-
-Test Received Messages
+## Multi-Platform Messaging Setup
-Text
+### WhatsApp setup through Meta Cloud API
-Image
+Use this option to connect WhatsApp Business Platform / Cloud API directly without Twilio.
-Voice note
+#### Requirements
-Location
+- Personal Facebook account to manage Meta Business.
+- Meta Business Portfolio for the company.
+- Work email, preferably on the company domain.
+- Official company documents for Business Verification.
+- Phone number not currently registered on WhatsApp and able to receive SMS or voice OTP.
+- Public HTTPS webhook endpoint for incoming messages and delivery statuses.
-Contact
+#### Setup steps
-
-Twilio Templates
+1. Create a Meta Business Portfolio.
+2. Complete Business Verification and enable security requirements.
+3. Create a Meta Developer App and add WhatsApp.
+4. Add and verify the WhatsApp phone number.
+5. Save the Phone Number ID and WhatsApp Business Account ID.
+6. Create a System User token with these permissions:
+ - `whatsapp_business_messaging`
+ - `whatsapp_business_management`
+7. Configure the webhook callback URL and subscribe to `messages`.
+
+Webhook endpoint example:
+
+```text
+https://YOUR_DOMAIN.com/api/method/clefincode_chat.webhook.handle
+```
-Create message templates, submit them for approval, then send them from chat using /.
+**Security:** Never expose Access Tokens in frontend code, screenshots, or GitHub. Store them in secure settings or environment variables.
-Create Twilio Text Template
+### WhatsApp setup inside ClefinCode Chat
-Enter Friendly Name
+#### 1. Enter WhatsApp credentials
-Select Template Type: twilio/text
+- Access Token
+- Webhook Verify Token
-Select Category
+
-Select Language
+#### 2. Create a WhatsApp profile
-Write message in Body
+- Enter WhatsApp Number.
+- Enter Phone Number ID.
+- Enter WhatsApp Business Account ID.
+- Select Type: **Personal** or **Support**.
-Save, submit, and wait for approval
+Important tip: When entering the WhatsApp number, do not include `00` or `+`. Start directly with the country code, for example `971xxxxxxxxx`.
-
+
+
+
-Important tips (Meta/WhatsApp template name rules)
+### Instagram setup
-Allowed characters: lowercase alphanumeric only (a-z, 0-9)
+Configure Instagram credentials and create a profile to route messages to the correct system user.
-Allowed separator: underscore _ only
+- Enter Instagram credentials.
+- Create an Instagram profile.
+- Enter Instagram Profile ID and Instagram App ID.
+- Select Type: Personal or Business.
-No spaces
+Important tip: Enter the username without the `@` symbol, for example `example_username`.
-No special characters (! @ # $ % - . etc.)
+Documentation: [Instagram setup](https://website.clefincode.com/clefincode_chat_docs#instagram-setup-web)
-Use meaningful names (example: order_delivery)
+### Telegram setup
-Name should be unique for your account if template content is unique
+Configure the Telegram bot token, confirm that the site webhook is set successfully, then create a Telegram profile and assign it to the correct system user.
-Create Twilio Media Template
+- Open BotFather in Telegram.
+- Create a new bot or select an existing one.
+- Copy the Bot Token.
+- Open the Telegram integration Bot DocType.
+- Enter a clear name.
+- Paste the Bot Token and save.
+- Make sure **Site Webhook Successfully Set** appears.
+- Create a ClefinCode Telegram Profile and assign users.
-- Enter Friendly Name
+Documentation: [Telegram setup](https://website.clefincode.com/clefincode_chat_docs#telegram-setup-web)
-- Select Template Type: twilio/media
+### Facebook Messenger setup
-- Select Category
+Configure Messenger integration and profiles to enable inbound and outbound messaging through Facebook Page IDs.
-- Select Language
+Important tip: Ensure the Messenger Profile ID matches the correct Facebook Page ID and confirm required app permissions for messaging.
-- Write message in Body
+Documentation: [Facebook Messenger setup](https://website.clefincode.com/clefincode_chat_docs#facebook-messenger-setup-web)
-- Add media link in Media URL
+## Twilio Meta Connection Guide
-- Save, submit, and wait for approval
+Use this setup when WhatsApp will be connected through Twilio instead of direct Meta Cloud API calls. Twilio acts as the provider, while Meta Business Portfolio and WABA own the WhatsApp business setup.
-
-Create Quick Reply Template
+### Requirements before Twilio onboarding
-- Enter Friendly Name
+- Upgraded Twilio account with billing enabled.
+- Meta Business Portfolio owned by the company.
+- Admin access to the Meta Business Portfolio.
+- Twilio number or external number not already registered on WhatsApp.
+- Access to receive OTP by SMS or voice call.
+- Clear WhatsApp display name aligned with the business or brand.
-- Select Template Type: quick-replay
+### Twilio onboarding steps
-- Write message in Body
+1. Buy or select a Twilio phone number that can receive the WhatsApp verification code.
+2. Go to Twilio Console → Messaging → Senders → WhatsApp Senders.
+3. Start WhatsApp Sender registration.
+4. Continue with Facebook.
+5. Authorize Twilio and select the correct Meta Business Portfolio.
+6. Create or select the WhatsApp Business Account (WABA).
+7. Enter WhatsApp Business Profile details and display name.
+8. Add and verify the phone number by SMS or voice OTP.
+9. Refresh WhatsApp Senders in Twilio until the sender is ready.
-- Add button and value in actions table
+Documentation: [Twilio Meta Connection Guide](https://website.clefincode.com/clefincode_chat_docs#twilio-meta-connection-guide)
-- Save, submit, and wait for approval
+## Twilio WhatsApp Integration
-
-Create List Picker Template
+Connect WhatsApp through Twilio to manage inbound and outbound messages directly inside ERPNext.
-Enter Friendly Name
+### 1. Enter Twilio credentials
-Select Template Type: list-picker
+Add your Twilio credentials:
-Write message in Body
+- Twilio Account SID
+- Auth Token
-Add list items in Items table
+
-Save, submit, and wait for approval
+### 2. Create a Twilio WhatsApp profile
-
-Use Variables
+- Select the WhatsApp-enabled number from Twilio.
+- Select Provider: **Twilio**.
+- Choose Type: **Personal** or **Support**.
+- Save the profile.
+
+Important tip: A template will be created automatically and its preview will be visible.
-Twilio uses variables in content templates to personalize messages. Variables follow the {{...}} syntax and are populated with dynamic data when the message is sent.
+
-You can map variables to fields from the associated DocType by filling the variable table.
+### 3. Configure Twilio webhook
-
+Configure Twilio webhooks to receive incoming WhatsApp messages and track outbound message status updates.
+
+Webhook URL:
+
+```text
+https://Base_URL/api/method/whatsapp_twillio
+```
+
+
-Important tips
+### 4. Test WhatsApp messaging
-Variables must be sequential: {{1}}, {{2}}, {{3}}
+Test sent messages:
-Variables should not be adjacent
+- Text
+- Image
+- Voice note
-Variables should not start or end the message
+
-Must have enough text: (2x + 1) non-variable words per x variables
+Test received messages:
-Avoid too many variables in short messages
+- Text
+- Image
+- Voice note
+- Location
+- Contact
+
+
-Add Variable to Media Template
+## Twilio Templates
-Set base URL of your site
+Create message templates, submit them for approval, then send them from chat using `/`.
+
+### Create Twilio text template
+
+- Enter Friendly Name.
+- Select Template Type: `twilio/text`.
+- Select Category.
+- Select Language.
+- Write the message in Body.
+- Save, submit, and wait for approval.
+
+
-Select field with attached file
+### Meta / WhatsApp template name rules
-Add default value
+- Allowed characters: lowercase alphanumeric only (`a-z`, `0-9`).
+- Allowed separator: underscore `_` only.
+- No spaces.
+- No special characters such as `! @ # $ % - .`.
+- Use meaningful names, for example `order_delivery`.
+- Keep names unique when template content is unique.
+
+### Create Twilio media template
+
+- Enter Friendly Name.
+- Select Template Type: `twilio/media`.
+- Select Category.
+- Select Language.
+- Write the message in Body.
+- Add media link in Media URL.
+- Save, submit, and wait for approval.
+
+
+
+### Create quick reply template
+
+- Enter Friendly Name.
+- Select Template Type: `quick-replay`.
+- Write the message in Body.
+- Add button and value in the actions table.
+- Save, submit, and wait for approval.
+
+
+
+### Create list picker template
+
+- Enter Friendly Name.
+- Select Template Type: `list-picker`.
+- Write the message in Body.
+- Add list items in the Items table.
+- Save, submit, and wait for approval.
+
+
+
+### Use variables
+
+Twilio variables personalize content templates. Variables use `{{...}}` syntax and are populated with dynamic data when the message is sent.
+
+Variables can be mapped to fields from the associated DocType by filling the variables table.
+
+
+
+Important tips:
+
+- Variables must be sequential: `{{1}}`, `{{2}}`, `{{3}}`.
+- Variables should not be adjacent.
+- Variables should not start or end the message.
+- Must have enough text: `(2x + 1)` non-variable words per `x` variables.
+- Avoid too many variables in short messages.
+
+### Add variable to media template
+
+- Set the base URL of your site.
+- Select the field with the attached file.
+- Add a default value.
-Attach DocType Print to Template
+
+### Attach DocType print to template
To send the connected DocType print:
-- Use a Media Template and add a variable (as above)
+- Use a Media Template and add a variable.
+- No need to add a DocType field, but a default value is required.
+- Enable **Attach Document Print**.
+- Select Print Format.
+- Select Language Format: English.
+- Select Letter Head.
-- No need to add a DocType field, but default value is required
+
-- Enable Attach Document Print
+### Send template from chat
-- Select Print Format
+- Open Chat.
+- Type `/` and wait for approved templates.
+- Select a template.
+- If linked to a DocType, choose the required document.
-- Select Language Format: English
+
-- Select Letter Head
+## ClefinCode Notification
-
+ClefinCode Notification sends WhatsApp notifications automatically based on DocType events.
-Send Template from Chat
+### Create ClefinCode Notification
-- Open Chat
+- Create a WhatsApp notification and link it to the required DocType.
+- Add a Custom Field to the DocType of type Link connected to Chat Profile.
+- Select the trigger event, such as **On Save** or **On Submit**.
+- Choose the message type: **Template** or **Normal Message**.
+- If Normal Message is selected, variables can be added dynamically from DocType fields.
+- If Template is selected, only templates linked to the selected DocType will appear.
+- Preview displays automatically when a template is selected.
+- If the selected template supports document printing, **Attach Print** is enabled automatically.
+- Configure the recipient using the selected Chat Profile.
+- Optionally attach the document as a PDF by selecting the required Print Format.
+- Save and enable the notification to activate automatic WhatsApp sending.
-- Type / and wait for approved templates
+
-- Select a template
+## ClefinCode Chat Template
-- If linked to a DocType, choose the required document
+ClefinCode Chat Template is used to create and manage reusable WhatsApp templates. Templates can include variables, optional document prints, and links to specific DocTypes.
-
+### Create template
+
+- Open ClefinCode Chat Template.
+- Enter the Template Name.
+- Select the Reference DocType, if needed.
+- Write the message.
+- If a DocType is selected, add variables similar to Twilio templates.
+- Save the template.
+
+### Test sending template
+
+- Open a chat conversation.
+- Type `/` in the chat input.
+- Select the created template.
+- If linked to a DocType, choose the required document.
+
+Documentation: [ClefinCode Chat Template](https://website.clefincode.com/clefincode_chat_docs#clefincode-chat-template)
## Manage Contacts
Add and manage contacts directly from the chat interface, including multiple identifiers per contact.
-### Manage Contacts (Admin)
+### Manage Contacts
- Click the **Chat** icon.
- Click the **+** button.
@@ -366,118 +549,199 @@ Add and manage contacts directly from the chat interface, including multiple ide
### ClefinCode Chat Profile
-A **Chat Profile** centralizes all identifiers for a person/company (WhatsApp, Telegram, Instagram, Messenger, etc.) and maps them to a system user.
+A Chat Profile centralizes all identifiers for a person or company and maps them to a system user.
-- Create a **Chat Profile** and set its name.
-- Assign a **System User** (email).
-- Add one or more contact identifiers (WhatsApp / Telegram / Instagram / Messenger).
+- Create a Chat Profile and define its name.
+- Assign a System User.
+- Add one or more contact identifiers.
+- Supported identifiers include WhatsApp, Telegram, Instagram, and Messenger.
- The profile keeps all identifiers organized in one place.
+## ClefinCode WhatsApp Profile
+
+Personal messages are delivered directly to the selected user.
+
+For Support Profiles:
+
+- **Receive By User** automatically adds the selected user to the conversation.
+- **Receiver Role** distributes messages randomly among users with that role.
+- To always include a specific user in all support chats, use **User – Receive By User**.
+
+Documentation: [ClefinCode WhatsApp Profile](https://website.clefincode.com/clefincode_chat_docs#clefincode-whatsapp-profile)
## 🖥 Web UI Features
-Powerful and intuitive message controls designed to enhance productivity and keep conversations structured inside ERPNext.
+Powerful and intuitive message controls designed to enhance productivity, organize conversations by topics, and keep discussions structured inside ERPNext.
+
+### ⚡ Message Actions Menu
+
+Each message has a small arrow beside it. Click this arrow to open available message actions.
+
+Available actions include:
+
+- **Edit** — edit the message content.
+- **Reply** — reply to a specific message.
+- **Copy** — copy message text.
+- **React** — add an emoji reaction.
+- **Forward** — forward one or more messages.
+- **ReLink** — link one or more messages to a topic.
+- **Delete** — delete the message.
+- **Message Info** — view message details.
+
+
### ↩️ Reply to Messages
-To reply to a specific message:
-1. Click directly on the message bubble.
+
+Reply to a specific message and keep the context linked.
+
+1. Click the small arrow beside the message.
2. Select **Reply**.
3. Type your response and send.
-Your reply will remain linked to the original message to preserve context and make conversations easier to follow.
-
-
+
-**GIF Link:** screenshots/web/reply_message.gif
+### 🔁 Forward Messages
----
+Forward supports multi-select, allowing users to forward one or more messages at the same time.
-### 🔁 Forward Messages
-To forward a message:
-1. Click on the message bubble.
+1. Click the small arrow beside a message.
2. Select **Forward**.
-3. Choose the contact or channel you want to forward the message to.
-4. You can select **multiple recipients at the same time**.
-5. Confirm to send.
-
-Forwarded messages are clearly labeled for transparency.
+3. The chat enters selection mode and checkboxes appear beside messages.
+4. Select one or more messages.
+5. Choose the contact, group, or channel.
+6. Confirm to forward the selected messages.
-
+
-**GIF Link:** screenshots/web/forward_message.gif
+### ✏️ Edit Sent Messages
----
+Edit a sent message using a rich text editor with formatting tools.
-### ✏️ Edit Sent Messages
-To edit a message:
-1. Click on the message bubble.
+1. Click the small arrow beside the message.
2. Select **Edit**.
-3. Update the message content.
-4. Save the changes.
+3. The edit dialog opens with a rich text editor.
+4. Update the message content.
+5. Click **Save** to apply changes, or **Cancel** to close without saving.
-⚠️ Editing is only allowed within **7 minutes** of sending the message.
-This duration can be modified from the **Chat Settings**.
+The editor supports formatting such as bold, italic, underline, lists, links, images, alignment, and tables.
-
+**Important:** Editing is only allowed within **7 minutes** of sending the message. This can be changed from **Chat Settings**.
-**GIF Link:** screenshots/web/edit_message.gif
-
----
+
### 🗑 Delete Messages
-To delete a message:
-1. Click on the message bubble.
+
+Delete a message within the configured time limit.
+
+1. Click the small arrow beside the message.
2. Select **Delete**.
3. Confirm the deletion.
-⚠️ **Important:**
-Messages cannot be edited or deleted after **7 minutes** from the time they were sent.
-The time limit can be customized from the **Chat Settings**.
+**Important:** Messages cannot be edited or deleted after **7 minutes** from sending, unless the time limit is changed from **Chat Settings**.
-
+
-**GIF Link:** screenshots/web/delete_message.gif
+### 😀 Message Reactions
----
+React with emojis to reduce unnecessary replies.
-### 😀 Message Reactions
-To react to a message:
-1. Press and hold (long press) on the message bubble.
-2. Select the desired emoji reaction.
+1. Click the small arrow beside the message.
+2. Select **React**.
+3. Choose the desired emoji reaction.
-You can:
-- Remove a reaction by clicking the same emoji again.
-- Change your reaction by selecting a different emoji.
+You can remove a reaction by clicking the same emoji again, or change your reaction by selecting a different emoji.
-Reactions help reduce unnecessary replies and improve collaboration speed.
+
-
+### 🔗 ReLink Messages to Topic
-**GIF Link:** screenshots/web/reactions.gif
+ReLink allows users to connect one or more messages to an existing topic or create a new topic.
----
+1. Click the small arrow beside a message.
+2. Select **ReLink**.
+3. The chat enters selection mode and checkboxes appear beside messages.
+4. Select one or more messages.
+5. Click **ReLink Topic**.
+6. Select an existing topic, or click **Add New Topic** to create a new one.
-### 🔎 In-Chat Search
-1. Open the desired chat (contact or channel).
-2. Click on the top area of the conversation (chat header).
-3. The chat details interface will open.
-4. Click on the **Search icon**.
-5. Enter the keyword you want to find.
-6. Navigate through the results to locate the exact message.
+ReLink helps organize related messages under a specific topic, making it easier to follow discussions connected to a document, issue, invoice, item, or work context.
+
+
+
+### 🧵 Topic Conversations
+
+After messages are linked to a topic, the topic appears inside the main conversation as a colored topic bar.
+
+- Each topic has its own color to make it easy to identify.
+- Click the topic bar or arrow to open a separate conversation for that topic.
+- Topic conversations show only messages linked to that topic.
+- The topic chat header displays the topic name.
+- From the topic header, users can add or remove linked DocTypes.
+- Users can update the topic Status, Color, and Subject.
+
+
+
+
+### ➕ Chat Plus Menu
-This allows you to quickly find important details, decisions, or shared information.
+The plus button beside the chat input gives quick access to attachments and topic actions.
+
+Available actions:
+
+- **Attach File** — upload and send a file in the conversation.
+- **Select Topic** — choose an existing topic and open or link to it.
+- **Add New Topic** — create a new topic from the chat.
+
+
+
+### 🏷 Select Topic
+
+Select Topic lets users search and choose from existing topics directly inside the chat.
+
+1. Click the `+` button beside the chat input.
+2. Select **Select Topic**.
+3. Use the search field to find a topic.
+4. Click the arrow beside the topic to open or select it.
+
+Each topic appears with its own colored indicator. A number may appear beside the topic name to show related message count or topic activity.
+
+
+
+### ℹ️ Message Info
+
+Message Info displays detailed information about a selected message.
+
+1. Click the small arrow beside the message.
+2. Select **Message Info**.
+3. Review message details in the popup.
+
+Information includes:
+
+- Sender
+- Linked Topic
+- Sent At
+- Message Type
+- Message ID
+
+
+
+### 🔎 In-Chat Search
-
+Find messages quickly inside the same conversation.
-**GIF Link:** screenshots/web/search.gif
+1. Open the desired chat.
+2. Click the top area of the conversation.
+3. Click the Search icon.
+4. Enter your keyword and navigate results.
+
## Reporting Bugs
-If you find any bugs, feel free to report them here on [GitHub Issues](https://github.com/clefincode/clefincode_chat/issues).
+If you find any bugs, report them through [GitHub Issues](https://github.com/clefincode/clefincode_chat/issues).
## License
-GNU General Public License (v3)
\ No newline at end of file
+GNU General Public License (v3)
diff --git a/screenshots/web/chat_plus_menu.png b/screenshots/web/chat_plus_menu.png
new file mode 100644
index 0000000000000000000000000000000000000000..e83e2a33338ac5d5059c6f994af3a3bc1de854c3
GIT binary patch
literal 46100
zcmbrm1yq&q*DZ>oqJV&sA|WCmEg>BW3JOSvAR#FN(%q5*0xI1CA`Q|FQf}C^v~)>#
zOWpPQ`=4{Z^L_vGojdLwLx#ZK?Du`2SZl61=XwIE&x%6<6wF*%1s?46W? z)0AO}SL+1{S|TFPddoRgdCQ7XgUZpoz`6PPBFibUM2}Oay|poERaFuvC#QHmD=#|f z$c-WW(2wEav&Q*@%lsavLh9=3vdfIw&*FGC>&{L>y}Ztw4CXyM`LlbD&*nESNs#ZC zFL&Ncq*@nb7Y>`54Hx=mDy47Dgo;{EHC&XTC!Fs}nm<~vd-e0nQ?rTMgg~Lpz*d9l z249>nU%zUrO=8nLa#A*P95#!>Y<*cyAxqLWXQ{Zx@}{(H4!*U&)HpX6zG{vU*YSfP z$+dyK?$}Erb*e{_dJaYHVKDO}m_@VvgY)i^)t{Z$B<$LnIav0&A=ILH-DzMnuDJUqgXcWJzt`>6MU+ef)Vme%IMQb{km*%iO zK07y8;JB$Ln k_1ZR0Lf4)72YiD&NO1s9HKe7Vu1R2`o zdl;qWW9aGTpw_lF8 z<Dplq(4SE?KZE$$I5dTQUz*2$i z-JUK=YHxqS1G76zC0nol;%C)t T(e zuHa?;c||3qij%z&r=!)f#nB2b3 ZCG1dXDFqI%#g(@qCzO0rhG{q7n1$EO-hJ}h&CV$6u<+M-#2N( zVXyu^T48eq2S f5*Ki >$AV8rsgL4SXX`Fgaxz&b(}B5bJ0pSu<{yCl8oa`QF& )S6366TCT!Ae)Rb9wd>a#1lOw@7kW~W!MCV8;W>Bi-0>!gx~aMO+&9BE5*V(9 z-gJD6>di~uSop|n=x)unJ}1`EhBYZAC525$FZ1$udyMVcXiN;(D^9y5Wlm1cq2kwJ zN-i`$ck@kg*pFlyZYE!Ub;sGoMbNLp+QufL-!L*Fq8Zkqe0KlJXhqoLAd&*(p4$*; zR)!9#`K=#SJdZg%IOv8Af;##B{ei2STWd$h97J-Aka1Oa_u5{o(x1p~gOIOLX1?0@ z!u02tD`gYzg8cmackbNz0AU|)24evhA1#Fn6Y*H3oy}6g@A-K_?d1Y}l;e8MKE=AE ztt~f^{UNi-RuIATfbE+pl^+TEzL{T8N}0-id0IC;%ggzq2(it0ZpOsKd`VA_BC}M@ zCJt)$YBkV a=&`H|<76w4Y%sB{+*6 z9v+5t7w)$RVKa0M`7^9S_>6aUHYxdatr&-tjb%?{WvnU+U-Wn*)*bs+Q*dN_d^ N(Q&EMYJJvv^5(DHHU+w()+_Ld$h&|RT2V9(-&r8j2yy{9!vzqxqCp&Z*8#~3Y zEpqnv??RV-bJP}3TyTl$;1-O0k=v2|oE|X~H+MKp!SvKr{h*FV2P}c*%fv;)?GRYH z;4=dusU^CsJ )=P z&s9j3FdMIqfgqu?n@&eO=Z!D&a&x*_)}M)!i_2-Nl_4NFICsabCs?sIb8GP4+lEhx zvIB!UVRf(YNfPkvjPHuL{UPAiJ#W%X(5I5w|GDR`bpA+l5NV8{L!SQcWH+)^*a6RT z2lRS>MkxI{Cz~M99M5mlf<~u^`{O~9d*|bGK~G=*%GIlei$Bx2U;n(|$vfd1))B`m z__bw(aqxw0)^VX>oAGcV9Z@F>{3$&GB6QCFMCq5N44WCXexgGbHHM>;(=~GPK-u)v z&z~_M^h< ScvsPhIH^YMM z@;rz6E;MvLJ;_~fe{HNUUndC`Q*Z7I-t;{f-Pf;Q)1CT!6*_ V11*F;4i(4 z@m|Zla-ys@mgkNk(ai-gB))9 F*RNFh`C!o`dHAyyTi;PqiM`nz{C zh77KzLBQW}79JlTAFLrHn3m9}alVg*Pi4>?NE}kwC34iB8O$sqA|exguRe1H?)|gP ze5cT#g;d$Oi2Ctu=hc$I=kOP>>KRyA-bXO2DFQq&+*Z61Eb-(0jYdGhVqJ;C!=-Ot z1SIK06oE=$_?s@KR;BF}1QZ57zURX^V&VDoDk0jT9cJ{)+4=HLj`A~UQSn|l4|+eJ zyZ^hRF*Zta{Olx2X-p+z#z_+gwhx4z%U7?~e4RYMvA>^g)Df$8^*vfOaeiuX@u{)# zT^bsiv`eJE%UAL6YE3K^4j$&gEC<}ICRn@8%NqqrS9^C4VjClA?)A1Pc83dtFrON0 zlPMcydk~YqZ%j1~mswE5`|O7?i}uSAOa^7vAyf)XtmP}{@ogql40ro{m(6Bo`UYg_ z*!=4AZ1&crUgvRpdK@oYoSK_fmZ00(C?7q#4#mxE*1TP=xj~mHr1_Adp$k}8+bcy~ z*U8DTJ(H5CA;4DY1!QxP2annfY9WOOm9X;$EH=T~55K&Z=aW3XYE{{ `FGL zuC7?P@~S$b%_}@KJ{iVq0%p&LaW7%gO1!r`)@~o4sr*>4Qmfl&y@89<*f^2o)eyu6 zB|*6e5_2o&6PfKvLKl0}x%8SYN3v;UY0iFC-P>TA8j4^}++9k3{VV*q#-$* ME7iLiq3*>hVHOpM+iZ2nY#hY>$@n>$(?hp+bCI@x+&l4EH?+|0gIz z2uVmJvQ=~WtY z|i(h7h)>17D1krgi^qEa<( fS(?xDfVQkFbg=W$*le=Q3v1vYX`~%Ol*&Ab@lfWw5bxodPjS!+-5@`YFzfM zN8Xe{hQ12qf$>CbO)8ds>iL`%LLRh}-_># ^_ z$~pX0DUn8CFoxXrhF=}8dz>-b`Ds6Sav46|T0mzWkPtr%F#u11%=`&hyUq!s9*IzS zeePY%P|K%6067i`%V&uFh60#RoQAzkmj`l@3X@XMUS7>=I$&kR% b%=jAxW|RH(h-FEvmtWai|Q;p( Po{C%tspFTCf zzHkJ5;RKaT3nan3sx`gigH1?+KcTq77EF58GifsPjfPn*Zx)8IJ&reDu_4>ovc!BW z7TH|R&QgE@ac}axAFFaubM}l7t SD_8U35I0iwe@REXY7I7L=S!L2a`W zXQ#XvT|(RM3$q%au-}}E(%Ay);2x5KY*;fjTaAj4N=oEpM+v}Bk1;ncwMhIGLV7-} z&p%B{3Sqz19{#=wr8f` 4KZc| T!00R8c*XOMUVqF z;U___ )7R3! >_Er``-g2QfFLvz-JrIq=$rG&kb(%M4+#(U7$=PO-Rj#;k2Su%JSUJ4 z@+0`BpjS`>H9qE`FileghyIUyE_-IcZ#nftzR>(ycf5tuC3+^LlrF2Hs+O_k8zrSO zbxzSJF>y{*#GV+ce%QM`>2lP6b{559eQ)gTeRbJi3n~0m+0tJRCH3M&ooIf|9yt_= zYOHE74>>w@iECq3TmVWCl4dYZD@MqP6E+gpp0JyC7)!v3_FS1?y$*I#8)X=S6Z2WQNk9S0x z>(pc2cj3Cx8DdV3%38)Gc 4|#n(H!q@@`gaQ%I|)2vtLbTvjK h|__jHrhQ5FrIh>@DVy zI^m6-uO0J?w*avK7;N%5-KJ(C!GTF?YI;;@x9q2pYhP^I`}OMS>1jxi4Luzl03m6A zJj%eFs{nvQS`8|f=sF3nU*`j=5JLSIfOt@_SKwAdkqK+O5oRMHgx$c<5ZPvxwu_1@ zzjVcv8A?q0^?Fhs3ju~iXD#n_i{lsQH3#awGTq S&xQ+0Sg~LRBwWyM1vLPIAptIZg%!_k8xm0QId)P0|P2k^EJ?YNcj4uD-I9q zUH{UO|757K(Ho-A7C Nf9dK?o-eAo8bZe#jeR-lVNj`^w_F+G`1$i^{4WF=a^JQ7*dbuIbkF0|^+zbR z9Pm~Us?#877#JDB@w>@aogpAtB_ftPLPC967cSw z<#3!?Ps+uqsVRU>H!*^m8$u`rjR$gWz*H*okcy3_ vO{U6q?ruPj#mhP&u?UJ% zVDnIIZEc2eqobPX0l1PO6v+@35nA~D4K6=e!lcUzzOXcbP}p0a=z_Fu4CE7Va ?`boa&jA6m3!l#G~ApH1F`F|e-;`_ z128*W%Fb`;?EC@L1%UofA3l8l{Lovol!FZSFGY2Qk_gX#(N^G7SXjZZ82~B4keK02 zWhST~Q81D30t2%)k~!zh!~tK!aKVav2>=DyPy%Y|E?~i-h7Zyox(7t!TTCouA;D9J z_88w`VhV(z; AS)9w(0 | z1PxFHa?Ni0lsBtrIw~9p-V6S{#TdWR=uSn|?2(kFsKr)>FX-%|qb)m}M}8R(?>7Kt zS~@yJ`rw2V<9@Wto9H-w1z67|V=hQ-o$>sQz^le^zrJ2kQ6Vet?sl}7_PY0L^+p5E zdrHAbgy4qgOXT#WZG}(->SC3tx-j`po(qtYupkT0W#`xGHTYbqK9~;Te)B6FmZ;!G zgg0#iYQXXAWZ!9{9t#nJ0K(1#H^I7fSq%~t0wH0`?k@E!srG_MP+e0K5E7!QdJed3 zW^!)h2XQ=a;^}KI(_EMn;K;wl%S)Qwzr?5d#h_@Iq8A+@?qx5Ldd<6DepES%g{z zxIUlkPo=1;!&@}`-rrxcAb=eBc|e9RztZuaA5Lw-^Bo)=sV%AJ0Ec{MPE@#$wR2)3 z2|`d*viOvx+RK+O1L_}7wF|2)Lvd~J>J{OQ8v(NE*~Q6)pNz JlDi7D?IVL>I)(q@eLj#kmMr&TS@M} zQS1K0O90oC0jtNykH{lh-@Ukw3|oN&pC|&ccT85S^L|}uv{*z`l-emBT=*R}aJcy_ zm02(Z$`Yvxh(7ozqNTM}fkaD1Ru+$`XqaV+4$3?!$bgJNc}y_I5&b3+h=8a-hhU4x zcj)OqB_)N1hT>l(=ayFui;H7cnuCv4rbcw3nU|3FfYfD<(@bQtsEW*_5`!yTghDE$ z4hI{X4{o#<_fdq@V?bM*TU*xQi@VN?PFJAPqhiyper~o@-C;BXl8mfj%MBhx&%}aH zg-vreDEXV@R|=8vf27RW=)cdWv=gnS-pYY!o#s#foz@xi4PGJ!PFA )0$K=^H_#wlkOaL5ovtGR!kKp+>Ehk6E$;HJ0ja-RbRpxBw z_7cA++?&`mO?IFfM$6DcX1GTlY)-9-0o-+J&y$A_&(Viv{@Nv{1Ce!FfM~3B0yjC$ zphP3v@UFDu6`H2|h0j?+5?ebu$BT-ev!Jt>XpnIp{60RD#U{9Y6H>i$991-OAK_sg zMpbiOZJksvRorl8kjFx|8gT0J#6>ih;T8>R&WWd8*M|APQ_bFu#AB< &4kYS$I~6#Cw-Eu0u6VaAgSsnA&gw`#-;1wByf4k4OD|yMoFtXI4>`vmCMtQ{J05 zXKtz~sjLV5eeomi4HC6~{cyRA7P(nN<-8d|#+%WiR@b+AwUq~mDqH;2=s6Z6t`5B* z+h>1u{BDzF!a}(?w-&vdsC)~#U {rD+ncI*nnC@Cam>{xvcUt54uDd@Ke3&Py&CM=Q~v>`$3nFi8?~ zu}mH~ACd2A9^Lp4Z=)Fv`9FQa|F@SEB$y(k)bC`y`)B_A{Z}}%aSoGU({p~>$P$_L zfIC1xfz=%Jh!}AMyyM*3*!VE6cAw@92f0x&4ghFj3VKZZ0eRILM5LcbS(j!#9>Cu{ z%vF_M&nExpm7m7k*I%mqvofDT_~|z>+|wmi1PM2;5Q0!szd8#E@B}15kJas@H~06| zNFrin(`_n~Vq%^e8PP+KhED@PSYKZ+`)0?vW(V0b8kzkjK>He8F7N_`_$f9vu*dkq zcVlk&PRhvWYhfnxSen55;lsN?SLDRm6sW*vl)4+`pmCWdFYJUY+Gl9DV81+EGonq9 z1-AX8T-DTmlg+)oA0s0-gC)EHzZLbUo&OsXQqV*R->jDU7}G0LK=GYActLLl;nPwY znZbWI{*Nw#N~{lZ43hsK9rB~!@Z1E#43W~IAl&$liN661dU^bLZRMxSy^FSpUjMH$ z2xtTepuh|hJj(1>f9Wk3!^`dQ{9%krUoH1m)D7=r^z`%~)pdK4Xc81QhPzk)MhD`_ zmXEYT`=d4#BCcfY?Cj~4sgj|Eu7}o$XpHy^s-3onsvOvL+z$-{-YWh41B1@2nsW;> zyTiDXKT;h-*<1vKeF&BCQZb$y1aLmfNkkKcY9hT!=>-%B1lO)5v-~hBx<*N +x!SkgjJz9!LeD>G*IyNp{(iPDF$%thEUqDj+C`mX-C{@CEGjuhasz z?+{G51= QssRgp z3k I(TW09&EDx i8dBjd2R6Z>U$=U8)}S*{SQ@AZP(EHlkpUhCe?YNFfdQa*VYrCFWp9NBWPcd5 zdoRCx>Y=8xy#6lCl gscTL<6rm#?}poQMPf4>AN1dvezm3(h?gd;{~6reAfUge+L{-~O5c(5_`=+UEZ zcFU@e;X&nj1xp=Bk7f?DjQBUtuP4Z&0Gx1;2Sdq^8P@6}n=YQ-3s`S;%R%3{CK320 zs52y=Jb9<21!kYu-Jj3F&Ss0seNn~+^~*7kEyWfSiSQogIOQvUSGWNbj4zk^GF`!u z0{Y5ZQXSWi5HC1E8bj?k&6zcRiWjg8gl&M-=ion~06)fBIn0v_8SbUI+dz(f{Pal- zRJsV21CaKCbpxp~flW>?z2AgV+!u@|**t^vVatHAny%`VXh3QAV{ou+$O_ @0m z{+Fu`41?Pc@J%{_2$-Cl)T?j4-^o)Qfn>dZrL=z+5dYu4R7Subky) 7qj~VJB)0c_?>B1UIp%NY&^(S6+ErE_Uc0v;Wjo6#<%AzWWf?ZV?wnBXiL)b z$`tZ`*I^iXcy8nc@?fx;8E%^ZSa=ub(_z$T%&jOd@7ZG<{_Xl;vq_0SDFYZmR{i1u zk(FOTEOD#~j9JU2bO2@Izz+hT@+Ckj6)|Np&`_bkD!Cy6=&~Vr*xx>@4e#;j=nASS zOB^3bbG(M4Kj`Y|% h&K+IgiSu3S7;~!LJ zE@4C(xb( 4g*9V~H64Y mU_R_I^)tpuAPh^>jG#IV(k^IW8EAC9W7S9>P=pC0lQ4v4PMRGk;t&~Ix z2_sgGS_X}=xeH6OFXt-v9qmW&{^)QG?h;9q;u^EB9dcEu@RUcOLb*X-60Ol7)!s_r z9oh7SsvEn&e(W>{+AY{RKbGryrw!Z3Y^5Or^?oWoXzxc(!|wC<@q)$v!dRXBqLB)c zqo=|v!zKRFMd P93wyopVtrYk^~Bb< {0hUc96m$2&d8GcjHK z+P?_m@B861yq`~&3!)}|f3z<1Bh({dViooIdKsrj!{r}cv0d;7-zF q?;d zyun}l?c98ASYb6G*J)9R9hV?~$@DBo$hlmN`wncR&B#RdGOrw#SI!Zw)5IT52qm5| zMu}{T==To1F&ilju-pFg{fu>XksZ4cU4`$k=NF{Fp=STnPy7+p`99KNj{|hx3x~Ub zd>TDfFEUbPo|YZjk(^TR#FT|R8^NaDju9a;OYEA~3Y;%rX0~^54z&|KX_5<)xQ6%P zm~vZtBJixnVzc8ba;e~F)Lkh`TZ8SVgL}8nWlWCwe{?uXo~Vv^lCIrnReI`p?az3Z zmaeBeK2DN`n8DD6@gpNbprG|f_S>Q@N33eyjW|Z6T|EnX&vyBX=G{A*yQhS>zs&AS zY0^*8H9fPy2hYQ+>g*90m-sl1+lNa*d<#cJ>{m_Ssb2j|=Q zTOM+(Q_12_Y8Fl($aNI7Ck_Nyii#e4v6Y1!ccnM=Cw!OYav^Z8xcsJ9p?c>D{=0*a z4&Sbx2w69*nODP|1MhCrI4$724>o?MaqB)$%Inc=@5V=%7$e1Sgn6MvZ>f#T*l4)X zVbJOQ(kOmW#aT@L(?vdSL({}G|FS|~dDz#}UkCl8K)tZg97|lE8Rh0r o3k~g$m&x@7f+jcHa_0HebhweB*kX>TX{lKS~lwS!U?^tlgkVt zW;qDfD~-z&Kk#J;#chKa4bXab~0Gvb^p1GKG%mqS`n?_ zC|XQA7Aw|%Doz$KGo-uFS3~O#^r63Sls^GJ>YKl1Wf?nb TYI>pglyvL8t z9mUC+Mk;LI`V@W7>~P&$Waung4}G|5X<{7SM%4elYVGx -^m}#p{8Vze=~gwLFO8_;in#1tX7-l=i;xMUfKPlkV^P&QzVgZ0r>7 zw&(L+(#|v=PsUpCm=6_yOnUzG7kYqbp|8MB_u<|94eVHBzA1zcc2Iowr7b5Z)i-~B zb#aJ|u$GZ0LWcBi3NgMg*N5)9$n68coA0E1lBEOm8wEp)W(jtjoSAY1c`Te6Fimv~ z8h;DR(h!eV2u?AS72Y2Ytv`v6v`i*+*t=NjQJ;R)1*opv(Hav+=Z{wk;ih!23EJ$B zrIW ~~rr1;IeRsFX?sQl3b8e?rq>ty1eDM vAjqv<3+B0;UD+;P!9Prz*}s}#2#_oPjm`=i~dTtd9%fISzGV3p`f(U zGelFCahVfT6zF<6oML52{ GLH20c;^j2`D8U 7rJ^FEebOcB`NvokCpC?i7P;fI~trd-)l zclZt{#MGX V%yHZbfk7ZEhGJ}kASF~1Ji%~cI5D=YJfE?;aNU~PK#!=0iX zg+le*RLbrL7i>j*VEO9|pk|(_--X8=y)2N>xw#L_fBaIQNl%LJjK#l*um7f9B;(eV zD_7bR1f#&5D)8(PFsWvv z3)MU=C+DZa&bk*>_N+(?2`~m|CaAlim@z qa+aN-57J2D1ds+P^ldK2he!7TK;d) zTdJYhas}_k&iX_Wh(RBKIT0waqobwuhMJOqgyaWEo=|0==`m*iJqMzh4jefil~4=f z5*No8o>h*5vJo65WWeWxs>T3J1DKyUtY@E;nhlFdNcbta T z{xcYIpyB~fIA~ jp!jeZqKSa+vg_B^W@KbUgess(zyK=+)D6Nyf&4HW4qoLRXuJT&*%aAr zZt`GoUkF6z|1B~U0yHmTdV 5D);u@w4G$zrW8a^#!z! z$MSso^69<&4d}+knXIT17&RD6aNS0WxCsCW27bk8Xp8Ahd5jZ9$g%>Qo1nwm7qFqo z^JU+=caH!p;~?ebo8dhGzsBbFHZ2bi3AT6 sQ|AX`>|Yz#!Ib}Sfj*X;@GjAtU&RVMShv{NLV$Hd)YF^> zSiQiQUB7vAnUk+XBUeA;n@*j3|L<5!YeW_(e+aSVAF+@$E?&1p1L9pXS~?7*uvUZH zw{Cs@ xmw$CFw2_!*1Q4DkCFCUZ+)Q6_; zk8IWhqXmumxjF3oLIG!m4sp|yfM;8i{Z)o!s01g+jLi-CRO{448K+Ve8Xp&?ZK_P6 zn!G5FO*$@}X010Y#n=u>Gz?R*=tj&4fAR>aw4AI+bWtug&8U*E|6m!1hF+Hrl@a+* zDX(QCtBUutcQ)}g!gDPq7LRQ*QZz+}E9cfY#b}xv<%JZ=& zZc@tb*&dJGRkpv)OU#RC&7;RmLe-qx?CX=oCL1{$B|%xUY$#Z)yrKc5{};@Z{>yi8 zyv9S3_RhP{7@{Hv`$uRK$apgHp442_ad|meoO|=LONU^>&2a2zt9I9{8@DpA3>H0; zv9~WR3;_M |FP6u6lE?gua znnaoAcQUZ8af@HNdgt!<(Aebq9PQoA8D|w(j`&fmwAHH5P|ggZLIJShQ8TeJ^x7V) zNg;N4H@H81X?i4C1NVtmdjrihMSvzqz$SQth5K20Fb`Um;-1x+%|ed|`nTDy9ULI% zWny>kLBq`NDvP?g)H!N_lHr5xOQmO fAA%cUGDq)dui8$`8lC^}e*(7%E!e+AJmV zV*4V*016>T4Db3$ E7!mTbbN++g^ z)O3);YWhz4JUxUyYn8Z-Uq`Pl1k88#6o^Yg-wMe0J8NSjnUbo?(5JGoxp@w(ofyHY z(upGYL33!|%b1wwH@AMCpUkXqEj s<-@>q*zp%}n94Kps+i zbk~Ywm97u9e%e3l=uU3zHeuf%#aQagl?E!F-)fqVlwI4WLEp~f_|)a&eZ=@+)_=SD z)Z)k<+)`vbW_)4v!tEJ7XO^R1ML4f|LK_c1{WIlD&}WMnK^umPRu1Y`5ikWpL477l z4U{Q~vl$Wak~uBZV?D3hlTLIuAu$zsv0BUq8#^Lf!)NeEuqdWwSIfudyc_*Bk`9pW zJ31-PB*hxk(<=js$jDku^Vz>c=S-#&eQ&lTuSs9VLr}RAehCY|!owF8ikU%$Zuf=B zee>|RV^LSsof(Ymm9#>}S7PB0(t8<$G)<~+kzun-IQ +J1;QkD$+jVx^U2sxiV2TLr z?(S9u9Y^;EeDi{-9M)DP!YKdW+Svb(dGp^nZ8Bk66B9e%Rrwd0&dVASA38a;M~eir z*Bxl8)1m8)iZ(~`>o^@JF)D4Bo -=!$5T5(PD YzYfLGiklC@LulcX$}3AOxWvoZX>~ %t(|yr$^m3YyuG*aCa${Kf#%Z1CcNB^g+y5F@ zQQ>7=T(Rtafk;BJ%MS9n4a|ZJaXULZdc3JUv&Q-b&krUi){9IBWkt^PSdnoMCuG=~ z4(cMjQGs8g(UIVGWWBSX1DzvRJP!^WZ7Zb#rpwFAV?3}`CMvsM5nO4vBrxzMy>~I1 z*MSWnw*Iok$ieEqXogN5ReopEy6yXg1szHGOy%Q3CmdSIV0uyZP>)WJixw8_JQgPr z9WOlQz+65*T+s!t{plSt3~&Hfa$~Q<)V1AwXTyvE6*Ed!6 zNKWu)kW1F7JIy(p!U9Qab)*Dq5_-cP=&~=5e@tcb*VQ10<<#_pDn&Xf@8CdtEr5s^ zcG~p*#QY(t_HF2s0u>m {(xw{BBj3Q%IMkgslSh!P^{+ABW{c#i0o! z6H t7Qc&f&{XCtK-{4W%VT8k3-ZFf=%E)3KN+AR&R_AayHLtJwS8lS7# zC)xb*!h*~7KnqO|29H&h?2SMBSkn9iHZ6;#4AXLzwyV>|VUe+c(166MF}ilQXuni8 zo=+Am8uuF;jDHp1=uuFB1!@f|`V#&Pul#&`$bFhJ6)m7DFZQIS>r*~q8fDa z@gs}t{2O{muTk304~KDebf|^;O;9IwXCmGrYF&Y$k=p}t78~&O&1?}1`Ox3(bGK9~ zDc&~@)tE9sh=BFWM?l%pt=kCmZ0KAwXZ5@NhWkWmum`Jl1K0+kb?tvXM%G=ZIU%k1 z4-JV!)tRiC{d%~N7 xix;taY9#TUcPqWMYt|-11f99|hn=APY7G4q&+TY;9*FmN0jEzVACIo&EBWuO z3f_%VxeOMuvNB#8nq)K+h@&^nNwsxLOmtc9eF~3WxLY)AMiCMWJ+>oYO~Cr>=8p#{ z(|&E}A!xzSJ(^}(W{yPeH+3fx;7FGe8nF4($B2!4G3W4DIx&8i2(C)Y$M 0zcCT43j4qOb7@FS_XAa{HcUpQWP`6IL#01`H{q0sso${pd#q# u}rkWY;6SBk=V|9_6_9ILnJa7EpCj5YkEnSNjt($O8KS{a`lh849lZ ztGq}zbG^79-x7Mu+1uM2tjd(8bq8KPK1EOwZzS27^1H7@_s(E6Q3*6P`O{m1PscC< zY?D{ZaM&ReYM;!TUcmCVTo oe3bE(rA=cJIm1lozuKtCnwgxe`#-B5(4k@ zLIV!=I-#VH1Odi4!PkSOlyA?ywOttc_#@cDCOm3xH>=+yF>xDrTtsA)*O~j|XdE#& zy%{NC-ntx>AbiBj5JF8m1@@l5cOKDks-K( uw!zx;=+$n z-dN;l6aKFDGyq@7wxl7tQ=K*RrtJRInf;31;M!&9eKx1-2>56Ix0!ci1ADJRXnWlF zT#<@8^QgwKI}}L-5qS-b*=|}zGwT<$eDk%HY2u#M27?vQA6qWU<(Fo~-oV=?Y@M16 zG1Y9KI8vN5Hf$^E!am~dvgzoXj968S{^)2hD)B`8Wc`nP{Yk$I?$2IZ(bsQNxQ}9& z@~jY!yPDlEcBAVKVAY5`=+$~w?we25nI Kt{;X%Ma5E!a5PT9dPz(*0oX^6c) z=0FYY7c{U1plz+dbdaq=6EO=fD<)4F7Ce6 1?1;3( z=!AtSgPQ- G>NhRtRlN2-ht0#I7MTgp)0R?4)C4Y|T6d zfAn;x;QDMm7B$jfk@LLZyeD+QBYj&)54gzjhIo!|RBS#x@r3&kEA;i*=FoyY-k-|( z9UvKgG!g>AOOwE+NPoeaLyBfpqNJS65b`A)2!L47y&Ae rQB8qPZb#sLG^z%KCk%jRp>@HuVW0q}d9i3uCpNx&5!z A ghD%ax`ss{99c>Fp>9C|dMRpCCXM)6B% z)GCG^NN7o$USID5_WCin_9Bp_S013U5E^cAp+;NopZEps=#1IE7>6GV3CvS9j-MP# zApI`@lCNum&jiP&3IY8z|1O67FRAALe5%#IEeCihfo)*{y~*HCb<;DDgx *AdgCiI9#y`g0hA8B4{=>Y&7OH*R>l~UvrbgaVE3RqX^0f4vTThjPTiR zun|oU+@7Kv1s;vGwzl?fREPD#e}#R@zR%=7{Oae-^=T521V;UU--BlSgTuqA)m2th zxlg%oYr2lIG$=t}js=DuvH~oLne}y8W}&!**fjG0! GwaZz!QW5Z4^#|l z!nsBp+(r
cP+e0DI909CohIDS|eEeWUWZeaddO cKxQ^p*`KMU0O%fM18C%Kgkwimp07a zu)y(2(2|EBQv#JQ?Nj%`LkPm0+DaiI=mP*MeuCjOeGB$JNKj8?W&fvf_83AJ268=> zY}FnBPbf|vBvA&!LW4yG;T@XIVOxJjs1bWG4})Oz7WA~pp|BK7H*nU%ktjZJUI83k zGROHDYJNB+1qW_QR@d|&`zS!r+js6Xy}p6mSUS*`#bqkW&}{;83=~0p5l2Tyf=i4P zwV)x{j NNOLk&$l89;yQ!Mp3^Xz{azZ|X>Oi&)dKlry ;pdM5UD0Mf!2zB54wwY;iZ$WF>{}SXMkT{D zft+&gf3w-55&aUxq(iVRS1jjMA^qb-vKK&bL;uD=&ijC7I7polDtK@R3kqZnXk9qp zUFBeLosjV9lPB^#Y0!v=1VC6H0@_O8a|NgSsQt(r^l#W`S>1O2QPyNVoiFbpz3e)5 zB1DPVvLF%1o!e;V>e_(GK#m|mn&4d4Yy5kR!RXK#0V!O*$mkgaj&K!ugO+?mZ*s)` z^dBv`Q1pWQ5%%H318ZwekSZv^SPlJRlk@ZGNNJmbt>xf2>`!Q8W0Qckv9<;kpxKE2 z7aY=obT0NT!g)?*WA--@!Ip;RE%=*@HCUmGR(8I&Q2PI2?JJ f+uRs4{{e(I&ojtq!owu7$0Cx@!=a z9+OrruVw=c7OpvTqcYe3yOvaiF6=Kw@gt|gxjASye2}4lZ^CaqXa{$EX5jT3H*O$W zNGQRh`Zt0 9<@c#T)urPvqn#!B-Eu z(6v935+VL(JC5Ma+d+$p$EyD>VpB)!x%v xAqIyXoV!z1g`X^%Bocn(!WBg~& zE31oSBPc$(&l32&Mui&GKCMi*eGkCh3pn}XINWOxdmri!WH$!7HMX}xGmMWC_`;CT zL0b#NCvPCIBgA0%2c9_UWXH7b+4B2#&Jf;ZP2g+((^i6~KqC(-n0N6X`z)RJ7g1$g z*~EIOkJWS39?3!HqMIm3;ovlc;qXSI6!2{-9>~pw)Zq EdNv&6=U*1da69K_ zJJf 1-WN*_D>z%=`eF%CgH?_VRXf{3|wR!dE;*Pr70l_7%(|+O#;Ig@% zo$VE%(M^sR>OdShJ(er*=;-J`!V&{%HsXB<);|cLp{P=8 z{a+~%y!-H7aEpY*B9o_DFBDYhtf2I700bId5%4f{r7=)5ATtKe{A jqoEZ@p=hoNRnx{}N7a0#g4MeHwFlkyG z{2*=^kQO1jQt1ICYX{y)h*a7`G*-e;F_#azC5TNW;)?@ks!1skBiJw?a!+b%gd3zD z^XoZJSVV*b=s_za&`?uBSik>mB`CFb4*K`?onVo}7zC*vmIEY{hz9kpem9}<%a{BB znI(w()bzjB1E2&>s6xjK_|)KtaNld64>}l)(T DRK8iksf-K79yulJMox*-MN^whK;5gx8{+%;rcEU32wq@18Ft))dYFFYQ4xlIQt zi`{3yJp@6}nl{R`^5Az;kHb{-2^ 2 C}sY(~O@JnlO=wk{EK38}}@)hfoQqt8Wb1)`mq#OKE6OK OGuLtOU2#z|<&j#9v;P1j{)sy_?% zR-xO5DH8ZPIUt@urJ@YcmHF@`WTP)3)c8Rj{-<7LescjE3cLdeT*oR%ji%u+b~zUh z(rfTB0HZg5hymSj(lUEmgDJqt%%+$> $QvV78?|Mx# uF&;yj#0v<`=af6_iADSRXg2vbf$OeodeFUp5Fh_F9 z#e!T1 ^c?%+LpP8{BNnN_=PjMpNSiRf;U3;! zP~iB%(QMAg8r;GTo2;aSPY85L?9bq!1tC8UG%-ke^PX1p6U0b>AO)d{1~SV(c8`$D zfj8|_NYXA{ym%7`SP+D|!GHp`g*3nv7GR(QXedx9z85Bh*BOjMxCGb~B+YGbwIvX; z5YT)A2 1~(yUFo=ZvtH08j z4L-IB6eR#V#{&xtNlk$?VUEqGfkFf7pCaQX0zl8}5?w}{;nE`_Cg?na#mMJAOAB}u zY+~4TYhb3Ll%vi8zGxDV_Rn>toCQ}g22s&OKqM+fex@mBL1qrNC4SID7IG&=d`STu z*DAF{mW=t(M;sVlAnv;Zt83y-W8$?E8FV~W?tb)dsJ~`wyTVg@3`-7Op}GD-28ika zz<~3wJoHP!L(5>cD+QK^1ne*%K{E&E7vQFVI_(0G7lD&UD7s1HGHj0rAJ#-`6c!w= zwD;Z=IoSIl<}D!C&xDmj?kIQ*#4f-!dE}uR(=TRlXcj)MaheNP(N&W4=mSZN|JBAV z&^ZF?OMaO%=t?VM%> xJ{kDHfP>& Qr0>};M&KCfdz*31C zP-Z~O5SkjqARsB7g1>;K5n^EiKS=tquyENAhhQgw0?EMUUIX7)&osizmm9EHa_D^m zg8+|!8VvYC>)zrCCndvy0v7}1KgzY;co!}h@yF9hSi!YF`x%P84|)LiPlI_Z@?n4z z7q#%u-OdR60KoHd&m+kGUS27Un%QD2tAG|7m`>afaV?lUX{$-pAkBQ_a1Vouo?7bc zY;6s$TB(T#y!+Ifw{L0C`htfnLBMUpHhO;-hQ>R>Q7vV70{(^*6r3q{e?x)Wi>F_~ zTR``C?3* )NBSIDoyb6Gjz|iJ0fbQTPfrp>04KBu2E-R*x+kUWp4-ljM;uld-(JW}9Lz;?s zfF=mL5J3J3*A)Ra;ShrL4@*i?fZIOkDFwoe+gG*&uM~v724q#0-G4wB#NEf7j}kU4 z5cq(scm? Ww)u7llOJ3v4XgE~+fgV_jzqaa*Zg(kt}@=1aw?qq-kH^3tM z-!ne}s0g5ut~$)nefDg8_US;fww;|_A iM(GgO5jRHI$){S@gqSBiGF79oD>E|z zvgxcF3uU&B+gvhmvxCzs0=puw3gtEeGJ?h0bI@NR4u~JDGa }q)C=&U(aQVwo6Bs1=MtB_uI#5N6X+WQiyAp-*tqtshiTumWOcwzItADc0;V8F zB)j|jP?O^L6!KL!he{HUT+CZ$+~#^1n>HX+LWdo3-+_1@`>*%zIV4JOXn$k>lLiNj zAsj}C^(q`MDrGjhu*bVe1yAL5o6n9^34nlg9K2D}z*`sMNsGO~pk*l>aY0KT5w{D- zi_!#4d~6`?YfNeaY#Z^xz?zn7bz7Dqj73EE3bvD ddyz8cPD4Gu*3O=!hknce} zgM$z0OTjLL=nh8}2!auRoF;{Dx#)&`$kmj#u`AG`S(H;YHJ!d!?R~&+mTUnv95A#Y z5olUF5qF%H2cKD8tG^G>SQWU;C8ANzd*P#O5Htsh%@W_}MS{Q)wkTnX*kZ;PYW$Ka zIK+DcRByZiBU9uKg`jmBYORNmvB6ymbUq;(4`$gt>p_Kq-ZVS2FvwLYpd#G-F*Jm@ z_huT~^T&t4!EpZ(F913J*x rZe3qae-BB+PO!gT< BHRwpR0e +D@$Wo@Cl|wE1qBCS z7ED0J2LN9p?CcJlwUA p#00ZTs` z40W44#=-l!4vURJOrBw`0ziA83#3i?<3Z7nDE$?x=l)~00bzw13M61&HUJg{0|Ns{ z>jHKGoVlJ)(PK6317(a5RFRw N%lGZ=d4`12O4ldzMuqc!Fa+B zgvf$;2_RnN@TCDZss*oZ247toak7r**_c-^5?F1E2X-N)1x^J(ABFv8k`lPcEeNTC zPY*blnQy|yg|fC6J{faDI &&>TYAA^_td85=;e_JZy4^*4eL zvnn`I6l%%$k(Z_n0TuVC1s>p_^hgpE`wsDS2DFr$n;Tw&goFgZWF~M5PqiNU_7z`I z{5myt8#IXmgMua?y9FS(7dXxr2x%Alv#{A}h^aHeW`|@0-soXkHv&dBP44aQD+9X= ziV;cpqL3oj!yN`G5?CxC%yJshAh4{1Adg%-#0>i0y}r2}{cY?t_}@bGh6O~75r6{t z5%^mwU^}o}xxjfQ-ywrU4d=86`CAj8D}E?PqL>#Y6zrhFpWHmr{exBdv(pg;ml^;L zBrS*af}6PuA}0{Tq4&qUvw*U3JcZ;Vo2G 1Ry|wmO_TcnXsMr+{XqO&|F+-;#!V)c_tv>Tb5S-NGv{D K+4io1t*{;TU=RXzt$3Q ;psBC^J?7j8wrA2M5z0(svkr?JgH(5))XKYPst}N9QJvF`-`( z%>YgDINumMNOTeVlmlp8=gGJR8i|OA-2VO#Q7y(!CQm));CTk%cxg{u1Bu-r&xNQC zRB+9AU=Sd={UlX&+t`5E2+^KzKTeg0)|6Hr*-CxRC4l 3~@Il4`F%{`)LqJwjKTAYI(+;PhPv4Aw zTsAu {SWn^%W@qy{u@2o?qoZqYA zwyz$ka;?W V3l+O2xQ_2vp@bXr9-5YdQnFYpLxHCj32fs)i%jm+zQT#7jkAz z_FTUN`7cUc5G;XAAs9nPZ2fSfa|3?B#jF(y5ZNmtRd85NLb?NG!D%GHgLn_ohB+RR zx>+om4hp?VXyHA(|2GztPh~bEk?pqS_?OTN1FKPV9X&RWhUX)b1AA<+6YkNZSm+I< z$;aFb3Jf%aKK-!Q&Irx4o+?KYDF#`{}i5z8_A>lD&A6&Wj&Flx=K^lTrKEX@IC>O1v01wVYR>s3$C zy&$IIh))oh;_B*UJV9eg{*?|vs&1eC0uT*obil}*!Ko8_2!odh31^`FoC20jfE8&E ze36Z0!?dKb)4gB!>{^U${q@wQY(9^@rBYsV@EuheylKy{+e{+jYl@gs8-vgg`P~z& zB$13A`L~woXS+iM5VZd{x*^VnLe@ycq}@VYE52ubv86}qqEb=OqK51X6|F>Fc(3(h ztvnby!Si(Rvz<>|M8w$#4<5W4I Y=jyl?NkLJJjZbSYHU!+uSo5(Tw_& z|D`g#C74x?iatLBs8YTYMmnXAYEmpyI_b+=YCnbizCMY%b}Buu_=^x~D!)aC1)i!? z@n^Mi+F0)!@y}*CR+Z?XR-L{9mZ8WUrpL~i!=|ksj_D=*`7Mi6vW%sqsX}%G8xBf; zf2etBwnXj(SN;*Aw~ Y$d%UNv~M9!ct4>P~O- z5_S0!YRiNL{wlm>Q8tGpm5-E6Fa5l4PGzb|i#uuuF#cxH7(oSLiUohAq@%^l5Ii9F zfTm`UpS;CRlrv-0K$Q9&cmrWf s Ej z24Etw#v@gFK$pP444^8QQ4s?F9Fwd)HMV^q$+AMOrj 6cAHir4L5YM&NkDQ~4u#g_E#G{xhV-MQ`5GdD@TO9$SB%zO+qGaVhIp>$pnyHS z^p*UPDj{@4A%{hZt<8#3wz-v}%4ic`=1^h}y_OI~H+@a@&9fgPBHqGcY?k|e{Ru1( zfJlH$sdMkUEUU^W`Gk~`CQLZdPIh?fRQhlT-;5hdF<|a|yJh?ra&u_@Kl@;RNvR!} zB5)E(18#FYj%C(zJ0+(me0eBJm2)^43afuy6LqIa@M6@`+xeYHb>K>@X>$P0<02>6 z34svq?%iknTJ*!OWYghSB0v!~&;Rb58C8obzxOYZ9V&k) v=}^0Yea1N)lV`_NF<_;xKJrWfmp}5Muf)Ikq)9_t8Z8{rGp5 z)y_-1Rt(w&A6xsp$)C4!7@?!L!Iu =2z4N1XqFRaxuch9K?B7uKu2Qy1NFPD7!vH;Kw4H$tA~YgZPfeK(^m(C9 zq9xr1@$K&+#;8Sk4gd}S xg7gfiy8!w+aIEx4RZSw@1BpbP+c#lZ~8~j%HjP zODNB7lF!FjCp}GFMlt;zQkO9oaf`W_NVRmKmlL gT8*dJ~<8?SHI&m~&)go~C<+im~gi z*=L!MvIyS^__EQgkvA3ZV9EDsR~Sd#9)Hi|*@?G8*@vaURP~%o1eZ+re+R?~TC)Pd zx8LgHr%zH+QW*};kIKIsV%T;rx9s;sX66y4+uzX3XBH3|QZr@JMMF>Bv@_``G%(yC zoI?-!xvAa&4i=6UP8cZv6QbD=CKGn7jMw!65RRR>YL9DZ-qwA#nto|2pV)@CQa$P9 zF~4>L60DT9&A)4Np{reICs#KkU*rUaSL} +v2+ZoxsI7M%hyu=4Zf9$k4E9P*x@ZRwV2`D5P(7zx_5b|}?4x|}-- z2)#Y$$#b%AAh=YyGu=R%OvW};A$;alLV}K-_tMk(GIKfeBc_t&o?trfL5)Rek1!=X z3L%FpDO>T+iVb;b-40p8xpbT?&)NwczfT*n&J!*&T|!}xykksayFfN)zoA~aL$&C- zD7nH_&GJS!a>OT;SuVf)a6oYyD?n@f^NoJRXRGo0Et@Jeh7jvun8BmVPSiS>X;!#e zR>Ia-_#$p=ll{+6GTmu+X1cW5$rx0abGntWp`TdieACno{(PyuJbAYhcf_I}#<*R$ zLh+r-7V{92Wks>Q+W^-h69Wdl0JSQy8VCn4NRUJSQ+1dU(h8LhT`sZh^)D#+bhv*I zmC``g9>3m$0f6;_!%kNn=4jA!e{>*6Lo;~#X*29@+#Ijw$p#l@t1~8W*O-ljj-qMO zak>Z>)BeGkR^)o?TNPTyT+^#HnpOU!bnMeVnpF-b>tqy8M}PYC^YFYauXmfcM%lh` zrOQ&=#)iJ*xvA2kD8ty*fU8t)n}GvYW`_cn;(ey0W|B=BvpZeal5GvLQ&no;QE_3N zN;^xFHl0W^ zDZ>3DtddR|)}RV0;TZuyChJ zv3e3{?8e^+#c;4T07J<~Ak&7NA4yE1?}8-9Y$&B$#RK*JPqk-<3(tm7@&gHsa&y5E zulA@Wu`Rci$|rHv&i^XylLxQFt+mRY|9w|A3-jd)i-d4EXwj^;sVElB1)Ol3Oq|mi z8GU1BCf@w2#%2BBWa->@gS)F8wZ~6GZFG078hQM$EOs94giJ4Rsds;|XUM$7z*HQE z(obkAX(qYB?a9m*! U;Eg2Q zh=5+2@xeC{Ars;k>fXQhlLZ`@w+kGu*|%E$lxY34x>pp)msfK1Hpw?OaZw~LJJ*gr zs<-MTapE)O$e?)5!c~V-?n+k2^xP#K8AZjJ l04-nxMo$sb z(tc<+HOAHZA%@`WFxeA|7{nqU%2BkC{bbviPw`Br*YG{3yU B#Dr9Sg2Z8TJ9vXSCS$9UpFBPE-c&TK> zDnlVzzD5<}pY^3envBH4z7T2nRr@dsm+?-8MWx@to}pMr#&hMEqcfQ$Xf-w6{+|B3 z0PX;{6uDchTja+3N2?b{s9G&_FD zIX^Us(gAToOh17*xeEK#_%6jRT!bu0(EzQ0X_>14)D^*4RAlljR78kFK2&znK(j;5 zJ)cPuZ*FUu2&Jit-8gJ*b2~Pv*`F2$6c*0t>fz2YQ2tGJ)^=6Oan18tOXhTl#_g=< z{GFN+9t7o5L`1yY_j^!_BTe~Ab2c%Jwy>jX3T56d+v@y|EWB*Nn{q-w#rXWx6Fr1% zyaGOq8_D7`Ij)7iD;JC-@tJ8C>|9%3SA#M)R=~7#I%I22XCRepbs;q~uK3qpY|PxS z)UlwW5Lb0sIE>ON`Ws>v$3G+Sl2lOjoPlhAeN}NLw@aOodag!YkR;dYugyIx8CENz zgY(6v)pgOAAGBFQ^QAGDOUI{BezfwHX0bZS<=eL2Z($}&p}`9WLu=Zmn%Gu`&~`Ii z5Gio(V+E4DeKqA=!qt_(3Y}BRQ6dUi@ISp(o~K51%=wZ-GXTruGOaV}>T{k=o&B$0 zT(QQryj_lTme 9}ltu=?o=NhcN(G=l% zaYHy!om483=^ 7FRyU2Oo69!J5wKJy`Pf%5niMD^NaGW} zJTV!Wf1?o&MuM0?aSIx*lMKLh0AfXEXCWZ~I0TtGi6j8zplfZLRPv^~a14iq#&>)c z` !*3 zs+{7oM~$4T@iseOc;WK`Nv?L;JNvEIdc|C2ZmIDTr@3;3-LEbDY0n^k=F)Zxc}8k? zjK`B^adrb7ox6}o(Yt&4xyCS11atBPPrf@xb9bpPG~GG2Bq7G%|Fm<(!qk+=@WX*K zA0#t*EOC^`3w%mf>}nMVuFk2Mj%A>J`Z&)$V5KLX7Z=jH^e0cVWARukRh{GSLTw@z zmHlN!qrjYMe>=3uysxq~v|?9DNFz<7dUb(qh1>9oTgvKQw(#m~PYi|fkeix7go7Ws zq`MX=3t(T+L_x%9ry$z{0U-;Jg#qT&^IVez5=|4#r ~PfTH8tg EIVDe*Rc}5pjM9H&A6sl#Sbluwp@0FB%vkq-hzi- zHoz#b9y%c`-fKbClx)heyZf+YPPXuupyECWSj)chIi-Y0AQUwN(f{yomL&}))u@kx zCjw9CeCp}0bKNErlf$|s1S`Wb>X(xDF4yLn=|A+KjTKFh@?)6%)MX>@?sV~?g?7K{ z{rQB$A;QNqe)cPAB<3_){ZW@J+kNLkd(aWlza!ZeFr3lM-h;7M5;ImeUsam_K1Er7 zL8Lvc+EeDhnM4V- ;h zncmq%(3(9lr_}!TSXXmE?eWneZ}U8Xyjv=r^U{j_lDEjw6E4qSOjFq><%S##z1ryZ zOXwGZWfbW0J^cg0Vg@0tLzdk1MJD3D(<~88w#$ST9MD4p5Mx=G{p1G(J?RS8m~Sh? zPoLP`)fIA9Rqrm6 L!$iMcn(*0OORkp{%G#iDR;dVF|b&aE0_5J+JGCa(PPj6 zxXHnhST?3zpTgiH_=kpq=sQU-9j=Pbd!iv!oRQ;**ym2dq#sJ(Y>WIwp=x*fxgg8_ z&tiljbgc_3>=Qm?=sN4&&B6C9f~%8fWeYh5I`#5ns%ls929$ z#D@;$-k0YWe}}v5uCH-6aWq6|eXsb^D&aO05l&xnd4!5Zz2_@ksDe) p z8b1J`16pYyw%Q{^G?su2BA!#2?ZFp7AknFyjB&bg!)kBI#eHj5s=Bg~5CemHd979- zyj tVb(+X zexA=}HG}KH7HSWRN9W+tWaBh9lHA`Qy*trMT4L2boMo*BMXktAo7J?~*16(oF~x@H zCG(MVay%mfwfGrkn=9hziDcuDov6Uejk@DTJpDxkg?sVny~@??zLT1XoRcFNOLL;S z8p@k-mz!UqYi~Vct!v~9*Y&-8%2ILWRo3HX@{Y5b)PtL9xC8sC?M%*hpAC|EYRG3~ zs!r|hli8v#DBfgCW9Q|y6=Mx >!H=VDo$iEc?S&R3FUw zc7++y2#*1JWNPZg) iqSp~+)W z4vauR;bb5w9efKZkSc3bkxUeCT>Ep==c(JOsG%8V7|h6Pw#!`?jAx5Vfu0e#3#Tiu zVa<9qDf`|ECU< BQw1ZcQ~ZLQ8^cRrl=xBkfA%tsv5f=&-w{VUw=p 0xR~fZQJ4M0OhxOa@CWqbPL{U3|f(dl#=> zVwrlYT?(XEU%$TGKb=adNk_tjdP(j!Csqq-1CA8tL$BGyC(4xxyD*xL i)w$EfFd;r{9!V~RrYZi0b;(OUY` zh3u>O*%J=^&$3d_%v&PUWs#BJkarUzcJwe5yFuHwS`u_0CwrYf<)D2=M2)O1&7E!s z8y6>3ienpkMMw&Z)XeKpu zEX+E~534f%{%T)5TA;{`kbmI#Q>^FmSUK9wWR6TB^Lbd5!zT_oeZwW0+0`x$EjE zjBbwHUqptZ7T$U_?^jMLiJv^QZd%(^VX)A18oy;hb$Lv;wJ^7yWh4Cx-Skmu^!XKA zh5;wH7L3>KT@HtP!QullMMo?a^|SY;7?WnHrb|34SOW0mI65ac%Yrq__co*Gj9<+6 ztQ5M53^p8#;0Ii#k?`?r@ZB;kwownmCXzMI`{X^JIp1{oRxb9ro_j8xVc)ptP|LNf z_3}S3?K2?eXg9iORF4xp@eYu2Qh*#s$@(>Zl&jHvt6xAjc&jO2L_}E!9!C*PA8M6$ zgRkb?fd$P1C;vI!euYU=U$oH$-A10Un5ckDS8E<}GKmZ`laaVpkZy>`yJ`N7doW4m zn CK~y&su1`$k);ER?ZmQ5yKMa+6-9ky9{n+mxU7kGy z@ tbbmJZf2)2zFff9$>q0oSR#?Uub3&`k~x zX7iA=km^BiT{bxvlq>Tv?puA}BmLA>F8lz(Y78c_5uR>y8n~9wi)W?cEMaqTRq8(r zqbC7nzt2eynxl#7FUnce47R{dRU4cvVq0_9YpIp196(Q+)S8%>Abx3fAZJaWhdIQn zsSz=@+gusxBh15vq(@b=weV0jlClh{e+<}&QiXtC|NqYbCNfShIY2Kt69k*@sPYFB z)Wo3XfLH|7tArN#b`*CFPC>iSg_VmdVxY}s!N;ikKu$(pC=_X|?e9#5>~Yz91W&h2 zrw>*Lzd?~<8Z%qPKRdS$MfF83_XkF_#oi0ZU9>WZYWQ`{Wo`S#MpPq~9a1O5w4W0* zGp+u%wYT_gKOT5o&MlaO`O0eJqrL|+pEp2xk4D()BM9vlx_45Zo*0KP9^QBk% 3T3rV6}gOg`-gab zG%4J;A@tX@R8vKM(I`6akbI$bFZ^c+Wmfwm*V`U?sg=7&Nik{2#0jr`C*a tivG;NN!Uj0Gw*dui9q2gL=zJA5la@ga?r5W}) zFGWsz*b-VhUTUd>6IC3yBLUWFR`#*#3-_xSzpL^5Lnjvt>~&lk$gn)qE1hA{-juIG zC&h5DyA{C~=liaYywP`#GRM`>28GrGRtDaPKrZ +7wF~C+({E+;; zm3Q=cLq>Z^@Ur1bnROG__SXGv$G^*4Ai6VQLAjEWk}7FvAeJpGkbZss{9s9$2~o{K zg9(}K_m30gSwNPNsm#dt1Y(f$wX%GhKam%3h8XSxn(%Oygu(iG?48tyXAkt>2)|sO zKJHfRN_D$F=C!9!)`)41PWCo!D>rLyZg B3-yOkjF7-u7 zpX^@;<$~GD&d}&NT5luvu&d|^@tkN9VOvfgYO(ri!cZoTBXH5!oQ}(EGP*nKw%8pI zyI;S-XWi33SLhiQ5#QR|c@&Xc*2KG#sOfp!j9=*zJY6GAS1itzLkg0-y_ZWurnLge zH_-Apcwxt |n`;TR(^+`Dk?xN-Z2Ivz|pli;8Of;Tfe` -O#4Lc}=jQ0+d5ZaVr?bm820( zGT~(Uw|Hyc-+5?M8(qrNF1^jTb$w}2ul4)svv(=a&h-}KxeW9BUclkz8{C$}lTWw~ z2x%uGLSt4}j~H% i$)kq*ur|n1LQy5=@lQaLf8DU?yUyAG}Xb58RUy{iH{|k zYoju;48G+&V0#)A99#j$39u~J$;oqcvlBXTCPPEn=3pXRGb%9Z`qnJT%^zgLhJ2Ju zULY8R!yFl@Du$ =Kc!&yyx?S<{=(*h z1Tgc>U@lQa*h7e`)>`@v)5)cZi| <(; z5uc=kqCBmV@m^B7xsl?kUZK{UuU})6CtbSGinjUAy97PvcUNJx?z=DEZ)S 65Gh&t1kGsT0tMJ&JA^jee?DOH2Q_-Jn$K#Sgt$MVyJ;Xv;r>;G=DAew*PZ zps|J_OoZTLP&ya_WL(guKLqxH+jN}SFZN5cwiH({*igEjZ8e&SaAJPVg+fojNtIEv z%_J$=_}pyfV|+{#+|j8=TV9J2p{E5356VQZYa-OM9>rq#eUrj2qSs;aggbCzB3NM| zA61rL>6#8(^ETT8bqb8JS9okO_~p`tw@FqJ&3aX=x88ubCDZ#Ur2x~=^IHrXxhgbY z*WrSF)#TJEf0pNAAm)cMIZuv^tBmEh{&e*Csta)UT$f6*=71Q%6;h3_25s~Wr^!>t zLi I~hMSXLnT0uemKC2&F8`9ri*qj-s3y@J)xGf_m{?tL1RXwM# zW_gQBK+x~;^niHWk=~U+>DFUmeh$#gY|iyXjBPXBPZR+Q*MZI6PClFAchgESJ60|y z-(plOEVkX`l&+2CX)6x#=LKT2Q>txL`q0uBl{SE@VJYl6>+Gu5w~PZa3eq5TJ=(%* zR=vy{v~mGgTg0ISh?#vE%KoG7mqG1dIP5zU2>Te>-p~<^$WSmFXz}5muREw v7C{!eJu_Dw58$ZRf4_K}5Kyg^Fr$-%-w*M@(c=l%dW=D6iL zV({rPcCbRz@y2ClwF7fr2O5*um&+Xit*BMp;m!?L37^cZ!N+{&-!s{wy9#h>!%hby zk4qPRv^OlLfH~I>3~#IVqXtoztCM-yj5XvHu%&lK4hU} ZE2bm0E+} zljdk#*{ctt`vnVF(UvqfwB!b}I%nY2>>9}?X3aEzX*jVNjrm#9%yqxo^i|agg)B6v z=G-RRkyqrVV>g|CZ}FbmJ4QuZdK5zo o)y$)~{DPDz z(9u3$9 t-)M)%!Zo7L5MDt=v#oXyj@%`) zfr^F9qP$ugbKQ1PGU`8hSiG*AB03wEXTL=l1LwCdgNJ+SuU*RO8Qj%+Zptg$?%p+V z0kl5h(@H2LqVDa*cw 5@43^)Z@c{-gvrb!AhDiDC%7grc?tdG|plO;fsrt04 zPftHMBxI|jgz7K2!EJO7*uH;Zdz->gSMc}dF|0p_sM_%8JjWgFPJ_ilSGf|yEh@b! z{*Q3nLl9r@S2WSC%^9yZ9Qh#rL49s(AOA9^toM7G8v|X&H({c$YhP!W0Ng_KtjZw- zT(97jK9cLXz6Ldf1NeI& na zmj;guInR#f a@;%9J7tz~bI6xv=ZxKJ3_HnyX|RMNZ3a7u8$tTI(tmy3;PcN>vm3c? zh`WuRWdp-TbfL(!QodR|tGt+u$G3thJO9DY^lyLUY4<0px+$?*a)PG*he vv%%3C?L9A=UmR^63G>sXXXSIM8g1mEZeI zdUmEA^nmh|ou{pqOxsSK--AE3wTP;4Oy4H>*+fE@{J d~T?6$AKSBsk2U7O6+D2pmysJ&VGYnzIlfn#}>PLIN#gI >Vo|pTM!xV0N0=m&(N-@GSDg=5puLUTy*MBY8I(S?! z5RUHVULy#3Fm~w&j40PR+f(zY?JpPS*!k0+2YwB-)nwi v&8#cri-R3F#7zn|(e z!y}% hh2*p?$-&Rz7SAh^GKL#9Z4hp#4yC$968aIMY8u^NU4i(6yf z6YzFEbJjZNR>W4Z*+(%a`cP+CgSm~dZio5n{(LVrGQxi$%hPAtS=nB4gE!!OF!=_q z-i1Pd`F&(*v1U<2dyL_XOY!1Tr{K^uy`Dbi4bl(XJer|UHY1lCJC3|P^z#oUSh84b z%HYQ{y-#KDfe}1GrhwZvmB~%IAy@DAxyf~6!qm}6RmQxr(c%L6gJKU;5^{mpHH;~w z X)4K~zo~cc3rh7s6CnlmdMq|y{t73Q-YLjZ^f@!NivXn`kX)pK6mar4N zUoQL>R~$`3PTsU0yS90i`Yudw5GYBSUO>oaf7L9HAKREdAkiKY5Dlzw#N2HN5KG zylm3Ff4(1BXkOuo9*~>h6rCO}e5^m**rS=lbwWkb{IQv_6GhkFADewCe;yo=d{2#M zYbQ;o*lcm1p;+iW>aKN^me}=LQ2hHfQSQshDx)xd)oPb-N=doX#<};`L@7jHUNnq* zv6ufh $&xm(#hjZpuoL` zuXuNf-FhGY+=h!iLiw^n=*!&O*#IV }ih*wNl$DGP5me(uC#h>~J8t$BoDo8!1z|l+H4B6zn`6Zv2IcnUA$$}Dh z=GEvp_1!3Dj-%@aMk}8bcmIxcG;HVIt*?JueOPv1(o~3uSh=#6_R6cd1OYQsy?+k2 zQ?Y#BoX*>A7F{at4VNCMeB#5SybA2RjkuM&?6GC9&To*d_I#8Zqq!Gyrl_dGDF7qu z =lwR#qj5WtA+F>|yjK U>0g?+^ikEm-m^zY_#t(s*EYmr`OzH%5?pxs(9}Z`y2%IaZNR5b!{4d zRw^F!M#pRq)Z2KzKhXL#uz$>_zNAnOHWVcuq`XFx+>%#}K8n(C9d!ixa(Gss+{6ow z9vri?n{#<;QR^vvc>MNuhSsZZ!vYyx^wOvehc+$Z&e*$&GS98sT62Z2bcc>g<2m1p zqPMyjI(AKF+J!f6YfSfcoK>eWQ=$0c#G_ty&TUh<7s3wgUJHyx?)#p9Xxo20Z@F#1 z PC!n2R0}AekAjUy?uBf5mZwG4m%?Jdf+}ZQ4KrwhFVD?G=pE z`KH}lrUYZO6&Nl 9C@nUg#M$9 rlC%|iP%1pcOHLm&SuL-bHc&>;Wj=G zA8&gluqb*Qk7%iV{V?W+;H(KYQktqCTlb6@QgF_foGNi&f>(=1-mhcg5-v*`T%i}? z>#A8+7D!^BGrNM%@ObieSdej@6_0V FkM=3427*oHO>bsjdfLbTN{AjD$F5CV 3ghBYUJS0f12+ zN_Sw~+4cN6*AX@NBZm_FaVu?p>)tr!Z2)^MBj;N#pc`5Z?y3$grvN7WNjkIF@NRjf zmE+X95a!gGvt0UU#O-NGJuz-v#TAl4ORpm2iT>Zef43BV{tk_kY{oS}{aVWYxFQxA zI^j}Dno5* Gevz&cSbka?)xOESj-)k zh$b=8q1m^n9UL45qoNh+_BIr@vef~F%PMgKq^d6izYpLu7lP`LYYi*6F%QcJ*|Xm* z@#eyrPS5juo&Ns)a;ZgYK~|KjS`;))*Xl2GeKkp*`a6wui!Y4ae-)2+_4$Z@2o%Rs zOX?
Jb4-?1U$RswMI_6bi=N(N6(M6THj}mXZ15dS|BAW{y{KIo{`sA1KPNa^ z?#O-XU7|n?ib=6v ^cpkJ G?c&ZFT=7rVG^7D=o|_j%clOSP=OwRQ^dS}xv)&&a##f86Hgc%jaD{x0CPg|2f= zr*y_jFT*Dv&s>VBX#z1vuJ#E-W>3#Rfqk$jwU1nXQ_T_HZ2vLWl#mS#fEu(umLkB( zp6L!)p2>JEK(sUG<7%);aj@h1P2wvcqfK(Xrgvxkk42ouE-IvF@=oBow^uq!2udrp zPDBYm^c*IEV6W=;r`47=k=Bf4?+nKPg2SoGZzblml4Y};R)gy#O^OKxJ8}v#Qw>vW zb7UiaE4BOY-5gEV=YrBjpy&s@({p*Ic{YIVi?$Q_v{%79@ejAN+fU^VtuknP5B{tw z9yMqTpu4*r*zLKom$|t#5)mq $KbI{8)G7{gUuYWetrde=4lJN8%qeZTrx# z_1p8DV4QCKP#l`Pl%t qh;9dMi z&v&ubljn8Wkw_pIYgk0wvF9B6vAAPYaGf+uxBqa1zrLY<_IHZte*loc!vp}DX-kz- znmF{@z}@hq5%f$bL*R3eL`-xWgKf1xcc`eWz5TU- zhK6s)p``~cY+ z>@ODht^Rs8$9a8|ct>;Wkk~6!Uq4SmNokb4^DS8bz}42tP_Z`bi$Cj2E@L_E*ENIg z$0W8}H>{)~SY*R+tRFzU_#Mej23?Lr9B-Elx0}Kkz~C_SwAVq`_8`C2o(0vN2<2Ud zHRiMXTWfoQLJoU_3)oEOoaos0^9lh*+NI_XM=Ddc_uxd&4|;bK@JNZt->#?ya<$A< zaqJ`25{Cekv$7($3!@-o)KhJrpXPTzx^7a4+l TYLdGu5ioq^fm7xO z-vGZtk4`-px*>z*OsvRIW82?aZhS4_vkI*S_UOx3sGo70UCu_2Sn)fua*SkM_~^aQ zXSy-v6Oo!~1b`*%0rTqvU0G-b=c7j#4JUap*$Z4~ke-4o& Rs}57g8$Omxd$@Y{(qbfa?CnC%9M1JRXR9C(vzqs zg~+VdOb3Tda~>8R9SrrL=W$vMsr5K*p=3@QN{@3=Y*V9YA(@5 -+uv@%w%M z{QA%Cd-tyE+I8R8wfE=qeto=O+?Ffy79_wU=W^#rVz`g$xuKzH6MFb$ q z-(VLqa_7eeItI4oX4khEa|v@o^4HGYALWsl2yumgU0%GxqExj2V`Xo@d#=QN$F(C+ zbwYgKsIB5Gj$!0kt&TQIAn$oI#qcWa%RdjwYx34QyAMrs(^2Z?gvQvr0cnG0yU7P# zI;nLh2g@(&!snz(OT=b(irb4N8Hq0L4Rvfp`8;k;tQlT%bhl@t0XVrH^!O60%qu{@ zMFFCIJaLbRL%spUQzm>uSHG>#s?&*X3>(5j&!m92I*-$h<1&uBp=t&b{o)cxdms z>9$!&)v39(PQsCclLnZBlSwVJ6La4O+FE?KY`pR2wpkAKd#hmT= 7y0^9JvLWe37IR`JF z`?7b%-HGQLKD`P{cehD>OCK%H(2rGE2qnKx>k$}+ zEXv~rGnTveXD_5^x5m85ZJ*Q}?I{I>q{lkPiv zeoz<&-Y+A%Q`*Y0$Fpa{uZ(?o6TR+34c(=;zi+ldJNovnfwBIdsw3K^9ag&Vz?zyG zr;gyG_=`T#Py-JtyMrqjn4_ZpLycbbf9l8qON~foIZjTxzg)c7(m*kII#t(a8XGwi zwwF3d<*Vhf%i0|Tu%5eSG;P_X`??>s{@LAF)u>Lx>nY8tqeIC}yH Kb4wO3jaC;tF_q WSFx4JAp=}BCIeI;@=Y+=JwhT$_Fq0v!yEM7#y<}Kg0W6 z$YbQZN21j`jMXlH61ZA5IpQ~LQiibat-ymABkiGt dHS9c_~ihO;=h*I8{THJv!Jb?SNZ8aia7 Z4t{l1$T= zK74bjN_Y>&{M6Lk3?$r?{?VP56hAZ(AGj`_hK@S|AhMp<4^Y29BXNKXb>qz?$J8%o z;hz9XZ%(6MA#@7Rrt@yRzf))^!`KGbRx`CVaV@3n7H)wa=>Rim)Raf4kX-ihts932 zIozUvD6kEObE9i6=olNf_e;0pGdzywOD!A?o&Efttm@7Grx;VSUnpSLhiZag-O$wZ z5S;Q@|L1s}$O(Ain5}IV@Z i(ZLletK z%RAVOY@d@Zix(|IX=$DC_b>c%P09WS1Y)5#N=ujS9Gl+hlN>y~-je#RtE`fzB&ez; zsDYCZY|B6+Y x2 zz9q=_))hXm@Y*nvD)(3X*so9MJa%SnhXO_1@gOHBhRNJ8olYkYfH80T*$?1`J_ptI zR;y-?=kV5OwfF8D@_uBy-yf^NNt`-BpL$R44t6#I yIuX8{hF6wp6x zvC)jMIF>Cp;_k~aAN#6BMJ|!)J?z}f*6AjRQV+4Kgi}SeMp7OdZkD3zrbIAf1_B4F z$W-B)<~saE!^=eq!Q^;Z{0}~3qur Rzgz~y#>PzI-$R3y?DL1KtxlJs+0VPZn*E5* zC2?#|WJZ18k3)yzbRH<&(lpBdRFRiEApH3ev|+5Z^{we)|Foc0`=mwP_l3?o9_Dw| z`r*BZy}8aYj8|<6L~^^bnqdgR#;e&&z=4p)VAk3)mWqVECz?+F;w{43I7bUd;?0^> z?9b+)BXFaG*K37Yh6Tc+EKcpe&c$Ry!!DWFa#hf0o7;HhvE2D*+CRxByj~QnS}l$h zcm|K+oAyCBkgtxp9g?D?Z`(bCF9stcK`V7A6@BI^s~QrDYAbEIXl`my4{N98nNl@< z3Q=u!-V@`t`D+*khrtZOj#3`x3tTW}yfvYFWiTDQnz<|``*oSsDsgI++;d-z?iZ2p zaOpvk1z!QL^Fi-7{{1(aUIH^t8OyV|qm-p$@5GSMQsw+Kj4C6O*iTIJ42M`-pt%@1 zK7)JptJ@ 36EqqPB7?bZ zI;?aj-BJ||be?&BZGM)3!XAz9 Q+T?N5sZE6*X~4w zJCbxPM$-nP%V)4rBkrP9>d`@wWiQkmhX5F>7n9H~p&j9JCku Gak#64UwxFw}cWuT1&|F zAssEX?Xyg2!#%o!T|`+fZ_-O$J>u9Eyi<(mw;!=NH};DmIm#it9SIXQ7RI8mxdb>}nUI{-NUVa>8To|^ zGYi}G^<3PBsB6u`?m%cJAuTNy>JY-C7%>R~AkRsL_Y5<|iZzlS1C(E~nS@cw!yI*s zY6pxS6@U`Q$=wSVEI?2k;I<56;ZppyjRLKfn!x^~=cyhKO0S&eh4|%uSWp`Bbpv2$ zSgl-tq!>(6-yJTB`LV&nAxQwW226qn)9}UnAt@G?EK*skBPk@e=kP{LL1IgKjv`>= zNV!QEBc4`ngnZ+Y6ETIS4jvw%E??E0diXk2lstJnIZIUCw07*p)*GsOO0^?%$SgzN zr @2 `4Uw?((a7XG;LR^zd8IcuT}=B5;A_d`EhYf%RhPGpIZP_4JZkxnJ~TqA0zN zGc@T*-`UnPQSY|Mf=pEGA+0q9()R#lf&hAekp6C<7!^>r`##{vWCMUO43y%Qv0Pg) zTa8`z#< CdF!G4@#p;d9Q! z*(Voh2fjfy7taFRrg_oVR#fEq0+KXTp8*H$T{(qafdG)j6``Y0d|;P%=RN?z^aqAF z!!{oLTEEC4)G$c%`9fX==qZqPw}IFC?;oi1!1019xnb+pqcZnk;PxSS0H7o(Z %`BJ$t4x0c2N zf&-F7YawBlpXC7iGoXE31jG+e>^WuCj-ep}14KEGz`c>U1prR8a!QJUxz+IUWe-62 z ($+urry}_ ~f+eU`$Ex(T5Zz86dGAI&_FM zd26er*8<6FKXhnh?Hv^J2 (6A|H1iag4G~0BGvlyiRwSoE_7z%=d;(V0J{JG9ufcbL$#1r18ekWfHq>uE0M4R u6M%v{@sz^(h8=|MyuG7i?DI=KbMhvYCQDN8j;)k~zhhRmmiZRvuKy3hE4=9d literal 0 HcmV?d00001 diff --git a/screenshots/web/clefincode_notification.gif b/screenshots/web/clefincode_notification.gif new file mode 100644 index 0000000000000000000000000000000000000000..2df250e869db4a48e2c45084c893f81208468c34 GIT binary patch literal 3001010 zcmYIv2T&7E&~HK@L6F|0hu$Id4xytIL3%IJYbeqb3 Y-2a!m|7qZEaJbvM+uNI)>zkXa>+8#_tIMnNf91vH z)y2i-<;D5=#l_jh#ovpI)646>=NEs^&i>)_@86TZe~(X3k55jHk54WSPww_lZjX+y zF7|G2wr_6MuCJD_F6VBpr>?JiZmxgcoV8x>wVm&dpX_ZO9v>ckO z9PJ()?(YA?{_fu1KkV%8?(FPrZSQPs?{04GtZ#0uuWzodZ7i*<&o8ge@9wXkUvAvo zEZ^SFUEfSyT#ue!{W`jAKf7+dxM{k$sXn|aTD#6#zRg;={xo})J$X{lv!C93@D_U% z+j;)#=Xo&p!oTg>tM$gC;ncl!&+GdtqV!Kd!SC=qEIPkFt>DMk{9;UQes*?t(YH@E z-?HlR%PK1BY8o1wTHAhh^kBRC`}+q5hW_cm;K0z};K @8AD) +6R*9$q9f3p6LWbAb&Z&$rN`-!?}4mquN+bQ*#FY*7A=QjVvZZXMpK3aSD zgAw+ fmUFeyRj228mTU=3HN=aQFuCAi0sRh?GQcyQn(6m%hvv{IqU|^{8%v4Ly zOkUGkQpHY8$x#IE&Mof)g$1zkzTglI6;XaIrV=Tt70aie!e;nc!1AlO-B%e0jJjR2 zrp+sTD<4Bk7ZWQxOIrtLdk0@vrx%{?2wy*M#0$Tmkl^reBq}m4E*71T6c~qbMHg5i z^9@3CG=jcK_*d{C8d!W=*@CeGk?o>UZBkKK<>)q**e `nCq>`?MZ~H#WOvw%=?wBELd#)t1`d;BkXzK=f_nAgPAe`J9EFPzWx3R zM-eeUsV*GJ)&9V5(^p+I_U%dJ=g&`SiYH3Ud8UzlH6>F&>^tI_b!tmzs@%qkZTf4! z|EWVPZuCB>E1PeEig(WU*Zo-hi3Aa|=+>7ncf?T%*m{wZE%YRD7}2!XSFZP`i+e5% zG*oT=#;7HvxyPc`#tMx*JH;DocBjgp_h;!f)$aePZ&@%HY`U-^4fZEy)o-ppUhVxL zU^n!cn}w`3SEsI+?dj?6bd~4gP)pOr;Zgu@^u1h5^Hs9kUbNls)|Q)#qt*VeiRb!R zP&u!y#os@F-robjyh})YTDPT0LZWmKc__ZtB8ps-cR8Bc)NL~KkxSt+nki^&ITniM zU5VpNb6a`CTTr+XFIc;^k^t-GU41Jt>9+cx%tqnrJB9PD)kHX$Z!Jlk)_v{0Hh0ll zvaZzj+6MzozV#GiQ}^{$bC;s^H0z-4^^f*wzKwLJH1~}Rw}PULPhPd#8<~i1zRk~p zlkPle!mw!!^Q-gi&96u>{}v{i)?+I>j=Oj(=dIMvR&J6e|8`!AsmFGHx=ZnP!RMfz z?Qa+~|4w0En#WF2VL|auacS+&P6;k$_9KK`c G39kSD6?65I;3#1clsL+5&Ao< zPUro1L_!&Z`l;#$J4$0>8aNt%n7e@r7lwX6o3swzKbx|T6*`}G`sjT= +M3i10c&Iy(}6CONjj^Em|lNNkE4&m+eqE8typ6 z-XEaI6a|?qSRUn<-JT3cAKso0Yl+ pw+A;ze>M zYeUJL>{sTA4iQ)5Ne`CO&n`EA+~aO94*%`IhtM5vB;=QSA}7 M<;qt~V5pguTsv=&IepFnffS zx%~>+gVll1onV{_dDKsEDuk^QN={pC4;6&vkiv8$)TZ&23$!)(7gm|fqhra;-RMZ> zvVCPA=057t?iTxW{MJo(wZF_%i8Uw>qWbqkxD!{Y5{(MQ<5GKea##+Nf*+v`W<}|; zB2o23jn!P2lP1tWp_!1vi44BbIj;TdiRDRh`amAHbc2`_KG01g (C^t+=r!!ES+y$&65qqAitN!8h&00IFb6;0 ztxg*3 nDA zvB5g2+-16StwV)(NJl>GjGi?}bUdDoonEJYM%S~iA~Of&m|J7<^!1bK!5}FYl{1{G zfnDbK?Cg1M{owxcI0hZxumlE#s2Q2nqJ4NVjGllD(xXrs(rE{hDo!$wy RzlX2(fWyu4 z5X?)kWP0|)ccDB^l_SJb)ysWSy}it3b71kjoDB9WVUzYx=m$y5)C31PI2QEuH{a@u zL4@895 +SI;%ovv9M0{!XU=KRE_!EwnwhF&DUR$(&6qCig6Aeqv6@f zFs@xMS>Vt5?!hwcoIQw{TmSe?RU~5_Io>z%-R&utdS^jW?=GC J-% eMgJ-eVIU_Oj8cQLQDVL#t)|C4j|S4TH)@)CT;f$CKbQO`t=zeg8&zX z(0lg`)|iAM7C>BiAWYrnO5d2On!3MyqvWyGrE5^_aWL_zt0*vp_)^+awdOVKMcA#Y zXm&6$lU4wwOeD2=WIqS~47vOa#*gNd#2M-(dm$=UZaQNSwEzpH4)EeiCqWQcKdO>2 zeGl?p0!c%4<~6}aJoNIz#IutWs>5JgGfGEV%20cf2Wdow2;%v23VI~Tq_d67k(cMW zh|fnKzfIHqjiAE h*dY% CI