From d18dcb4d606e8b90b740145964e48d910e5b7802 Mon Sep 17 00:00:00 2001 From: Catalin Pit Date: Thu, 29 Jan 2026 04:13:45 +0200 Subject: [PATCH] feat: autoplace fields from placeholders (#2111) This PR introduces automatic detection and placement of fields and recipients based on PDF placeholders. The placeholders have the following structure: - `{{fieldType,recipientPosition,fieldMeta}}` - `{{text,r1,required=true,textAlign=right,fontSize=50}}` When the user uploads a PDF document containing such placeholders, they get converted automatically to Documenso fields and assigned to recipients. --- ...earth-pdf-placeholder-field-positioning.md | 161 +++++++ .../pages/developers/public-api/reference.mdx | 91 ++++ .../pages/users/documents/_meta.js | 1 + .../users/documents/pdf-placeholders.mdx | 179 +++++++ .../e2e/api/v2/placeholder-fields-api.spec.ts | 453 ++++++++++++++++++ .../auto-place-fields-document.spec.ts | 307 ++++++++++++ .../auto-placement/arbitrary-placeholders.pdf | Bin 0 -> 40976 bytes .../auto-placement/base-project-proposal.pdf | Bin 0 -> 39871 bytes .../auto-placement/field-type-only.pdf | Bin 0 -> 40544 bytes .../auto-placement/invalid-field-type.pdf | Bin 0 -> 40970 bytes .../no-recipient-placeholders.pdf | Bin 0 -> 40819 bytes ...roposal-multiple-fields-and-recipients.pdf | Bin 0 -> 61826 bytes .../project-proposal-single-recipient.pdf | Bin 0 -> 58072 bytes .../server-only/envelope/create-envelope.ts | 141 +++++- .../field/create-envelope-fields.ts | 200 +++++++- .../lib/server-only/pdf/auto-place-fields.ts | 237 +++++++++ packages/lib/server-only/pdf/helpers.ts | 152 ++++++ packages/lib/server-only/pdf/normalize-pdf.ts | 4 +- packages/lib/types/field-meta.ts | 3 +- .../envelope-router/create-envelope-items.ts | 89 +++- .../server/envelope-router/create-envelope.ts | 28 +- .../create-envelope-fields.types.ts | 49 +- 22 files changed, 2045 insertions(+), 50 deletions(-) create mode 100644 .agents/plans/bold-emerald-earth-pdf-placeholder-field-positioning.md create mode 100644 apps/documentation/pages/users/documents/pdf-placeholders.mdx create mode 100644 packages/app-tests/e2e/api/v2/placeholder-fields-api.spec.ts create mode 100644 packages/app-tests/e2e/auto-placing-fields/auto-place-fields-document.spec.ts create mode 100644 packages/assets/fixtures/auto-placement/arbitrary-placeholders.pdf create mode 100644 packages/assets/fixtures/auto-placement/base-project-proposal.pdf create mode 100644 packages/assets/fixtures/auto-placement/field-type-only.pdf create mode 100644 packages/assets/fixtures/auto-placement/invalid-field-type.pdf create mode 100644 packages/assets/fixtures/auto-placement/no-recipient-placeholders.pdf create mode 100644 packages/assets/fixtures/auto-placement/project-proposal-multiple-fields-and-recipients.pdf create mode 100644 packages/assets/fixtures/auto-placement/project-proposal-single-recipient.pdf create mode 100644 packages/lib/server-only/pdf/auto-place-fields.ts create mode 100644 packages/lib/server-only/pdf/helpers.ts diff --git a/.agents/plans/bold-emerald-earth-pdf-placeholder-field-positioning.md b/.agents/plans/bold-emerald-earth-pdf-placeholder-field-positioning.md new file mode 100644 index 000000000..580dbdc14 --- /dev/null +++ b/.agents/plans/bold-emerald-earth-pdf-placeholder-field-positioning.md @@ -0,0 +1,161 @@ +--- +date: 2026-01-28 +title: Pdf Placeholder Field Positioning +--- + +## Overview + +This feature enables automatic field placement in PDFs using placeholder text, eliminating the need for manual coordinate-based positioning. It supports two complementary workflows: + +1. **Automatic detection on upload** - PDFs containing structured placeholders like `{{signature, r1}}` have fields created automatically when uploaded +2. **API placeholder positioning** - Developers can reference any text in a PDF to position fields instead of calculating coordinates + +## Goals + +- Allow users to prepare documents in Word/Google Docs with placeholders that become signature fields +- Reduce friction for document preparation workflows +- Provide API developers with a simpler alternative to coordinate-based field positioning +- Support documents with repeated placeholders (e.g., initials on every page) + +## Placeholder Format (Automatic Detection) + +``` +{{FIELD_TYPE, RECIPIENT, option1=value1, option2=value2}} +``` + +### Components + +- **FIELD_TYPE** (required): One of `signature`, `initials`, `name`, `email`, `date`, `text`, `number`, `radio`, `checkbox`, `dropdown` +- **RECIPIENT** (required): `r1`, `r2`, `r3`, etc. - identifies which recipient the field belongs to +- **OPTIONS** (optional): Key-value pairs like `required=true`, `fontSize=14`, `readOnly=true` + +### Examples + +- `{{signature, r1}}` - Signature field for first recipient +- `{{text, r1, required=true, label=Company Name}}` - Required text field with label +- `{{number, r2, minValue=0, maxValue=100}}` - Number field with validation + +### Behavior + +- Placeholders without recipient identifiers (e.g., `{{signature}}`) are skipped during automatic detection - reserved for API use +- Invalid field types are silently skipped +- Placeholder text is covered with white rectangles after field creation + +## API Placeholder Positioning + +The `/api/v2/envelope/field/create-many` endpoint accepts `placeholder` as an alternative to coordinates: + +```json +{ + "recipientId": 123, + "type": "SIGNATURE", + "placeholder": "{{signature}}" +} +``` + +### Parameters + +| Parameter | Type | Description | +| ------------- | ------- | -------------------------------------------- | +| `placeholder` | string | Text to search for in the PDF | +| `width` | number | Optional override (percentage) | +| `height` | number | Optional override (percentage) | +| `matchAll` | boolean | When true, creates fields at ALL occurrences | + +### matchAll Behavior + +- Default (`false`): Only first occurrence gets a field +- `true`: Creates a field at every occurrence of the placeholder text + +This is useful for documents requiring initials on every page. + +## Implementation Components + +### Core Functions + +- `extractPlaceholdersFromPDF()` - Scans PDF for `{{...}}` patterns with recipient identifiers +- `removePlaceholdersFromPDF()` - Covers placeholder text with white rectangles +- `whiteoutRegions()` - Low-level helper for drawing white boxes on PDF pages +- `parseFieldTypeFromPlaceholder()` - Converts placeholder field type to FieldType enum +- `parseFieldMetaFromPlaceholder()` - Parses options into fieldMeta format + +### Integration Points + +1. **Upload flow** (`create-envelope.ts`, `create-envelope-items.ts`) + - Extract placeholders at upload time (before saving to storage) + - Pass placeholders in-memory to envelope creation + - Create placeholder recipients if none provided + - Create fields within the same transaction + +2. **API field creation** (`create-envelope-fields.ts`) + - Accept `placeholder` as alternative to coordinates + - Search PDF for placeholder text + - Resolve position from bounding box + - Support `matchAll` for multiple occurrences + +### Field Meta Parsing + +The following properties are explicitly parsed: + +- `required`, `readOnly` → boolean +- `fontSize`, `minValue`, `maxValue`, `characterLimit` → number +- Other properties pass through as strings + +Note: Signature fields do not support fieldMeta options. + +## Testing + +### E2E Tests + +**UI Tests** (`e2e/auto-placing-fields/`): + +- Single recipient placeholder detection +- Multiple recipient placeholder detection +- Field configuration from placeholder options +- Skipping placeholders without recipient identifiers +- Skipping invalid field types + +**API Tests** (`e2e/api/v2/placeholder-fields-api.spec.ts`): + +- Placeholder-based field positioning +- Width/height overrides +- Error on placeholder not found +- Mixed coordinate and placeholder positioning +- First occurrence only (default) +- All occurrences with `matchAll: true` + +## Documentation + +### User Documentation + +`/users/documents/pdf-placeholders` - Explains: + +- Placeholder format and syntax +- Supported field types +- Recipient identifiers +- Available options per field type +- Troubleshooting + +### Developer Documentation + +`/developers/public-api/reference` - Documents: + +- Coordinate-based positioning (existing) +- Placeholder-based positioning (new) +- matchAll parameter +- Mixing both methods + +## Edge Cases Handled + +1. **No placeholders found** - Original PDF returned unchanged +2. **Placeholder not found (API)** - Returns error with placeholder text +3. **Multiple occurrences** - First only by default, all with `matchAll: true` +4. **No recipient identifier** - Skipped during auto-detection, works for API +5. **Invalid field type** - Skipped during auto-detection +6. **Signature field with options** - Options ignored (signature doesn't support fieldMeta) + +## Future Considerations + +- Support for placeholder text styles (bold, underline) to indicate field properties +- Template-level placeholder mapping for reusable configurations +- Placeholder validation in document editor before sending diff --git a/apps/documentation/pages/developers/public-api/reference.mdx b/apps/documentation/pages/developers/public-api/reference.mdx index 19b1c9242..ab8c57bc8 100644 --- a/apps/documentation/pages/developers/public-api/reference.mdx +++ b/apps/documentation/pages/developers/public-api/reference.mdx @@ -316,6 +316,8 @@ Before adding fields to an envelope, you will need the following details: See the [Get Envelope](#get-envelope) section for more details on how to retrieve these details. +### Coordinate-Based Positioning + The following is an example of a request which creates 2 new fields on the first page of the envelope. Note that width, height, positionX and positionY are percentage numbers between 0 and 100, which scale the field relative to the size of the PDF. @@ -360,6 +362,95 @@ curl https://app.documenso.com/api/v2/envelope/field/create-many \ }' ``` +### Placeholder-Based Positioning + +Instead of specifying exact coordinates, you can position fields using placeholder text in the PDF. The API will search for the text and place the field at that location. + +This is useful when: + +- You have PDFs with designated placeholder text (e.g., `{{signature}}`, `[SIGN HERE]`) +- You want field positions to adapt to document content changes +- You're working with templated documents generated from other systems + +```sh +curl https://app.documenso.com/api/v2/envelope/field/create-many \ + --request POST \ + --header 'Authorization: api_xxxxxxxxxxxxxx' \ + --header 'Content-Type: application/json' \ + --data '{ + "envelopeId": "envelope_xxxxxxxxxx", + "data": [ + { + "recipientId": recipient_id_here, + "type": "SIGNATURE", + "placeholder": "{{signature}}" + }, + { + "recipientId": recipient_id_here, + "type": "NAME", + "placeholder": "{{name}}", + "width": 30, + "height": 5 + } + ] + }' +``` + +#### Placeholder Parameters + +| Parameter | Type | Required | Description | +| ------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------- | +| `placeholder` | string | Yes | Text to search for in the PDF. The field is placed at the location of this text. | +| `width` | number | No | Override the field width (percentage). If omitted, uses the placeholder text width. | +| `height` | number | No | Override the field height (percentage). If omitted, uses the placeholder text height. | +| `matchAll` | boolean | No | When `true`, creates a field at every occurrence of the placeholder. Default is `false` (first occurrence only). | + + + The placeholder text is automatically covered with a white rectangle after field creation, so it + won't appear in the final signed document. + + +#### Multiple Occurrences + +If your PDF contains the same placeholder text multiple times (e.g., initials on every page), use `matchAll: true` to create fields at all occurrences: + +```json +{ + "recipientId": 123, + "type": "INITIALS", + "placeholder": "{{initials}}", + "matchAll": true +} +``` + +This will create one INITIALS field for each occurrence of `{{initials}}` in the PDF. + +#### Mixing Positioning Methods + +You can combine coordinate-based and placeholder-based positioning in the same request: + +```json +{ + "envelopeId": "envelope_xxxxxxxxxx", + "data": [ + { + "recipientId": 123, + "type": "SIGNATURE", + "placeholder": "{{signature}}" + }, + { + "recipientId": 123, + "type": "DATE", + "page": 1, + "positionX": 70, + "positionY": 85, + "width": 20, + "height": 3 + } + ] +} +``` + Field meta allows you to further configure fields, for example it will allow you to add multiple items for checkboxes or radios. A successful request will return a JSON response with the newly added fields. diff --git a/apps/documentation/pages/users/documents/_meta.js b/apps/documentation/pages/users/documents/_meta.js index b9ed38aa9..7db45bbdf 100644 --- a/apps/documentation/pages/users/documents/_meta.js +++ b/apps/documentation/pages/users/documents/_meta.js @@ -3,6 +3,7 @@ export default { 'document-preferences': 'Document Preferences', 'document-visibility': 'Document Visibility', fields: 'Document Fields', + 'pdf-placeholders': 'PDF Placeholders', 'email-preferences': 'Email Preferences', 'ai-detection': 'AI Recipient & Field Detection', 'default-recipients': 'Default Recipients', diff --git a/apps/documentation/pages/users/documents/pdf-placeholders.mdx b/apps/documentation/pages/users/documents/pdf-placeholders.mdx new file mode 100644 index 000000000..c3b05102b --- /dev/null +++ b/apps/documentation/pages/users/documents/pdf-placeholders.mdx @@ -0,0 +1,179 @@ +--- +title: PDF Placeholders +description: Learn how to use placeholder text in your PDFs for automatic field placement in Documenso. +--- + +import { Callout } from 'nextra/components'; + +# PDF Placeholders + +Documenso can automatically detect placeholder text in your PDF documents and create fields at those locations. This allows you to prepare documents in your preferred editing tool (Word, Google Docs, etc.) with placeholders that become signature fields when uploaded. + +## How It Works + +When you upload a PDF, Documenso scans for text matching the placeholder pattern `{{...}}`. Each placeholder can specify: + +1. **Field type** - What kind of field to create (signature, name, email, etc.) +2. **Recipient** - Which signer the field belongs to (r1, r2, etc.) +3. **Options** - Additional settings like required, read-only, font size, etc. + +The placeholder text is automatically hidden after fields are created, so your final document looks clean. + +## Placeholder Format + +The basic format is: + +``` +{{FIELD_TYPE, RECIPIENT, option1=value1, option2=value2}} +``` + +### Examples + +| Placeholder | Description | +| ----------------------------- | ----------------------------------- | +| `{{signature, r1}}` | Signature field for recipient 1 | +| `{{name, r1}}` | Name field for recipient 1 | +| `{{email, r2}}` | Email field for recipient 2 | +| `{{date, r1}}` | Date field for recipient 1 | +| `{{text, r1, required=true}}` | Required text field for recipient 1 | +| `{{initials, r1}}` | Initials field for recipient 1 | + +## Supported Field Types + +The following field types are supported in placeholders: + +| Field Type | Placeholder Value | +| ---------- | ----------------- | +| Signature | `signature` | +| Initials | `initials` | +| Name | `name` | +| Email | `email` | +| Date | `date` | +| Text | `text` | +| Number | `number` | +| Radio | `radio` | +| Checkbox | `checkbox` | +| Dropdown | `dropdown` | + + + Field types are case-insensitive. `{{ SIGNATURE, r1 }}` and `{{ signature, r1 }}` are equivalent. + + +## Recipient Identifiers + +Recipients are identified using `r1`, `r2`, `r3`, etc. The number corresponds to the order in which recipients are created: + +- `r1` - First recipient +- `r2` - Second recipient +- `r3` - Third recipient + +When you upload a PDF with placeholders, Documenso will: + +1. Create placeholder recipients for each unique identifier found (e.g., `r1`, `r2`) +2. You can then update these with real email addresses before sending + + + Placeholders without a recipient identifier (e.g., `{{ signature }}` without `r1`) are reserved + for API use and will not create fields during upload. + + +## Field Options + +You can customize fields by adding options after the recipient identifier: + +### Common Options + +| Option | Values | Description | +| ----------- | ------------------------- | ------------------------------------------ | +| `required` | `true`, `false` | Whether the field must be filled | +| `readOnly` | `true`, `false` | Whether the field is pre-filled and locked | +| `fontSize` | Number (e.g., `12`) | Font size in points | +| `textAlign` | `left`, `center`, `right` | Horizontal text alignment | + +### Text Field Options + +| Option | Values | Description | +| ---------------- | ------ | ------------------------------------- | +| `label` | Text | Label shown in the field | +| `placeholder` | Text | Placeholder text shown before signing | +| `text` | Text | Pre-filled text value | +| `characterLimit` | Number | Maximum characters allowed | + +### Number Field Options + +| Option | Values | Description | +| -------------- | ------------- | --------------------- | +| `value` | Number | Pre-filled value | +| `minValue` | Number | Minimum allowed value | +| `maxValue` | Number | Maximum allowed value | +| `numberFormat` | Format string | Number display format | + +### Examples with Options + +``` +{{text, r1, required=true, label=Company Name}} +{{number, r1, minValue=0, maxValue=100, value=50}} +{{name, r1, fontSize=14}} +{{text, r2, readOnly=true, text=Contract #12345}} +``` + + + Signature and Free Signature fields do not support additional options beyond the field type and + recipient. + + +## Multiple Recipients Example + +Here's how a document might look with placeholders for two signers: + +``` +AGREEMENT + +Party A Signature: {{signature, r1}} +Party A Name: {{name, r1}} +Party A Date: {{date, r1}} + +Party B Signature: {{signature, r2}} +Party B Name: {{name, r2}} +Party B Date: {{date, r2}} +``` + +When uploaded, this creates: + +- 3 fields assigned to recipient 1 (Party A) +- 3 fields assigned to recipient 2 (Party B) +- 2 placeholder recipients that you can update with real email addresses + +## Tips for Creating Documents + +1. **Use a readable font** - Placeholders need to be readable by the PDF parser. Standard fonts like Arial, Helvetica, or Times New Roman work best. + +2. **Don't split placeholders** - Ensure the entire placeholder text `{{...}}` is on a single line and not broken across text boxes. + +3. **Size matters** - The field will be sized to match the placeholder text width. Use spaces or longer placeholder text if you need wider fields. + +4. **Test with a draft** - Upload your document as a draft first to verify fields are detected correctly before sending. + + + Placeholder detection happens automatically when you upload a PDF. You can review and adjust the + created fields in the document editor before sending. + + +## Troubleshooting + +### Placeholders Not Detected + +- Ensure placeholders use double curly braces: `{{...}}` +- Check that the placeholder includes a recipient identifier (e.g., `r1`) +- Verify the field type is spelled correctly +- Try using a standard font in your source document + +### Wrong Field Position + +- The field is placed at the exact location of the placeholder text +- If the position seems off, check that your PDF wasn't scaled or reformatted when exported + +### Placeholder Text Still Visible + +- Placeholder text is covered with a white rectangle after field creation +- If you see the text, try re-uploading the document diff --git a/packages/app-tests/e2e/api/v2/placeholder-fields-api.spec.ts b/packages/app-tests/e2e/api/v2/placeholder-fields-api.spec.ts new file mode 100644 index 000000000..e25beaef7 --- /dev/null +++ b/packages/app-tests/e2e/api/v2/placeholder-fields-api.spec.ts @@ -0,0 +1,453 @@ +import { PDF, StandardFonts } from '@libpdf/core'; +import type { APIRequestContext } from '@playwright/test'; +import { expect, test } from '@playwright/test'; +import type { Team, User } from '@prisma/client'; +import fs from 'node:fs'; +import path from 'node:path'; + +import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app'; +import { createApiToken } from '@documenso/lib/server-only/public-api/create-api-token'; +import { prisma } from '@documenso/prisma'; +import { EnvelopeType, FieldType, RecipientRole } from '@documenso/prisma/client'; +import { seedUser } from '@documenso/prisma/seed/users'; +import type { + TCreateEnvelopePayload, + TCreateEnvelopeResponse, +} from '@documenso/trpc/server/envelope-router/create-envelope.types'; +import type { TCreateEnvelopeRecipientsRequest } from '@documenso/trpc/server/envelope-router/envelope-recipients/create-envelope-recipients.types'; +import type { TGetEnvelopeResponse } from '@documenso/trpc/server/envelope-router/get-envelope.types'; + +const WEBAPP_BASE_URL = NEXT_PUBLIC_WEBAPP_URL(); +const baseUrl = `${WEBAPP_BASE_URL}/api/v2-beta`; + +const FIXTURES_DIR = path.join(__dirname, '../../../../assets/fixtures/auto-placement'); + +test.describe.configure({ mode: 'parallel' }); + +test.describe('Placeholder-based field creation', () => { + let user: User, team: Team, token: string; + + test.beforeEach(async () => { + ({ user, team } = await seedUser()); + ({ token } = await createApiToken({ + userId: user.id, + teamId: team.id, + tokenName: 'test', + expiresIn: null, + })); + }); + + const createEnvelopeWithPdf = async ( + request: APIRequestContext, + pdfFilename: string, + ): Promise => { + const pdfPath = path.join(FIXTURES_DIR, pdfFilename); + const pdfData = fs.readFileSync(pdfPath); + + const formData = new FormData(); + + formData.append( + 'payload', + JSON.stringify({ + type: EnvelopeType.DOCUMENT, + title: 'Placeholder Fields Test', + } satisfies TCreateEnvelopePayload), + ); + + formData.append('files', new File([pdfData], pdfFilename, { type: 'application/pdf' })); + + const res = await request.post(`${baseUrl}/envelope/create`, { + headers: { Authorization: `Bearer ${token}` }, + multipart: formData, + }); + + expect(res.ok()).toBeTruthy(); + + return res.json(); + }; + + const createEnvelopeItemsWithPdf = async ( + request: APIRequestContext, + envelopeId: string, + pdfFilename: string, + ) => { + const pdfPath = path.join(FIXTURES_DIR, pdfFilename); + const pdfData = fs.readFileSync(pdfPath); + + const formData = new FormData(); + + formData.append('payload', JSON.stringify({ envelopeId })); + formData.append('files', new File([pdfData], pdfFilename, { type: 'application/pdf' })); + + const res = await request.post(`${baseUrl}/envelope/item/create-many`, { + headers: { Authorization: `Bearer ${token}` }, + multipart: formData, + }); + + expect(res.ok()).toBeTruthy(); + + return res.json(); + }; + + const addRecipient = async (request: APIRequestContext, envelopeId: string) => { + const payload: TCreateEnvelopeRecipientsRequest = { + envelopeId, + data: [ + { + email: user.email, + name: user.name || '', + role: RecipientRole.SIGNER, + accessAuth: [], + actionAuth: [], + }, + ], + }; + + const res = await request.post(`${baseUrl}/envelope/recipient/create-many`, { + headers: { Authorization: `Bearer ${token}` }, + data: payload, + }); + + expect(res.ok()).toBeTruthy(); + }; + + const addRecipients = async ( + request: APIRequestContext, + envelopeId: string, + recipients: TCreateEnvelopeRecipientsRequest['data'], + ) => { + const payload: TCreateEnvelopeRecipientsRequest = { + envelopeId, + data: recipients, + }; + + const res = await request.post(`${baseUrl}/envelope/recipient/create-many`, { + headers: { Authorization: `Bearer ${token}` }, + data: payload, + }); + + expect(res.ok()).toBeTruthy(); + }; + + const getEnvelope = async ( + request: APIRequestContext, + envelopeId: string, + ): Promise => { + const res = await request.get(`${baseUrl}/envelope/${envelopeId}`, { + headers: { Authorization: `Bearer ${token}` }, + }); + + expect(res.ok()).toBeTruthy(); + + return res.json(); + }; + + /** + * Create a PDF with the same placeholder appearing multiple times at different locations. + */ + const createPdfWithDuplicatePlaceholders = async (): Promise => { + const pdf = PDF.create(); + const page = pdf.addPage({ size: 'letter' }); + + // Draw the same placeholder text at three different Y positions. + page.drawText('{{initials}}', { x: 50, y: 700, font: StandardFonts.Helvetica, size: 12 }); + page.drawText('{{initials}}', { x: 50, y: 500, font: StandardFonts.Helvetica, size: 12 }); + page.drawText('{{initials}}', { x: 50, y: 300, font: StandardFonts.Helvetica, size: 12 }); + + const bytes = await pdf.save(); + + return Buffer.from(bytes); + }; + + const createEnvelopeWithPdfBuffer = async ( + request: APIRequestContext, + pdfBuffer: Buffer, + filename: string, + ): Promise => { + const formData = new FormData(); + + formData.append( + 'payload', + JSON.stringify({ + type: EnvelopeType.DOCUMENT, + title: 'Placeholder Fields Test', + } satisfies TCreateEnvelopePayload), + ); + + formData.append('files', new File([pdfBuffer], filename, { type: 'application/pdf' })); + + const res = await request.post(`${baseUrl}/envelope/create`, { + headers: { Authorization: `Bearer ${token}` }, + multipart: formData, + }); + + expect(res.ok()).toBeTruthy(); + + return res.json(); + }; + + test('should create a field at a placeholder location', async ({ request }) => { + const envelope = await createEnvelopeWithPdf(request, 'no-recipient-placeholders.pdf'); + await addRecipient(request, envelope.id); + + const envelopeData = await getEnvelope(request, envelope.id); + const recipientId = envelopeData.recipients[0].id; + + const createFieldsRes = await request.post(`${baseUrl}/envelope/field/create-many`, { + headers: { Authorization: `Bearer ${token}` }, + data: { + envelopeId: envelope.id, + data: [ + { + recipientId, + type: FieldType.SIGNATURE, + placeholder: '{{signature}}', + }, + ], + }, + }); + + expect(createFieldsRes.ok()).toBeTruthy(); + + const fields = await prisma.field.findMany({ + where: { envelopeId: envelope.id }, + }); + + expect(fields).toHaveLength(1); + expect(fields[0].type).toBe(FieldType.SIGNATURE); + + // Verify the field has non-zero position/dimensions resolved from the placeholder. + expect(fields[0].positionX.toNumber()).toBeGreaterThan(0); + expect(fields[0].positionY.toNumber()).toBeGreaterThan(0); + expect(fields[0].width.toNumber()).toBeGreaterThan(0); + expect(fields[0].height.toNumber()).toBeGreaterThan(0); + }); + + test('should override width and height when provided', async ({ request }) => { + const envelope = await createEnvelopeWithPdf(request, 'no-recipient-placeholders.pdf'); + await addRecipient(request, envelope.id); + + const envelopeData = await getEnvelope(request, envelope.id); + const recipientId = envelopeData.recipients[0].id; + + const createFieldsRes = await request.post(`${baseUrl}/envelope/field/create-many`, { + headers: { Authorization: `Bearer ${token}` }, + data: { + envelopeId: envelope.id, + data: [ + { + recipientId, + type: FieldType.NAME, + placeholder: '{{name}}', + width: 30, + height: 5, + }, + ], + }, + }); + + expect(createFieldsRes.ok()).toBeTruthy(); + + const fields = await prisma.field.findMany({ + where: { envelopeId: envelope.id }, + }); + + expect(fields).toHaveLength(1); + expect(fields[0].width.toNumber()).toBeCloseTo(30, 1); + expect(fields[0].height.toNumber()).toBeCloseTo(5, 1); + }); + + test('should fail when placeholder text is not found in the PDF', async ({ request }) => { + const envelope = await createEnvelopeWithPdf(request, 'no-recipient-placeholders.pdf'); + await addRecipient(request, envelope.id); + + const envelopeData = await getEnvelope(request, envelope.id); + const recipientId = envelopeData.recipients[0].id; + + const createFieldsRes = await request.post(`${baseUrl}/envelope/field/create-many`, { + headers: { Authorization: `Bearer ${token}` }, + data: { + envelopeId: envelope.id, + data: [ + { + recipientId, + type: FieldType.TEXT, + placeholder: '{{nonexistent}}', + }, + ], + }, + }); + + expect(createFieldsRes.ok()).toBeFalsy(); + }); + + test('should create fields using a mix of coordinate and placeholder positioning', async ({ + request, + }) => { + const envelope = await createEnvelopeWithPdf(request, 'no-recipient-placeholders.pdf'); + await addRecipient(request, envelope.id); + + const envelopeData = await getEnvelope(request, envelope.id); + const recipientId = envelopeData.recipients[0].id; + + const createFieldsRes = await request.post(`${baseUrl}/envelope/field/create-many`, { + headers: { Authorization: `Bearer ${token}` }, + data: { + envelopeId: envelope.id, + data: [ + { + recipientId, + type: FieldType.SIGNATURE, + placeholder: '{{signature}}', + }, + { + recipientId, + type: FieldType.DATE, + page: 1, + positionX: 10, + positionY: 20, + width: 15, + height: 3, + }, + ], + }, + }); + + expect(createFieldsRes.ok()).toBeTruthy(); + + const fields = await prisma.field.findMany({ + where: { envelopeId: envelope.id }, + orderBy: { type: 'asc' }, + }); + + expect(fields).toHaveLength(2); + + const dateField = fields.find((f) => f.type === FieldType.DATE); + const signatureField = fields.find((f) => f.type === FieldType.SIGNATURE); + + expect(dateField).toBeDefined(); + expect(dateField!.positionX.toNumber()).toBeCloseTo(10, 1); + expect(dateField!.positionY.toNumber()).toBeCloseTo(20, 1); + + expect(signatureField).toBeDefined(); + expect(signatureField!.positionX.toNumber()).toBeGreaterThan(0); + }); + + test('should create a field only at first occurrence by default', async ({ request }) => { + const pdfBuffer = await createPdfWithDuplicatePlaceholders(); + const envelope = await createEnvelopeWithPdfBuffer(request, pdfBuffer, 'duplicates.pdf'); + await addRecipient(request, envelope.id); + + const envelopeData = await getEnvelope(request, envelope.id); + const recipientId = envelopeData.recipients[0].id; + + const createFieldsRes = await request.post(`${baseUrl}/envelope/field/create-many`, { + headers: { Authorization: `Bearer ${token}` }, + data: { + envelopeId: envelope.id, + data: [ + { + recipientId, + type: FieldType.INITIALS, + placeholder: '{{initials}}', + }, + ], + }, + }); + + expect(createFieldsRes.ok()).toBeTruthy(); + + const fields = await prisma.field.findMany({ + where: { envelopeId: envelope.id }, + }); + + // Should only create one field (first occurrence). + expect(fields).toHaveLength(1); + expect(fields[0].type).toBe(FieldType.INITIALS); + }); + + test('should create fields at all occurrences when matchAll is true', async ({ request }) => { + const pdfBuffer = await createPdfWithDuplicatePlaceholders(); + const envelope = await createEnvelopeWithPdfBuffer(request, pdfBuffer, 'duplicates.pdf'); + await addRecipient(request, envelope.id); + + const envelopeData = await getEnvelope(request, envelope.id); + const recipientId = envelopeData.recipients[0].id; + + const createFieldsRes = await request.post(`${baseUrl}/envelope/field/create-many`, { + headers: { Authorization: `Bearer ${token}` }, + data: { + envelopeId: envelope.id, + data: [ + { + recipientId, + type: FieldType.INITIALS, + placeholder: '{{initials}}', + matchAll: true, + }, + ], + }, + }); + + expect(createFieldsRes.ok()).toBeTruthy(); + + const fields = await prisma.field.findMany({ + where: { envelopeId: envelope.id }, + orderBy: { positionY: 'asc' }, + }); + + // Should create three fields (one for each occurrence). + expect(fields).toHaveLength(3); + + // All should be INITIALS type. + expect(fields.every((f) => f.type === FieldType.INITIALS)).toBe(true); + + // Verify they're at different Y positions. + const yPositions = fields.map((f) => f.positionY.toNumber()); + const uniqueYPositions = new Set(yPositions); + + expect(uniqueYPositions.size).toBe(3); + }); + + test('should map placeholder recipients by signing order when adding items', async ({ + request, + }) => { + const envelope = await createEnvelopeWithPdf(request, 'no-recipient-placeholders.pdf'); + + await addRecipients(request, envelope.id, [ + { + email: 'second.recipient@documenso.com', + name: 'Second Recipient', + role: RecipientRole.SIGNER, + signingOrder: 2, + accessAuth: [], + actionAuth: [], + }, + { + email: 'first.recipient@documenso.com', + name: 'First Recipient', + role: RecipientRole.SIGNER, + signingOrder: 1, + accessAuth: [], + actionAuth: [], + }, + ]); + + await createEnvelopeItemsWithPdf(request, envelope.id, 'project-proposal-single-recipient.pdf'); + + const recipients = await prisma.recipient.findMany({ + where: { envelopeId: envelope.id }, + }); + + const firstRecipient = recipients.find((recipient) => recipient.signingOrder === 1); + + expect(firstRecipient).toBeDefined(); + + const fields = await prisma.field.findMany({ + where: { envelopeId: envelope.id }, + }); + + expect(fields.length).toBeGreaterThan(0); + expect(fields.every((field) => field.recipientId === firstRecipient!.id)).toBe(true); + }); +}); diff --git a/packages/app-tests/e2e/auto-placing-fields/auto-place-fields-document.spec.ts b/packages/app-tests/e2e/auto-placing-fields/auto-place-fields-document.spec.ts new file mode 100644 index 000000000..1b9fa4ed9 --- /dev/null +++ b/packages/app-tests/e2e/auto-placing-fields/auto-place-fields-document.spec.ts @@ -0,0 +1,307 @@ +import { type Page, expect, test } from '@playwright/test'; +import path from 'path'; + +import { prisma } from '@documenso/prisma'; +import { RecipientRole } from '@documenso/prisma/client'; +import { seedUser } from '@documenso/prisma/seed/users'; + +import { apiSignin } from '../fixtures/authentication'; + +const FIXTURES_DIR = path.join(__dirname, '../../../assets/fixtures/auto-placement'); + +const SINGLE_PLACEHOLDER_PDF_PATH = path.join( + FIXTURES_DIR, + 'project-proposal-single-recipient.pdf', +); + +const MULTIPLE_PLACEHOLDER_PDF_PATH = path.join( + FIXTURES_DIR, + 'project-proposal-multiple-fields-and-recipients.pdf', +); + +const NO_RECIPIENT_PDF_PATH = path.join(FIXTURES_DIR, 'no-recipient-placeholders.pdf'); + +const INVALID_FIELD_TYPE_PDF_PATH = path.join(FIXTURES_DIR, 'invalid-field-type.pdf'); + +const FIELD_TYPE_ONLY_PDF_PATH = path.join(FIXTURES_DIR, 'field-type-only.pdf'); + +const setTeamDefaultRecipients = async ( + teamId: number, + defaultRecipients: Array<{ email: string; name: string; role: RecipientRole }>, +) => { + const teamSettings = await prisma.teamGlobalSettings.findFirstOrThrow({ + where: { + team: { + id: teamId, + }, + }, + }); + + await prisma.teamGlobalSettings.update({ + where: { + id: teamSettings.id, + }, + data: { + defaultRecipients, + }, + }); +}; + +const setupUserAndSignIn = async (page: Page) => { + const { user, team } = await seedUser(); + + await apiSignin({ + page, + email: user.email, + redirectPath: `/t/${team.url}/documents`, + }); + + return { user, team }; +}; + +const uploadPdf = async (page: Page, team: { url: string }, pdfPath: string) => { + const [fileChooser] = await Promise.all([ + page.waitForEvent('filechooser'), + page + .locator('input[type=file]') + .nth(1) + .evaluate((e) => { + if (e instanceof HTMLInputElement) { + e.click(); + } + }), + ]); + + await fileChooser.setFiles(pdfPath); + + // Wait for redirect to v2 envelope editor. + await page.waitForURL(new RegExp(`/t/${team.url}/documents/envelope_.*`)); + + // Extract envelope ID from URL. + const urlParts = page.url().split('/'); + const envelopeId = urlParts.find((part) => part.startsWith('envelope_')); + + if (!envelopeId) { + throw new Error('Could not extract envelope ID from URL'); + } + + return envelopeId; +}; + +test.describe('PDF Placeholders with single recipient', () => { + test('[AUTO_PLACING_FIELDS]: should create placeholder recipients even with default recipients', async ({ + page, + }) => { + const { user, team } = await seedUser(); + + await setTeamDefaultRecipients(team.id, [ + { + email: user.email, + name: user.name || user.email, + role: RecipientRole.CC, + }, + ]); + + await apiSignin({ + page, + email: user.email, + redirectPath: `/t/${team.url}/documents`, + }); + + const envelopeId = await uploadPdf(page, team, SINGLE_PLACEHOLDER_PDF_PATH); + + await expect(async () => { + const recipients = await prisma.recipient.findMany({ + where: { envelopeId }, + }); + + const placeholderRecipient = recipients.find( + (recipient) => recipient.email === 'recipient.1@documenso.com', + ); + + const defaultRecipient = recipients.find((recipient) => recipient.email === user.email); + + expect(placeholderRecipient).toBeDefined(); + expect(defaultRecipient).toBeDefined(); + + const fields = await prisma.field.findMany({ + where: { envelopeId }, + }); + + expect(fields.length).toBeGreaterThan(0); + expect(fields.every((field) => field.recipientId === placeholderRecipient!.id)).toBe(true); + }).toPass(); + }); + + test('[AUTO_PLACING_FIELDS]: should automatically create recipients from PDF placeholders', async ({ + page, + }) => { + const { team } = await setupUserAndSignIn(page); + await uploadPdf(page, team, SINGLE_PLACEHOLDER_PDF_PATH); + + // V2 editor shows recipients on the upload page under "Recipients" heading. + await expect(page.getByRole('heading', { name: 'Recipients' })).toBeVisible(); + await expect(page.getByTestId('signer-email-input').first()).toHaveValue( + 'recipient.1@documenso.com', + ); + await expect(page.getByLabel('Name').first()).toHaveValue('Recipient 1'); + }); + + test('[AUTO_PLACING_FIELDS]: should automatically place fields from PDF placeholders', async ({ + page, + }) => { + const { team } = await setupUserAndSignIn(page); + const envelopeId = await uploadPdf(page, team, SINGLE_PLACEHOLDER_PDF_PATH); + + // V2 editor renders fields on a Konva canvas, so we verify via the database. + await expect(async () => { + const fields = await prisma.field.findMany({ + where: { envelopeId }, + }); + + const fieldTypes = fields.map((f) => f.type).sort(); + expect(fieldTypes).toEqual(['EMAIL', 'NAME', 'SIGNATURE', 'TEXT'].sort()); + }).toPass(); + }); + + test('[AUTO_PLACING_FIELDS]: should automatically configure fields from PDF placeholders', async ({ + page, + }) => { + const { team } = await setupUserAndSignIn(page); + const envelopeId = await uploadPdf(page, team, SINGLE_PLACEHOLDER_PDF_PATH); + + // Verify field metadata was correctly parsed from the placeholder. + await expect(async () => { + const textField = await prisma.field.findFirst({ + where: { envelopeId, type: 'TEXT' }, + }); + + expect(textField).toBeDefined(); + expect(textField!.fieldMeta).toBeDefined(); + + const meta = textField!.fieldMeta as Record; + expect(meta.required).toBe(true); + expect(meta.textAlign).toBe('right'); + }).toPass(); + }); +}); + +test.describe('PDF Placeholders with multiple recipients', () => { + test('[AUTO_PLACING_FIELDS]: should automatically create recipients from PDF placeholders', async ({ + page, + }) => { + const { team } = await setupUserAndSignIn(page); + const envelopeId = await uploadPdf(page, team, MULTIPLE_PLACEHOLDER_PDF_PATH); + + // V2 editor shows recipients on the upload page. + await expect(page.getByRole('heading', { name: 'Recipients' })).toBeVisible(); + + await expect(page.getByTestId('signer-email-input').first()).toHaveValue( + 'recipient.1@documenso.com', + ); + + await expect(page.getByTestId('signer-email-input').nth(1)).toHaveValue( + 'recipient.2@documenso.com', + ); + + await expect(page.getByTestId('signer-email-input').nth(2)).toHaveValue( + 'recipient.3@documenso.com', + ); + + // Verify recipients via the database for name validation since the v2 editor + // only shows the "Name" label on the first recipient row. + await expect(async () => { + const recipients = await prisma.recipient.findMany({ + where: { envelopeId }, + orderBy: { signingOrder: 'asc' }, + }); + + expect(recipients).toHaveLength(3); + expect(recipients[0].name).toBe('Recipient 1'); + expect(recipients[1].name).toBe('Recipient 2'); + expect(recipients[2].name).toBe('Recipient 3'); + }).toPass(); + }); + + test('[AUTO_PLACING_FIELDS]: should automatically create fields from PDF placeholders', async ({ + page, + }) => { + const { team } = await setupUserAndSignIn(page); + const envelopeId = await uploadPdf(page, team, MULTIPLE_PLACEHOLDER_PDF_PATH); + + // V2 editor renders fields on a Konva canvas, so we verify via the database. + await expect(async () => { + const fields = await prisma.field.findMany({ + where: { envelopeId }, + }); + + const fieldTypes = fields.map((f) => f.type).sort(); + expect(fieldTypes).toEqual( + ['SIGNATURE', 'SIGNATURE', 'SIGNATURE', 'EMAIL', 'EMAIL', 'NAME', 'TEXT', 'NUMBER'].sort(), + ); + }).toPass(); + }); +}); + +test.describe('PDF Placeholders without recipient identifier', () => { + test('[AUTO_PLACING_FIELDS]: should skip placeholders without a recipient identifier', async ({ + page, + }) => { + const { team } = await setupUserAndSignIn(page); + const envelopeId = await uploadPdf(page, team, NO_RECIPIENT_PDF_PATH); + + // Placeholders like {{signature}}, {{name}}, {{email}} have no recipient + // identifier and should be skipped entirely. No fields or auto-created + // recipients should exist. + await expect(async () => { + const fields = await prisma.field.findMany({ + where: { envelopeId }, + }); + + expect(fields).toHaveLength(0); + }).toPass(); + }); + + test('[AUTO_PLACING_FIELDS]: should skip a bare field type placeholder', async ({ page }) => { + const { team } = await setupUserAndSignIn(page); + const envelopeId = await uploadPdf(page, team, FIELD_TYPE_ONLY_PDF_PATH); + + await expect(async () => { + const fields = await prisma.field.findMany({ + where: { envelopeId }, + }); + + expect(fields).toHaveLength(0); + }).toPass(); + }); +}); + +test.describe('PDF Placeholders with invalid field types', () => { + test('[AUTO_PLACING_FIELDS]: should skip invalid field types and process valid ones', async ({ + page, + }) => { + const { team } = await setupUserAndSignIn(page); + const envelopeId = await uploadPdf(page, team, INVALID_FIELD_TYPE_PDF_PATH); + + // Only the valid placeholders (signature,r1 and email,r2) should create fields. + // The invalid ones (bogus,r1 and foobar,r2) should be skipped. + await expect(async () => { + const fields = await prisma.field.findMany({ + where: { envelopeId }, + }); + + const fieldTypes = fields.map((f) => f.type).sort(); + expect(fieldTypes).toEqual(['EMAIL', 'SIGNATURE'].sort()); + }).toPass(); + + // Both valid recipients should still be created. + await expect(async () => { + const recipients = await prisma.recipient.findMany({ + where: { envelopeId }, + orderBy: { signingOrder: 'asc' }, + }); + + expect(recipients).toHaveLength(2); + }).toPass(); + }); +}); diff --git a/packages/assets/fixtures/auto-placement/arbitrary-placeholders.pdf b/packages/assets/fixtures/auto-placement/arbitrary-placeholders.pdf new file mode 100644 index 0000000000000000000000000000000000000000..731c39211fca65c50377848d0e33ff888186df3b GIT binary patch literal 40976 zcmc$_by!@>wl9jiyVGcJr*U_84^HFm?(Q1g-GUP&K=2UUJ!pc2AfXc^$ZN9JI(y%{ z&wKa0_s?T?SIt?oYIu#&d|&4w(+}Q@e0CHx0;SO@PdeQGi?*G#B&vXWL zcNcq*r6<7E-Nn_#!`zV(qO!Y-m6s*R9l)UFU}w$_u@%6H6JjGd7Z)1{2M8+(F8)>QVZk>F#1E7T^r=<31C-ng3OfsyO;XA zS1?9lm+|$K)ABU;1pTps95;abkCk2ws;_48NAef*=<@;i{_BOTi?ipS>9RZko=O4jef`Ai+UDDhG^oJU|Jjl@-m?pv#{LP&e{<~%tN*mV$BQ^#FAGrE zmF%n_GX3Fe{BJ?=BEdfkEzMshN~!?ZRbAYj%pL!2+KYYvnWhYKw(+zDaB*|~y}+gbBL77uM;CW3S941cBn}j$q+Sed1^BZAAlggX zd3vaW+@)NcTwR=BwB?6*%g)gg5|Zq)j*wuG23fjT{n=I?p6(!XClud;?`xdcP*7+v zoVomxc&DdjTIY2Dt-A&{I3z59cqkM!%wIPj(5(Kx`>!E!I+*_$qWzDd5C1vz|8-#r z0@pv{{38Sa2l{^>GW*w%IAu{8tP7(1?aMy?TjRfX^oz;o7n#YB9`2nZJ1j0hMzd1xM%c%jJG@(mZ@Xm!D^*P7BcDxi<0GAQfs>k^DeH4gP zx7h6Jcy*0$gG28HPhWz@7%-+x;CWvBjQ@xN-tf0H{P(f+U8A@S#r z8It&X?VQY2UA)a%H9>I+M7o`)AFKSIGGhsGu(`A63vI}z z<@u8|AX`J*MaS9hCHMinf0d+vWq?0({yWKDXg~^=rMsQ0r;9s)=kG%EKNIl3QlgZC z^b4UEm0vcng0!}aoPxB9x$D0~|1+%R=iv!*`meGG(bNtSvVH&t2}lV7LCTAoJEU^F zsLb$>%8)@VFIQJbkkiX%=Xgmv?0PR*)rgnlCGBtkxOiWL{wv9H0JymY0KEMC0A5}` z$QRNJa6rDC0A5Z=n&*e~0-VM#_AvtT0Ucv;W;r;zh;yinui|BE&+KM=sn z#{uBuc$x8s3)f4D;N^l)=i>$N2tcSpdR|Db=Hh?Jmb`pC5WZZ-00;#meh4vMUI;^e z0lC3NPZLl>+6|&3e2qT#SRTY-y;2$uO z?}Z67h6tsyU00;FT323y2*8JWs1ML(osehNg4IM6?`$+~3x?fBK@=xw{_U{JYT(et z@rkOTmY6+0)1NXU~pga#A4T0%*hzj(3`1|6g-YI-aDw)8HZNJOTx2t!4v*_#XPM1MC-M(y4#6#*j zR1uC5B!+t!=1?E};<)d)<3BozhZ^FnD`b@%02&OtgGI_N5Aw?rzH*{WNQ=4Bz4C2p zj!=m981uKVK|IPT)aioxz<*mB4kbnpz=UTQ#?vmRXyZUsv5g6@MTS@6 zs-3ILa6HJ>P?33#?+ky;4OSa+?r~YVA_&UwFRT!Om4n`snx}q`i6m5VP)m{FCum3< zU@k5qE_NumDVDh)_$J*c73!Y&$#U*T=C1{ldt-lsM>Y{Hq+uw;AUz~hnFcj?np*0P zb_8+WH)bS?>Y>U!B^D#yQ0O&#t1RzGCg(%REa-mbkUf6MV>>nKPQ2G;sq7ceAJ|@f zGatM_eQMO7dVi1qu8DVHp}%O#-la$-NTsc&iF0&a^cDQ~?^ezMq`8~@R#ZQKdTE)u z5dNG_p0Zbq^WEUZZdWSlA5ExfvZ4Cv#prC>utz8wFtYNN-d0a$jxGG2fWfZ+PBH$% zJZfq6d5Ev=&HV!PXKy{Y@46Pw@1&=`(}w@L185LxWEfj*&UCJvovpEHCpiLQLk*6Rs9fs zW*HV!Pa2AGFpu2YYBOwa+x;qZp+XJ`tMt^U&l(@)&D(D$GQMAafJ82vL_y1f6&SzK z!tw&3*{7S3d3;Iu_U(j|SU-kFWz)`u?>Z8tSFY(GicQu?;bmwc#fjm)OAs2NjLS~Yi`9!4BWO}gmW;!xor^n4AdKB1d>2O; zPZ&p-kRAI>V}b$=L;JZ2IMIes*btJ1X2we){}tC==@350)rgC|3|%S155JXzHCJyq z!j+4i3ateBTQfqng@A4;qDM0V>3qcNb~EHRdw31fm@DRNZ_LP7ECp7~cpn%fDNrmLS`PYn*G>pSBXc;%`6DL8oZK@2jH z=fhUYWxv&~P?Nz#__00zsHr!buh=L4=DM5<4>ZRSP~E zNp@i4DRH_WMBdm1AN7P2F!_`;eh{fwO_fVI1^4l$BW<+{)!3pzO{I%D(0bt=2cj2P zg{Q2jKaQSfj&DAZ=#klwBjE|ZF-PS&9ynF%QbL{tMxT3yIRnq<#blOxGYI z7KHrj+LQdvVs?&6Y=G1-PP_I*-)71NPgeJRrs`i4sO-F*Js{!kZl z@*wDHbCDqEoiYD=VbyVjd*PW6j9@>l!lDlv_w5& zZ(bVT%e{_mJ6Y^PI-09?8|@dLvS4ParrI&+lrK3|A!pWaMJ^(dnD%% zI$-k=H{Kv3Avg3OBEJ1sV5+T1hZCtT;??<>OVWo-(MY39?t6gq=Ey8sm2d918{a-S_<=y^BjF=Kh3FiE_urzQ`#HLRVZA$*R!RZ?`I?ZBH3*u8gQ06a6c~d1OEs6q0wOg z4l#LOx#b!XM`symjkwz8UZnzU>exTIeeYP`N2OwXI*i+Z-mLXxUOWSv!2nmdKgFRsQNdJpPco8Kmvhl{v{yc451kNX`UTheGqC0JYMXHVs`ecpH7Y`kqumyIDl__ zw$@_l-eJFk^f#h?kImuN)Ixt_uV()^Ha2C4 zqY?vj{LPDIMEXXH-&4wKX;l5a=Qn45jycR~?Y}t>)_hBA&;`7ed1@DDP?6X@qy#ElzEsFeRbX&!EXiH!ps+7DF255gl_~(1#&*Wy)8o7k-HQbKe-;<68&OEXInyuWz(qIQ z$2GZfm(uJq?(iBhjA;2flRTkNhRdh#QKvplH4P{9KF)goRQ)yS!o3h&Q_YADmC|eS zAFE?JrDi%Zukqs@BsaR~t>ToBS-5}Hp@bk_S=4w24l!RLKjqPJr+-=dStGkV1+M!R zZJ4nJD)7`>^@ByJE>1$0e2xF(l~8iMlwnn9PpOf`M@qe@b~h^RX;^U3<9qYqfhpXIoKQBSsRPVmU zIR8d$AJqQ_IRsjcU&JH$`;r`PSVjt|Ao1Ci5v#kQ?$#2~gT_FhW7zw|xiEiTQz7aVy z(9is8Nl$aBEzVlnVtFJukr(PJmfCr?_$>ye3+-18ksd&u!#th@!~2W%74O`I_Ir^1 z#7ykz$?KQiQ8_ap?^rnkTLyoY!JpTe14@X6>NKk)*i_ry@H&R-u3fR+83AF=zgO>Wp7OeNU`O$=q1g^Hbt zy$ZMX%Gt@vKcjo7KA-}%&bf{}1>ZG+M9}=? z8vL%@)V*yB2j(1(y}+!Y{W8T>KJ*WJ9BggJ#$eg|)0#ZBxp7%z(~ts@r$m$M(G$31 z8t|8p`p;J%ujPMIlmy5c@7%ep1l;d5WG{^nM$H@E!~A?JJmc;&Z__S%b11!T!P8*e2nOt0(qPSb(;b%?H>LfK7Z6r)Qvfo zD4uAf#2Wiqj7obf0nzC9eea6+?1b!LROs9S8@{7OSX35Q4-DiZmEHGoG`?CMpJ`|E z5jaOmMp>r969sZ$MUECf-0_sbv(C9XClwf>ug1K&wmS?ol)bb&2;2}T#+a$jxXvBA z^Q5~gP_UL%I+Z6!t0-EMqIu8qK2dw7G1tT4>((j%JNhe_D;VEVr4gmI_{axXkLYRJ zV-Y~-{7wwgc*hXqlw?b4f+rPbusKFuq^vX?wrD9rMx-p>z7o`s8V;BO;kWE1U(QF= zfb^ra!2n6vAxVLUA#y}FvH^@UV>l#hJfy7Hw4jfKOlj=WscP?=o5jpYenhd1TrySd z>G%sY-7;BN5LigkTS&tHh(ZaTp+b*MdxZ@!KVB300hHdOBl<|n(JbsoknuDd$%A0Y zfiRA4@rp%~k;Q_Sehh(2 z_W<7!tB<{A7}s00D)w)}!E0-S+ks=+daOCr?rJHtL8V|6sc;s|T>0cv(N(oAIN=mcA` zz7P^fH{?w%#Qq$^ml10ubXQA$IQ@V_P|Rp;g|a#nrM^_PIB2!-i-{iH?ZbTihlo#( z%+y7n9P80R6f4SCJYl#s6D;P^LgeZ6yDV`oxxo4#nYOeKjkzK=ffwFfZKqq@Z}2j8 z-{H$C>M~688E-*_d-fCuvb;`U(Uu+0O#)grS+wLjNfYRFE@|g0O8fUz>nW^?b4yC< zl5T;D9v&Xv%Ahu4%VK03Sl3SCDbJye%?s55P8eSCt+m6*h|o%+~GiW>_>A z+R3Ah-uCbRsAO8^oj`F;83PguAzrwg>ywQ~-j%qYeLxVR?x$a>jRr<=$q*U*?# zVdF4h@K4ZNkUda!hqxBcZK-?jqWm&SQt%uw!+je?3Vm26ND>~CvkX-D^uxE+AHU6} zST0p21rb5YzsX|GY|DJho7M26$BMk>L*m|o>q1IQk{X#eNXSN5Yu|+Y^lkL-a)^vG9<=%1SX$)b2A*dcTF{MXe3%Cb%y_jpDSJhf54%OIxwuO2id(N@=+<+M^ix<= zy|bEOsXh6yv4PsUtyk<8g^NsQ{LQo);SUOH(7X-raIh`1hZH#_ao}NR1R5)(*W7jy zfX>sFCUuZVW&8&^we2Ta3g->IMJV0!XQKb}7T!+NYETg0c9fnGT0}hhP5cgBK2(A+9wZ zn&1(Z)M^hps?UzPhN-DrM6>1g`{WEnF{;K65U3*pfVB81ndizH&X97y$c5&gHO+#< zAIB1}I**(`y+o+cXGRq^ZdwS?_oi=6mtxtcgg?8vfn^|a>N1NWAyeuSHq3bfS(FN6nUiN0;c zR)^KoM$D&;mCUA&m*U2-6xJtmMQEga3JZK{pWB*q-9>n7++(WGdKQYGT;r%6mx{@i zmO~QXh|TMxU#>&o{s5>sjh-^rCjN(Rld7g~2a2#!y3LHAC*^i0!Vj zAap9Gj#PDtiiW9AW1h@$Yu~Xg=-v#@`cs6wx4HC4SDYaWjLk$V;=DzG!<&1w!dyqh z49_7(H)zBVP${OeVNnO*8f1dzp{s`*7%&pDD`FW@@#eG4GNv0YwGEv>ahzXv0VE6* z-tspe`85vznz`!mNX2}Gu>3cCLNhEv1(nb#*WfXazEyq$0}%CnnVdG>ED{WE^{1im z2<~%!1sX$|l|x%>GQt^8lT+KN!u8L(*_+3)qgAXYPh)&NG~Yj8+<2@CHu_g?56sIBt;V z*_D%nnYhKuQxI19Ri*Pp(HshL}zFL19Z)NhG-HRN9MxSXmeAX7!vJwV@`9#J3W^>uR(-z@8@We+6 zUj9OCo4JkcCA@r5uW)v+t%lKr2_2nMeWjYYMf^IFGsRz;4+D#nXP+Lld$+l_5;~?* zkE0Yi!vp1i4JNQ;%5iHmZ&b zc2x~{H2bxX1t%~l2G^F|+5V%$C-E`dcnz9#p`4x^AjFH1Wl+grJ=x4En}ctN`w6s& zV!A5OcvvQX7rD;Zk`p4a=grk<^<(72Zq`upp!)f*K~pZJe1u(+y})DhXjUerV{O{< z^<8Pum!h*FnBN~KK9jV(^|G?!FCZrV!b!!veKPgYRd5kgSm_r=l~hUgV!V|Rqhsg3 zlfX2A)RI|#6HymW_dbS04l1{1CQ)=u55Gv}(Xaa<4-0gf9``jzP`_XJ_YXU#)~{$I zlwz!1Lp2I>ax7a8(I{Xe#WI2}shCgO^GZATwP<@4=&DYP+4{=5x{z{LyAp)6(kh5D zGz)kX^Vs@Dy$qugGB1?_l#!POEjYiGZB1m|XToRuxSnR;P-QBE?S#X`R4UFfm9*qMCZS=gAh z2^Soc{54pRgS=#&#V2#H(7o1`!=!Jf@XPDCtA--mPd%`l;FoH4LMCf{?5O6EtUs{G zUC}9Eb81UArhI-*R6dH_tMs9<+L5Tn8rI_NvtJ0s0e8$w+Ra3N>D@;s)t^1uB)zg4 zX9V-8G}5(9)@V53$rP$r3e7VIyl0N%=g#G_Y&n%7 zJ}{iJx+q9qw=mz>W!G1N?kRq)@{1}q-WITJvsCYh6$hW8KJD?`-9HdK|ou`(`i_IFe0eqk<jKp3DIh><<(%2ivl(OPMLY3DM>xjs&-bdy0i@i{U@pU0Yi zdZdIaG0$Utft7O;qv^9Eq@Z+jG`3ju!!5UGW))!%u%6(_rD)Iwn9aThF zBSNv9hDoCy7|}6agq%YUo1155XFXy}GT$}v29>>__jk0PO|i&D^yYc*#iEb*cmJ56 zR0QhA-2(koY~G1T~jDZil6w)pQ*-95DkwIb1>h3Dml9>V00Y!-A%zS3;n0vJ7bY&f~-8Yqu#bysVT7p5U=kHHDAeGw{BiHEv z0w~(zh1n5|ti~_DbfWomK^9glRQ7lj<&YLfA1y&|7^V3X6gyV>3!{4ncrOYN7Ce30 zinx(Tm72Vab`?oXb;(>ir5b4dFiqaNG);N3-D|V7I{UHl<3yqR^Ux~LX`|P6tCp|P z&~K8lp)>2vUYeDYWgfy^Ruud>&iPX1Rt)b7qhB|EH}B7%ykhIFM+=p`d`U*_K8sbW z1g#tRV9N&>$Tq(um9NK9o!GkEZ65gi{ib(2cp$mj`CaicbGZ$5vZ%gUpU#rKNo$^m^^~EbqwD}(M%_20GZ!lc7h9y66HCF@{7TU+07pw6Tv3?4 zo;IRP%fyvp8Jsy{g(GtEwS!H~!aX+L({&18K{==9Belu5Pqg&n;EKHLJ2xEeu$qs7 zCSU7@?Tx27u&_#s(@fk?<`UWR^%z>!Jm0F1e7H=c*vHgHZn2B5x|Y{KKKWkLba7nM zq*aA~gs;prGs_%oHhAxaN>~*5V@O{~$U=-t z+D)h4#lNxEbG5hibUx*lD{9l#+S+b*_j(1Heqr{busfq8useZ8HN$?&@nJuF1XGx3i3AH~K8+ zqZyL(uTAZ2+8IMEx&n2q{MSg?kbgVKW5?aYL>*LT;U^{7j%q%Qk<0U~1Mz+@lW0fd zqi8cpu!E3-322(>A_k)1scf40^&M?+Evx7yhqQh@)O9>$HX8lDzjsG^(zu-nifcLK zUXbXd!q1v7nY8EhQ)b5VWuX|5%aoa*@srMJ{0?OVd<@lkG@j_$k^z;5aN^uF%2 z8y|Nl!-%<@HDef;sV-qGCZ76WoX}2@t4)zUX1G!*p-P$Y6Vv>}T`oN6%U$kW>)S&v zQ^2kgdcF2u{X*OFX#r0NM{GzfW831HVIGRB%H30C)tS^1=BC=d!MjZM zqgxp6t=HRYpO^KsGYI1GWTv%-vpC-}{H%z>jgNKu(XcFHtgJPyLtsO&s$Eeq;A{s! zQhWl63sF&l&7xIEmrdsx-|AJ$#9D8t2br3r)BYO9N2gU_RVZUn2#1oeo~~Ugt5~U9 zKC{$${sK^HrIknrJ=Gl%1saIsVakv}`+R)FMP$;*ik$Z&@*EDXGY8o5jNgrlomX>t z7$!xVx2NhmX;_6|c{T86RV;A)1{G`kW=AZP9e>cSUM#d#9NQK9q4jhCGP4h&@V<)VnYKO2OTDZ$%mzq zERaE?hF$I>ML_b?rw9$8ea9RLS~RZ81W_Vfzx@Msu)k#SJna*BqKH!N$ea_x6R~4z z*Y`m?L|SZFV$!~TxwS!40%X-#%WH4oFh?;?_LzmJHKdj#dk|M;g_e9;eKw)?lkP^V zABH?PW|`&HqxQl?tLiJt@$2R0;!hmS6FSwF9r88}f9zTcLP9&v#$7l!&TtrLuHH{6tNvd4OQ>F=P@zZ9D-%8&Z zKDQOiCl5Y%6t^NJ-A|rY8+HJZ%dao_(F=IE+v&^at+;Yh8Ye~^ z7tv_y8|QNpr_{d7W=vEpJ0v3H54xTS+%sdUW(=E!4nk_yKVkyNq4{uBZKt%XNiWG{ zkM_Ls`R#N+611&ba2g~(PT+514bZRUE*efv0UJ3C5((OL9XQ*Pq_fu@fs?Y0>&Lf- z!foBt&Kbz`)r)>*jKmRXu4^X4Ef3(xF-=cL*rMTM;RUU!Ej6b(16G3iRR=lc13ywNu5zY1dbiJC0)=c@ z?Jhw;E^Qt;sq&atSh2!Jqb$wuwvRwGlE38LrlWW77ycC|wj%p=m^E}Evv-_{u)6u9 z))}Duq&vI1Y3sI=>DKA}PW^s_7W}4Zhn5fN>FMtOo4{y)2@GSWD;i1rxMbczc{dO# zT2^eB5o~Yc5sRz)^-HVcQSfQU`giX>1DiHqmhqN1PoJdnM5gVdczLrPU%j`y{PI(a zpmaXi;Bo0Aa5qU7Hb9dsSMHCJWx4PB>J=+~72Z1`y3sEJzj|1&iaU?j@bU%=fTP2X-1uxMiwB%U!p@z0Vl&^b ze3daGHcveGQ$*xKzL>v%b?iArj0C63Lubi>gRzNw$o`c~M)noYSG#!wqMY@YUGA6b z+&K`=qyN6P)}(2CGMFvc^YTi2wrURQeJJ1ZEVbrkMUR$N(%2GS=N_e^f{F^SkP73u z8{19G(Q%WoRaNx1bJutZWys&w4iNe;9i03LR$2_4I_LfHK-HI2BZvnRB#O|A_s_KgBT;&rx$6+yMRuPfyQ($#vq%b4J!>W|`#z-b!g%t?& zlH#CfcAIa!Z~qPzzm0W-_uI~v^IK_t4`TdllA8Z{zWvX+@_&vO{|)ru=HdE30x*oz zC!HfWuw-tYP}uWjtSl*1=pr-4Sz3;zD(|2yF!5@MtP0>mO!wSyYf)2YZfB;*Qw$9B zI*7?Yl-`=?{2S=9M*3CxI^s=pn9($B&ld`$p}>iof6MxdM+tRJGh{ zB1VFubfS|`aJZ)=QyNnRcRD!JA`9+Xv-s7ab&AJcmSpsKe|##kx0n;2oP@!hMEJqk z?6ai_3+0kqq)3DZOU^#j1a`zRn-qwo6fSF>8{vwi6-(MDYZmv&>>HM2Y1;R?cdy)b z%6kk@$L@R%eBL=Zakz#UUh}vZY~G+k9XB=qH{OAqp8m%<|1{>RV* z-j@^an*S^G;4f6wzn}+y=KObJy`200*THnik@`P}zyA#z@qa7b|G&5co zeqP8qe=Y$49|RBp-IVXUTs$=wGh+cg(>5txx{vfB|0M z|7*Yi1kb_A2|))4a0vV_fB^`0;(rAU{2BO1m%kGfp8zN4zwiQ_+&upi#8{ADAfC+q z&AT2O|MLm5TpBb5{{>nk1;7LrfNX-pToUk_3OP3{l2)9DK@Jca@7`74>!|JOgYVk5 z-_g^1YLAE?v6~cs)96bT-c#1x72nmB?k}dpjU1-4^ZxhK)9oYYj%r=~H{a9R>Y}6C z^S9>|SWp-+wg9y}f%4PIvkT~Ba40>0Z5@64?<_)E@mshL{lq%MsBb?9T%$v+W0tu6 z8nH{0X<{!%$oT~QeGpzL&yaVMcL!?77V3sYzfZH1-F*%EiUR7QaL0czecLI-5Z>1a zYI_hhZ^Lje943_vsuPvK)W84Rq479WH(4`@5dmAb)sVwYAWC8YHqmqTo3B+-uU1XK zNaD`W9Icg=-3mUX?NEShSfZs?t1onEYL!4UeO|LZtE*Ocm0ncJJk+&WSkFHqBY&h?+M@#kVJH%0?jeo=THM8y`fe| zejQ5TrP_r;HPW^g(vOW3vlwixAP{ru#yJZny2(d>`Y>IvH!O*mfp$Uc5cfU9&ve}+ z!U>8CAO#D}^+P=rJ10~jCo#817VdgJQAR&px1lUk>y%L|ej+E{AZL2A-Hh{%IeaCU z0|FJ0+9@6X?I?GQeJ|rEq-P;UXG4@0RtreT*JX<;x*^GQe?o?fMa^b23YR!)vNa5a zR?=fN7?fj?HL|*M6Tp_wiDAr%@gqWFW|t^I3`66txW&#G7suk?=V@0a9B~+(-gogk zlWmcDU;BulvoQpXB7S};$Pm7{~6ZntqBUY#baYBpbK@tghj3BK03q7MQYZyuDr^c=Xw zL%w|_|0$R?SNQHNSOLTnWcESt0Hb7#K)#L&dT9zCxhL+8XWBQx`uf&3<{nQ^-6;DU z0X;g>ff1zCJvkFT2-7cl9N8a98`MPTAw%)%ytz=6x$ zjF#=%>oDZWGHlO7MM%XmY{4?($YTk=(Tp_NjK_t-fp+&%sJdv&Nb9^&09{2tEJ1yA zvU$Tvm<;yL#y-XkS=RzSk3&o~CW~F1;)nX0QZL@*T)a{XOoA)4VKWZb%rFdE*w*IT z2TIl>a48QO7rhxLfz-KF)LkdOtt{!qPkSCqs_38hu{?(lF)6!1KaFdYHw4UbT_FiZ zbtSFo`y_kZU1qSy(EjnFsyh`;^Gzpd#jVu-@lRNr&$j1BUMy~P}@qTRlkF2pRpd}`;q4!!I$frW$)%!kEO&G>%V)7 zZU5%J^MMSn7f*40SVf+UgPHH=XXkdLFbhwv1pI>h@2`8V z$^r6WBR1PmD4aN!8i_c{;z*T9Wv4D zt26CPQnE++(H0RupX^LhoX3GQJd@d;umLA(o7wpnM+}yNYTB8Mq-(1q;ZbY&r z%IY~OHMLiCP7#Z=A zV#0OdVo#Dw1fK6T7*E)BQR{L@>NyIJ0wXm0301UW?t%jg_Si>0DkV6E2d!d z#S#w&%r9#RCz4E!w{Sodkp`wDO3;8bG4qfnh1wr<?P2G%`jau~Lo``rue2lB0-1 zhB5v`Ls=U65yu?vB%5Iv?w*dGN_s$CK=FhyCov9;sw|O1ApwtBU6x2O$fH~)$3gxD z>@oGh>R!Ow0_Bk`tEMDmoJF}ZL=L}dexRIW@x-QP5bd7W+LHbet)r%*m?~WHp0O-P zMr@Q!dtQx`a2brdR2m%|?mtykY(`;!V$K7pHs#nF{zNJ{Qka&aUl*kGLk0bjQ2o{t z{qH$v#)a=W*~DQViCAqbC@rz`jwN2l-hlyZLooiS(@9_&776Z0BqcY|N2EztXpvCe z_BmMnnPGf=Y0MII!UfD09Kw0b7LKv$#+YtdVaQzTP5VGy3Y>svFJQ%BBO%HEB~hMBw7; zrQB;d(_xic)*$rFE1`QP=dp{E`Y!m@MLjoW=aQyq zLiUx-Ls);}KuJV@;4O*baoDa5(GfG$W5-V&N#nTbZ4dqo(#V{Zs_oGUOBRnz`eus8>0J^9;WX{L-P4*3 z+(=28cTU8 z5Cm227AYF)94J8vHJS~EhUyn3%_pz2;DTNAxrV@Y|gi*j7~a*z10oB3`UkY0Tm34%9U8 zwXn05Y_9Nq=xVWymrWrt$SLLv)OVioi)iCQWF&s_bZOmwW7Uz9h|s6HU@sj8kkeJL z)W_!r1sG)D=;nR$@HlLK2eNQh)n|0j{z7lS>Y&YQpy(%{rkSVRt)bfnX=~No%Sjy5 zm#=3Ti4(KXe!Zau`jL&b(Bl~d*_BcIqzPnU%jh;0)<}bX5~ZjexTz3`H7jeE1&25% zPjy>teKPNG^im4wa2y%383tbjA=&s?w}n%FKuTDO}l+QJ|;nE6vX?T%{HI zc_>e3bjo#6(#sk|D?ER6Bj@2kU#|>^U4L)5-X~ z(Ap!wp-V%Tle;XvitYY#S+wIUug2cNk;<~{>TULPoqA!G2Tfh70sT9kT8ko*Kf z^P&TN@1~}TKSkFu>(J4g4;07koxTNpJ^FgPjGmRY){=PFPmY8!n_MSJGwJvK)ws^E zI}m&b)^*W-=oY}&N%Pjp5b!I-F{waka@ORV()&_{y8eLyxa_}hq_;ut-EGT{YpElx zJ32LiN;pvmRLatC?8nzuA*f$)K0sW_XxZj8?X8<=6*{DboIaR2j?8kkd~oqf(A(xP zotf5{Y_p74C)bF;{nAY07@wlw#qHv&kIctgSK)?Dy80{b)iE6RS!4(tf@a6(_@)@&h^OWg$RF|#ldX)R> zCfjQ@S+W@YZ2vFf-ZCt%W$P9W5Hz?3g1bvMP9R8dcZcBa?k+(S+}+)RYj6wh?he6& z-wrvFz0cYEz3=^ge0ln5mQ>9eHA~ZL%&}5%iFhtzl!9;-g8J6BKc3ni{-DiL%X7`$ z;+`aREQsnEw@rUHaAU;7C&Q9x+pMFQTxbL#vm8xkI8a0`Uk;a;OG`)Y#1LJCE1MKs zFiu?Dk%%(QMvl)zY@_r2^kbyirK+%pe{6F0S8drPw|4)+ID_kfPXyBIy)8joJNnYc z{c#JIVuFfXBxPN&{1^a=;t%`yxE9woZ5_-)RAzGe$r_jw30L1fd@^|@kJzA@*j%Am z7!tOTOJgWFeLG!Ii(5d5F_pQPA_bNy6<}U+2p<)$Xh+;+?%iC;StUToZ=y#z&k<~1 z5_TBnLnw`*LM^Tj4dD6^V<_kdM+0NN+JKYR9*Jd-^1VhSQ!uz9#|jy+ z6(Au?A6Z+&CX`s&Q3{t>^hs193ta#sW?hO{#Bi#BIY=QIRd`20@E;h-)JV?XW-PgSgs78JlP4_in6be5FQjaXzhk`L{m`oI8~4Ha zgEOCJTJLdPsAto=_c)u!e(%#rq;7Qb6V5wl%n>;J(vb6DoZ5$ujiH7)jRX|({c?#y z&|~yF)uU3=^N0JWahYuOGun^D;-Ij?XmLO1>Wh@=vtc)^-Hs2MO-FP%*`Zeh`DHQJx98ytQsfrm-_if65(Aya9>+?7$ii<5QGVZo3U zgL>=U_zKDb;Iito-+A6J4NhgF&i<94nd&?F7dp7w9bZ0Jk6Iv;jnO6q1QyI`=qH(@ zO5l8CQAaIc!1*?Rg}$|O^Xegh^aD~odORhRNX{Ls?ktzvRUS0Hu@zaJBZJlgeU76S z7|g|rcLp5ZXh*P4hk~CBR;msmlwTgdwC%;lg|F;8UWVN-#LS2>FU7zwFE1mq)-LC6 zTpl|-Q~AODgTXpDbM8h*7lJGNJ{@zZYiYJ>?6NP>sx-bc1n84o3a?4kw!W^xrsEXX zRLHmCS}O_t+W#_;S3=1HYAAa!1W7UD!zN|q`?CF6<){1`O$0NIDU$87R#MKa`7e1L z_ZOGvR)sAdi=W2Kc34WWS?mwf6T0}lt?Nd?xDO?O!KL(K?`IFPtS?N3+K+d#Gthf# z_$z~gE$^0F77mo@lf4Q@$G&U@mVGJSW-ZyZe6fZO{XO=)N;xeePd(~ z>0P*Wu{DKzAA&2qVfld_Do;tJW@N%htZk;;Zk_mMkp;us>!8$g zB{yne0N;+3xRU6p?O^mmEw_z;40Z=89hZ@oR3-g1QZuzZum7nhF@P_IF%RNulspf- z5_R)cCWP870WonGa6JU$qKQAb??vXuMP|Lm`}k2XU=MTMBz^29hFB`8Sa!zjM;@=N&d2EPn1K3abAoh%>a&Q=r*YG@~lLa29>&0j(e{Xjyw+uVzCIy!)!<7z-La$suYFP+)bHR1zb}dZ0bfuB^A8Xf|>kcc$nsdZz zD#UnnR_gKh=AP$i8y_88B(@7m!|3^QtqOPeLA7+qrHx})Ehg$BGgmAuImk9ajn54n zQw?kr)Ag(QAEuQ48pj+u6qWA-m$NDA}-QpSz?K+VK z1@&W6zj;%>R4!e-ogFToW>Bv?ixciYUm^*JIA*pDemIZYHQ}vKbZc$?(4!*9_mTvg zHxSjv-!e;TbYG)UBDG)!#dv7Gn${1YNy;V!Y^1<@mvrUvhQaIM_Pe&#qU-fqxpWF) zwdjv%>BejOr`SCuSZ*TtwU$$+C(ib52j}kjf|(=6Ng+H|8e008m=qg5!5fzrzao7R z&M|!J?qQ++*N3i?N+~>zHTL$dl@<@TOm=US%Pqqq4!-9|(@-VSyEPGDa!N@x7z(Q2 zq1QIjOrZHD;tB)YDd7?A6IOx4AIWcm`7Uk=>Ex$MQ+hTma~d>1FYH@qp%7~%4;mOnew`s9Xheg zNl4bu_a=T(O$6jO6M*O@r|3?y)@BjIRi~vo5}u;H%^%oS>VraK8g7Q@UOfwWb(YJE z^R7z{rP*KCWCIKgwh!XymzrJns)h%R&?A#MN=ezn56l}F{c(d>@~V9iq5O(jO)E^I znR!T4P4_UY}R zt?ZTkJCy6vO<7x9zgc!NB<2ttcHCv-Ngcmq^H?LJ*tD>c1U7?j7h!DS{dAHWVsR0% zH3s2g7PxAOsrapysz+z4VAqox27RNeF{`5(+vhO_R^Nj+^;20qTudYjrZ)%@4y{!V zvGvXdO=p3!7cUEu>3IQM(#&QxN%IAK`I5dzVa(|ti^C|gD`cqP(V;XBapO~4!_Gtq zo(#8#5YBhpG)$DzSKPOd2Fsdl=iJhm&Ga}AXwCsRwy#-#_+si}IEZEyvQjrTOzK9H zyt9jo2`k}uYfrjVBtAq&@rnt0un@CjU25uG~!iMNW{g9N$AIp^4YITwy=l*;goA%1D$#ib6jIeKu4K+(tT_On4DZzX04OM-xYU?K#Gm%PiISe2cH7>NpX|Y(;*6{hBtf6Y}l}aG#3`oL}`PL zfb`P&O(K1+3>9v-ka-0?uP=gIowlO0hu!(%Ts1`srD$?)*XCKj!ws!AdULle`5sovE}fv$Bqn&O@{FHJUq_Bs zN==5J$3Jw)SBsKcfWhY_stDn~zE-_R`o6qIUZFYl*!Pl6YcX>V?JwA}%G;k!FMC&d zkZE+StwPqHF>{bHAv*d-RrBMMPYW##&g_>Kp<*3aSkh0tUdV1TEz*nTQI9J}6B!eg z@mfUK2vB$zoOl=HS3Kkt;JXPPIGGcCBqq0lKv21>+7utu)9br&tEIWwnjic6Uik5q z>oH^r7y(|-*%t+M3@z)=^d8EO98Prc&}PLlKV&8Hg2Ub?c#x|)n3D(iywUQ~*Y_XO zXG~BbYw6Ypv>P+F8?)F>Y>``zzQB0}4`u8y?>Qy`s^bp~;)UBT3(>=K)uH`_wM$_k z@&pMezr=<7DRb7Z#?0+8U9I0c!{1t_D;cIo@#v((l73%V$X~*&mX>cjnt-pKGiI(f znf;_+oA3dEqf^Ut$J}!`@w!?%8zo9>A8Q!oN$-^o4m+&i-c&~jt_g$mYGCSJY!g8c zBxZ5HzCmmlt63DbVKgjeQ-E}7iofV9V++Q_44}xbDs@@5UM)ke+r&@w9Zh^iD1Qg2 z`kJKAN>OPtyD3to`r%80j)U6Gfvdz1ZvkvtOw2z zpt8;$Dixdc+gShE1Q3cC3K)8uIbfkiu=Y13Cz8n^gW^nOmHEoEOs# z4=P7C(|>Fw+pYTa9@x7!cpzTn)vt;E(g`x~D$~;-rF_{Ar#C2*h6KK>16P{45Ub07ZHRmXFh=@)&I zwe`Z%`GM$j$Ru+)TX-sY6Ljt%#H#oyvBP&>%f_K^YX%1yeyf+nRC72_9fhC{u=)h& zh}5^t#$#TP%%GMB4zYF+`Er8j&I97!9Onx0n~dCN*3qDg%)NVMvigsAvz)sh;J`4Pwzv_%P>yx+r$v>zE|YU^+*{KKz(iL=HL(?9O|4Q^;f? z`MFNSIT6W#PP3;uHhEA#080UDf}Z@@{hpABnn$Mp3xnh*{oqfJ&w)VZ{}sO{T2TL- zQIym_CW`o<{GLfUrZ^kSdyjx1xx!ar-wX_o6R?%0XXcHi=bGLaK%_a&Q$kPtutwd* zbF~mbm(R`Brb@9jrqeO-u-NYJlu5QEb&;aF^VX7H9=3Oq-N3u@Z{dKHN=`erG^nO1 zaZ$NLfOsv>e&< zcOU%uxDhGJt!io=Pi<}V>p?we6JH1A5x8#DS3+$>gW@Ih;N2u4s>qPj=&ut~W!^*k ze8!$ecUH9FtK_eIkFpeb>I!D=a#J^mXzmw{w9^ivPwS`*Ce-*?#2*^Rmu%gD5#E)A z{%5QFWPALxQU33EJp#XYJ$$w%I_8oJ|MzsBXZ^)L(s_Q8PJWkU1j%atcQk*d^ZZ0D z_q){TpF#cq$l?KlR6p6+=-Gh)M&LgEZ)+M@rE&V8o#{HM?VJ16GP75fh=3?mCY z0Hp5;Qq%lt;Fp3X6B9iL6Eh=-3-e1ylbMB{orC>nntzLFvN3@!f*^uqm;YK)la-a3 zo&}_Z%1%fJ1TfRHF|sj&v`862{2?YrP{Hgh96mHh{4hLxF- z<6op1CIAy72-yE9vz+MWtkC`Nqz$xVRkbA|(m)mIOB;@&ob%_E;p3fMeDMYa9L0%B z3_R!M%a5dl&OXM1L|Pefa)LC|(@JJj(cbocSOw04$fM{AFTsO@Lsm5v0Bt)dv@qI7 zCwtl}Clfn1tap!#%XWs_)z#@K9HB2bUoq}-W!3A0;tC1(z41wU!tjNab$P>Ht_y`V zl`w8M>~irY@ve+*oSp4B-3dE=Vt9eE5h@JXyU4vEzT1Gw33}*ITqSfdV?h}ILLhIb z82FS>dq84+8BlPhJtdL+#emNkqiY#lR$02Zq?9NCk#NAL%LIsZFSf#V`7)Tn`*6Ro zdfV!0Qxi>rVKsKYXrQoEQ|lIH^YyClKIkmx@wk+*7NVudXlmF=+n7N{;!8Q3-BpZO zRX-Hd%iu&sjQ8lW+L9f}i!j%3o?iVml z53tG+FijGM!xEH@=EFQ|l0E-X9E`1(3(3ulU&BM$&6k3ayG-tYf#0FCK9ffEIx{}v z-{I1e7PTbv^rp>7GlPu@EYRmtezr=#ziRBdqDh;B&pEPPtJ=XvSe9CrN?exG^69wF zoB!d_-tCmo(<5&el8NMDt@y1lC5*$MBPB6mVp~BoKvk2)1#x?5ps~2psf(($_^#;a zyw;1EN~bUWSfOsib9a?vuGZaRXw_kb$Hi8S*pdqZ@0&z;G~2GPZL=mLJ65pm83~h% zjM<%CMJ`W4e#&w2Bx)rtmgNk!vKMmUk=)U$GNAt`s!}$vCK&~L&HfF`?fBTsLz>2A za~iaV?4Xc5?}tni#wrbIuI#xMxff0)3r81`2csRIPnnn;Sw(}x9rSfIQb@SEdl&X{ z?Rq034wDj$%Y9>VNDtlf9rwU3cjrozNrq$4xzL=OoSgIx)sj-}sw5}oC_LPGf`jf$ zXm??-E{+jk87V2CQ8Ovu5pW9ZwfkH}=r4|Deu7667t4T_prZ?5HtHCYsHirxe_<#? zFb2sq6uKJ~p&)E8=xs;RXam(Nh{P#$LFp!h&KR_(0Em{20j5!J%M98Z>Yaq0?+LuS zmFuVM1txQ1$_QYPV*x|O@|aSK69Yx*x3QIh*y0!y34;>UiRbT12%IBzqolQO$B?3J zi&D*=oNI^;fk8OXG=-r<6_LR0p+4t{L?IT3Ng<(f2PI%6b>4XIm$c)u%M0s=*khr% z7KRI*QG(eji^j+Hhy^)M7=IEgXaC-Adwe5^k0yV4>M8{vyVAMbqjVF@i2>rPKV90RQQg9Xs+25mvSOl1LqUe=usVf^Uuck5jr?GN zsP``}M7iWFI2m_3cz4b?ypQ1#rQ*sMKxICaUcWqk5;geVv$y3C&B@6*-vmEhM^$1|LhY3d1)nlAIY9 z*~oGAJt6w@!X2$7m0r%TZwI-Ezd2|;sS@OKacB$?PoFi;7R*a6PqGeCNmE^H^V1u$ zj+_D(0;KQdzd3d{oN0p1I5Y;(Uu*#Acgjn)JWju8P+|=T?vv@&)8~+c-h`)GXz91@ z5}kD!GihDLRc}FlUA(g7o>WEM2^-^Tb?&lqf53UN3=6x*~YL1NW)OHTksWzZ2*V*nP zpjE_y3(m=PbG=||sFhjSyOa`Z81Wwux-WGz>*e2);-f@{e9>*1rAG`VSqGlx{*WRD zZNn8^4FZQg@o)%h(J1%bZLu~;TE-I$qEV|FP_}VuBghi5sB30h$`4N2UdGH@T`<;S z&&Qq&IF;I$I&!bO4qY}MI4fve3|lU$w?0kuA4a<^7^{!hR+Sc7lrBpvH%|C5zlF~X z6QfS-a928Gls?M~Mx)9K>cbT1Cd-nLKm~TO=(g6YE)pw!3`%WyN0f%5-c4^KLA+s* z1l-{{b62Gl9vnLpQza|^Jh-)FTe?WqrZ`5eL{?BntsX9;TtKauk692qAg4Zw@4)Mk z+p4@mW6|{*pQN)7aNh%?7sWK=+|F)}>nLg8vdxK(fyP3!KV4uwnLmd09w{6jO%u~Y z@S+7$7k5{lWIjGrQd$7faS8|lZoYjStr7qC~# z;D?4}i?UzCtP4)fd@r7H7Cu57>miu4=nB@iQFv4gN2y#_)hnP0R$dxG+sCmXk?uzg zzWL@6^gUF(d!;_y_A^7PEDjli0Ug97pXadR8C`@eo%oNI1XGC(`rFVq>_gg{5Jhzd z`vr#uW$TI@OU9p4yVY_|3q0D0U17KOztXM4eWBh@a8GV92kOoiKU%&esq3ehq}-@C zD=9FV4zXy!X=OD<&;yAP5@^K;mBECLuC@s z=xHg@#kd~z?{LqX2pDWgno)hDNZ%=8=YXz=3$^j3wo+o$YfXzgy!diyb05=kf(>~a z1+g+rxNE)kppYoFZjOfD1|fbyqtl_x{FBw7jqTQ4IzzC;=dVHTeQ516GZW0On_l-a zdIUXUX>!EFgQDKrR=EvNVS`>5vW~YM$;}l672{ymU&-b@6>$>>nsP^vz3uEAqo>Y( zz-6I5g*vEDqvlYWDJ-hpEBSzp25U`Yr#djsJ7%y2>7ygSfCF$I4S;}7@zQ#__w+cw z-Q50B?UwE)rDVvU9XNB5b1fl$G{#NVpgu#N8qG;YZXXsI8osw05n+oh24^eg-bo`t zQ~VWBitfGV^VmMQ!U~AUwB5sMkwq&*lJ~gf&c|5#nO#OzPomdHe>pE(2 zQ~7L~PcA^5I$uq1z?ZDMP|J#vtrt~L-aVSmJwVBKB~xY-UQZB1b?h7Cw!It6q9yCL zxp_TFO5Y}&*P_D8twEg`8-UMD8YbAC&CU9-6^Gm082(7=(`g6gJt zbWnU2JDV1Qoj28?yjyIUAS-L4#*IVUL;s!iau>yTy7YpQ>CJ#2PdN+i6jl+fl-VJF z=PaaIBlOU*k+7{D4jR`NidxV!jrSiz-^mwp;@L3=S(@eQNgFB60?#zfA*pHYLQI%g zcdPZcdEXR4jWZg2D4MY(`kX9pDoOV$PNI$zU6Gj-vFgFmYcMu(7x<>N3l*a^n;`wD zFw8j%fY#QfbmU>{TCAFN7GrtypyXKFBA69gLg@x6fOmJlnBt73OV5CnDf?Hv=>h-Ji!P>p2U?B9d51($YxY;zt_eN~(jN^Qu$(xvv@yZVJJ;xt~!(atYS%DkYhg3Q~ z8)g(N(8v<7gO1wkRO$L+v&PquxamuWIPwbkZ|$zxwfkl0ndQsAX-3Dc&pn3iOBU~k zE3_ovb8`>x<4#qZR8Sx*wX%q6o}Z!IGBSgF#i~3{~K~ zq)w$!F4(s3{g&~Tf} z(4dLq6s}jp&ZR&zg4!&;8>?;t>dVA!>df)6{4D)Qze&7k;>~4k*vF9-l~G9ty{7%Z z93cmRJ}ePra3rLnGL<44IYGg2m`#7g)ik#cf-Y)yPXCYf%$wGV>Qg%|(R-Igb2zY^C@Rjf``>{L}OLRG9qRjgiB zEae=v`W8=v^l_}4=qI~!nBNqj-+-J(95$A6iZ|LP( zX;#Q&kA?b{Y}sJX@ci9{TeH~)*pi_%5>^f=ADe^M`@<;v3sJ}l)jd^O$LzD}@>LBA zncalBO98LNykf^<=0?zzs3ZmQ+`gWz;!K>lRAiK!cSO-$p%KpUXPI}z(1m@bQ|QAq z)qf?c(3d(1`V6Mh#&fyI9Ct-=9chv~MNvBG4h$#QzRFt^)ozIPUhIF}fL6D-tbfa` z(*V-C7?mHD1g+=f*pZ9WM-cVGmY*3o&RA};NVH=aq9TMX;}}?S-6(@&8GPIm-`}8q zJTo}k46WaMH*+C&w(Bcp3jrRv$eXs<&e-5HW(yI$2^H6m@V*}bkZn>#QAnu7Gi=D_ ztdAy)dxM2%?68!BzGttbl-Kp8)kzG0QWv zpiOiV3FT5b#I>zJ8trl~i-&MO9TNg&GPHfZdgv7dRhDOUftSYQOvo**Y&zAx+ecS< zco_fOy1n(s2uho-B=9?NiWW0^oTPM_PlPS-(OQ_I3?T^PgRFakTuQvIGYQy7o5y># zLn_hSB}>OZN-xI_k%o_gwrGQ!X;@c3Z5~D@F7Ae(Bmrh!U+xbjR&`ENZJl^B>l{k}% zrng$lzQ(QeJVnH9#Ez7XwwrSV+CHf&nao$<_gxN?&yV0&=5XxWBfsn%0z@E|7 z{sMCBW{hKO*;v|sWOs6x{+QG$t0|l78{URvQ}$w@dZUdK?7_76iYMX{*?`LrJcC(d zcGs+$G0#zREbg_qd+_3F>e$>3IKjd%HgLJok_W{$trfvk$sZcr1HOt;=hifj;_NaY z2p?2Vzwj!=;NFh!5F$E;Q-yel(?G?Hf$rpADC;h~YRJGQ;-qT@PQ~rew*t|La~GO* zs5+wp9UHBkPo;SUUp~C6iK)Iwn;saq;XAP67Eo#}-A&7sJE*(r$W(PFkBCQS3zfD& zfnzPsT(6F*tkp)KLktk>)NStUL{E=HXNxunm8qCZjW9W9T-rNoRy=B!I87Wr_<6NK z02+X&Wf+8rID*VtURkRwYNJ=Kg-9`%GrcxRo@`{xY6LQ1Xvmpjd1>y*p4>FGfNNGD zASzBnWho(TN0|j}f=DKLVNJQ=m9Z&EDK0G^$4NqU3eg)VQ^C=CiB8e_g&qCuDZjL6 z^aRTcDkx8)21yg6HL3_sTQtDou6ZB5*t5!nRSH&6N>3FdI$vR-s%il4rYNM8s#Ukz z=6hEpGSAN1T7U3s}#Hf1{(q*JpHL6X3%ulYrAFd>K-*$*OK#|`>yVuSuCy* ze6ud^bQq+HPLjh)s98OPie4O)*K1(`)xEth-z=dAhLG0|vH)1g3n^7T?;~J1ikD#T zn=f}P#{?7}Aas#*-3lnBl#hm7V{m3J`YwWV>96{8&QlzSP#Ua#u-bP$6(Nn;rK#b( zfjgZUE=?5|>%UmPYMTfBYi#)9V0YwSm)&-?!qT>)tqVyVYIcw@Ie@Qhia?W$3{pFy zuLQ@qiYnpDcdx7@(`l((nlsWUWa)FHc1SY53!H65#3Sw^@OnI|KD`S)wBl=VcMXTh z3FR~u7!YHii&v5}aoL2aPMiAH7Br9i*r>LKb)_I(-YsifS2^RpugS)iC1@*)_4$bV z;fI-Y?xuZp^p-bT!TB9Y8w0ftTf7`U9AC)6#%#Fz#&o^S0W0SyUwVyKxP97n?|yU_ zO1?CzbTf~rFf`h3fpnCJFOMh%>cutbn5dVuQPjn?eP;DzTABUy%2+u4EmzcD5s2ec zcB|ePUDB2fy>wZZGcMpIp5(_ZI<*odmBi!I%NLz?`%>%e?Mv*0+m}2N4+t&a_pSO! z1-t|>v2V@3b>z2gYq;)}?@7izCYeJ&q-3`d2iaXJZ*tBCnLl8-{J2!UAXD}dd}n(Z zzd0f7CF*r{5uYNg{Q$YcZ=zF3(q5@&ly$B&u5o zLoSt01&;)?g7KilPG*k;HRywa=@Vf5-mS+rlR(?Zm!Z+1gb~GCvRCvz`&~}%U)O)+e86V|Dld#w?(F$3uCMBrO+nYk-rT;ZtK=p4 z06Vh>LA&MJk`84#de@Np<`V39Rj4JMOSRzI4lDG+GtMS@dBoOoy!1XW*@4FC+-zyU zszLBXFTk%&uX4Fp%yQ!H2e-IA&2`25lMSu7eUFkXzLPB;%Ne(Zbgm1n$JJGc#oX(v zBm-9lq$-V*tw`D#H|OA$UGDpjO_%tOLspmg_=W+V@onF^T9VtUy=NoPZsl?&g=c8t=pD|qwo1nde*^Ol7;X`Pe!{;9}vx)W!gH`@W-vr(Y?m4 zD!+AjeK&f*)WM&&8XMBSP%m-%Zh}8%bqXK3ulaUx<$^xV&Ke?ePt$z!#1-pl)21bK z$A$ky7fpIUwb?t@>5Mr1R=as~b&z?_>lDt+{#ALEQe8!2KIouQs;(lyYZtQ?b(*eO zs@hT~*>6F$Tz$3!*cia(tkl+@{I+-{BVgy^&3!1sErMf}?8%3CKdaN`<&FjOaW3Z| ztP4a(t{?Oa`*??IWG#Lz%_Vi!BOOXwQwy^rhArU`&3Sb;qaD|?S#>tSrLJ#I&Ks9| zbZQS~ZrVFY4oAz+iL7=@-Mf-qX$ZKSV=!A{rDqH4tiv>2U-jbM$JAY5@@!bN1dO-{ zTdloaJw{=s*twYR#&?;Y}IR99=b+M+syEcWnG>q&*I3@ zerU*hVwk*;ei}5p6@Idje0OGLdi$AR>H_IeQu5t>cGBacm(0Wpm*&JyisA&)V{($` zXyG2Tm%;=RJIg~mHp_#z{67ypo+3>fAGmVD9VM+E7)ti6ov1SRQunEv#`2}@X$_R5U+Hnszb52VC<6 z!~sJ)((KLP$pqR%A7z{nS7*gcjrBL!Ll;|T5#)FI!9`E}@_XGpCeY!&U*o2BfXfr6 z+k~q-!jOFPnf(Gmpuv$hy`+n_(bAgeL04~_L>!Ik?X`+K9p%K%eaF6@cv^SJ1f8^I ze=?kCQ=NMe{z?w4BL+MYZQ~(SvfPnx6`{#EQh|St;d=R=is#yY^vlidL62ahSruY+ zE_Nb1KMbVp>p(sx(x($onT^d>bIW}SNV#As=F7@*jfWGR0SgY2SWJGP9No*W!ctUu zVpF$Zyn0p~|LLor@8bKDtC&Hr!uub6b);!=@*)#I)q{7JC@9h!h0wDRfAmF5 zvCqMRK+-EUW)p@Mh}+XwWu#_gMa^}1-NkOm)qlwwiB&*x&4`@$fujL$BjV(3R4Ey4f-mrhl8j4t^B2f znetYTyCA2gs=M0*wv**$a;1JJ!Zajnj4#SHNqF@tju}c9@Aq$@DF7>8cUN0eZSGlU zJN5&J9@6<*j2L0jt}`UDP{v=B)CBY=@5RqzobFco2R2rcbH*TF(U7W}wvbBZNe@Tn z$V#ay-iRbi*D%3w>KqQ7o+t3IeJ}C}%ZFaUrKsMTdi`PBQXG9U4XhA66ZY(DaC3UJ zuNW1}A=;5`N{pN$6DRi%YiF5;Br$Go=LG>=XqnP3PV+|oj6i(x>RgDUb;ZSt_jh-D zd;z>hm4h5ilh)(dZq84T5L8nk-4D<~%H}CyZ>*gw7se|plq*DL3=92O2N~#9a%5ym z#_K)M+oNje!c?xKFl59M;^(SPv;~pZw7#BzesyUh{GcQueGhtg)#PJ$Uc6fWV33i8 z?rP?zN=ItT3Dd^?6q?Qi(i`K@wzaa>{yeqf`kFx9+^qDfk0jj9M$1b?HV za$46_`uFI?friB@ZRC_9nQ`||%7(n$X{&CmpCOX+P;6};GQ91ma;mF67)tcpvjjIU zysx#XR!!c4eyYg8|HMZ`?;iDXxh;S?A+CBxdmn*~BEZ~xKW2Z#-BB6f;f4;2oT+x` zE9_QSg7LLss3!Aan-mO=u3Asq{0S1;j-Ds^I8XI6kdi_fCt59vI`U{It*k~jn0=%u z8#mJ@@O{^f=euuGj=|oa+wP}DZrX|x&C<>xO$$-*<8OUAl)-^Vkk3$PGbSAJ5- zXmvy=@YbRzUDa*&lVd#1NZOU4nH{0p3BfU%A7e{*{8WgURQR#it_;&gK^>UjG2cNX z!nqJ}7w{EaRutZ4*x1T#*6+29Kc4XEn?m22^?GLA8g@_idHGBkhfr)9Lw6CGjX0`?YU;c9zzY^pwR<+e zoj-;cOc}cwh`vCz2wdFF$oCwHcbqZVf03L@PC7 zs};B$FgSj}j&qwPRH&T_fk@g%@3N_1Oncr3^;J z_(2FqAGA9ztq$4I9kF38K3ht1F(71hG+LS`4jp?0N?E(^7kVb&>j~QrRYg)X@A=hB znn>QO_kSzy(2%ger8#p%{_-{y%Rj53OVY$;MOcsp=9-eks3)NerAQpeMVSR9G-a`E zSv^G!iqwYu#Z>9y(U=o_sB2T)Lm=CBDN32vr!2JPvZv2s+!fyVpfs)N#{CDb_b zop}ar{k>^2V}kcbKDVsoCRz=K5RsH}(2i)A6sh0R=7uiySP_ctncgMd!N^HyIdT6XIh&M|eDyMFxl26ud%8 zQ6@wVVyHB|vuw00G*_Al=6yZb?yzZZggVvjU~buKjE6dGwK(?TdWNQ9G=yTFLlLQB zk_yU}fjT%ox42-p99m2)n0 zlYo&JrfCDs=KV#;F{heftO8nq%mH;%c~P3iCprv+^Q~E>q@<|nw|z+qH6X?G{T3KP z*(7zlxC^mdftVuf&m4N+gDRQdfV=dZ1tD92lWD5k^3_+&Gbd#ZntNnPE&1;Nx3l>W7Hb1+t^!=*1c-O z3jVUKfFIZMLIta&Qw*fpEQ3e4Ka%4^s(HZ-;LD7k^)^uyTzDvoDC z==CCn^!SS_rT%)}99I|e_vzrTNM%XzTLp_0GfV-&ra;PFPb&1FSurp)Aa&#qZp4+@ z<7HvqI(sGf1PZJ`nVl(h_v(gmvrZ+*vZx3@l!;An|NVG==LLe=8@eo+DPcNES3P$6 zc%k{Y?~Yz`yMnKvsc_#4X*0asbS=DNM%u15Xjtme+Sp15w#{sj^UF}0hb4rc&UkqH%F6ni=~BdQyrCG2uYsp52{e}G9uo|>_pf}yaG>$Eh_ zX7j#R+~`6>B22($jNiybDhr@mPc7W{9>%0x3Cd8Ot%P5y%>E37sBU$CURxE zXtI@68IHDJV^2bqT_>c`J~yfBS0T#;^TxqDT5(m(7YNIqnOCD0I~Q1-`_XQG#s4D| z>(@k@8*jqJV8ih!718WQlwpOrJD2+rFZSH7(t#xst!NWx|G|6~hu>ED2VST5TR~%0J2j$sQd9YRh1h zJYQEkaOXXd^QtS`>x~KPsL$x>-blWvD}&v+WwbTZk-3A+P@mDKLt0D18rHCAt}4*5;+su)cGD@|4F5 zycHo{)VO|I+-vQ3cxONo5ucYOsB@=Lw1Z8=zQmpOG zRwHWArYR=oNQZvaL}U;ZcgCX(k@iib-#8G0gMH2&ph-)jC1--{)uCOr0_?da1m~rd zh?mN)ya`1Ta@#!7?_^#UK|XR;SSnAtKvtcta@#QF@S$kD7pg7)sMUMNU9ynaT;pGL zZcRkayDg}oO>rI!>8nr8V@pOC`C%3aR-Ms{ zn?%I)?p2+e96|d~Dh*dUB+#iJ;T2`9DrSQ11kMhs-@1i}9=PR^8cxtHOK?V5H7e~9 z4p>lI z99?g)`wAvG?*^KrKljPi4;3+724H-~V5YXBi)xn>LKki4ED`(a!vtAWXqr0$<%S58 z2iwC=?}rw~KG2p};HKk12Uu3Oi$A_66GoR|_7D?_&ZK z+^eh?@utlQNb~+h@MTUu5`?O=wjb7w(gYQU9QyaIxX5_!JXR8=ebZoqCflKuM8DIz zW3hMX%w9Po1nSFS`ffB9>|Xmu^buC`)HQrfs&zYmGc4f9AOPQI=%BQAY)+ZJW6O+C zC6%Y<{fXA__6jgnU7I`I?N(rt%{B;p3off6vbOAAj0&N24UH=>BcS$ZH`m1U&ebC? z;R}aTer=bptXIBD-_;~qfNALC=6F95gEw&~mX@$(J5z#U)~B@)24f@BkUS(CYHA*8 zq_+3B$XHf;ZVkxduvn#<(_qod_@Zx80tS`Z{e)~6UQZUCzOLIy+)gkY$_w^>$*o2% zQ~*wFP}Wn=4-1Fi?CiJ{DrN4eJPhLo-<;$R%Rble{^2SmdMp=PqN@CT9uh)wg@KRb z(ET2mrS8(5Bs%!829LH{9IBK$?>p_!A$g~@EPx5-IM34(Jw8T;xI|0cZqeTGbq{i~;XTg8QIuqx_9;2(=TnKWG-YbUjXQT4Gepfbs!M&wcjE>-)uT^= zeUX)0M(%onDp9{06|q7zE&pO5=7BM1wA)dbcN+CVHbAOM#sfX-O>M@vemH;_Mo?fI)6)NC_pOX z2e*HdoIs=Z`E#`F6ay+|5#QeTCfqY`v?9U)js1|pvX2o5O3BkJ$-^{vuVMjna$;@3 zi=-(1gy3&FEX<^Q#+5Y;>T99+tAo_j!)Q48)LJ!A`i*5>)6^7)STq9YpOXeL%HreOdGXp;W>CLuYH*=dMhNtYCOW^ zzQdQm!X?(8=1?mF0>+6}c4yPE8qq$Dz?>hu73k^O(uyr+H9OTP`(RDy=KiksyWDRw zEq#bV-}s+|M}!K_%>8f8{pX{F?m&0_@j=&@tFO~R)Fq)((D$#8)g2<}AlW(Fh-C8j zPpko6TDZ*79E?M_pB9z(W+m?@1h|)Y#5NeF`jo*l?|rYvtf8{ysON82$9iC3Xpr3u zxg$ef>hRxlqnXac*KkorzMAk@5fG@&FxVb)d;_Giqf}7AqVD*Ttbr%_9t?>u$!O+F zr;FzKu+jm#k385Zoer%c=V4S3iRxpR{$)p-C)!eGS=DIz=Mp2*Vv52??0#3FD%NeH zi>ZFXSYdU3O{50l99j&?riria;&>fLyUpYPYrEb6H-nklpw#_rgv_+hC61^Mz^KbG z{i$5nPc7jQ-wyU!(o4+k?Uxj|+pDHF+t(dst2u7Vvxmn}z0(i~_VBCyGxBMVUCV0^ zuvhN{US0F-ymt|*0$Exfx-lX>cm@GFdp=B3RDNZh*w`|15Y0R>&*hrRJ({+Ah=5c_ z0T59vIZLHBg>SW5Z`7zD^SCfDnsN%ML0f*fe;7>ns=M2pcd*hRuvuzzVP4ahvXisG z(5Fzv1`xaV?l(;;7@>V&2@a-`1)2?SPVA`<5CS~R;AXZ)(DMe<(Wc6I?t77*e%##2 zcM&0?1SvlmHaR_UfBp=-^XfjH{4bn+rk~1$|NI@xn4ZO%QJ=+_gT(|0QhHQ>R=Ol) zP*GI_DL;aQ9Rc(J5Ct1V(l(~oF=S`7H)pf9b!2h;kAxs%_pek;%of(ptUBzjmbz?z zP6bkjr2nTiD;En(C!nRdqmzm5pVKk3gLvcru&2jjYi+0R!fpi6G5d2mAUoh+>6}>{ z7|q#@of*w^jsKhuz|Q!ubf)I^E_Oh6TVo>|^Z!W43{tFot}ClEyRDh2lMcI~tKOee zF@c=I_6+aeJawj@e*33Se+5Fw+uJ(m*(=x@7|2;!*~2l26EZzZlEN{_=-7gY_CN1P z893XE8@LdHSoHtCNC*J7)cJh&^LI=+5D)*?pJ$y)Lcp(v2Z??@-}{yCXVd>o`5Z4n2lgZl@ItUAMiP!=I=H5J$mPN|NN^4GSATe;h~?r-vi{g=3@EX&R>nP z|K5v!uNCX>W`6dvzpd3@!(sc~&i}4c{|<-!cQgNEhyH6gzxUO{XR0Dr?0<7 z^w;C`_o4AT|NX6y;{OCNI6*85vns10{>&Fc)s#8qx!F9P0An9$;`U?ue zvvRPsC;Wq>|1daA?9B}bDP?S}Obztx38i!_3<#;7!~5+2xRYU~XJ-UycLP~Kfq9@v zzUQ6KFTWB#Ljx5hFG%=2cY_XpZdC|>?vMTua`}AWUrqC?WN9TqIVDj+<^NtPfS#F+ zm5_yn9TXV|n$AJHt^ZQyKWZvtYvA}VAN&IFyzBUFUSR&i(((&{ur!~9{NI(%%mUhn z{&nfkI}Z@9pQZn!#{a1PuT8|iw|&fiSde~|E-xb}ASxs(z^5Q8E%lc$036JOK$f53 zk$>rgf3*EC7{BWM4;a7P^Batx7yi@=lK-c(tJ!TL2Evsp1X{s?H(05P1RRQg);}xt zK+_};scHq;TdATIY)Vjm+RcIxh$A<|L+}8Vcm%FI1rj_6GuchE_9Uswo{}$Pf8+7k z9!G0W_psedj*r@FRfyq6ccCDHUaLYG<1H*vHoo%AsEVvg&#Wv~dS-pLor`&z9ZvIX z9CpuV@5bvoX|5WN@z^PYmM@)TF$Taf%gA%#n570alQ@fN*)y%_Xqtz;VG-_+vtkoB zj|3ipUB|qLD(4PTepxcB`e3Y%tjhS>mjwPi`YV#HpWlmJxqa(k`^(GS-kqJ>zqWq- z{(AQ^x_q*A|66cG-${T=^p{;-sIJmDKAg8-@EGwvl}%an|R2PY@9;n^fDAVTlI$@1*<^kJC14cf^{-nwH~ zyxQE17jhUNZzFs)8o~~#KfwvHv56FWbm6oANeW9Jl733h&-3Z~bku*H7TM=bq;-E? zkjk626xJ6c-RX6o9`&EKU$l2N5PrzB0d$(y0i4IKo=`*H1{DtOEieJuBIdt^lPe68 zsu0Xr=xBVFa$Lo*9y=JEDF?4`F(EmojBw-_gOlYx#svnOj+|sFCcMnx9@dppGWOdc zmBB^MlY>+DKBgJv)f{Ifx2)!H%-zRedL@{o`e_NPfnPR)q#Hh_FrvZd%Fa@2Si}it zU=s4=3?`uPFpJxMA6ubItVw-_5kHWIV~FF{2N_0)en#N5<;h8mUp)*iA)pwwvr)8d zMqA3EsqKxWegJ7Xh+QnhxY*Uta!qu$!V+8A2$QFHWfg6Q)v;d|3K5$!5#hS()W?Lt zFxkbpiTwJwTs1D~_~ns;+$?T=JmRF^gfPU;pb7CIAr)TF;piu%#EqtdNhZjcmeyhv z>dM&|qZ1#)v@|XjGwN3{$MiIwoG`>+;ChOhenp-RM_C^1?LlBX{Fvd~`56D(3nTDS zjLf@}!4wv|@^dRZ*=s@oqxV|}T*yw$IY2Qwf%qa4uQ!qpPM!p$Zi0B~`21{&MJd%j6c=#=Rq(M@yn)C>0k(N@ugm86nbfab12s{8%!6NT$kw@k?`XVLqxSsX|MO?p} zoI=QaDWnk;L@XKWE#GpS#`hE#N=CEg*`KgX(t9mCd-s0u$+Tb{&$|Z(RWfZIq8zE} zJGubIF@-Pn4>n}egrVS~kZ`zJ!n);b6OZUlCiDk~p2>W{^VtsVqaP9SJrIlK7^u@l ziV=MB3S2`Z@o~~o{1uo=)CGmg!lhiJH1OhxALh%9O-%9&iVEswqoPk)wei*h&!Aj1 z%l8cW`=NFXRP9U=Y4;tUGOWvo3oy7bs1eNC^?$q%0}^QD8J!(0eZ=dI_6i6{T^=4b zCCG$;r}<1AHX+;jQx|^-><_JQ{v~iVFGnDNQA^R}r^4YGRozTnpIfBuj4eP?*R(PN z37wgRi3y%j3TS0v=?Z#)XB2g?b#PX7G&ThSbQz^ZMMaEVfM$T7dQ{N|>DbEEMG5FE z>R{*SU=Or+1#tZrow73juG6m{nbE+&5FwZ|xkNCJjtW&zDgdfCRZcHpQ2|1MVBiqH zZh8>S{f0|H%Q^I9b{MNm}}L-v}h_1D>8Rz5Rp^NFw3`(E$GKMAKlMl|f%tMY9le*sK^k zA#cwRYRGKJze;r!)hC0UZwA^`vyW{%n*TT@jp}Hi?WlFsbjNPGI~h*z?hG8gJUpBF z=I`69|9F3RJxAPncN3AW*P9V6-48`UV+x&|Rn^t+ws)^zs8Iv7v$A79oq}W5fDzch{B`z7|PYii+d)*>L)O z9fV|c^XHJbZb&|6IEMWvRBy?=Hflqv7uM z3+K0u4GN7>4?r%8BUZC!Qx;*XmV3U&rP$F83?<8Ez}?m7g>K(MjD6P+$bO2Y225D5 zlf9QnQ=u)JHFQMH=I>?CQ#|fAM?ZYp%r2gRLZBtnweBR7FHxL`FIHC2R=<(TR%~L1 zvfJ-}nzE|MQkB-{8F^6QTJ+NIdt-Jx)pkVX9%H}kyX zES`_&6BH!%LiFGROoXQGo7V)6p7pD#J1ewaN;P4us| zu9L8oWHQp18@?Heqi!4YeT#l`(hV@ukW;)bK=JDca=ED7YJC9a7h-zbglN-~IrG4` zeNmS{H2?z6N_xa_Sx$X9jVd(0yS_=`9ES0Np0=8iO{XG#B_&K-e}gIXg$K%WoLcDH zl~20}y~>~kAK{>lw;_*W#1RRp!!j6U>F0~RI6mA~4Q4*V@XzaKLFF)hJEDURt~R-p za{fHzV~>0@FKI%}`#kwHV=L1#Q;5Rby(Otvywt67nRl9y$rlIq~5X;9M?F^ zCrS_|Ven0QvC$nylabcAWO#(cNf~Avc$9K994zTmUWL`yHr`b5 zutx?CPv2;2X!`^OKL=*pYKewjIB$8{YqUdEoP`KE@jlbZe zf_r3OV)y-`)J=CqrcLezlyx~8QTlB#x5m3nZ?SYnT~T%t$NB`V{4RH-vOojM>MfJ^ zAu3E~`B?{Yv>&Ia_oMMGR%ST!+!M;Nv&y4}U23qM)O1-h{8oBNqj~LeJ`3ie($wkuW-qXY0`My#;r}cvI`(Aw=04y5Z0#2+yc!;DV(OP#O%4 zFm>tu-aWh__Z=!gc`L6?NpW`AYbsKUp^O@|3RzZOszPXq1-m_09zA>5Ni|vR#_nqr zTsBh(6)4HUoCOMB6qUO}WCYj#4*I4eiWG6Pf*sCE$K`nt}-P4=BKLpS6nR&%TLqYxPdfiYoTJxsBEdOv(y87=cT zGuylvXnH17hhQT!_!>|SkkBek??oeSO%rbt~19YT4 z!1Kci$vM+w9>N_hNA0l4w$2sIbY9N!h4n}IPe>j=Jb}<@0;>|ZYm|z!U{@NWtwP1# zUKC<^5C~+-q(oif73%rcERoi%R0salm=Pakz%f{9;(zcXZ+<-4kQ937s)3k6i4(50 zzo6^e*fwj^uK`t)6c>Uvw+j(^lrG}AO5AcoU#PSoNiXkh%Egc_v66P`9sM5Gh$%5UKt#DIOzCi>ETx@FzrAeZ`olV@L9&%+=vXN`>RX_g`QFygiTdW`+tZJ+0Kfakr^haz zhwX<56gF^`?nm$Rf%muhHq=gK>=_PF2Hk!>nm=m8$sgTBTWVl6{BaxI_)DHBgmg7s zO=l#Hb(c&{Zsft<)xhoFGCA8AE8Rim>n@p53A|p{!Bz8z+^YV9QMpxgK;KTJntNJZ za9VAH?ZX$n*-pfI0JpU=(nxbf75v3pZjcdndqp7^=afIeUzITYR_fK7-Zfw4uw%&a z9gs9Gy`)gw_)f24ACH7=Uz(e^vpB4`C4ukNg1p9P{DIFN=H&(VN$03a* zB%u)66IU~&yoiJf zHlq=6CZ~@F+hj3)Pi*w~ImjXXbvd~z<2{s_)gOyqX5c(DnTLYY2U+O32BxuCKbVBco(gclSiWqzo@Is_~NArqb%PD05 zD|`f!8huIhsB3bRP<-q75)>Wch4*SAO+#S`xYpTR(Tgw|^M_w%kuVD)yz@~Z?itUa z<;{a)^%zA$pi0%o&TyW?-$xJGv6C`|u>Y!qA92ebng6;Go$f0>ctjRZYO8Fr@rdqg zFk}Qi6qMSCrTa=t_xU0HQS=4705n9Y4yLPySgn7dHr-yT`ARMK00G`e**wqPhYrQW z5tY{Q3dZkYSczC{G!FDhJt`8I(mgy?GJQeJP!;9YZ>OMrkYP*UhPW6)FkW+wb=yvJ zz9VQTVvWY?r5#rL>WoUMCZs%yEq_}Lw`6D2jOX>z01;d`DgzoGp%5(H`h5nMS!(T+u~xca!;=#c|2xxk&@W~O3rE^Nen5448#DV;A4*MRZID^H|wGZpOM zPwiy~*THckfJT9LZGBlSJ{JTNqV9~Mh$H518rvtfRC)W(Y)B0XB|3o#bmq5LEDMb- zZx;uB%B+ew$5{Cwl=Y;xH+(D6AvLaHUWzV>>O8tEcQ6Zj`;}xgb972zKX#ykhJe%&QLE**p6njw6KmYL2;s?5uico7Q02oaX9p8LzRWY zsn%ZvPu?JsCU_GzrqL53;k=4FUvY-}?o;MohWU6&WZ(;a9SVsuh*!Xxp;i$%c%t{7 z?&~oMw*HzEus(?IvqIsxmfOT0uHGciyv37is1++gLCUTJ2Dy*lAA;MPtl!CFLQLoh z80w^)ygEGZ+3clY1^_Ng zi8rLT5dG%{|FPaw8$ha@VkUy5+PDZ?AvLgblmh~v$NT{f^5d~{ll{TW-ZiVJaG@|c z*~gy3BOv<4TKK6~+i_dU@cXq>8knQ@s?CiG4As>y+eYkHGmT17)7M2N=7ldgs8Ld=ur9WK_+-#6VEv(s5X1U}sr-_p28?<(o z5W-8%kKt?D<$O|T|9*9ZdN>p-caF=PeN03mu89M^>fh*25mLEd%~5uXK_EOh#=}YY zxRgd&Rb)M);bB%vEydnZpqDo5Ibg|{wA`+%kVxdi4}NCK@CFX7@NEr+_a(Yq>sC_S zCdr~I*oTw{rsC;AcS)f|^h@P1g$5-*%p`)A{K@RBs(L7^Jz+e3H+@;N^r{bemHCo) zWXrkhf?OjXGWCTv;X z#HhO+L$ozUvp9i)PefzT1Z~z{Gq6ZQd5lAgrAOVEW4Cpyd2ZX9ftFl3%bA@Dnrb(- z8V#5p>X1^EKe6${u*`FJEK!KuI)%Gyk%Yutu)wJe@F-#A2cj1vsQVNX8XOhpLQb;> z1@~X#1}lx3)hvvyb}30@&kpsdq;t5ut5}caNA-~t83&$cLNUVNalF!C&8ZUbMC3E_v zX`G2tN#x;<)wKQGEQ@G1!`4^%ke2o>?^u|LG-|Z2W`mWcsi9qm)BIqoyezl~qbP0I zww&eZifH$uyH6zhg?gQzQ?z@@gDq?plZBkpgRhAVKQK5Ed7Iqbzz9A$X1~oSH}XOr z(cjp>hAO}ey_*N=I_HJZA{?0V5R*(n8rVxs)fekK6`8KswG1`Ajdm^Rcu=C`UC?Mv zyc-)+w%nweH2HVMsx4j}Rze|4SE9+=E&@#h4-)&EMcU~|^G9yY;pOWbL+@i8h>4lz zy0|>8XPTr(^umjO9Moav87iuG+BEGqq8)*ET-b(syB_cp6xav70{s#tNKQ$Vo!f@q z+J>$qOWc9ph7y6=HyW?=VwE%{szJZMz7BWDpqp&ZA`8;_-@mCq!rWM;ugkD*u^|T3 zfxGoW2}tlS2wyp2S({NsE{O$S%{W3AsnD$4Zp{qA!qTGpnDfU+zc3cL=f|*KN^jz& zibt69+Y}XT$p`L@yA!ZdyHKfV;n4IpXX_Eli-DsEXIU&Y_j~DIOlW+;3{nL@qc^5g z=Q&P_Ak}_+ZT7vl+aF`Spr&CuFR{vktdg?)5pUF6qJd+N_24}Pi=)eMm=AENB_ijj2&o`9vC19&fi>y-YqN#7-U*$tag$$;*z>Av zU0v7J_-{GTY{Pv&F(Ud3YhtBUojw5ar4M^pj2IJh~R0$l*0Dl@2-Y^n-$1(gnemXR6NfS#@Z z#^-{g$RAhHKd#cCYNEKOtE8$cs1p2hs3a@kXGvKFR6PE(X!)~Qixcp(rup0~;Q*>Q zg4!h50Bk?oK($A90Q(}Kk!WbFLh2&#mt8JoBO7*#=4@#i)G^Uv`=k^fO&eSZG4r2bq^{V4^P zpOD=^#DU7-vQ}m;0NtO$Qqliy+;63LO9pmNCNp+RZgwkH7Vba#f-1GzIsi@<00##P z0}F^L5Ve*J#^zj1uC|MuJex~fsjxJ_iTox?GHvig>m5b#c{XE&-m~6Q$J(+AwEdRA1 z3m4Nr`dQn$dbzN2Ia^vd+5W8`8%V;>TyS`DIonu!7;~9>oBnGrW{^-gf3oqLM1Ly& zpEU7Hnc}uUJCI^Qdkj_;E?(tbYMv`RPReYq|W+4roW{PtRld&4d0&N~A!}2h#N)()}F@sH*-CD1VD$ z|68GO{08JFj{n5ZzbA$BHz@y4*77?)T)zSNZ(i{4N%_qISpJ*6$w~i|Ez7f=g6@9z zqu=bG<-b|ne*gp8C;Equ{+m0>{jO+`8$FY+0(eIMd(Z_1*Z-@Yn1AyD*8j8lGXLfT ztp9iWW&X_#SpS;=OMy1={%1E}{>=|q|CP3-5VXOmF@JnI~E`8DoY=Afrvjj}+mpXt!Kpa|1Y7*%>&QSpG<&{z&&&pS2H4AH@IAIf%8NIqc6Q<@Yr3`T0*< z`-NIjLtI5eT3qvgM$5v$#>vjj%>`g*=VD-I2T=sddHx5ae~Q8x=ni=150s?-qTtyC z{|b_9zlW1w6i6xx%c=es^la>)bnxG!f3{^1VL#FT;`vYX&ocZC{qK7Hg@ zT2xp~T2bNO(!s*b`cwL>?4We>-_!BzMSs%q%=w>mJPYVII)0Bpzvz&2a0c1|q#a${ z?EalFxLMeknAkun=4RmH=3)XN_)8mXf2aUt0>AwBPt4D<`3>{$LF*T0v7cur0IF85 z0AV}OBItj#KNf~RkTbJ^Zka)J{9EkLapF%QJU{$~{U??GY=H98a^k9LiVEWYR`!3g z%??W8|E=tQ#jHQkKCAub84qWWBeDHKk(}|*hd*rP*TU!b>GE$`fTEkLt(E=HRnjjw ze;W2LIDg3d7o6W_1<(ACQBp2{!G|;dDdH|h4PGJr@ z17-imQui0^zr6yHW98y#YwQJ@ZGN4(`V*U+vAqR=3TXe^87j8lg6gkRP|TnZ%EAen z!vE7j5oTs44p3(C*IB8resI2+pKqS7bCz?~m+v;@IYv(!jwup&Wzo?gw9(O%=n@E6 zwxvWMUT{Md&+3TFrVbT(-dBZHs8{k=$LK&!E$;Z~+H@W%&wFE6dbaF71Z;S4l7Pd1 zeDn`!+QU1adt%WLXBd|s-Mi)6X+V!rmW=19Bp0`CjBF-stU52yX9uDdQH zOsEI=`!?6F4eIY|pGK(z=O8Q%v=I`6>ZpF*cnC>nv{q~8P_B+@Ob70crBRPK-oC=zd0whycz(Tlcz!tMDgh)JCNl>bd zx6eSf8w$h_44C|SMXu^nMNu&f01NEC(no`SREky=QUyk+rCPtyA95WYMhLs^&Sr^T z+oqN7Go+9&J^&mwa#{oihb^TK5h8Lap8(%gG#CuwydDhTUllYW>yp0-v?Bu7dKiPw z16Px^B(PIWWgVA7t=+>V0p9h0o%_%+jzvr&?wh>sb=p$1bmKLJwA^HO>Zji3$pD7e zr=(62VjF_5vyE&F*5eh$dczt$Vk;D=gT5@Cn*Rw z(ZTaE7UCBY+~rvnOqu0LOR`GGSCKwRJOfD_YQw-Ch(;R`S*;M51+Fbj&$2z-)hjk?GnoF zUSCR^@t=Klq}!EndyDn1mVI`%D|g)5Ay?i{zOk&9d2m^P66)($GkYI`%+)S4lJDQ$ zR1F<)zE8xBTPsF+uCSvu$>w(r#+21skbHNewl}QW#u4xtSgfJ2)D)j)2)@Opvg*2# ziT-9BHox@L$Jv;6JNs(GUGv3P4HNr!V&h-Qg0F4>$~el&`ev(>EsMv;9~qGBq6R;g z+&DF`6IlbTn%Y|%>LUHpd?L>QF1d>(JgWa0;7ba;0jUCFV(*?f)Eo%Lu}dRsN6 z&=Y=a8Wd4U5QzL~2CkvOqTkxGjWTeySP~Ys;7GUA91A|J=F6eD=jU@E|7ooNaDk^7 z`3^BC%Lklsq85(L6Q6U(iZ7OaBrq(UY&v+$7B}hbM|Bv%u`*H2WaZG8q1%!)FU>e! zjFU6NT9P86PRksTwo2E(>EJl5DaURs$1# zre=SLBMT!5Vm{oLI_OdpZjAyMmpW*InGn4uBe=9}%qlUIMPr6EBf>>f?nNW^dnyqk zcx6W^yC+A#Cz9_L7p_n`Ueb$0-nnW00Vy2Tjx-!bgx+d|SpiDy1|`!~P%()NPG1nxE=y-psQ zX-kzp3|q$=jK$0wjOXA0{Gg!pDHI&~RuR|BIymtW(mdlp&?qSL5mH0zV85F&YMft*6qT)UP#UdOlm&)un2#6MwJ6fDN&k-7l)^_iU~n%w{X5v zrNsU5h_}oTr!(=(h$4a_sNlC~L#8huU`bva`iFXDMV+|{HlP;XF@qc5l2E)#_K&nR zn?XqofxCp zRWj?L9BXx{KQ2V>2g4pY>!B2Lcu6=ehUG`#R#xIr1lnj{wIwTcAQ_s|E_>@>%wazJ zjtR!?Ql70aw=0T*ZJKlDHSPng4pYn{R&|E_Q#8kTfkQrF>?P8;IEEkO#kAa}5KPwL z7o}+tLrF@V!!H@}9Jlz``8i$TVHvW9{jbK0d}hLs+i}*F4h$~ylTQXs#!CZ)8L_9k z^W#fp>k_)6-)e~&4zjq;XwJmj-_oQNMRWxx*JX4CV;#J$Wy&sPG{s7rPOrz8Jsi^t z0bY_!h!kvH(UH9;VX))CDQLUYID_J#jz*#nGL_$Sf4o`u#FfjAq_ zTa5ca(A5dg4{>Qb;*$9ubM?^l2cG-1dV=m^lr4_?Xo0|0Cw@OLk1cO+!IOd7!-rM`&gnZR&YesDdu-lAzaND5#n;EQ`~J-xY&@`L|@Fn5UPR`))!bZW~0bcMT~ z={Tc1DfRfo%_sD2=)yB$BNpcrwG)AH$JiU^@wMcEz9(G#Ebkc$QIW?E7N5emflALe z8$sP$aNaOiJJQ}T2K}m+$nWC>r&rIQb4%WRs{KLQN$9YH=S{HDmv><2Nia3LdWxJ| z)N#g;TiS6(WRTx+#+iH4ALEL%F`ReEa8JlMqyGbpaZdM)#Gv4viJ-yTcRQr_VH?5m z_30bIil_LUPu$bD)5wT(076MP8+W z2FwCwIisc^iF^uA@!VTo&k z_&L@&y7vGO&{@mHld>{Gi z+!Is61)J|0eiZ^E@f;7<5A3%AxI+XQ_$M5E7H{m|lkvFtm(I>?EUwJ1&2w2?RcVR( zt&gu{;Vr1o6{XIVXvk4BX6xyw=xHV7rDrFn;vvVP#3B6PL#`aOWjS(d&>$^WFBD4n z6rX&O)rxzrYvU8l-kaOL_A(&0G(f^$LB6hq_vG8zuuaFO3dg#dxT0Wwr+{~YL?=;q zJ`(vIpJs>xd=E*;i=vWdwvz^SYK5S_ygG;%)$Zy__1rM$-hj$qnP6fxcek|JELyTmHgxnvfUOt2C#XE!B^qok~R&6B9#dxEP zF=bvoq!WG@MR=Svus|X^EqIEyQ_TBgqoatKU-~s>gYS#9ScCgS|oFZgQ@=IU`&x-MO#vMdhRl-tIH2li!DIrc`&*PW)AB$h2!gxz5*# z3*H@(vc=6!3>;A>W;HxSxhv?Zeqh$)g53c7f>V?<7pjp7mxm^1jEf7z*~A24l#L*^ zkAoPSpl%ex`thVg#0l5xa?XUPM|h=33g5h7b}H%? z_81Xv$Ii8R*?Y52cDrLAa)0a%KCZp-)OYVgUE$f8!F$Z|Y@#f$&&q+i0rkl};W{*! zyj)pBn?k9HtRLPh^(|ym_^CL(XpOazz4vbnUuNu_R*ffJ!X-!CVl?+ zy-Z?Z{IcRpxK8p%;2T%XB`-+$(!5wW5k0JPO5V6iQJs>&_5xj#5n|1-CMOcL2}ig# zpA5AJ!d`M=@{ix*C9`>O9pw1*NTrP(AIQG1a2#2O);YWEzz(d0GiES-YF_SV*L><8r#Bh2@_aH8vF zan=r`fpU(?LAX&K`{o7hVMQK^6TF|xIF(IU&CunQTALq?mcHf?a^e}08RXJLs|*4- zONZu&U)NKY4Q&o1er9_ckgsbz39YFII~axZr0*!Lu18#D@bsM()H+*IE%A!KZ#!RqWh&ck#vp*$~jevR${`%sFvHBWT&$>dJ(l02|WAwaAfVH)LN>=Mdb zurqJ-Ca}xp<#&|V?d@4zVw>{E+Jw!E`xmO^GZA@?zfp38V~d@C2o((vJ|I>CG-sg z-ta%ZHnN`=skA(i_jl-hP?PgW_`~XhajLt2@_Zq%QXO9`( z_(1;fB_hhIp(x1Us05>6DDjM78MOj@R;38&fgh`Av6d1DD@-VaO4Cs{T7h9&p$x7U z`ojj7iJ8T5^9YOx-w=r5@5Ey~gFNA0n4LW=W42ttpuA>!1x1muC4m+##Dtf;-GeC? z1gXl5g{)SHj;vMy4^g3vgk^37EjC|(Y|WMrPN9&TIh;+-R)lBXRDi^wkVgoQnK2Wk z@R6DL!gvURE|3tR9#w;`@0I0D7{ep9Jg4h{Fp3%7kcrlGjKRT7guq8>!YJWajnWuo z+gRIJTw&K?*T$#q3;M|{sM4)qYL5ACx z-+CWK>Z$6oK{lBU%{-7lNH-q*nmYrMe}As$hOH2ae%jGK_KhymQbgK?)vm9O#HrOM z-xcmWfQm<4S_!Z;V_KDk1g)O`rfeIaC63M;5G4 z5&e<~`cC4MGh+n7Cu#p%WmXj{THz2n6RmliGCwEG>MF235xIQ z>I9AP&%@{jPH9TE)xEiEf6$niV4H|gn211~hr#<#k|0GUQlbHj4?gmrbBJw|?iCEX`r-y(SNiLVy2g6(4C?nV}PLbuz5a36#<;Zjsq+0+Hw!#^2Lcx}U;pm>k zKU~a0>`i|e`QCSjS`f5N0cRb2FXgXn9JGpG7Y%M>gnW38(j{`AW703^fadae173+$ za2F=BtwWUKD2bF*q?yRZ^qodZ7|6kwx*P^|#>Sr8mv8t@`*~srhSmJ`!IL?Z3_eVYG*m>0EX7EdWVM_BQbG>G> zS2PqzPCYY~Js}@#XYf_(SCx)%wGOv~` zBj(*+swurB#3~}9L9hnQy}!S&5l5&-lR!?_HZLE;l7^)%qjslkd|gGRu9qve)HSM^ zv7xHG$y4hjqT{WhZ)3BNq-C($^0u^DuJTPlnz8pu@p#|SIkoBt9Sb>nxovJ!RcTwH zeyM>Ly8|~y95Jfg{St@7k3w^4HrQ|jaqJhJGA0leuTws|G`tFf3fd83j?yBX%vZ%E zHQV0$COyvT@Ysv@iBC?Gx`KaC5-U2kcP(q)vhofLmbV#V}|TV z|JGpebMUh57xi)U`J%VVd!th=eT4NZANb^`%T!BwWrnZ1p>0+c6xtv0k6Qc;nRoFxZM0^*=1#9O;<6~Ea{qdJ)^RpIB3ALGJCN6c zPj$zDQ12$^D*R|~!cUfib8&HMz5Tdv&$8*J?=a`0C>4PhNtR%&L+@(woLhgract#y zvIg{*ExX5;ZDFdV*pr0!R<0`kAsV`dOi_07*t7AWY}-6F)qR#S?E(uaE0vKHGcRD4 zGNETl=2^TQBlQ3W6N8o-If1R^SWo9OmC1ACIp44Tc@~zy0e)Y05Mv>-7 zE|u3pZOU$emE4YZ&}=-Xp}=DMokQE+`Kq+2bj|FXjsbtRRkZfJ#x_suGAt=Ckdn2C zL0qMG@okSktW`vIe2B8vQQAn)pwE?_@8`mm%iIQb9R1doDoQ`|`0ZTc`>kC1Obpp~ zc@1X~Lq{`7?~`E` zL5G5zt+I9nt~(did>Lhvt^#iR$1_Jso{T`3RiLH;O$ky{4JMl`QY8IVv?wdGDWBF$N9bze#~|Owrs=h5$1Ug@{dPkw z`r|;XxH4O{s00+2#0>oCYBbt+__>KAg{eJ`uG*iggmWx%9|+Qy~U|ZlFZ~w-^dii zT;?CpFEFPc%utqLP=Yh?khH6jx#janEa;Q~7}_bo8Sv8nDk|id^x{Zr1k9OKqvVOI zQ#BnsU=;J`EdV|hk-OCONYq4@wwey#Zf17L)uM+7`=w$HwS6t(d zOeM~EnR>+@7Ph9Mbr!GB>0T7p1#QXhzP#}wPSG7yOdTY2F$wPxOYZ@jmRWWc6$irm zLP<5uDOd=M(hq&XA*?4{(xf`1i@TO+FL5Sa4UR0wbCx$W(pL{62TSM=ABQ;GNxyD< z`{9z-+(JKgfnq>^j9dJ5zk2nw^InN?&QxGsF_-LaYxh&Iev4?*W%Mg;BX!KyI1UCx zBm`Tv(>&KnZp!K$gA~pV z@@^sQ9A?o0cVyz#Zcoze%O`}#_iw*ek0rUnS~s9@6zB8d%grz#m$5LAq`wEKF z$E0D(!jp}%=SB6hJvlNn(c;ycx$;2DQNFbw&7FpatG?Y>eEX0M!&&Za;VwtGx%DkW zyBaneVX>ywa@E_Xzpp$DiLBatrqCJ{o0yEguh|hmdlaZz8*3eVfkj`BP?%4JJ@Z!_YD>vD8Nn4K#J&0>0GeI7Ggz%7{3ZLMlBW>j6hKufl4dJd}s|5)Zq<-U7v z?D)gITE{x;T1@kJ!aSG|TTvf0pE z_}jh*#^LldvIlBpMax@az|XnIeGqpeqZ|13HEw2RTyOC3J~NZht{;w%IP%P)@X1~w zmx$)4&qbT*Qroud*l|x_i_RNm*W$Lawe29=WFWArq~L}}v~%&N>|fpXxtJi4wmW~c z1$KD_f9=^kGN&X9k&Q5S3{=j^$S|$nMI?d@6-@R!C80fP$|`8)QYGt_;HDE6lX5EOBL}y@W5WEUaBVd8HU+9}KcT&A?Xs6v zO5f1nb}QA)!H!4wgE#~JdvmD>M(22Q9<~4yLIbY1jwX$y*cTIwD+)A)P;GecAI`i4 z@!$JfHZdjnP4`da5!v~=vc1M7lthLiOB&=30I1}!B{zNDS4k+T|H>~I@J!vfHIC59qhbFw zne25k&ge#HycU}|*Tg_R%j+zcRpicSc zqPCL)&mp0l1z#lC4ej#S2Fp!sbcQ&G24?-xt5>?sQSp2qeHY?&iO76lI1?_Q=X(8_ zk+-QI{SZCoh17VIO~VHk2g_U~Y1UsODK&Jhge47=Ti=mDI%p&uH*=59?pf!pn%NGGO{us(8r%?9Zf@EeA96k?q!k3 z|1Es=q~qJ1hx=FW2)_jASJhi@v=Y$RN0Ssx!>O&&F$Y~8Lt}R(;StvKxZc7&l1;RZ z!^_Hi;3|3|89Ic~mYq}Ow93KzzAHa;9<J zTz1@_ecQnqtJ~x;SF(iNu!41IdJh3|^HTz;N_2(MwbQM-?v1b49qazxai#X}@)l@| zEMCP4Xc={?&s)n^V%g0u!z0KLqQ`8cT8HCD?Zb%X)>%4xv#wDaD;lUqPq9#oOSyF1 zYojVjbcb+x5qKAqkXySJ*Jz9*r-!QB^2qRc5VBmXqI@-u96Bw_9kBw(>DY!xG)Uas z9j(JGjXY#{Cm7?D5JVXj^>JA<+Pz^IO2X4=AoJ`oSzTSu2E6c9XP^3Xq~MFlT$PMS zBF;KW87CifRjJG3ob=_y0XZ@nmUvVDlmRnz{=>ay21OI+$Y@u`aV%-MjIxne246mq zQ3zcYXQkgbp|b{+jrbbuRrFiyPcWgP=I13EI3G^GX2{m0YEX2oQ5xtueND83q6SxQ z6<%^7r3`oYwXF8rL0PS83D!QA9L?kut-n$4ts4SPuJ3uDmaMF;y9+C<9GLyq=5_u0 z2Z&z(!VgA}Gb6aCw-s9-OjOh{bog7-q}x#eUw3B*k~0)wij*5gm~SHqudv|nB_qMp z5#_J@XBHzH5Bgf(k2|)JE46a1d~844UVA(lcghs7Xl-a{GP==Qgrk_98sT%M7AcD} zhqg1%_6jp;QD4Eg)8|Mvn6G21lfaytiX~LZnai>b|1+KBZds z?)KIh_EGuAs9#k5F6*pt3kg>0O#YZPvzHt#rY9Xyw`7X=D5;lN_C%XVJuq@*W(`H~ zsUD6sY1dzEEnQsp&1p-%Ypg>CwA5ALrybK@M5E#VY{?>3s%=-!HZB~!VGCf23@E2=oZBC_$YS9_QqbPbf_Id^ zd3;-PEIN;}s<@;5E`@Rb2L$Vy-ulOl1+DaC>}X8!3Dy2o<{GN+#Zeg1k#^@*3;gPw9kMB?%T<*?LxUu;t9~pbGHH70 zLMrKCFk$nF^7+Ez#fpVvQ}w6M0NDmI;UwT=#XhdDwh$(Y_)Bn)kp~PI8s*f`882Md ze*X$%fEC;D&7j~(DT|9vY`Ae#f|i}KSpceA6?r9$0LVKSzANsr(Wgoi#j* z`&}Y;wZRk<^uc9=L9NCYw{gV@o=yWs&|J#lM{kmk-6>ugGHJ_^2a>W8*~^wCM>;|N zg8GzVhjYroL@zEo?-OSUOGL!W;WOVsjubEQD~bYeCfp1=`~uDcL}+Oi+MHhF z1(t(x!RxO1b26Lg1bX-cXxNU;10n(Sa1u$-5r9% z#%&XVzfDf}>CekE+u^-ZwZ8%27tCs=4KJqoRj@u={Qk2em7Et2`CpawW z_0~NCLk5&xY#?%b0emwmV`~bwQ(E*`mGeIM$4!0yPUVIwWl5d$CXFmHh-Q_;R?}A1 zSWO9lCe3Q~9Hpl8?2?`I!tSe2MwjX1OzrDuuZDs@uW%R5Es-z{8(R!u=aVinS1L&G z{MCsi5W@AjdDX_PeUEFwmLb<_`OOj{uR$|&41{`Czgd!LR_vW+#kg6+;duS{c9Uio zR2^o`xOLsP#Kc6Wf9Wv7A02*UsV)#g_B3bMNO;#BB2bX`G0D%$+&KbWeSfds=D_c$ zarxA(Q_H-;gKn@c^?5`zlYiVQl$|~0iL%4^V(&%;D}UNg>uGL?V>4D9!dn?XLt@DO zps3Z*g*%5KZ9V1Ud!ew=z$b8C<&4?3>@kjY2QFLrQuzayTErKG@YzE)%^RewMY9LI zKA|W1ymcgRFR%MoGZ+7E=pFRfpItZv2pQm$tB(v!;HQooGv4-~q@>3z!D!|s@89G8 z*+zev*92I?$n44H=H)cXZT1DSw+{YIar)1l=oYulgUw)nCo*8yc-9c=c9p&YEHG`vm41O*bm#UK` zQ(zqdob!_;$`?g#Dk`x9a~Mrqgwj%Sa_qcv)Mt(iw{-`A8a|VfuywnZ!FWRdzg=x_ z-ap4+>xH#Yr)AqT?TKMpdO_R=ZSD2(qqw-$eVyQ2zPM5-j!>usq@q&j*4vVj(xTD~ z*+Wa4UO`%Ve*X0%j?&@~K5Bx;MNzkvzGRFd6I0XIM;sXGX6>!pufLg!=gKlv$GV;I z^jd=FqafFki1I75!P(`v+Th>FooxSxTz+Mof;a@mPL>WX_D&#FF6j6-w}4Uj_d*LI zyn0yL8p_+d8PY48n!DNRgFfS!dLB$}t$!`ORddX9lrD=|SLNP%$nRB5o#5 z5NQ4NYYD`W|}dg)%-WsDlH)DmrWrdPBy6Nqs0dYk@W^@12D zATT*Q*DJ4r^Oajc#LmqG`Y;o*gZL}#T%avCvn~-ks5l2F2WW=_#0L2dKL?%lo6F0| z^jaG`*B^C**s?_IoJ>TVOs_5cZsj+zhaE&QV+RpX*|Zt5E}- zeoc(MkJr-DXvD=gC3I6p7bR^s=^jtIGMp0E&X{L)G(|Aac zc#vGL00{42P7!#2;}ZJb@LWCky{tkWgJ}b4RqOaQa*P4~UJ+GUSX}K@W6s73D%G{+ z!^dF9VC~zqdQYmZ1>CX={QP(9mYVzOfwpqUWCz*TLHo+mS}08S8=hoLrz_>>3tpZ& zQ`ycv@Cq5FIMi6Vi8zM=z#tb9ngp66)avtTbS-kUBib&X5SJWq1H$htr z31O`};h>$9$rociI>I@}5dL6iy7X@HF|yz4?PH@W=f7a|*p? zf+qNXH}S;mKw7D<^W@LzMKAgHXNrj-=otW-j35Tq?@9kE)TwH(W@q^-ulj2H|3qB^ z+25Zw^C#zknU(GTL&=kqoB5xmJbgWVFvRX}o7>F2&W7%e?2j8$X8SzdmNRQ<{p%veK{jQ0YiFYL8Oq$U3fHlat;mv22gO7 zS5SO?NWmr(`UUx|3su;VYecYR)|-vIk= z0d`BL*{R&b=(GfWNdR`9v*Fc~xNhtJ@vVn8*m@6q=E}#dpf{iJ!J6Q)^u4-{cXbEB zTJdY~w6PdkO}<;-`oP6_qvE`zrS6x6QZDKNVTA0!nd*y+TczCdzk(5^LEy~Qo9vM% zC=_!TXtEo0nq1bum1~D5%!FT>gmCGX$z-scFG&am!-WlD0qh#S~q-_Ko9j8B#UVAW*xITQnfxO7@;3sAT$ z>XCLlF^-a9Bj3iew|YgOlMv2vts_s9JoT6Lf^ETAh(sa4S*{cVP}2jX(ql5p#38Sz zW5hIr)T;`TRgS1tqK4C>w9>~%zZx*78on(CGJ)6zq8s^x4>l42)O#@-UJWBba&w%7 zz;dGKEOmy^+*`b4r)OBm2>3Jx?I7WU8jFts;4&KYT0IhU;@T#6j@+n{>EYDr;hs1! zw2Z=^p#u?Ei+-Ud4GN)fZL@uq#qP82AK$k3JQ1%G?I>?%NSgC6$#_@@fP|10fsP57 z0#{M+P^U!h9rM0HL{*c6=8;1{%!`Q|JU>HxP06kM91^H(6 z^jk&Jz>>)Xoyg9Sxra8xmn~R&c6oFR!ca`;w6zFn4(-<8UFdqP*od)->3WUm`fS*Y z->%fcjMieXz%e1*4e^%du4${BRdXZCX$D3s_K()C*z(~++?iX2JHo0Pz0G72ln+l~ z6e74%T#{+W7@dlese2Rc0RFKSjb)X%1C`U7A-8v+Z30W+59nP});6Q+gu zyYm|>He=$joBIg1-N*3wO%6|`Yq(S_T8S3_Xzhy6^@-bfTdXYx5CCwmC;|D6qMGTN z!-Twg60fLdl+_oDvjZR%|A;X(AV04`{C+_}Q4sSMqIAMG&<}1(a3&m(1H|ynEA@F` z1-j1^0)P1z<;FY>#v}Ew93>G7mgwhE&zIUe#sLTd1dygqfdW|Zr39z3r-g%u)?n*0 z`Xvv3WG^UBQC+Z8Pr!?1<$~tvMS!T_Y~`to;Q9mWojWLdId51{sN2wK_tID}u{)_t zL_dDe-z4O45J-DJJvp@@ikx$J$?fUub${Jpuz#A0#o}dIA*q~_~MEC(CJ~}FKW*BM3H}Dh& zZ|FdL1n^?2&(9-y=YvBGw~CXx1YoWb`~oR|_Es zvP+6f3Nqn<@ayEYQ8}qz-mu6R~m5g$HXmT%6()v60R@AKua! zZ1HI^!#5b5?b#sFWtWmoB*k8v9Pss-&>1%u#6B#i;G$udn78iZv$ zgTW(L*G~D9!m8ifFMay(g2-zF^yV@s-ROmdej*rlm^t4PVc~zvsRP8|bC^}R_%8Yq zia~%BkoF8OP&9SUgaQF@mkf>f3ui+p+8};k4kR-vnohbP&B-+}w*YEWUCi1u!{7q7 zO+@l3KlS(a;CxWn(4hJt@B~MyBouFq@dn5xZVbsEM}jf4gA<$pB*ckU z0wv+opd_Be3!xuJG(JBhTsWp!f*E`VpcKNCOCUxab*Lo!0rm;a5b`jMsu%K}oPzj6 zw-C4VA$EF9BoJO!IGsTFEpll=3_%Z@Y=H#R`#qrZ*f*1VZZjjeC;XJM&;EmSvc>)q zm?hKQg?O`v=4Cwy_qb-p6i*0^Wkq?!LDKis1?ggf{rIZW3e4E^K=ir%Fux$Lv64Ik z0;@wqHqhIq5LL+wM=o6y*;rtIMpQF^#|sADb1BB_o_S)B@1B`K2;vEc-lB-m7&Q|h ztP^nuBx3mf#_Q8~ERd8=nDq%p#!=u2X4CP!ePcN}|;71r`jreF@VH--43D*sjTmd4RWOcnXleYLMohfWv^@ z7h7Y~=$^qZPzKQci=3hO!I6An>Zt`TZTjgKCPV4NrFB*DxdG|IwEM-os?zh%?~e~x zTkzfiR$HJnrkWk;{e(BZQ#>Yig^ss?l4A!s_kMC4edl!vU6IF^@9v@O zgm`@+v^`odHD)<$5f`Tx9ZA0w*X$rKebASH=9pc)kkFCP@0I&S?~Ay4$$L*@H*kJf z+46RAR>P6j?sLsHhfRLXrW?UCto9*o3&bj5v<01WChgMvF|aG9`*UztNcVO;kbEsP z3n0_-ZuL;61)6gf`;v1_M8B`IC8aCk!GYEnoW`z@@iTh!EOsq~f5GIA-$%-|&! z^2Wd{(6J-f9ALZ@Z+>X(f&Bn5_CTJT9=s69EsfuX=nx|85BEqAh=TBl6bOpHVDW{7 zzJ&9IB;3JlgATu-Sr6{@h&}6}^vF5uDfI|G8!-1sIvd!y#9EJ?yyWo3k+?we#nCqq z1SQ+LZSWG81nZ&39(iZq1wB0Q38xr*LXj=8pCci@!t3vl-lKH&2;ZZ~ZyJO4`ia}n zDIL?#`rLnoob`2IP_IX-{E88XIQRTz|Cl2XL3qLK3s&kFA`oEbBTNX^p9Ta6>k@dE z^}fWIm1Af6rS6p0M{I&L#RRc65}ycq$gv4FQIVty#SU8!v?lenZuf)M*zHlgzGkDY zCz`I)sgr|M)Ke7Dihs%hT1gYd;UsS&>4^hFAkokyC5eawUkqXCQn6&Li`ZxECze&E zQjjE}T|N?VS)OHE6qU4Dsqc;9&X&qmr?a&BC~J8bSz3tH7I{3j)EP&K$Kz?G=W+UI z+D&){H?Tlc<379C*RQ9VG^WQub;{3JeF!9yP?s{+#AG$~)=ENC&m3`f-mPsmHL{b} zq_$SwqtK$aR%O?c_T*Mj&QxtxQf~mIfwHmFB7&h9t%6PXp8rdNovf;|4 z%$OP5A@RhPC>PHqXF=TX6*nejYsh+h;9}$}Q3?3*JyWfJ%wbl<)y$NPZ~EX?!r7Uk zQr(nfQiPhaT)Ma-E-4wCdBL%9E#unbfnAql%zli6Q5B10UQD%)Ix}mQA#8Qkzj~!% zo_OSg>rkdbM=ST18M{OVj(P*`e3Vw_scN=mV%dsp7D=-|d{?blzxWt!qN}Dk|9&jTU$=orPoKSiTX6h%-P$zMM<5RwIH#C;r?P?pz$QL z%*xt^*tp>GOWJsaVor)PX~ickie|QQqY@gkRI2A`f$q-cv9Y|7unJl=atg!lyvVJi zFGTwX`@iN9QxcZyV(z-$!yrw@Rfv#|dUj9_s`WZ?0C$1v_NtGq+?Z+!ZfZ%~p805c zMNl<%%A8{wdnNG8->5j|y=D$HR^Gd{T5zEot9?-K9~*|p9*Rs+_Ug zfnG?eTW8j9uNbc9-6a757$yKADGtVu_O8(y>rDC+<4U6q#!-szm4eatYVmBM;x$`X z?L9PMIoT_U98upbjzsY2SgIwZD4qjYn!ZO@kaS3QWM=AA6gUcZr1J2Mok}A$v&tQx zE84ZJl}G1YOR+( z+}qccJ!R6F1=2;_BdV%(<)TRUEhJ*CdTJ6h70FQ}+zHc;CC0ch*%YikNVw$N(Fsb8 z85II5j1rJ}IBM(}9BNtAY2}%+$yHyf#-P^p2- zD5j&QaA!=az*ovlDVrgw?8!h~;G`fBAaOLjxQvXqzR{BK4N1u={I0LG?)@#KJk|7e zLLWjkK5=FX@*)SP@JX%1VPH0({$B$L=0BacXO2lPn#q+4P?i z2A?e9RghYBGdgN@%cEj;ifPTn7VZ~noAAqsFz55vvgN_^#dy($MH6FFH}~EA-?G=r+7wPPc>Xd#V0A%0t`{iXLd6A{Owda6$(3s4nLvTMDmLXCvNN3{miKK zf^DmzuVagikE7O7$8A_i7O8^G`qf<99yWtso6F_4>B&SD0!+sD_YQ_SiglK3eV-cu zcm-HFvR9IyBHlQn^n50E_`Zx1icP-k1|5aBKfmZLQ-2D>6?GE$*deqvq`A}9!+!#J z{IVsX5j$#KUN&aWsNHoqvw^zGa#NoWd|fh5i&xiXc=S`uT1!v`%n)C{r_sP+$`*xu znl3#wtZZ4wB+~{>7B7-r8?B5HZ(`*q#@@jl{8K2I0dfmQ8Woge(F3f}60i5q5@-So zd-7&CM!i*rA~%0<7~n?0XSnxMJrRaIs=tkdmMfBcPFl4JjE? z`pwPFOh?Pb9#hc?z8WM3yz8nnC)*(s6+U z&`SK<*+JoFjDfErb>R_q4?j9rk2M&w{L81N8~4J#G*<3&Q~~V3wlJVCQm(5E>ecnJ z=dFYz!e-fl`J-V!c=^PC%r}G%J)h+ieSJV>5d&y?pRQC}KPZC!E1Ql{D7hJtwA+U- zW{z5ao4EC%Eq;LPA=aVNfzoFP(F?(>W>E$E#*0{Lzpbn&kd$FlpsG$cK7BI9DPI}T zEVEl-%gA>do^!44O(Ve~d>}8QE_LZNnzY))?+e1drYpy3>$FP9hLE|D6a_L9H zBAm=r0`YT-qU22-+Ae%P#K$E<5|TdF?I=uOyGYg$SpE($zeVRm+7vkJ0CYHt+?3E2 zB3Z8xTbM~Olc;DEJDG;4EMA^ClNAEV*F^bb%}OK%C13op%||yS)YB;bO&6$>?=?R$ z&X<8Fw#}!c_AUqY{`rO8uy?-5{@>LF&k@s7(=*$QZ(<5C#v#0$5k8Ad2< zwX5r{O6^cH%OhvhBl{%p`9{W*+Z{eEZ0hC2N6zmUA|!0_ek`Gm?lq1UIVR}#>K`9x zHT#M<$~f}H+a~Gmdw)h~Yq=$^W$%}~&WbKmC$p6R)k4abTlke#Y=)7(vp74lG^P*fy4noFCEx&;qb5s@H$ltHlunjNsLx-%(=z1 zTIyh?b@I~ocKg+NS8YyA9(k2OCR-x~bm5LbZK)qf!DOz}!9CzmGIuyEp)gR1B4H@g zLvw20scmM?y(nU0CdoMy0aTD0)ob@lhwVuY>EOXe4zZ~Lwu{VQdQr%ZF=?>T7c7?P8- z9gW5AJUfFcOeA@x2^{*z#fNcDyyn!i1=_y4xOmmsKHW1rztgC(i-|kFC{m!M&S3Cv zC&c2Bmv1!_(|*8cYNMS+56ZxoVDX_sKypdnWF3#BxQh@5-VsUtuu!eajwC-}d+unG7 z-VW>)q0ZHMMo7%zbbDm#`iUq^>+&rwP?$D`Ct9p3_M?p#z=$Q{cEg@9-vp4p=-59& zd9thFEW&-f=xsGPo-JNaBDUTh8g~wbRFjR7Go&j?UbC)M?_7bl1V%Dn^2DW#<}PoOFLgW?|6R506^K?90`w>!HMmJ6nC>MN$u`Qz2sdTl4hIk>&>JB6^FaOaP756#iw<= z%`p52R!f@geypu{t-Dqie&13GH8tHoPGwl{@I0&^A2r8_&*H8o+)wM=3YAj`2l980%kg=+U$oUl|maB7!Qdjh1_f4Ltoo0(BM?B~#~^Bj@N zH-6mJuhCoX^6`=yW?Ob{mWY!|`!M8~&P-&1dXrdWzD_FTLuNF7d1)Zxf@p?DuO;}I zMq?Oeb!h7o--(mbPZvSd+v;5PEC%f67l|)i%*4Pio7(ehK@C!-6p_8?Eds?I3-Ea_V!^~$wb+m z#{0W9*z_lkE%gF)d&mgbum@NKo@5NHdY#a8N%+ar&DOT}wY9RTY0|PLDO18O+j5=k zM)mZz=8S3ooB|_a6h{Sr^v7aIW(N4_WD@H&9&KBnSDh% zPot5(%gspZ&8UW0P0KcR)xin(Ay)lc29F@|LV0s3N_k3?WQ?U~={M%OxsssYbJ8fm z7i(!Np-X9uli&u}72@XRerRwsD-!@@+~bf_;)e4$a|IEy;XbMD^7y$X;(Zk=oVFe} z>me(KWof5!#6U!b^mv!SP^?Ie-!E=c%ODhl=-sTZ=HcsneX`s@na!i;Xu|7{#_qE3 zSjdWkMOw&7ur)~`QfA0{@xlOeTf6)o(cayaS@^319{#9DSir2P`&}A`{L!#3X@vii?M>*-PETv(9Ub=$8S*J z=j?bM8UhOzt}$jT5H)APS$3%i?-~1HvN(96GI=uFCqP$_!uC{GPoFHyiS50>m=W3_Z0t3g4f z`*aqeVcCMM!E))7NmIH33!Y&U^8?$!$t+HTLLq9R-VydV=t>4`^l&?4M-1k;LGaF+ z<~6Y9JfyS}hQGzC95yjciQ%wL#5GHT#cB^#sLl?Ng14|`%J|GG`Nxp@?7Dvbc)RVG zHam1W`yH`Hkfr{6rU?gSo#oQ5WWAO_W4fX1$Gf=^L2XO3pN9dE}+)OBl*mg|+GW@v_xZ+|~5V15!wW)|mWmPcK?x?C^QZ9(x#=uKT# zO`SdmAab-^%4eDd_r&@AQ$oT!yZG5HLwBoFfp|__hEnu1RcxHM&zEMD-b+2u;pqEh zDt{L4bPx1c%QHK!o7~O&wU_0*88~?C;??Sl1T1OUly>``v@b9y0R8>YWE2Ez1>N$O z6#-UOe4pu=Udn;zPm;n>lc!g8qnf2B?*M^|r{dC3-VMv+r}zv%vx5-Q-eHA@j#vJ+ z;ZJ?d0+;#0Np}T%V0Io)#0gPzY&D#*ITY>C#iJ0LGM6N-7eaPzV-s7Z$De~YZ%C+@ z@m_k$K?bn-0_TQ2^n+8trYwu`W62wct>bveS>gv@h({Z|pGXsm$_X4(;lTXEM-B3p z$cH5!fC0iq&soz=wAmY2vTxWDOAC~GOk<wLhPK(Al3cXA}k;z&+C>Qr0>hc4g%wVw0t>1s2z^qLcbg! zUC`Ic*g?>%*BaPB03R-pSpOebq}TjE8fO1}U4PfZ#q>8+(C=&b8z}UA30(iz^li%kA$>A#&YTsGw(mIiLaFd)Z22s1z6LQ)fF_&>Nci z+U^hcDrVV{dCF5i1n4RJ7K{V5o-rpwz1PZV7HDcp z!WlJ&whVIBn1t&`gBR~69+jzLc+*cBrG@f#0Rtx^NAUx6U;^#}hKHJ?aGglq2h{cW zOD}L6&%5SPB%9zQPc}U!r+_o6^6ad0q|Uue10so%%bPhna<$2?Rd;-|U8ijR_?G{trahX@<9lYX8%V zKC3f_mJ>0t4w~dp?sy{Aa)^+ku+Y*P*gMoWsP5F#Z;BuxBgu$70xiUd^**O6i_tDD zs9Vn`1-JxbmwAYxOkt=(zKMv4+SFBL=|0G&gV8@dKh)nipFMEocz9m>;cT|w(2$qS z9Sz0<&jjEtXfXkCCW(#$2uKHF2qZL&gkm7K#bes5nD$!%yh52m8`C>iR|oD767HWE z!7z8CCEgCM@$bk0TCsRQ-jK?Aap0mYQ5u+N$yg=pOM25Wsl!cZ*_HmhY*wSGumxt{ zk2gvh3YAsW#Gyz;BY}OEtk{pz8=NWtLlbo>9Ttw?T?MLRo1!pQFm27RGeNn`Lj_Q4yB!`Ht+ZWHo2FZd~C-y zT{i?goj#J-@j|?xkc~~^1Oz#C=rVC(M>t)PGJ7goKRDMG3zU^+pH}DTRH_LdD&3dB=V~GYxq{+xEkT7X7I(JgOw%Dc_Q*UPpnqaJf?% z%)M&$6c~Rz)st|^%Sn<_@OFGl2S5jF3rB;sEe8LdCc{psNlWwFx4Py77v!9C?*9qYqWF;b53PO zm=wc4t_CZv4CZY5s4Pv!wO|#YN4!y@g8uz9a*|U;j`fSjR}wSUa6D+*^60VJc-H-~ zA&=P%ady`^aq${gb=G*Al9|EA+_Nt?K!>N4Gx5|;Mxfyo;ZnVA+w-@$Rb@Yz5K?=O zkimWz0&|GT=$)bqvhk`t%tY#aKRbiB&8Yp5dWO`-xY5x@>JevN^q!BX{e;WXENKm& zZd}l*?_r`ftA6ZqV4*8Oy^S&CaF3D!>QK~A{$ht{38^ecz2PZ4pK(7Hyk;6d!t_nl z^kNF7wwcds`7v{zIQqeFu=51n-Q6P!EKNnB;U2=Cgea^n_;BGTx)*c@9ulWqXK3gN3~1AYY_jtt=sCC@ zrJY!S^h`^l*4nVK4}D^vkP?L-bwxkoHpk^V$C@RYrf6i7K)N)IVdILAx`nyyaIqrB z*-F-rE3TEtKg*C;f@~STo?1M7JUG^--hr~)=6sBU)|6pg^~h>o9t7V)t1Bo3P|0p# zrbQn2-x%e$sPK^ypvFfv8nrJmAVrXFvtAbek|zQEeW2!L8aDPxfLlV3R%7U4kE2!2 zE{$*$okq))s+&h2QHhvcTer|oWpv)@CV9mk$kc?pl5#%cUhPut#=q?~cGGd}p{fHM zw_DThdYK(QN%CH`(4J|kuP(Q({-L1JHXF>whmap5O_R~%qkhGta8(k4PF)Z_geBTf zULY%r#@fej)YYQ3Mxq`Wp3^EwoQta6&)_IavSXUbdLVG+qeUe#I(;RrMP8FIy0`9B zy++-wHcg{WUiO7X8x$<8j7F^#t1M+iS$mGaRmiuvOJjr9whxDZw0DT*aRA0Rk$KVM z8#rLYc!{=`{8SLjjLVJ$2rl<{OU}%lHFmrkABBBroRhO(R_SVc2f3bTaA0&;!{rl$D+$J-)<5w z*uA6g^xJTaG)L(^S*bR6p4d8%9;x4Z`h-_i#E5=m_>C4I;)H@Z>K_fd`f0RM_V%&wce>Q z^vXKBVyNLm?KC#k$xiui>G8)_-mLE)VcE@cqU@t0)x}8kZ8sg46X!H9(=s?BrmgDq zx_+_wWIyWYw6~nc7$KYRJ=|vq{hQ+AEE`Tc&LER-_%pUHcNzkS(bv7nZ*~bAj#JJt z(|xMETozu5ht={^spO@CpCrtRKWUn;w|AO>rtk@$o$eCqxFwf{TYa&-qUo^802dwB zf!0}TWJYM(bnk7Tp(rCBi^o(b1a!8)-piw(@Adue{;vk_Ja2h*Ge-TeMPSjbtjy^& zKY6S6B129R4>^TPOnh|g;bvT%6RtFzleAAStt@Tjcb0k|Qi=VQrka_r^)! zt6*sjzsf{ku27PI249RK4Z$k8WyjfBx{9D{8?CavW+^wYm_>%B^rP`e5P5&Oo;?-k zAexwpPZGUPsCv*wzTz%|u^6V-^aRtsi#Pk49ml?nO$%xE&@P<+n(D^fNTjfgTG$CQ z&t0{NeqD;sx;M38dMmfOveHEpYhigsKACBoWfmf0bH+ljX%B0m-aFC!J#O z8Vek|w>0NC8Cfbk6WKUlcefR%(4s|Kxl20Hywy&RE3Z~!`&)$Ii?poSgB{c^fI4K+cvA zk7tN^I)j4ks;MTx%rQ#WB^#-b@icPb`=ulotDRV6tJLo_o<)yI(b!U66luPGW++1E%_L<(+_5Oa9YaFpIz5BvpcSxUIj!Xr#R>A5E zrOrG7IVg%rBhJlN@ysp$T8*kx84IjRb&7ZnEFayu)hd5gV=m}sv<9(PB6K|V{>G3CS92Yt~7A3cE$MHOX7tDTUW z`&E_dE%%VBz9=hZD$Y_R2Fi#nMf~L+`h%n zTR*{5Q6=DWzU9&%R%BpP`7)uKl(N129CIXBc@(SKnf1ueKYoNi-(XowiK5=cE~R^o z4(F5-Ni->}k};-Ep+J*_I3j?ppnM2}rp6Pk%5y`LL#f8|PL*d>t<85^?NEMB^>9r6 zuuA>#>k8_;N-=vzZeNhIsykNsnIxJj%b+UDNAkjpGLtJ+mO?d_BvqDCRhCLM7A2&~ zpJVF7bjrgvio^KsB;YA)F77Wvn&h18XA$hIX8XKmrtRF9aDzI|o@KgmG}dYT*v+$0 zjkEVTi)UvlOAM34mT6KMcQ;Kjk&_#mQ*y4x?MGon;;y1Y*peu3kdZ6CXjafFi;3}p zr+h8ZP=7u`91)@_hg7))#7eXEyN@tNBzzP z->)|DX3srqKiAmwB+~yxCt4OMu<1#rk4d0c9m29Qfmc!;%9#WGjONg#@p>wr^(FG2 z>QcBTQn?$AjHf%nm#j(Yw~{sE`YDWwaT0c^jO@kUR1qnRfj$`@?$9EyOs{sMTXqE(fznriAbBTT2@e&6R8V~n{j%WpiAK2VG}r^r*FZUVCrTQGT9E{ zxhVO4!*@}7wsLk&MKG!E;1o1i`Q*B|eg{4qR;7J5gq+S{qU)~W_w6gO^?t`=fTifd z9PaNgVUw;PN)WXQN3S9F0auT;KAVJ{6PE}$z9~%bXuFNTltr{pi!9=L(Zn^4`q@k; zt?P@)Ij69rYT*9oHVRK(N-r^GgtSM5Xg6vFe)(nHQgg_tHyTl1-DL{sH-`lRL`Qj8 z5U6v}-&PvN;323B{2I#qb>O@G=!;)f*LYx`pI27Ym7xG$6$35LWJ8T-$OyaLvKVzlxck7XCjTCc2AKj(+ zIV^{>J1nOJdR|wah^ivYU)7(1z|7g6)5zt_ji(fYTCgDJ(sWE)z{gQ-jmK`^mP3^lhBq5 z-fkI&qHLbeDOjoT)z@E(=x;hQvE8C6CRw!%i8J|*<-%98Ii{|EnT30)sB2bPUD167 z6^ykc<L*iu!HNJ)=+|Vy;A#UZyTgUM|45(|6O{(?2W}TqXf?0ERO%_k#99 z-ih}+ZtaC@VcKnu?y$!T0ULfu>*OPzzuucJS#Wt3e4X~2vccxxN_~7&*+7$0yaOjz z-slKdoFsQ#>DW~pL7ipL>J$21nx^<`#}pob5mDl}ZUM}{9Fu=Ptw)^r3{DH;DOCpz zD;c_1Wc5pb`OntRxWqj4U99t|2Mk@T7$n839fs7siD7PS4jz{ZLSm3lf?tyxfVm4J zGmgT?_WYviUDbfxeC6ZjpFR0nJ`{0j7@W}xwy1C%mHFEZiFHl-i1bLI(!E9b$#eK z!l?ACx8#tA6_YpC!b~bvU9GPlfxD}Ss;2HTYH+;h%Y#w)+8gZKA1g~ojm#mBpo+Oy)?(nsk3eA;mN5Pf1V-09;L3sV%$VykMAB5H~k(`K=ui-^Ww;Uh)mR96btv>dZMSadtb-vu;x%M^*Pf9 z`YF4xn)AQGj29R9CUrf;HCT(|C!e7e&3YeBHq5t&ufY$^335bpG zx%)XNFuPRnKm;1vvFkaz2MKBG%@a2^vylIUBGl0&?m*~0>l=ibJf&|2Pq?87(|JmL zC{NV=Iz@uTA^Ga6gO~76uzSfzg*pRNzR8zJdK1O>RKnuN@vzL|{$r2>fWpT_mM3O( z+)}}PxRIMdox@EshFL8o<6B|j{=`wjO_Sc<5*PZd=qhOA-p94&o?4er*OkKA^2wQ=(Z)2 z=ZS!mRbzFs?%*(ZZF|$`%RF>T%H2I!bDa>O0qo)-1l^ujXC9Q@)I)2|yBqMcP4Uh= zUahiQXY6R8U#er$k4Y!Hnd--|ELU3hYwPt9`&O}Y*e!au=J5jco;Nok){1ZIGfll1k?VEN_u}amy*(l}0Q`@U?KcF^ zWA--$1ZJUrY26pRomt)W%IEv2el_mbWx@VC1f5xfEgI+h=WC_z*Db*c4&6V-lOBc7 z2e!dGv&0Fe&ZqjUo{+3P6uWyr63p0NWBAY5*G=^JUzk5(84@hmPmk#XwX57OED5IV zFA?I8booX%fDF0L4iNE&x;DG#Uf3_Yj-Am5o+9T)=n6+U9RbDeS0u6b`W?HQqil!% zmvGiD@HO@7&9xb&pq)DT=Gsty09F&)0)2;kgPmbk@Tyjg_EHaPTPUZ8diQV^U**Q< z&;#JR$7sZRM7MgSbAz;C`^%0WJ*ze|ydL4$KqNQbUkr>#?@zYKJA*qrs+t=nd(`#j zSC=NuI%6R^N}3&~dTy5rnjIsmz22Q)xBVC}Y&u@N`_@BxGF5X;Y!9gR>C5t>CFJ!; z#_CK_SSoLJh|%?eAAJ9q+ziAL*s<*lo%EEj--3tk-qn4=)31~09#}k?uen6@zA=-p zRj}XJ{&-{7W!(K^>=r3^_p@IL$B)^X0`4OHr`D1e#yOzE%c%9e#EYYx;FZ1AeFEV; z5cye7PVliX^ZD6dadv}OclID#Z5H`CE7NbP{1Dn-brzY6{plMn`%{3*-*I2xKOH;(K|B7MvoGtuzmGG!b|}wh_3zHR6<+);JVyuq zgTMFRg3!G(t^c#XSM(2mudtJ)p^cpCe{l0Mu`{rMc>f^Z%xeX&@&@!Q%*?-|0D}Cy zD!(Nm*w|k~60)&^=-B@dhTvod<$^+0g5qKR&+-r)9Iqi2nK-$K=vi6VK(Q@3L9s1a zm_R;DW+qU}TtD5e)S#w)tB^_Xmo#NtpD?fUo{j!#r{fM|JQ;4=@I+C?FeRl zjRnlfz{Lu>R)2G=aSzt3D=#&|87fRMzO8To-Eu za?x+m&x-Cyn@iGG7A8Af(Q92xh$;Y)H&W-prGwtSvlws}xA-|dZ&Zl#9AmZJU`Qtd zml`1mb+}6w){W42I=eD_>02x^Ns`b4{5SCz65YA@AGo$NE}Ku7p)e3*3fGHQwDH4~WHE*CRC)<7Qxpz`S+B z2@_@}dpY-0+}Z82u{)xCs~jQEc2ifQ^K@=FV#`gMf+fPLOb_{8LY}%rdj1|<$k?9y z-wppi+Wo6Ehmp%~-{-$MJO9-P{#zgCtI_?7kMq^1{ujIS00mxz19{lF;Xuaxw}prU zq2Dr_dJmN2FP3b&v{J$r>%2GQWyq;XzqKE>&IwxfF&i^6A*4{ z9C3QOO|sKN`fBvEC7CL^x+`5o0z(QYMFN3!BrL)|B{CmW2n2?M#q?TXl|h-ps1^`* zU7qG_g~6_|t#>BhMm872Nh34-(oC#RT}QD&d4aY?D66tl-5_-{&&9mtaUCux+TUVk zXzXv6n&tvamdq;u441YY>I`L#>C93`-xX!JVH3NS^b95h8mZ3csUc%bW<)E42aGbe z^xnMYed>)mli1&aNry5YOq`B&5U-@RZn;1Ayxvt;dVc=py{%$tPp&~7O`OXz`Vs}! zkiV?!fMS6`%(1Qxy7ENUaNvZ&8;7?Zkv@IRAXUm!}C5CVyUS&*QNl=f&3DYTquGpZjfl1A&;$sQ>@~ literal 0 HcmV?d00001 diff --git a/packages/assets/fixtures/auto-placement/field-type-only.pdf b/packages/assets/fixtures/auto-placement/field-type-only.pdf new file mode 100644 index 0000000000000000000000000000000000000000..836d65db7da28f75e36cbba053dc36b85136e461 GIT binary patch literal 40544 zcmc$_by!@>wl9jiyVGcJYiQiv-GkG(OK^Ah;O-WjAOV7h;O;>aBnc8aL4v#{Ypt{Q zz5Bd(&wKwoW_Q(`HLHf#7|r+9k3mC5j-8u>7mZ>6V0ICW7X;t}xLP`(iHM+a>iD^V z0i4nnUKUQSwrHFh7Peqd05=zOh87y94A|2P`o#U$ld6S>qoRwAE8t)2{ux5!e7*x) z1H3%E!DwP)Xq?*6J1Z|84=`BE)zu5Y&GQ!xb#E^xdlx7Rpuk@PdiG!+u!n{R*aqwY zcCmuK`4{#7cn6ip-qX#=!cWH4O2^*I3H&d9Di$ub04A^t^D}p_i}ka9&vO5lo`0q@ zX?VCgfUUd$ZXT{~uAUZ7%utm*T&=yWz#af5ZAW_xPN=N_&fHKN$-BDRLODQLc>=Vc z6ru8Y{5$n$jsA=JA1gi^4~Q>rdFM#nM!kju_UoQZsqBC@+)Ze}I z-@T#<8mFwUm%O%@g%|jb736^c;2$eJ8`MDE@{i=t<}u(0@c-8fIae32Khx!S0la@k zIpz2Oe1G480MFir`cjVT-z@vQ2I?bkORqnIKL-If8mE+nC-@IFP6e>jE3lWnmBq6) z|N3yMg01Z>q+ERg#?R3Kf_ju+kOwNWG?W(D1sW&Dpg&;)5PW6`o$#mQ`}^sS|Dm)0 ziVF=3sI#FOf<{gT4vUr{-r3&CwbM%tNwo`1yoM+g8O?EgMw z{;wek>Y_4uS7eWy=PmoU#(!_#XOsQ!UJ>NwR09D2&nC-C?Nb^yCx|Xy3TKLsz@nt! z5$LkZsB+eFv!^3k)uXA^PJaY+Dk^A0;JiHDyjeLug&u>MP_XuQ8DdM?0x{Etye{5{ z#avU&%%bN~Na%%yQOhU!t9E{SE%KBcNzbzDJDj>sGkC4M@cZ59lU3<9ssDRq9QoJV zaJ85XKk>xyzcB_f-|%8trH+M{M?|A8P&TjUTl&QJap66Ts=laRZU=wCM8)hPPC3dgSoU!Q?goMf(1<$Kf@lykAI2 z*82Fk6?rZk8p~(usA=WC|FrmX^7zN%f0c#*CQU%2{aGocJ>iWSts7A{`Tw4s}p_fLL+ZVeq*T^IZ3 z;0N&iRek=okN?d1?<9Ms0j*J19`Ou+xje$t9E&xD>;e%`=}GCHpE ziZZGeZvPVf&#<|Eq16Tqtt9Fm&?51yGSfdQLkG3J-Q1kO z&d-~j>pAIg>OUt?V?M6uw8I79;d>VPuYAe{00IR8d;$UhK0bcv7upMQLBHGpK5l46 z7l8JH+$PWVF$VF2pf@0B(u1yeUeEWZX7h7BQ{xl(i#DGC2*AhB1>om;p7DnZ&vP~4 zsbu0AnDK z3&0EF1Mmnw&*g?vfpP#sYY&v$^F1#=bUiyl9+~p3rFXf{G0d z+h;P*59~aG(5$Nsb)_D(*a$*hYvJ~H0tbQk(Kr>MKZWeABwe11KXlnMN2xz$kDVK8 z0d^i}!_6fCwFMVHREg);&u^WPK}Zf-6Rkn^u9!wmp}pw#})>Fj$D zY9PVq+o$Wo^}_A--=9=L6KAd87*mCn@$ldb@$k~wQptJt6r|t~1Q9D1jAWIw#>#!~ z8=~rT>qQ$Aj1Xs6_JfQa`%X2N{E6y)I}aa1KKby|z@n`^28XnNA^kBUJo|3kv;SOp zR#-R`rWscP@oB1RY~>qrbxc_MHSG5*pz&sXUU7XfT8$W@f{&GB@cetQ{v!ck7Vfx6 z*y`2zk7~6dOuJ7AOHGhBr-t=cq+ekzctXho_+2iHUm0^ENBY3N>-PHIs{6L-X@WU) z5zfxkaHTDnod*X&0SjibH7oyh^l5OAI9DzFh0V|FMj^huz7X!YF47#mxq*u6^8;qq zpD?%Fq3Ms045E3cTDTHw@Lc^N%hB2)yWCE2QYkQ1VOfs;0VDa|*l=UWFsj>iMcS)% zLTyJ;22-5BL<$xg_($J-eaEc%^+QYJddG8ko zyamR8aFPf$!dq9&Dmef&7!g{*296J9BRx>J$)HZzKXpu|llSC8pgcrAu1t$D6}b_xghj9 z-8mKJj`Y!L?nmaY1=Bkdf1(EtQEilA7~~**6m;1Jbq~5)+KzT43BK3nWJ(&LD!e6@ zBi%5VHG8XUZ^=K7;KOZK zF6kdlsA;mL`RUE18GjRVs;ZuE22t$QmUl>^wmy&K5koK)WD z89c5g#i7w3@OWFJlroxNB)tFV#XxlK_&wHm!KX)~vSC*3ee^f0u$X%CP^^P_)Yewp zVF$bJ7oiIk@+df^r^bCYglMndd_9r%{rm$gdeI~XUKXmr`i&8m7XZsS-Gs{POUA!% zFOtOmAv7wRelC31i6p&pO&3{wvPPO9Lo<>ha!;Ox!Wx7y#lVeXM~8_sr*ukF615~L zL6?gP%e{bro0OwWcH5mawRfbaCP~+(`$_0(iWg@souExKKK3Xf+vAC0AA7Vu!^glL zmT)dkoZxMO@CbEWc7lGae!MtQlTxx&9A52Q+))B?><;nUIO2HXIO2rt*e5zuG*~$L zPfehSHl)IakSq*yJ}QMT_#VoKh&gV?Je*~i${Buytz7K6`oj@!Je)KbC8%GUk*X~P z^-7UFn~})pBVM+fqrToFXpq5PvEX=ZPPt+wxMI$C&m={Krs<~O{Nxt&MDx@3$_vrR zPjO|;zv%UFNG8a^jRj;*>EBG^*o+tSE)e&6bzj=QW{j+1l(AvhgH2i-bTQvdjK52L zwjE;dBuKY089}|+g2%c?J^#@^xC7y9Hv-5K^)5BLSrv(ESDQVG$jBdt$J!r8==d1+ zxU~8y5*F!Boy5-}Jna$QCg)h(JS_JSUeDn8sCiIHJcbfOA$1VjI?JAR=c&GLY7an zdxtw_Me%?_gK!cY>6aIG=_THZQ}&x1*5Zzakv1bZ*2#JvJ1qhg0)J>p`vBwjp^6$n zEeJVhlHhm{MoW`_nsEwyq{Ka3yyiwlgai?kr}n4d5zGfM$wr6nLQ!<1>ySy6u+Bkvsld?LvM zs}WbiBVl8X>Qg*us?@cFG6{k?C5s;fe>JDFBY~WE@>OF_%1r)+(aG1G6wnOzz}g#ydt_RBwoJ`KV=z;k>)!FJ<-_QQS<=6jr@#p-5C;<@T(_?>F?efc%H;*rl? zsbX=gZn!~k`umo52*HWU$M{`nPtwKjm%B2>k{x~T@b5#Ry*p_T#_C=Sg!`Ug^Tg_g z^wpgFrRRODSiIS;#~o8}9P4rU4dI)LlwJS(9I+dgqHqvzR(1p%F_uHL+9};{|BzzKdL+Mg+y+^erb3T0T4(uZixFGlEJR4<)m~O=w zpHOY3n0R4R?Lw)lUhmRu$%UlExC=jsQVmiDeC*0M^-~h@1x_D2 z=e~tM@nfR=v57Bg%7XAE4^_F(KB0)(`AEHQ!Kbi+T~vSMU;B#w$fm>E5Uh8};&Ypq zNJUj|51MZ1`Y2uZN&U$`4HX|d`;yNtY+hg$mG@q96jk?LQkjqaPLVR8unO+oe3 zd$SYQ3-x!3u4Az8WL?JqpQ`vH_9^{=Fz2!5xJd?a_3ok8X_$wwKYDQRIiAb}ib&n> zv#2A6N^+QO;;(KlJugi!`$kH6YE|kg>x%15^^lie)N<;J)2L<&RV-E-LoZ}rB-L)4 zs4uH|1CAye8SVOZ)bsru&kCL*lHa}dVp z-K!m?z zadv)27AaN|b~5^n2v+^56VIu4s~%mgZka^tK}yD1UKhy^W5JT{> zHPz-$;j{D0amU_+I=ALG$>rgq?jdi*sm|hl2gsH59?VmP1fI|^l*gsd@1>9IH%TCV zr9Dm&7ot1fkrm1p4u8D41%}6qKT^%ke(}@IF(a`>$dUl?kI&XxF5NlqcaZ-^cIdG^ z{E}MeZ{pqTAIHIuEbM)EYThBnk9^s%yHQB*NVZ2xQ(qNW4bzzBO-?M$CmM8F^(8rv z^pk|d#B^;+emL-kUFVANK+F5(a6W|7w&LLB(@en*R>9lJ@X_t{=zepv+3@79werI+ z7_oft@JAz!>zAm5q?f2WfzuiJ+HLej_ywByvo?)mM$y0HD8HqTEYm2@iC^IER|wyH z>MiFMRZJvk4McdIgud*)uz+j6+laaH3L9ey>7fID8(y^c_{*r|0E0mDqB)6y@#6QC z@>)7I|5x*yGe5^1XSMfVp9O2Zp*L)T{?_?EeI>jvRkO0QgHJ5&&aFd=q4EoT_x9lFLD1c*bDd3||kl^VFcR4*x8RsZY6yPeuD{dTzzWr^+HReoUbG>j{+9$f+ z2N}Lwuw^AVtcyiwhq%FzDy3)>f9IXR*|}gGGoxKxzSu9MaClJt09$cfOUE!ZvGmWN z$p?3D0ge_UI@S?g3qA1rAx;(Q7i#Bz$oqB8%U?Lr?`U&UkbR1&7@GCkgvvt9V^FHQqMGc$g zXp?11ckY+Kx%s!eXJ3E)8hzMSexUp$AyPM@n1c7spo|M2(`X;x^wL9GtIMRrd&DTB z<;zU+gkl*!zkz3+#x%_|g7CXIoBdObm*fj~!U#<@Bf2!oFDZYlj_H<~>&m_)jCYjU z=wh^vQ$}S2{-{F>LB6!C@d_Mby+nP?V*sXqUi(=iw>$-@`xJ9{it?#8l7o3)b4;Bod?Q621$ms^A!1fAre;=k(YFe z7H$vpKQ}<94w20sp8F^x8_}FOTn8QN!#szpz}ue};BA_>Ut?T;BexG4e1&lo$#KGg z(xXNOULRZ6XQz-)S%!CrN)C*gNX|2VzQT;gDx>g4>1l)>0oSooDO%+pF|GC3lxj*mXG@OVb!G-dCDM5YyDG+5!) zo-J`hHF>XuFNK{LLJwPvAEUD8L*2y=pW!l=^QHOUUHbfGG48DS)GK1VjCJyGR8Y16`= zYxp%Sf!27c8eJU^=BwWeDfvmw=}n7R; zqKro2#AWRAjzsOY7s{k!xSO~s>b|6Iu)I-4Gw*m}g%J`c@#HauH@o1I z(LH|R4Z-Y*pPyO4SpZtazGQj~wfg!nw^ zg`~^}JT>|Y%U$`r6i#!ora{k;U;ceS18$vj8+i=AZ32s8_{lf;UAk+$vMU^zb3FEj zu!r``7FYQ&-tTd7v>ls3%3Pc|hO|M2z5RT~}pF`?DU4FPy_(@d~ zAZN03>$(zfx6_clG(sFTZ*&Lu^Nq-ihtIrmN~mb`D%FdIu{ikfxK#6SMA@8hC7n_- zphgVR$jv5hlARp-1{XG^#$4R3L1>ggB!}0P$+#&bEw>_h37r%D9Gx2Nw`_uMm@g`V z_2t7lLFW}Rb|M!oB4f_39B#Y>7iq@cdjgd(cx`S%ES)kuES*v`xH?TtLK|}=nWa)J z2i_7`MzxIG@q7l}a#EZ2QcMoDVoEfEocTDlHE!xFi!nI1P)hU`96h!nTD$oujz=U_ zey?LmY-_eLOM|%t)8qLVu{A}?I7!+zMSS`_!aYKPsOzX}3mh>5u}H}^&TlcQ?Xg58 zqu=*mRm5i}WDldm<`&rUA1%V8v$=U!6x+xJOVysPzhKi1i=`!zr4*y3 z6ylF4wBQ*U%-FOSxB!deHPIg+nLP%Q59D0UB7Q^}kF$}yNLE}(K-Cl_v!U*Ah#a{=}z;5QKD3$o28~?f~`&B7_Sp z6>D^~2_hAG<5a~?K#Y@QPC+EhdN?ZElkCT<1-LJBUqAdD`i)Z>w#SI-5Pq)^tZ5Op zN!A<>>u8R3@&mhH>b}r&SlkuY^YIq8p0MOPRiT?aW_r1P8ZXyR76nN#NF-}L z3h~r^Z(orijW&DoB(-9yEPY>bZ&zUA#4W81^QdURW#-O)afJ`${R+hA%@W=F_Pk5G zyR7>6xYBSZ5M<^y_yyP*_8t|dqZuAgM6(Z2v#XhAD$Bqi)ROg?m`J7}Z)zd-=NO@^ zcq6fgdh-40dpx3IW*cj?)uAYjrK-h2>xEw|jF|54=j-1`d~{-^E&AwGj|rw)QMu#| z!>^fOvyc&{OlRC>i*wBd)&Iz}qrY#=6}1gKf5p>wx&?eqkg4~UP+m!oX`0_;3ntvF zr#O)9WdfUy+<0yh$g0V*CD&PoNVjuICtpd%zo%MXaa95+C8bBc1unY3zkef(-iRxQ zm2GHKJ4vXB!dk=p>P1^(1HJCcBAM0x3H_W;+L}8;P3}@g{(2^kj?3u=rkkCW)g3DJ z1tG63{Ld<;hE9JlYky$lVZf_(Dr#@2?k+Q_HZ|aL6~s@b#!wpqnYtCZMz4+dWqt>yb?`+6n%B#CLc%==W2c_zT8k zFDS1b*HboQ+P||m6~5BW;=%{TQ)w5 zs4%HeKyzbWq_MSo zLGh0K6C`nGZMm1(zJ+wCLqQUSL9>ZX8qMedE2L@PO(Gp*D^xp0MuT2*PBP+^)y%o5^cF~a4rv2>g!KvsJ8E&w*((KZwK0RQ(2W7Itvp3s}dAv>iWvE|H-`dG$!1mx9Rqy?HKpuUn3D?hml|7dPH0R>qM$!FQb z!b2u&Yo$Cf`%if3{gztiwYKb=kiG7g@duG}CK_-z%=c@-@80!?nyFQsS1vLxi6ZY^;!3bKgY*xlF@GCJkYIAQ>RX z3u18K>pqR$IjqZwttgeRec7 z&CJ{*nyt3qC1)Uu(=>K~!5t9*l*I?BJU8}mrj)xy9t{7iX*N88IJS7TdDQ&r?aDQs z)Z~&d=msY?+6L22TWQ%8aaCkQDs7R%ksA-`dlRY|h*rLNXivy*oBh`7WvaPd6~8`T zOWgjY$XTG4r-_Tqo+3L}Uwf`SaBr#VN4R;ZU|UV_LU=Ha*qc^d4S0PWZ=rjs41TsXff*{R8S=0|Zg-OdW74p6q-sc3G)#RQ z^J0x#`;KeL@Op68pDN^??S*H$(hNmlY$iq#_YD#P!Q6v2_Bt|lcn&G1VI!8HYB7y1 zn+5>iFcUlvTRq&sgq4t85zCBDFrQ_fG2L*XW8@5urEvWrZaU9U$4KNb zH^1uFijNN;MEwo3OB2S-rxLbcsfh{A`1(4fdg7@X-MTM?MEdFudBOn~U*ZU_SgQ_? zR4rDB%YP##G{YlR&dR`9N8C$%N4kzX?HqGBsi*YiY#zGteqQN(yBzfcdBv6F!!+&T`}75hC-ld6mERjD z)4fm}TCqVDB_d=h^PCz}%vsDy%(fMQ;DLypQzN|Y$2C-+9Hw%nfM^dCs2rMJGZgDM367$ z9nR^!)i9bcp{rYJpj@IZxMg9&Vz z@<1JyoGqIH)?*Z&w^t{ND)#Y~9#TLv$&FMEd58Sl-I}P+D9gPG>jJdN3w`cJwyy-} zK((cU9ipu_nXX>fstJV~!lmn<9VYVDK|bnZBNGQeo7oyvLac^uH?@EV^Ir>D2!ey+ z2yNM&?LRtv5+A}%)?mpO${8sE!hA?shLub|AHj=gW~+jYhh+-4k?YJY zIU$mJuXq}*e~i4}%^FG`)HwS!XvU+QkF-m+7kF$D&Ca5HtV3VEzAFR%T=Z=S?)Qg@ zPh>4`ysfPT3P?#mbJMVHpGMAF6E zy^rOXgAUZnB#Dmc5fIHh`gJ$tX^BbKz3Hc&g^gL;aG^n|UxNiXs7p3k z{IUlN-D_PrEC%L^zr2sTYN)dPGy=y^{|Ml_F3M=RoPQ=IOdSsB3$O~~DA9GZi z@6vf}4Cj(5keb|_y-b|N)$*T?CVuQP}zK1HS&@Y)DWkCgBv=6S9!uyb!> zHGNWo7L;zT#y0B!r-j1;!I?FTkil0AV!rBz?rK6Olq$9&u`su+>yw{&Zj<73WI=ia zEn~E_#vO4fB5Q%mDaKUv0m%HRS4fM4!Q5DT%#T4BK1&ihLYh|5BP*jdUh*v4iCCH# zKQ!m;?>LdMh*A$wv(no>vCz`PnWJBdeZGQVg(w~Q_V?V++ zdl4~FHhW))(*)2AQ+FtYD`^m9<=T~K5-_%wGGT{!aj1z1BNt@Ex?EVbdbo+VWM+VM z!4cv)GoRQy<{m6N-Pnih_RZvCaXCYdmf%q81^Uwt$mMs%DK+~)1B$lz;C6%}s|m|5 zoasKEQ-l=@mpvRsIi|%iMoTgpMQJ?-#g3K!!s^}u-H8E2giar~BCaJEKYe^oWi3a+@MlRLQCNKx_K-BR!)8q#`f-)*TNRR`Vgy^h@2agUK`(4o*pN znyJUhTp~xlK2xi@*BgzI_ZNv&``9|DE%wn>R|=Y_C*NzD&W~%Fw5te@2vt~SW?6&H z2k*SmiHib%3>hdZJH7G*qNu>Q?CxB*Y=49s3@-a<4nO~af@qgsz+lnVUoAcEh^WIEA=XgVyCoM4n-BD!XV zh=C|X8rx<811DR2t13pRA?;uHbshJajmE$4?mSQ)HE$+@;#v-Y3zD5Qgjw??lMdW| zDy#&)Y*YjCnX(gfelq#f-BK;!*p2xuZ1JZSRABmHu+CPtta3r3`vSM?-G15bNG^T? z+6$GLDaKP|;AGWOu~>(Tzm0t`S3$mg@SBTom)|ypE$&DSWjLb954iY*IJUod`|C5g z85IOqGbN}+ECN2Z#%s$o};P%49t`4MW_}TiwXhq6nhfMh*il0!L|TkYPS?Oa$wlKguc1zZel2X zLRhFBC_tadrZ^`6B?6hQZ+PXEZwbHW2l;IVhO<%tr`4;+cXg-Tg!n@l#;oP+8N>K2 zbqQlJ@w5ly#P&)&ZAy$W!`8ha}mLxZ*y;3-yHIo0d|!!>vi_(7uuFj z3wT4gVnb?~+ZKoFx3nX^U&N>ZyzhGzDX}(Z>sMbzRl!3x`6|3z1&{=v}}-_ zK@?9QJFPvO#r=lqXGI)-e5~`2hGkI`742zVB3q(Wor;117kk8!;uCOOh^i`l7QJG+ zTsrUgR#X>u!v0d>W+K*Qg_=pag(-NaLooRj~Kgra3h*%os z%9kD5Q8`7(=xs30wxHx1q2zW=-)J%1>xh4=?rDlDKIQXILdxS7e@GwHUr@hA^RlM0 zDSw^8D9!HJ(b^!I>}_m0rop|s1gy>i|6(>HH8P}g)MYW8yk9EG0vk4J+UGt{1tdRy zjL-x*bj*=qMB}SYkR&4XJKWO-`%4wi(?3Ecim2s}EV!XOkvpb#eeZQbWW<*xCmrgS zTN|__!Pbqnd=7?=b5!FL4_V0CL+VL#2XR%_7|EyA-zL<5GF)r-!%^nOEVI3M&{>#h zReM1_ezn|O{E@49Lbuw=GnT4Vt$wj~S?H{q(Xe_^aib}zIM18WFk0kGwHeQi!)>jN zOs1VR)vJW$44cpj+mc1c%E6TH2CX;ripnXqumZv;UcgoE-)RWc)I46qM=5 z@Qbk&mWw3EnXHum7z0U>hh)j2rm=x9NsZ@t$}C|me%gHTYw25~r?z5+}Az>ieR%baPh-tDvJK%rPxzfBO7Pn$GZ1iv%rcoN0Gxi+#05^`CINpc)k2ln+$M%(ye{nv`yQ| zbnEnfr$Ikb3t`i=W6S&W^mLE^O<;__1ctNM6N{vOShDD#z8#1ZD=Rk22zIdbjK$ac z^10RNDEPEv{rjsvL)$iAw(*wNj~}J;M5i61`1rCOUc9rq`216wsB}Kq@L}l#Xg5g? zK0u2iSN?J>Kthg`#RF~<5tq(A@tNHF#HBYuYqE z8O#yvb#bXPTQvvsE|h5t0bB|g{QB{>sSe5zAo#VRY=(tJ5x+;3x zrE5HeI^=I_2MGU{4$l5WD=mi3o%4PK;OYyS5oAYyBO^IEhr1SWM3LlbBv2Gm8dgO$ za`$yrRdq#muF8qM)37)zyQt{)DX6+KQiPf6epUL_#z-bXg*6!boZ?{UcAKwX-TWOY zejDpZ@3vj6=C{)P?!^Vxq_qC?eEXks<^LQn{u}54R+n7)!cAPM#A7!?xAIFTYXNgh%^opXiIM<7y zR8cSH0JqUKbWdMlCz?}yu3)N(PHz6uQMj{#%XDS`+bF_4!uUG7)sLxvg|y~^qLiG^ z-r$Q~n6oN2{ZYYH_!liDLmaNV9Y1=m?;Ew}EB<~j=L$Rr(baRSNtlU>(n(H2A>m$9 zENLtiz;sBaWfsDfR`H8Nn-tHzEUDd(_CU7H;Ii$g4r3hK;K%`5uRva0htXcdc^RGBgrD@;m-o9|(Deo~vAG`HA@OkU( z%;gqhbj9mxxOt5ZbKKPY-*^Xldio#d{Ljz_QvZoQkaBgh{vSgR_?}O^YyGd#gTDY& z|AHR;ne*R?^?dI8UkB5nN9z9^{{A;?#Q&{y|Nr6+c>kR9f5sg=BLSee1D?N;0e>(8 ze1iNY&oByO5cHfr^d%Gqz|Rdu0YDe=@pA+C|4inAf&`uy@$mow0({VO{yc&JekdRS z#PeqjFAxBN661p&k$U=GjYe=+9!W70|9W(HM>y!UEV1N(w{~9m=#dC0TL(u_( zT!Q}#U;v7p_+J47e+K^1OppONXK8 zzd(;J-X_9opjuM2;JKDJ9>Ig9gqnlc9Y_- z8+~cQd&-)-;=8)i{l#^GsA0N0?|wf%-aK&csMXbf^*ybvE;_0`dvivG1A_%;2T;!w zEI*z6b`ESm>=O51Blc;sO`OF@IUixa z4!*l@Ok4k(%nM&Cf!5q02Rm zHh9LPD4=W4rGF>DjIr@dtfpJ#9T5T&il}Z>papjO9C|?HE11=hUx(5JsrI2Tjr6UB zjAP@ZY=&DaNTfV^aV|oM?h4T#-%l6p4NDsyL5*pj4$)dCXo^*Ex6uE{bz9#Iiu(X%;>!zGWJ?2JNTmG#*T2j$u1jID3o z1#uN}VwiJc{76t(IVDSw!!UpqH@F$&5;y|;yzMH)BaWlf`>uZ9tF7*<_X2x(D&Qw3wmKxTy&&pPXpB-c>dE!kPl0$25yEnZ?oZe! z^&y;e0#cL8K+p`Dz`~;i8zeW{4LW67u@n7h#=O!<25rSBXe4N-K+>4qb&QlkcX9c^6!S)&HAo~(|sLp6D+oiRw>_}9m8#o_#n29#g8 zrsqju*hXi3-^n8zz6_jT-bsX|y8+PEO zA*Nv)wqzS|;k#9P zs%MFq$0e>7lf@}P^+RJ#xtCyaE?&6>F2N1fs2PuEW*815Y-{t)JvI9gq?8wfhtZsy zNcv1V>b8^6PLBNirvtAQP4v&ZSl+|?n3P?RpXL?XYa&+pu8;)dx{}uPeX>1ZmpS|~ ztbe?i+D=8&eA7uBu`8r?X}pcbz(D`sAUS{x6V5|?KkD2Azu7g!OKIc5X)+yYS>v&@agU?yBdq9H0<3V!I84#*JsC znTV$%fl`T5j*+1ec9IiiB*TsDT{AAiD-lYJM{m&We4-f&hod$ao<@QiK2L&)K4vMx z#w5p$qND+b&S(zD1_cwqRx(A!at+OuVSwk%@fZg~Pjay695m5^WwArC&=WzxQw?O` zsU|jlvAegO1U&sE<0T`#WN6G)=GLSt3>=y!O4?P$ph05PYfm~i7y6l`WY6-WEfN8K zxtXLm&jT4m7V|w3LvHjo^Rv%RSZoE=^fMVrSJp=&qc;9SFu=#k>N#n3^VBNU94j6oC^p3*he8MB{+r`qhg1KvKB&bT``|=L04F0ZEFWH zX1Z8(4Z2ZF%E*RBAG)aiHKcYmPj?ot5PPm*j8d+7NiYAh5S*_{nirw@3?2iMeevcB;X%N z*zGE)t#I>>C11wgLI4~?aQ>;&Nf0_VN#FyDvb)#=%A^~tXsBNM9K6BIFrk4Ab_pi& z0(J`?@jP}5TEa<;K@tN5{$*k%vmj9lLZlN z7-zYo0-5s#5$o?--f;wnDIfRVFmP1DW+tZceu{?{h)k zP<>uP`SoP8i;VnuvkOUo?yWm}u;k7V<9&L6)N~iL`RYa(gg!9Zbew-f8LYZ9a^8~G zANTc={0_-QLO2NC*td&Nf04f#b9HXjo$gI#(*gFHjF~(#XmRyI{-wOxu<8wa5a#Bk z@EwcG*!f9)7vk!ozB{W+Nz*>askCYL71blE@d;}e{O0jw7e4<&_NDE8SbyR`Nko6- zz+ zEy?0>_^u4G6y!_WJCRrWoDe~g$bp5Uxv1V_&$X!D6ETs*fMc<5V>{4haOb$q7vXxr z_LAwWe0HC^24X0ZtagV{^d1Y^j66U{MWT?87uOPyPZoX2grN-*_I#f&k%<@QugeR; zZ)E|OB2-oCdx+nljqJBl^*sg=sp64I-%PPM{R@&HyrzBkJ9^V$dV}hkqwQJsRViCKeCx z8z&Z?a={aXfP9G-gg|{j*n=E%!Ll7O?3;8p_`O?uGfFR8YptbB{lhQxh+DX8Z-0;90)i67(O+tJMq=wK+wVbQ_FYOK-n3(ENjf}I0^vr2lr0YbPd`D92a6!=#??jy*~=Q zlJ+ObM&4TXKd|(FpZj*SiTfP~dQp4_K`**=IW&czaqKiI(6jX6Bsfm(*XmiBg1%@w})T`gAe zaw%knImP^e1}-yx5p6uk%%qQAuC3dztvhlOk^0mY9Av@(@_LF^282LxfMEunUfxGf z&%@@oU`rP@17=5^&y0rbjyimXN`8XsT6sF%ntE-}wpQJvoXjbG`D&J#G%*X~*K2x^ zAH`S;BY|O%eHpD!nqU^LtX@-LjSToFNs9V`yDE`*vx-hxaEMFtRJY~UM~e<8Z{>h4 zcS{$n6JAo~tOXk@7c8NqDy_<;%zXHtB9$E(1^Oz!G6I|;RobDShVpbrr`#5$yluer zBJ)Sr@}8cI^?G31St;fhwMvzB$r+i%+$-)KTe(-hzxhl+Q?64WP8}l9vaC)Eb6)-; zNA%`qNaIG^GR;RB?+ zE(4>*KylpO=^Mb8qc1nhm|1CSEs3}NlqguU$#qh6lYZ}BjOz}2fFOquJy)IkZb3rb zv{$+rf_|lVrWHs{E?WFk`k$-N*WWXNmi-rw^fxG9b=wKxTj|Q^jZRIV6HnBEl(P&P z`w4YaiRu?z4v<$eTDG~(dg~@yg%4?=rw?Y1BeUGB?p?hT^tZXpW~MbK+pOX>C^aMS zKR1&(#itl_0bP9!Q2F`lD%^3&S3kxIy|mZO$kI4J=IIRb14fv`E*ZU_{phrG9NwzekaI!83HW5X)i{wMmCQ ztG`Gdgs$6t87R1aRX#mDdw%b%!o~14`{-a>pynB@uX<`8* zFc6EBVLu^Fvm>`oOq)|4p_oLMFBhbn&zxPGr^3LiwrpM3qtaJ5*eD5~qTwo(a43_XD@a zJbW@NiFVDpiphn>U@|Mwq(%cpWb$P&iMceiWX|-_ML4oau>})E#T|)AGi+pdJVds- z-_JfqnqR33dj`ZNXMfX{U3PB|D2y|_8TgDZz0uneyuE86ebOJdcqJyN$VL3M3z{E| ziM&|n01wCV#eKO&CMCY^V8+rH!&BW$%&BD;|&0K0D!I`_6@>-k% z0<`JOr4%WUOsPPNk|Wrt2t|9MCJUeD3eHLa0)A6{iUp1ki<0o8C|?3;G!-gw14t$= zofsoQCnz_ql{#uDi?s&qwDw302c+-SDw&#mh%|f1dZx810;!mM*fknoTINqN5Zh zvFNj?LKdn3TFizNk%-ZB0dufIG_u}4DNPGW99@M&Dze25eXj>vt1_<};QJx}LW679O^$bImtFdCA1m7R%>TjoTP> zT8$288-_O|Ra%Ke39m$aGct#s4C2 zm>RpHQTO0l&|LMs{3~4??T#89n=wm7(s7!Ez@UP84TB^LWC`q#Eb7Pw^w=W{*QndO zw{IQ;NpukEQR68fL~`z-_2#(Tuk#@BOsq-koanU{>2jRBL7*;IeKKHh$2vlEI~4q7 zFj931ApG^Fa2cS^V09t5HZ8YycPq!y1M$5wSF~!>-yB;mC6qq5CYP{nR7oj zwir_G|M`SVT}!i7V~>5AMy2t+5t9M&mGHV$Z7XIq7A>c^rb50g*Lq3VxBk~byb?;D z5JTC6p$Li@I$IQxAHE*UDL?1mYQmXoOcU>XZ6)E%TBynEc(}Z}ur6%zT>3n2zROaI z#o}<3p3uebV^cQeV_byMB=-?E#Wv&~eQ<8DMrE_| z7*}qDqC1TRIljbnYdj?tnvn^kv38kqdv)SlMV9pMZh})Ul-#L=nfP|4#Fa$P>;|J3 zYq@O&WUx9&Xt|8Fq$=oU5SpnRcmvM7h?w|d81lfb$H?+PE0DL|WP+*9;S&*c0X9O> zE}Qt1`(9;kUS`&7e25-b@ z#i$g+OUruV46Qvl$s!$xa<4f+9DOUhMm?RsJhH4iCbo9it@O^!c89+8MDYHm#Dkpe zuZltvMTjQiCr^a^QG%Q#KAij;FTX^o}IZv$HJ2xp zE~3@z-d#<_(Mp##Ie2w$$FnhOq0ioNEJ?E`N^!tB%H~J!$7~8aQ03i+4r0xEDTjpf zcn>dtJ6qy%x?PTy^7nQ}z{TSbW9-1;Cf)ExN)DrN>iE9xbncLNMss*evu)HtJ0-Ym z6`^!k6n5?QQOi=mhYO}Vw`+0AwJVLR|3tgiLT^|p)`BBeQz6E)vqGQ0H}@h>+vNDf zGO=Ay8cIKaYfZSrAEKp0E^PwMdMQy4k-20EfUhnY34 z)X0z1o4T-H*16R3D8oAS!}t&J+T6N_hXF>_aD(&%U)?RDZ@+aX1~wF$VwrY+O>Ze` zHMBEY@KMMnf4+IM@WYHEK;wjCnU5GJiU7t@R`%%3SYk*lb2WGFy^ENLmz;=t)Ac2x z&!w9NbRl1GPzXqc0xGj!CA$b}0|?sGYWB};Yvt0VySd@w z8G7})^El!Di)G@#PbbWFA&(bvd#1egiSDhtE;T*@a=^hs9$2@YIQcB@z ztafm4tFU~$W3+#(TxJ#i>F|4wG&N-+oqH2LI;WIWgOQ;6J!)+u^(2a4B91VV2L&v= zL&6$h_#@eE2;b!`f#`~fLS+Yb#5d14V#@?&?@#oOO&VS!(-e^;91YsjU&7I5EnD}p zw4GNeB&np5qnO;r0*Sk2`1oYZTb*t+CTa7 zQHOJe36?~tS-9=#F@@Z$TH|LL>?O?Fc8`!BZ7JLHa~#gPoAnN-2vrgZE;j{!I)#8Q zOF@mc1@YMpbl2ra#^Li15K*WkNyHk*sJggF@zjVkL71D(-QCF>W#eoXF8pp`^8!SOcxOO-rq|O8nxL`YHir+IQ!si_;q6s}r4;=ob~1N=j~V+r zK~mqjoKY^~ij~VF{g(6cc0-KX7~}AAD~cNowb`<|*&Mr+Q?b;LYH`&&P-tknmF#x>lHP`!H=^XjZtmKNNW9ZR#nt;+@)8txp% z(JeQ-?pF>E8ly%gbCi;>M;ux-Fa+QPv*cCz!9(~LvznEgMlJ_Yx|<-VGN_Ovvtcv#M9P4v1#zKWu52Y0bBKxQX^N&)e4te-e%V&}W;# zNMM3=6_sPWOf2d_qBneYro-<5XM{|v`aXk7xgTn=Z~gPTBRkn^hxbS~rCYLgIR10& zqzKHR*z7nfCR4ipCl;~B#<6MPB?)YXBbVW95&g81n__XFVyg`!#4K^t5>xS7tyGWC zRY7j1Gz|O3)?(Ji&~`3j3ar0}Y#F4oc)FTO7R+qoCmh+R9AW9751P#ZWG`PABGU0P zaY-|qS0^nL@a0ST9fvcge=H6s&n}mtghhqWIKqifZ4Eyc!GAW|8G^gmb=NReN?-NZ zMi~6sY&Y+o#%!+7c}RW1gl&h(`oj-h56w|DtB{qdv0+Ltn)tnaTugWgzk7Qc4h5zm z!d$;13i@zLBM&E`^W%^H*k}>UoBMHD1370Z_iyH}#y_*JD`lZrzYc*8x`&44j6p@O z)Cf!vc{6&v*3gJsUM>+AFD79SJI3d*A=$!0`f)bE2jmjflvrKI4`l|jG{_-%Z`XMB z)-`dcznevwjlbW96cR>6eR(MH>cVKKz`7`bvqn$b;cB4aYEW6QtbPNdWcP?;AH5Qs z&c#nCTgq6JT#DQv26Zk>4AfXNO$4~li6;k{EvGJq%%{?ihUsCE{xmhUqRd(+hqov0 z{0SlUQ-3;J+I!d(n9qt^oL-Jm*wwt*iL=@8)bBpXs1(%I9$r zPXvO#Gx2{T2?(fwf-dX%LH-Hwh#~>?u?7nIl!zonC}<3O5XI}`XGC9dim97drH7fuH`*$s{TZ`|8Iz)8 zZ&fuvKKr)NP-D;4v%tccel#Dassz2wBbB)jGz zBM03}@WjrXwD$TSEf&&C1A{iIqy&u+%dFb zFxz`1KYBFT#Y2-7%lw#?$O{Vnkl;zC>S#e0==)a7+rS`T+<+lLg|wyHfT`Vtq1}YV zZgQKyv=1*I&eluZi zkLhat-Wl=EDqYDaJ&H#+9h&6(>SF#fdX=<%+wml9)w~IFmFe7PgW3cgCT!hW#(U1?DZtpkinyLV8o3z_=z2)2jff_pwd*!Qkk{{RW1y;jHFSSVqy% z=uLsrr6~cTZ%iy15;FiIzpB(_)q1@GzF`|b*>^no4X*4xQ{}fL16J}1)445?N>!bj z1YJk9+o^%~>ZV55`#$qSahgAzX;6Tz_uRwNVg=Byme>fI#YbkHJ5nl6mFz^1@B9)# zQjEr07m-ZIW=pLODH${k<1e~OpY*e#j&{sX70Dv+E$jNnG zXR~9TNH#3Ge3TOf3{3E+Gb3{Mxemx+lpPZJe`RiQ_H|iGH#)2s-Aezloov76+k5EX z*5C<$nODCi=JYLkho_eZ^4q?_Adr&^Z1U#?9smHxV|=2Myyxk&2w&*v@p;9dO8(K? zJ>S`5Au$N|s`=q#9J=ciKiK%U=)r-*#V>vMb5|YDS*CyVZPxZHE0;&YFQHS+Wo!|t zWKEE{gJ5goXGD(Qd950UM%E1vGyK=Ch$!c=pF0YH9boMl#tETsg^kCeAemk*4-{z;k_r=g9Y|A{D_R)7uK=h%gp@;WzzbO_j8Kl-GlbR&z7H=Z7M_C^4Xg9P!wfuGNPfN(eqKZ}u+#i`o=qOu z4?t2tnjoiscE4u?!sgML|H2^oNk910<8uIj`G3Xli54`tU=Sq0TlC%L$EZb1q#T?A2!H)xNeprsPehF+LS4FCbYVS zo|ZfPoifQ*B(74F_dZ(EE5i=XvYWWq0WBQhQpss2R)$sNC9W#>aA26y9F#Cc8N?+X zrpM-7uM7!~WvCgn?r&|VliNZ@=RqUDgy$k~&?IVO*VHD#`Z;!+Gh7uF75Ul=yjP_Y z98b5D5BVMB#!@a4FnlX{`^AiNF!!M;;bLg$Qu2`|p!aboy8B=+CX7jt?o?Cjcxr2- zF$eV_P5m5|M`5~=-w3r44vLr1fp!yzsv?5VpkgMb%6x$I{em@v>Y`}NSHWNL0ckn% z%niiC^|o#h-oif`VYeMfpVn0wOsMv?j6X7oFWJ5YA-FFI`_ESS$@chXqx|3TdIWy) zdid;2buAT$o=vn#?S8>>TVr)BIaZlZ_F05eN||yZqOZnyjqMbSywERCWSd024DE8v`2y zP>YlS$RA>402a*7!U16aBWdQBu=Q^Yt)CbES=oP(W>}dSIQ~VNVPs-t00R3TWtJ1& zT@<<>pS1z@tg3c|gc`^qeQCo{6!QVRGJL#qORwG{fg(9mih<_5e*KYzz{S@@kWecl zPEL?|W=6?;I@-sgnXJE$jW$(u%#& zPE}QU3P;#0&NmEuTv_!7z_>z!10Ou%o^U*2Wj)^T*Be6NO(hIF4SQU?NxZA$o9E}d z&iBI3pXpzrZH5Vh_bzd7itja`a{?ba6juse&RP=0zY@qBDh50!)E*MsTm=@KYfnog z*BJ7dpmnW)$|_42my{9)!V?Vmc9{Y&9>iAJu3m@G`y3q$YQb8HjHid4wN2<{Bx=go?5|_QD*GWAUxy?ran~(Br zi1!1=u+g?(FD5rLe2WNUw^$BA>@vLv1bv6h`a%-b>%#DacaK9yQq+>n)0;Lc%?vUw zut=9n@x?m*;kvQwnmTPBHs{!Gy>b@|ZbfQEDse?h%eUhuZ{de$d$)5!PmjEPXeNTE zjp9gQN;rpMM@nMCue#%Ml6mkU) zhSe;UvNvMkvE1>RGE@I?RE2C%butpxy2D$RyNU7FN7Rig7St$@*}{01bys@ z8*L$a1ra!fE-BoFP#J>v6_}!BV*qJXJ2Ha~M*64W7yAP5@8tR^dI8Ct=rRImWEg-j zu{_4q;=~|Px*aTK0G2q~WWt~XRpQ0_5`33Py(nqzyK#hQyP{O{XP0UsBS0`VBz0lf zPA&?$=tnl=@gS7b0D87MxBvAHKg} z7(PJrj8bu92&A-_POo2?IE@n9UYp?hwpy(o zLujd9_N6_vA`Uv`28804oA|S+`W-l`sRkcQu?qbN264_Ti)`eC`o0j|Md7Yil1eY< zw|9eFL?ezG&#L(OTpSuhL^J1&a|H`hD^sjPl+u)!JN$G;tfOa4i-FP)@*_^&4djJJVYd;fmRbgFdxYm*CX8CwaaG%3X7E;a zDXC1c`!w5lT1I8x!yK8UtmM6!@Bpo02lF#UT*!jxH)oJflpBJf41%Tgsz<1hhF?-h zPNN~GU^ZnpBlg55>Z4Sb`t?0%qq=xy$-F3wy5Tlh&)(XW%~92cAsG15#4Gpf7pZAx zr?J39@aw0@nm;T!79U<0AT0P<(pMjw+^g*#s#9)4SZ%O9e1cRF2Q0cI*Uk5WtRq)s zW$#f)tfR$$JnX*G%dD4wM}mhG8Cs*)G)D&?Lc9Su%l#om1l)!zx)}xyedgg1)}mJK zyWeJQkhF@&A4H*2HKb_c)P|EKWKq}5wvr#5w!4a1u)bud#af6x9dIsnD0SlAa2vX6 zK6FvgxE!`xQg3~p>_3WjUo=slsI4q5v@BhbR&Jd1XMP8p87@YZ*x{jc&LDlB7lJ~W z72Jm|&`p{pA%P6&V$o}@S6w1f`WT$r@SZRYNxhrSR)T2LFbS~BbMB!^Av`#KE~ZLa z_GNH;*{*bnvQ2TEN{O`KE0ubLjB){$Vm^97?0}s56rLlmXKt(VDz#-7CLVETAJan* zlztTBtV=t)1&))XL(2{)DjEt4^}$Sm%~bw4#s`E5JQPiIPr=K|J;!m{6PTHbkNH1( zRiEY5rzML%aCd7~wvB7H(rJ^&i%KYFZ!vt13?V%is!+PN8;-=LfeaJpurlaJJ11>W z^CE>Tmd#QK*AF_H^{OeL>sdW&BGg9_jxaWe_0Z(*ekfqCkiiQJ%@$?9f!Yw9p8Z}t z>mq!NGTwtfZ`l=MV5{(?7=cu=p{id%9iqHEigJK$ODx@w9CAD28T>s=ynD4i!tM)w zt1LDty&)~w6rb0y;yLXnJ6iD{EeU24n{;NrU;)sZD}J(iM_kuWK1H!vZ(dShgwAG1J-e5zvIc`~ z9b!tsm?n`Oi?)<;4o6R|(uG47)ypZTBAo!r63UUYwvNmwpwZJ(qK9@f7SQ35HyJqC zkTk3MR*|k#!rl>85eH(krnW+2%zIsnJEHh%dFue(YLX3c2MN9+T)1na_OOsJwQio8 z&K53yQKQrGtHo#QL0h}+`E>dai7(%RJ^E1EWo9RtF`F=Z89alZFf=*hVS!O^ZEM^{ zXVAfzg{%{8$8z%p!Nu6<_1Cg_&qdrsL1x_1xeL0dZsq&$-gYDa)hJ$}_O zV>M^=d;UDfsc~VBJ3HY>`s={vl_i`>8qq>JR$5uzIF-&_MYb3P)ZLwsp1A}fZCOPL zEBFY;3c=Q_xh0$u18vD{5j-j!L9%#QvzYo#dwa1Gyw(lm;-<2>G~Zk%ajJYZ{Q*DH z?m{hV3btNkL3xj8T8}^_ztv2cEm(a)G}ZADh8+iYmL)6J9Se(k;*`EE81E&8)v1Ax zeBz2hM~s}er3Ts+u^!9rl!_8;o#~LXZ#I20NGk^1u|on zQkHPUjo`~nFs;C;PB9acbIFuon|=P6^MnZ_uhkupEx@0gLr`aO$_a`sG2S_YPqalh|AD7x6se zJZCO9uoX-j3=R4x&Y|Jp7>&EddW9gG*@>tm!_G5iX)5b!ObR8$4TG+Fe6P7;%)kfy zopRopi1y-&MI;y_$rHO#pu)^I0oaV|tz85KI&IQ9nlrO9nMw}H?}t8U3siY%@vO?o z%h{T323*}O%9pM?2b6S$nlVza<;%*=?V*SdV1w!P*F$&gd|-%=flSW%EQl7E*`uW= zs#-oD;IkQ9JL|L%WcoHHbfThzY~Sfe;V?*nb5_u%%@L)p@1{993nZch^q`aW24%W| z*qq4?I8OTV5w^Sn-aGpncI|!{I%fH=Bbw2%8}m=$2a?4H5ehBI58T|t2RPGJrsd>_ zO06uSninWAcCjA`M)~9uhm^>qsiNTqcrc{p_Mwm!Il~k44=L@JDD77-AWh5XvLvQ;`PnNtqZgitAS*ESDln;$W`8d*I9FiGR%D7+U>a0l zDpq8Yg&(~hQtGFX>$i~U$8jbCiCuDVe&$snWm`T8VF4KJa2Xjkah$>QYS_CLXnvwH zkMG8)n}n#Dyi1)uIgy{E8|^oZ7frmqstx}*x~eiJ>8Rgy5R@b2DA0!?f(VL$Q1n%$ zh+0li@Eu5Ob)K@)(*fK7FGb;N`Ln$UG3IXP0s4?HYIwxZkq;m6EF=4}%{iS0v^BrK zarGhJ24U?3qj2TL`+UFch2F2kwObjhTNyiD84Fh#YgrkqUl~g=Po=)i(;$5k>n{4) zy)W7wlkA2;^hCF2sS~0hSlp1iLqROQPBh(LPK4m<=d(ODhI<+`0`wt&1`FF-hQhPKFh^ zM0E^SFKqRNp5vV5Hj7w0mOko}uvHvAORhUbNG!dtN8*QDzBbRv7mf9H_e8=s;qPHO8`r$tG!!c!>7LgYcDDey%vAGza2;^Qr83o;p0qJGkckicr7=`8QnUQKAe z)BNCLDljvJ^>PzB`W!3|PBnY*0&HjR{Gr@q4ZmgN3>MQfmf;QZR?TJXEb`}BCLygb z!m=9e6o#XQ<=L3jW9UIe5bsk9=|?x&=kNl2>H~b_E5$6Y%z`%2DFmb|g{q-9V3b*2RR!J}Q?sFWG_vWG2ksx;7vxgnb(>AVI^H_juN_i}<}O)20Z@25b%->4 z6tqJb+#aGD_2af68TUf%7Fk0-hmU(M+Zce6c08S3j#eB6 zdSB0>Q7Rs+JRKxzs(+c1W@FY9_j!2s%zgUgOyksuH0@Vv3aNr%NX-#_fI~!|xoTeI>F~XGiopLURZ_#yoY>lqKYvgzORb(zgd9+uk`I6VK%{r|rMgTO&Vxym( zW^SF*9n)HYB|RLQIW4$IpE4WEXgAt-3_=75Iuek(89FeyIb4E|-;Q&Pub4Lm$rgta`yOlMcB4z%`sRVRy@_9`_ovz~EkwdjKu2 zqKeJkgb^&Pv4zQvmOL!BZ7mO>Ox9`e2>d2Sm0R6BhP_7*Cwy2j^UAvrje94)Lx}JM zMiuNaP6HV|2C|cX@oRVCbwdUgAt!AsU^;G>t`&evl)KohOW7F}6awg3y`1>0Vl<++p2yN2aO=*{66^wlHZ+BpBA>%#Et3idtdS`42Qiw~-$8i!nZR3m7jwMG@e zXp06q-Zvkh7JF5ivPwYd!qy2F}U3S~`Dofj{wjMZDnE7GG)Bv8c860&oB2ev!t^yS8I;w;(-=m^}RJWyK zdEQu~kfqOw$}!30K4`8L9+#*K-}~vf>g+!3$eORk!z}_TCydifU_gwXHeN~2)O8E0 zDs6hCEqDR(sZnhm<61$wtXtNku42~XK$DFvOVCah)>1G~LVMvs{0_i9b zKORwX&{w66{`tK$)LcU)2XML>?v*E{vb=#sW<$mOfLoCyJM z@g#q4(dpGFsU#lXUcTtGyVqLp?p|Xh+`ZDeqh~4BH%56j&)}~(vjb`qv5t+ zwl5j?lw<+eZ1ITZ`r}IZl2qAS@V(tt{MMwfx2X5|WqgXT_9OT% zmkY?_B?fFp+moMfO8)y@en?2$)~A#Xc=&bDM-B`|UhfeZh=WnAp1?Z*DC|VKY`e}Q zRv_$nx@;HXBW1Tn&imYe%scrYfCRqrYY@+rFQ|K)8WNd2BlI{lxgz+x$e~xZLW~;t zn{trC0DgRZSmGAkR04uT%I8{xF^a#W*RVxjf%!$PN+elPK@NjJQ-f6+9En3nqdSJDEKb z)F2NFW=;X|`*)r@i~?<=HA7>;38RX4h;I^d5o~dl4+S(%*WiX`g6qFvdxivRWUuOf z@xPinxT*ih`H05`P+lCZ*xmPE+E~;3It^JLdwch)u7Vd|2YPlNjAq-dB^|yMCn6NvLm(gh57P;b%WrkexQGwe#J_!nAPO{ z4{mV>>YMTpr<+=F2c9Kae5czyR0FmuPit#nOSw0dNrrCp2$dSA+mST0?k*v# zd)yBno38MlhODpf@Qebz;@iG+wIsJy%AM{Yd6hX|6!?2@;Z+a*TtK$9v{-a zR4;M`v`J5=? zPP=()ZIF52`wYh1;Z0ekQeAmsKJcJIs;)fHdk?)9d4{%Gs>(_?*?&>BOnt5c&=|<( zqSV%({H}O4BXIZf?L!#c9h_68?5R$?zx7%3O2?wb1eZ%N#wENH*AF`S1Kgu^(iZ=g z=90Rq(GDf8>BYHGqm~G;=Da%Fv5uR$tUB9}Qn$CK7mX`Dy0wS1x9uIoM`L9dgw}hd z9$m?9)c9O3G3YI^(sPA%HsP9XZ+dYbV(Ko@c{VLu0!Lkit=Hc`wry!XVry3jxAn{( zO_!a)xnCJcl}lUisH)WpU(aKQ`n&(@$MWKM$JU2|wFP zzCX7%yZeGaeTncSDf#{(JL&1kTV`^VOLKBJMR5}0DLKh&tZ*OFTVWD`o#n9|i{;Tr z{-1}Q&yi-0k6bwsPLkG-^dE?H%ERVbQm%syWmC5I2&zJM0)=l!$N$uOy zHtA|9pV=@`AcQJz!yCV*ei>sAztcH0xr34ZPtAj01#qq&b+wk_xnkJ;^x3 zug!^>nHX%chb^_v!O8FOgNmN|=l8mMPNKqmzrjiE0F@_5w~bJDf+8OAovQ)E*Wk#T zS=K|@Y-vsOq^&neB8o=#@m|B3iE?J=zGvS^JgYlmgiKm@I2}&3t;)TOcq0eW5d#{D zviTS$S?0vI2G?W~slY!^f3xyH$#WAhR&#rI*drKeUI|~7iklXjx{Y$-wIoKKR=_odGhWN21oiJ5qLG?jlF6q_B~t_NP45jY)an(c6avX zD~UPju}D*PMf9ulRUgYzmcex!qaWXiKQ>iTH5TZOP7M$YEutT+Cl98|cp z=I&&(?NlpX?qIel^7;1sX>$;t+>9Q2lde+h@$mU!JAe6bwyf3jKG?ab^8W6S?Q~^@ zOsU_QAPvC=twy;z3AbLwDMRVAn@1MPuEPMlr*ys+16p{r+bnS` zgh`E(nt;L7gZO!j^Zjc7z~*Xl&N%oRY7%v`781!k>EXy6St(V;TajexYDOqd-J^lC ziv%9F??t}h`H-tP$_VV&oJVIk|t> zxX3gliE(qgEDGR2%9M6-S~T)!1mTHS<$@h=C@x)oxWC`$3*AKw++w7`9$WSBNpwaq)NxVj>Yf>WW)b-a}4smmx~t(`)xeepA4}${petxMlRvSNjmuS zZXAay!04OHJLQPtxWpK|phh=g$^}e3mt?aoQt3C1HXaFio&`Mn^?Qg z`D4li;0m9;E%ck+sAtxzX7^%Wkk6EH48x*^mmt!~HQS4quAMN3@(X1Hx6oacL&CJj znrj@^Fg=YiX&^b^L#A@6?>Txf=BOO1uJ7IlEm%U`@5 zJV_s+hik!5OpfA~9mw@JBsOk`#UKL$L2^yZa~&_G3w%l>x)UbjYQ4m+HYP&(eG&>u6 ztCipg3<}X4HYFg&$+XF!Ia@bTjw(OY_>f$ASh~E797ndhK(B4EKSOGQ|KZs8j+M+* ztHB5?l0ptLlA@B&Wl?yxs56y9$s@aA;G!F~h&sqj4B4roWCrGh=^VCj`n>II;#+NC zfh+zJ2MZ)Fp`v)v#U9vg2HLlT_?R!BJfFWthJ@P|yg^7&CO{0PuQ0o}YP2u3P?`>&OWiOQO1{9Mh)_O731LT16%wCY+%O!PSKe&; z5yKIQe7}IPi_@w#%8QdwYr)1iS>5=lzpCbDVeLc3yzBfF(`XFijG<=p!4mkmb9D$t z0S%MPAyrdZQJThQS~SCp?K!2Sq^Oy9eMyVeK*jWf7AOMQBz60^OR-#mm?Eq%9Qxmb zE12Jcy7rt0BU*xzYO34uRa>=)_1u!4m`*Oz_Jby5`h*3#wlhS0)A-?0Pj8aWme}A* zN7X(O+XIDS_Ns8N+pAHxsW!*7%!G>}Y8}UY{GDg(ew9%<|JUunA2$m^1#2YJ^d#9V zgU5G2lH+ukX$LBb@J$;@I(y3pVFGmSo=4{#d!e*GKh2QbJAnuCGm3edbM*r*1EG_)+B#&fX^O)o!5Zo)bLa5034<5?8KTq2jAcy+DRU(cK4=1TS< z9rO)}EHPfIV3A^m8B>TEfMU;!5;b^E3~uTqGA~-W$+mj* zkqn+tL-W!W7FeC}mWJ`Me%*>Qn^ZdD97PN!V2V3bb>h-*hlvko)c7>_ZpZOdY~oUl zRH*o}*vq*YUfmcaVUI&f6}u~42PzS9de&|liriAJ)5;=`E3@*rLneSoZBh-p3#X(Z zC(n`3Z6RM+9%<#M#zZ}DaWit5b_tYfDf${Fl+WW_bUUje0_C9EftWD6PDrDD zeoD{3T$T~)t)ox0;+mKr0Gd5BuUaj3KBzeNqy55az()wyZ;8~mJ_Ji4MiWsgqS=i| z!wU2Ft`DQ$?73Z~1Ixr((WWi|gZV6oxrQH%cGi9_)VC+6&p!seJs+N)pIY4?*B^rs zm_g*)p4{TQn(s2qDQyc_60E_s+C1Hrf0PB0J~;~1euYxQ0?R#nF_fm6o z_jjSIjlfqFLa#0KRZ(42_#L`QbkjqvFG!_feCPh`C660)CqlHOar3UY*T(9HkE%hMrI=bE9Qjufl7f}r zn~c#%Iy8}taKMFx_+B_dl9WVC&IUWEL%L}NI&e)2E=Vg8Eq}fCArMK(ZSz9Cmw8Sv`0$QFoQ0V>~qRDP{f9#>fMIw~S=72B9Dw4gpP zO5|CAgVvFLT*0-YOW^Df$+z=0L_YxPE&DRF19CP>RYosP5+URJH+AlE`0Ycf)LiM{ z0Ox+VHx#j|=m~a{*t^L78U=C>65D; zDx$v%MEioqOl3_Q)h;K5D%#FjBKFOf5xl6-EO!*b9UdwVx`&<4A0?c9u+3tOt?q4Q zHXszOgSuDY*bb3gfmgO4UGlCJde+js2Fn#k3l@a$V*&)so2*yyX3Yr*3jsy2U!8p= z2vq0nbT*9B1QmxI`wy(SNO|r(R}-cE(x8H;+98xgztebNuy^UsUAw>q8OWjgZ8jF{ z-S~a#BdFr3YxtH_>wfWeSip&10JhJ_QEC0ef+Bs_jv1~}Do@SlGmX*RHPdueZSG9B zdx2>-+aTZ_sH}#_`ie&}GMLg0B#ywWfZCJ&d=uk)H_yC;8V=|D+Acp??|hZM>nW5# zv#_VFiGD(QAEGb}En%y6#stNz&+DP|CdOu=c?h;tR6JA&Z6EFsF|7C98xX~zF-kRO zK%!UhMBk&4Bp40lh4{SYRwENC03|Z~+EdRD4TIP0;!#;?W-txU9D(J8VkG5JI zvXnaSd+jfwd1tjOOq0xUUS}oxd<^t)iHHJnHM}vQ8e1^6igV)+3u5JO6C_VYkR}mc zBZUo0JiwFlPQG6Lq<>u9SZqk4%Rl+4V7xsVKenpmxQGaR5vv@_Z6bNrkB$J7DbEee zjhA-2(rd6I)|?<#LOSt{u)+{Oa~7pxOFt_pHmA`eG}zpcUA5KT_|6SLfG>-Wlw__w z>%b8CVkzjmYr|1POmFkjcPhw(#*)>QA{6<>bXh_2$|xGmlW8U8RG;9HMQzn@^E29 zrUtQpuDLEVDQ;M)OWopDtxOAD&N6j~?OMSs}=LR{`r%Qo;m6iLI%h8RSdZK&eU@Pt>TlwHYJHNhKBFraOFCnvR;{2Js~W>BSks_ayUa z%kSCy1`<45@(%p`?XFZ`S)QuYZwLS!fNu$P8A+!vK={fJ>hLx>fm;8|muT5(dSvt> zzWwh_IOjenMFfEw2cd&sKYlt?N}gFw9;Uv36U#I&C)NhIOo}o{2pQ33VJ6`-si>w` zUk}4u8>E^UM#09T(yE3qX#CnWLq&dsL5-$CS(R$JcBg!9QJ;VmT|B{-91C1(S5>OC z7#_>vVr4g(xgnXRIGSe3`0s3koKy(?!!DSh6}mWOP%?awbKWSr=iq7`ti$9$ajd5duE!XqSs;wXfqi=4H9h(2~B9qz-8z`{4>ty2o6X7t|`x|4_hW zN1+ zvVsnti5hS}1#Iio*Ss^(uVi}|#4_Vv;V8?$Ufw85bU-ho``S@uSsRZ9E)K?>>o0RH5WQ~CQ{D9_w7Z(E8V@&h;8+t>xXjwq9A=G=&oJ4_ z?qW7xE!w9Ml=EY+95r2ATCv5vdbbMc0Ho={BEZdIkNa(=l`j$S8}GC5s8GSVMZld! zz(TapJ@9S-9`O1~)lE8(x+GKz{QmW^zJ~`MB)eoA6HopAi8aJci;y{UR^WWZfaWobD%x6;|ihL}(Dsp+S>u zn*8P=j@xm(*G$G_W8WL-Za7;ToO+NAmznmZ#0mKk5Oo!9FrDl6xh3M$$l(D?dWnUD z!?FT*d*$?2`-YQj6~|p!_V75ePZ}KlK3-KoMn27nTUqTP*4n+mn;V|p53WL$Kuaq_ zx5gxgFCc(tFNaBr%5Q8E8(T&XqnRfcxZF~?$I|wW;1KG_nM4#z&Qqz(U|X#>8a2vE zJueN7r=3HqQC1!w9tYFC>+bg#9IZ9*ZI|0znb!@Z?By)c49Hcnn20=j51OVFj8Sx0 zLP98I0p`P7ll$re1WcahFtgjEsCk3wDAQ#;54{M_KW^{ky9nWtf|Z|*nw+1xzkC7Q zdv~8q{TI$Y<4H8N%v1{)~=RT&HyV5 zCudW=Kc{162lB@MVNajM&c@!rmED+0*Zj}v0PIZvO6S7j$Y8;4;=*9AXY%KCOzaH* zN@r%_;A#(Gw=*%ewfK*8%s|D;m%6gLu-loNIqR|;x#|Bo6(i6oY%lQs%~NOm>9>FS z^j9E+yn~&izJr3Dp`o0$wF3;jI055}Bq#zen%Cg))_*k#*TJ|FZN#W0FR6b zUU0s&0>|&TewzPVWAZk-R)1yc_ppo?AOEeTKh*FKh<*q3vyJ}W%rO0K=J(&K|7U;y zj^=m$)t5f<|AvP7H#AJY&p7`TjmXat@b3ZgTXV7eZs)H?*?;dvzt@WOcQZeG+27Xc zui>!$Zs&j3segyV{=1p~u|xkgoZtKM%P{@hYDxU=WZ)QM`ZX^wz03>0kFl2$Qz1Muj#24nnvRJ@q}e>KGTyOaLM4*l0oV*Gt%yi8wzi|DV%>F-11W&ZnHJAVV{ z_rdWpgZ{lCrr+D`55E3=biB;Le{1NkYxeu_c$vii){e+u1Nwb@yetEMYv`{5{XRfm z*26#A`S)rGLoelMX-}ZeKmhoUrQ+qv&y4E7mXZI@3*qnM<$t{%68u`yG=Dx={0R!E zd;RBWNZQfC!qm#p{%1g&oxKAA;AP2$p_kAFo&cq{f$J|Y2+!Kl%7Neyj{d{oFmRdKJ>3kf7y8eas4d)A2t3* z^?z+5{=MyE{=<-AQ2{;$QE92agu%qYOaNf{86NqUPWVUL|AO(W-v5B{ z%RRrr_<7+^tsp5XAtmm;4BS!k)i?PeAODIM)x7nVV3roRb;f_w^mi)3#Fy$=6QO z#{e9&tvq|jY&qCaNpMqbEi+nPE-P_1tHp3$*8iieQcYW6cTw)E%Em$3A8X2XGZ?!q ztEs&4C4nDLf9hiI+t>Qg?B71#|MKSW?B1ih-{md!w!U-z@LcTu`F;Nve<=Z9(O=uX zBd5X5s;93e4kFTy)vx~)~Mu~oX{X`V+l5w$({tVhNFuIxaFOvG45?;SjHrv@tl zF9s&!Hp(+*k36tjT}@_}Wt9vDsJ>>OOUi%G=mC;Q!3mXrr;F(l3AH^RiPr;nG?GX9 u*p7!flP6ZA`AZJSnelLBomS|ydE<~~@wcicRo$drlPm3$gM;zQljJY`Rbh$% literal 0 HcmV?d00001 diff --git a/packages/assets/fixtures/auto-placement/invalid-field-type.pdf b/packages/assets/fixtures/auto-placement/invalid-field-type.pdf new file mode 100644 index 0000000000000000000000000000000000000000..faa6a680268e15739f1c12d86defa6bd0e05a3a8 GIT binary patch literal 40970 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 BrS$*+ literal 0 HcmV?d00001 diff --git a/packages/assets/fixtures/auto-placement/project-proposal-multiple-fields-and-recipients.pdf b/packages/assets/fixtures/auto-placement/project-proposal-multiple-fields-and-recipients.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1a6a244a1de6b11e089463d2ab964a46e13182e5 GIT binary patch literal 61826 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 literal 0 HcmV?d00001 diff --git a/packages/assets/fixtures/auto-placement/project-proposal-single-recipient.pdf b/packages/assets/fixtures/auto-placement/project-proposal-single-recipient.pdf new file mode 100644 index 0000000000000000000000000000000000000000..139d01ff932df13ac0c5047edc2598b60e1eed69 GIT binary patch literal 58072 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

O-vNiak1-2t<}mz`H4~hrp2#eT>}sPL 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 { + const createdEnvelope = await prisma.$transaction(async (tx) => { const envelope = await tx.envelope.create({ data: { id: prefixedId('envelope'), @@ -423,6 +430,124 @@ export const createEnvelope = async ({ }), ); + // Create fields from PDF placeholders (extracted at upload time). + const itemsWithPlaceholders = envelopeItems.filter( + (item) => item.placeholders && item.placeholders.length > 0, + ); + + if (itemsWithPlaceholders.length > 0) { + // Collect all unique recipient placeholder references (e.g. "r1", "r2"). + const allPlaceholders = itemsWithPlaceholders.flatMap((item) => item.placeholders ?? []); + const uniqueRecipientRefs = new Map(); + + for (const p of allPlaceholders) { + const match = p.recipient.match(/^r(\d+)$/i); + + if (match) { + const index = Number(match[1]); + + if (!uniqueRecipientRefs.has(index)) { + uniqueRecipientRefs.set(index, `Recipient ${index}`); + } + } + } + + // Fetch existing recipients (may have been created above from data.recipients or defaults). + let availableRecipients = await tx.recipient.findMany({ + where: { envelopeId: envelope.id }, + select: { id: true, email: true }, + }); + + const shouldCreatePlaceholderRecipients = + (!data.recipients || data.recipients.length === 0) && uniqueRecipientRefs.size > 0; + + // If recipients were not provided, create placeholder recipients even when defaults exist. + if (shouldCreatePlaceholderRecipients) { + const existingRecipientEmails = new Set( + availableRecipients.map((recipient) => recipient.email.toLowerCase()), + ); + + const placeholderRecipients = Array.from( + uniqueRecipientRefs.entries(), + ([recipientIndex, name]) => ({ + envelopeId: envelope.id, + email: `recipient.${recipientIndex}@documenso.com`, + name, + role: RecipientRole.SIGNER, + signingOrder: recipientIndex, + token: nanoid(), + sendStatus: SendStatus.NOT_SENT, + signingStatus: SigningStatus.NOT_SIGNED, + }), + ).filter((recipient) => !existingRecipientEmails.has(recipient.email.toLowerCase())); + + if (placeholderRecipients.length > 0) { + await tx.recipient.createMany({ + data: placeholderRecipients, + }); + + // eslint-disable-next-line require-atomic-updates + availableRecipients = await tx.recipient.findMany({ + where: { envelopeId: envelope.id }, + select: { id: true, email: true }, + }); + } + } + + for (const item of itemsWithPlaceholders) { + const envelopeItem = envelope.envelopeItems.find( + (ei) => ei.documentDataId === item.documentDataId, + ); + + if (!envelopeItem) { + continue; + } + + const fieldsToCreate = convertPlaceholdersToFieldInputs( + item.placeholders ?? [], + (recipientPlaceholder, placeholder) => + findRecipientByPlaceholder( + recipientPlaceholder, + placeholder, + data.recipients && data.recipients.length > 0 + ? data.recipients.map((r) => { + const found = availableRecipients.find((cr) => cr.email === r.email); + + if (!found) { + throw new AppError(AppErrorCode.NOT_FOUND, { + message: `Recipient not found for email: ${r.email}`, + }); + } + + return found; + }) + : undefined, + availableRecipients, + ), + envelopeItem.id, + ); + + if (fieldsToCreate.length > 0) { + await tx.field.createMany({ + data: fieldsToCreate.map((field) => ({ + envelopeId: envelope.id, + envelopeItemId: envelopeItem.id, + recipientId: field.recipientId, + type: field.type, + page: field.page, + positionX: field.positionX, + positionY: field.positionY, + width: field.width, + height: field.height, + customText: '', + inserted: false, + fieldMeta: field.fieldMeta || undefined, + })), + }); + } + } + } + const createdEnvelope = await tx.envelope.findFirst({ where: { id: envelope.id, @@ -432,8 +557,12 @@ export const createEnvelope = async ({ recipients: true, fields: true, folder: true, - envelopeItems: true, envelopeAttachments: true, + envelopeItems: { + include: { + documentData: true, + }, + }, }, }); @@ -491,4 +620,6 @@ export const createEnvelope = async ({ return createdEnvelope; }); + + return createdEnvelope; }; diff --git a/packages/lib/server-only/field/create-envelope-fields.ts b/packages/lib/server-only/field/create-envelope-fields.ts index 3412d1e4a..f593bf510 100644 --- a/packages/lib/server-only/field/create-envelope-fields.ts +++ b/packages/lib/server-only/field/create-envelope-fields.ts @@ -1,8 +1,11 @@ +import { PDF } from '@libpdf/core'; import { EnvelopeType } from '@prisma/client'; import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs'; import type { TFieldAndMeta } from '@documenso/lib/types/field-meta'; import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata'; +import { getFileServerSide } from '@documenso/lib/universal/upload/get-file.server'; +import { putPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server'; import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs'; import { prisma } from '@documenso/prisma'; @@ -11,30 +14,53 @@ import type { EnvelopeIdOptions } from '../../utils/envelope'; import { mapFieldToLegacyField } from '../../utils/fields'; import { canRecipientFieldsBeModified } from '../../utils/recipients'; import { getEnvelopeWhereInput } from '../envelope/get-envelope-by-id'; +import { type BoundingBox, whiteoutRegions } from '../pdf/auto-place-fields'; + +type CoordinatePosition = { + page: number; + positionX: number; + positionY: number; + width: number; + height: number; +}; + +type PlaceholderPosition = { + placeholder: string; + width?: number; + height?: number; + /** + * When true, creates a field at every occurrence of the placeholder in the PDF. + * When false or omitted, only the first occurrence is used. + */ + matchAll?: boolean; +}; + +type FieldPosition = CoordinatePosition | PlaceholderPosition; + +export type CreateEnvelopeFieldInput = TFieldAndMeta & { + /** + * The ID of the item to insert the fields into. + * + * If blank, the first item will be used. + */ + envelopeItemId?: string; + + recipientId: number; +} & FieldPosition; export interface CreateEnvelopeFieldsOptions { userId: number; teamId: number; id: EnvelopeIdOptions; - fields: (TFieldAndMeta & { - /** - * The ID of the item to insert the fields into. - * - * If blank, the first item will be used. - */ - envelopeItemId?: string; - - recipientId: number; - page: number; - positionX: number; - positionY: number; - width: number; - height: number; - })[]; + fields: CreateEnvelopeFieldInput[]; requestMetadata: ApiRequestMetadata; } +const isPlaceholderPosition = (position: FieldPosition): position is PlaceholderPosition => { + return 'placeholder' in position; +}; + export const createEnvelopeFields = async ({ userId, teamId, @@ -55,8 +81,8 @@ export const createEnvelopeFields = async ({ recipients: true, fields: true, envelopeItems: { - select: { - id: true, + include: { + documentData: true, }, }, }, @@ -82,8 +108,33 @@ export const createEnvelopeFields = async ({ }); } - // Field validation. - const validatedFields = fields.map((field) => { + const hasPlaceholderFields = fields.some((field) => isPlaceholderPosition(field)); + + /* + Cache of loaded PDF documents keyed by envelope item ID. + Only loaded when at least one field uses placeholder positioning. + We keep the full PDF objects so we can both read text and draw white boxes + over resolved placeholders before saving back. + */ + const pdfCache = new Map(); + + if (hasPlaceholderFields) { + for (const item of envelope.envelopeItems) { + const bytes = await getFileServerSide(item.documentData); + const pdfDoc = await PDF.load(new Uint8Array(bytes)); + + pdfCache.set(item.id, pdfDoc); + } + } + + /* + Collect placeholder bounding boxes that need to be whited out, grouped by + envelope item ID. Populated during field resolution below. + */ + const placeholderWhiteouts = new Map>(); + + // Field validation and placeholder resolution. + const validatedFields = fields.flatMap((field) => { const recipient = envelope.recipients.find((recipient) => recipient.id === field.recipientId); // The item to attach the fields to MUST belong to the document. @@ -111,10 +162,84 @@ export const createEnvelopeFields = async ({ }); } + const envelopeItemId = field.envelopeItemId || firstEnvelopeItem.id; + + /* + Resolve field position(s). Placeholder fields are resolved by searching the + PDF text for the placeholder string and using its bounding box. + When matchAll is true, all occurrences produce fields. + */ + if (isPlaceholderPosition(field)) { + const pdfDoc = pdfCache.get(envelopeItemId); + + if (!pdfDoc) { + throw new AppError(AppErrorCode.NOT_FOUND, { + message: `Could not load PDF for envelope item ${envelopeItemId}`, + }); + } + + const matches = pdfDoc.findText(field.placeholder); + + if (matches.length === 0) { + throw new AppError(AppErrorCode.INVALID_BODY, { + message: `Placeholder "${field.placeholder}" not found in PDF`, + }); + } + + const matchesToProcess = field.matchAll ? matches : [matches[0]]; + const pages = pdfDoc.getPages(); + + return matchesToProcess.map((match) => { + const page = pages[match.pageIndex]; + + /* + Record this placeholder's bounding box for whiteout. The bbox is in + the original PDF coordinate system (points, bottom-left origin). + */ + if (!placeholderWhiteouts.has(envelopeItemId)) { + placeholderWhiteouts.set(envelopeItemId, []); + } + + placeholderWhiteouts.get(envelopeItemId)!.push({ + pageIndex: match.pageIndex, + bbox: match.bbox, + }); + + /* + Convert point-based coordinates (bottom-left origin) to percentage-based + coordinates (top-left origin) matching the system's field coordinate format. + */ + const topLeftY = page.height - match.bbox.y - match.bbox.height; + + const widthPercent = field.width ?? (match.bbox.width / page.width) * 100; + const heightPercent = field.height ?? (match.bbox.height / page.height) * 100; + + return { + type: field.type, + fieldMeta: field.fieldMeta, + recipientId: field.recipientId, + envelopeItemId, + recipientEmail: recipient.email, + page: match.pageIndex + 1, + positionX: (match.bbox.x / page.width) * 100, + positionY: (topLeftY / page.height) * 100, + width: widthPercent, + height: heightPercent, + }; + }); + } + return { - ...field, - envelopeItemId: field.envelopeItemId || firstEnvelopeItem.id, // Fallback to first envelope item if no envelope item ID is provided. + type: field.type, + fieldMeta: field.fieldMeta, + recipientId: field.recipientId, + envelopeItemId, recipientEmail: recipient.email, + page: field.page, + positionX: field.positionX, + positionY: field.positionY, + width: field.width, + height: field.height, }; }); @@ -162,6 +287,39 @@ export const createEnvelopeFields = async ({ return newlyCreatedFields; }); + /* + Draw white rectangles over each resolved placeholder in the PDF to hide the + placeholder text, then persist the modified PDFs back to document storage. + */ + for (const [envelopeItemId, whiteouts] of placeholderWhiteouts) { + const pdfDoc = pdfCache.get(envelopeItemId); + + if (!pdfDoc) { + continue; + } + + whiteoutRegions(pdfDoc, whiteouts); + + const modifiedPdfBytes = await pdfDoc.save(); + + const envelopeItem = envelope.envelopeItems.find((item) => item.id === envelopeItemId); + + if (!envelopeItem) { + continue; + } + + const newDocumentData = await putPdfFileServerSide({ + name: 'document.pdf', + type: 'application/pdf', + arrayBuffer: async () => Promise.resolve(Buffer.from(modifiedPdfBytes)), + }); + + await prisma.envelopeItem.update({ + where: { id: envelopeItemId }, + data: { documentDataId: newDocumentData.id }, + }); + } + return { fields: createdFields.map((field) => mapFieldToLegacyField(field, envelope)), }; diff --git a/packages/lib/server-only/pdf/auto-place-fields.ts b/packages/lib/server-only/pdf/auto-place-fields.ts new file mode 100644 index 000000000..c6b76d00e --- /dev/null +++ b/packages/lib/server-only/pdf/auto-place-fields.ts @@ -0,0 +1,237 @@ +import { PDF, rgb } from '@libpdf/core'; +import type { FieldType, Recipient } from '@prisma/client'; + +import { type TFieldAndMeta, ZFieldAndMetaSchema } from '@documenso/lib/types/field-meta'; + +import { parseFieldMetaFromPlaceholder, parseFieldTypeFromPlaceholder } from './helpers'; + +const PLACEHOLDER_REGEX = /\{\{([^}]+)\}\}/g; +const DEFAULT_FIELD_HEIGHT_PERCENT = 2; +const MIN_HEIGHT_THRESHOLD = 0.01; + +export type BoundingBox = { + x: number; + y: number; + width: number; + height: number; +}; + +/** + * Draw white rectangles over specified regions in a loaded PDF document. + * + * Mutates the PDF in place. Coordinates use bottom-left origin (standard PDF coordinates). + */ +export const whiteoutRegions = ( + pdfDoc: PDF, + regions: Array<{ pageIndex: number; bbox: BoundingBox }>, +): void => { + const pages = pdfDoc.getPages(); + + for (const { pageIndex, bbox } of regions) { + const page = pages[pageIndex]; + + page.drawRectangle({ + x: bbox.x, + y: bbox.y, + width: bbox.width, + height: bbox.height, + color: rgb(1, 1, 1), + borderColor: rgb(1, 1, 1), + borderWidth: 2, + }); + } +}; + +export type PlaceholderInfo = { + placeholder: string; + recipient: string; + fieldAndMeta: TFieldAndMeta; + page: number; + x: number; + y: number; + width: number; + height: number; + pageWidth: number; + pageHeight: number; +}; + +export type FieldToCreate = TFieldAndMeta & { + envelopeItemId?: string; + recipientId: number; + page: number; + positionX: number; + positionY: number; + width: number; + height: number; +}; + +export const extractPlaceholdersFromPDF = async (pdf: Buffer): Promise => { + const pdfDoc = await PDF.load(new Uint8Array(pdf)); + + const placeholders: PlaceholderInfo[] = []; + + for (const page of pdfDoc.getPages()) { + const pageWidth = page.width; + const pageHeight = page.height; + + const matches = page.findText(PLACEHOLDER_REGEX); + + for (const match of matches) { + const placeholder = match.text; + + /* + Extract the inner content from the placeholder match. + E.g. '{{SIGNATURE, r1, required=true}}' -> 'SIGNATURE, r1, required=true' + */ + const innerMatch = placeholder.match(/^\{\{([^}]+)\}\}$/); + + if (!innerMatch) { + continue; + } + + const placeholderData = innerMatch[1].split(',').map((property) => property.trim()); + const [fieldTypeString, recipientOrMeta, ...fieldMetaData] = placeholderData; + + let fieldType: FieldType; + + try { + fieldType = parseFieldTypeFromPlaceholder(fieldTypeString); + } catch { + // Skip placeholders with unrecognized field types. + continue; + } + + /* + A recipient identifier (e.g. "r1", "R2") is required for auto-placement. + Placeholders without an explicit recipient like {{name}} are reserved for + future API use where callers can reference a placeholder by name with + optional dimensions instead of absolute coordinates. + */ + if (!recipientOrMeta || !/^r\d+$/i.test(recipientOrMeta)) { + continue; + } + + const recipient = recipientOrMeta; + + const rawFieldMeta = Object.fromEntries(fieldMetaData.map((property) => property.split('='))); + + const parsedFieldMeta = parseFieldMetaFromPlaceholder(rawFieldMeta, fieldType); + + const fieldAndMeta: TFieldAndMeta = ZFieldAndMetaSchema.parse({ + type: fieldType, + fieldMeta: parsedFieldMeta, + }); + + /* + LibPDF returns bbox in points with bottom-left origin. + Convert Y to top-left origin for consistency with the rest of the system. + */ + const topLeftY = pageHeight - match.bbox.y - match.bbox.height; + + placeholders.push({ + placeholder, + recipient, + fieldAndMeta, + page: page.index + 1, + x: match.bbox.x, + y: topLeftY, + width: match.bbox.width, + height: match.bbox.height, + pageWidth, + pageHeight, + }); + } + } + + return placeholders; +}; + +/** + * Draw white rectangles over placeholder text in a PDF. + * + * Accepts optional pre-extracted placeholders to avoid re-parsing the PDF. + */ +export const removePlaceholdersFromPDF = async ( + pdf: Buffer, + placeholders?: PlaceholderInfo[], +): Promise => { + const resolved = placeholders ?? (await extractPlaceholdersFromPDF(pdf)); + + const pdfDoc = await PDF.load(new Uint8Array(pdf)); + const pages = pdfDoc.getPages(); + + /* + Convert PlaceholderInfo[] to whiteout regions. + PlaceholderInfo uses top-left origin, but whiteoutRegions expects bottom-left. + */ + const regions = resolved.map((p) => { + const page = pages[p.page - 1]; + const bottomLeftY = page.height - p.y - p.height; + + return { + pageIndex: p.page - 1, + bbox: { x: p.x, y: bottomLeftY, width: p.width, height: p.height }, + }; + }); + + whiteoutRegions(pdfDoc, regions); + + const modifiedPdfBytes = await pdfDoc.save(); + + return Buffer.from(modifiedPdfBytes); +}; + +/** + * Extract placeholders from a PDF and remove them from the document. + * + * Returns the cleaned PDF buffer and the extracted placeholders. If no + * placeholders are found the original buffer is returned as-is. + */ +export const extractPdfPlaceholders = async ( + pdf: Buffer, +): Promise<{ cleanedPdf: Buffer; placeholders: PlaceholderInfo[] }> => { + const placeholders = await extractPlaceholdersFromPDF(pdf); + + if (placeholders.length === 0) { + return { cleanedPdf: pdf, placeholders: [] }; + } + + const cleanedPdf = await removePlaceholdersFromPDF(pdf, placeholders); + + return { cleanedPdf, placeholders }; +}; + +/** + * Convert pre-extracted PlaceholderInfo[] to field creation inputs. + * + * Pure data transform — converts point-based coordinates to percentages and + * resolves recipient references via the provided callback. No DB calls. + */ +export const convertPlaceholdersToFieldInputs = ( + placeholders: PlaceholderInfo[], + recipientResolver: (recipientPlaceholder: string, placeholder: string) => Pick, + envelopeItemId?: string, +): FieldToCreate[] => { + return placeholders.map((p) => { + const xPercent = (p.x / p.pageWidth) * 100; + const yPercent = (p.y / p.pageHeight) * 100; + const widthPercent = (p.width / p.pageWidth) * 100; + const heightPercent = (p.height / p.pageHeight) * 100; + + const finalHeightPercent = + heightPercent > MIN_HEIGHT_THRESHOLD ? heightPercent : DEFAULT_FIELD_HEIGHT_PERCENT; + + const recipient = recipientResolver(p.recipient, p.placeholder); + + return { + ...p.fieldAndMeta, + envelopeItemId, + recipientId: recipient.id, + page: p.page, + positionX: xPercent, + positionY: yPercent, + width: widthPercent, + height: finalHeightPercent, + }; + }); +}; diff --git a/packages/lib/server-only/pdf/helpers.ts b/packages/lib/server-only/pdf/helpers.ts new file mode 100644 index 000000000..2e9a97369 --- /dev/null +++ b/packages/lib/server-only/pdf/helpers.ts @@ -0,0 +1,152 @@ +import { FieldType } from '@prisma/client'; +import type { Recipient } from '@prisma/client'; +import { match } from 'ts-pattern'; + +import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error'; + +type RecipientPlaceholderInfo = { + email: string; + name: string; + recipientIndex: number; +}; + +/* + Parse field type string to FieldType enum. + Normalizes the input (uppercase, trim) and validates it's a valid field type. + This ensures we handle case variations and whitespace, and provides clear error messages. +*/ +export const parseFieldTypeFromPlaceholder = (fieldTypeString: string): FieldType => { + const normalizedType = fieldTypeString.toUpperCase().trim(); + + return match(normalizedType) + .with('SIGNATURE', () => FieldType.SIGNATURE) + .with('FREE_SIGNATURE', () => FieldType.FREE_SIGNATURE) + .with('INITIALS', () => FieldType.INITIALS) + .with('NAME', () => FieldType.NAME) + .with('EMAIL', () => FieldType.EMAIL) + .with('DATE', () => FieldType.DATE) + .with('TEXT', () => FieldType.TEXT) + .with('NUMBER', () => FieldType.NUMBER) + .with('RADIO', () => FieldType.RADIO) + .with('CHECKBOX', () => FieldType.CHECKBOX) + .with('DROPDOWN', () => FieldType.DROPDOWN) + .otherwise(() => { + throw new AppError(AppErrorCode.INVALID_BODY, { + message: `Invalid field type: ${fieldTypeString}`, + }); + }); +}; + +/* + Transform raw field metadata from placeholder format to schema format. + Users should provide properly capitalized property names (e.g., readOnly, fontSize, textAlign). + Converts string values to proper types (booleans, numbers). +*/ +export const parseFieldMetaFromPlaceholder = ( + rawFieldMeta: Record, + fieldType: FieldType, +): Record | undefined => { + if (fieldType === FieldType.SIGNATURE || fieldType === FieldType.FREE_SIGNATURE) { + return; + } + + if (Object.keys(rawFieldMeta).length === 0) { + return; + } + + const fieldTypeString = String(fieldType).toLowerCase(); + + const parsedFieldMeta: Record = { + type: fieldTypeString, + }; + + /* + rawFieldMeta is an object with string keys and string values. + It contains string values because the PDF parser returns the values as strings. + + E.g. { 'required': 'true', 'fontSize': '12', 'maxValue': '100', 'minValue': '0', 'characterLimit': '100' } + */ + const rawFieldMetaEntries = Object.entries(rawFieldMeta); + + for (const [property, value] of rawFieldMetaEntries) { + if (property === 'readOnly' || property === 'required') { + parsedFieldMeta[property] = value === 'true'; + } else if ( + property === 'fontSize' || + property === 'maxValue' || + property === 'minValue' || + property === 'characterLimit' + ) { + const numValue = Number(value); + + if (!Number.isNaN(numValue)) { + parsedFieldMeta[property] = numValue; + } + } else { + parsedFieldMeta[property] = value; + } + } + + return parsedFieldMeta; +}; + +const extractRecipientPlaceholder = (placeholder: string): RecipientPlaceholderInfo => { + const indexMatch = placeholder.match(/^r(\d+)$/i); + + if (!indexMatch) { + throw new AppError(AppErrorCode.INVALID_BODY, { + message: `Invalid recipient placeholder format: ${placeholder}. Expected format: r1, r2, r3, etc.`, + }); + } + + const recipientIndex = Number(indexMatch[1]); + + return { + email: `recipient.${recipientIndex}@documenso.com`, + name: `Recipient ${recipientIndex}`, + recipientIndex, + }; +}; + +/* + Finds a recipient based on a placeholder reference. + If recipients array is provided, uses index-based matching (r1 -> recipients[0], etc.). + Otherwise, uses email-based matching from createdRecipients. +*/ +export const findRecipientByPlaceholder = ( + recipientPlaceholder: string, + placeholder: string, + recipients: Pick[] | undefined, + createdRecipients: Pick[], +): Pick => { + if (recipients && recipients.length > 0) { + /* + Map placeholder by index: r1 -> recipients[0], r2 -> recipients[1], etc. + recipientIndex is 1-based, so we subtract 1 to get the array index. + */ + const { recipientIndex } = extractRecipientPlaceholder(recipientPlaceholder); + const recipientArrayIndex = recipientIndex - 1; + + if (recipientArrayIndex < 0 || recipientArrayIndex >= recipients.length) { + throw new AppError(AppErrorCode.INVALID_BODY, { + message: `Recipient placeholder ${recipientPlaceholder} (index ${recipientIndex}) is out of range. Provided ${recipients.length} recipient(s).`, + }); + } + + return recipients[recipientArrayIndex]; + } + + /* + Use email-based matching for placeholder recipients. + */ + const { email } = extractRecipientPlaceholder(recipientPlaceholder); + const recipient = createdRecipients.find((r) => r.email === email); + + if (!recipient) { + throw new AppError(AppErrorCode.INVALID_BODY, { + message: `Could not find recipient ID for placeholder: ${placeholder}`, + }); + } + + return recipient; +}; diff --git a/packages/lib/server-only/pdf/normalize-pdf.ts b/packages/lib/server-only/pdf/normalize-pdf.ts index 4a2ebcd5d..01e5ac108 100644 --- a/packages/lib/server-only/pdf/normalize-pdf.ts +++ b/packages/lib/server-only/pdf/normalize-pdf.ts @@ -28,5 +28,7 @@ export const normalizePdf = async (pdf: Buffer, options: { flattenForm?: boolean pdfDoc.flattenAnnotations(); } - return Buffer.from(await pdfDoc.save()); + const normalizedPdfBytes = await pdfDoc.save(); + + return Buffer.from(normalizedPdfBytes); }; diff --git a/packages/lib/types/field-meta.ts b/packages/lib/types/field-meta.ts index 96de93634..e4ed9be40 100644 --- a/packages/lib/types/field-meta.ts +++ b/packages/lib/types/field-meta.ts @@ -1,4 +1,3 @@ -import { msg } from '@lingui/core/macro'; import { FieldType } from '@prisma/client'; import { z } from 'zod'; @@ -88,7 +87,7 @@ export const ZTextFieldMeta = ZBaseFieldMeta.extend({ type: z.literal('text'), text: z.string().optional(), characterLimit: z.coerce - .number({ invalid_type_error: msg`Value must be a number`.id }) + .number({ invalid_type_error: 'Value must be a number' }) .min(0) .optional(), textAlign: ZFieldTextAlignSchema.optional(), diff --git a/packages/trpc/server/envelope-router/create-envelope-items.ts b/packages/trpc/server/envelope-router/create-envelope-items.ts index 46b15d8e4..5300e9b44 100644 --- a/packages/trpc/server/envelope-router/create-envelope-items.ts +++ b/packages/trpc/server/envelope-router/create-envelope-items.ts @@ -1,8 +1,15 @@ import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error'; import { getEnvelopeWhereInput } from '@documenso/lib/server-only/envelope/get-envelope-by-id'; +import { + convertPlaceholdersToFieldInputs, + extractPdfPlaceholders, +} from '@documenso/lib/server-only/pdf/auto-place-fields'; +import { findRecipientByPlaceholder } from '@documenso/lib/server-only/pdf/helpers'; +import { insertFormValuesInPdf } from '@documenso/lib/server-only/pdf/insert-form-values-in-pdf'; +import { normalizePdf } from '@documenso/lib/server-only/pdf/normalize-pdf'; import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs'; import { prefixedId } from '@documenso/lib/universal/id'; -import { putNormalizedPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server'; +import { putPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server'; import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs'; import { canEnvelopeItemsBeModified } from '@documenso/lib/utils/envelope'; import { prisma } from '@documenso/prisma'; @@ -84,14 +91,31 @@ export const createEnvelopeItemsRoute = authenticatedProcedure }); } - // For each file, stream to s3 and create the document data. + // For each file: normalize, extract & clean placeholders, then upload. const envelopeItems = await Promise.all( files.map(async (file) => { - const { id: documentDataId } = await putNormalizedPdfFileServerSide(file); + let buffer = Buffer.from(await file.arrayBuffer()); + + if (envelope.formValues) { + buffer = await insertFormValuesInPdf({ pdf: buffer, formValues: envelope.formValues }); + } + + const normalized = await normalizePdf(buffer, { + flattenForm: envelope.type !== 'TEMPLATE', + }); + + const { cleanedPdf, placeholders } = await extractPdfPlaceholders(normalized); + + const { id: documentDataId } = await putPdfFileServerSide({ + name: file.name, + type: 'application/pdf', + arrayBuffer: async () => Promise.resolve(cleanedPdf), + }); return { title: file.name, documentDataId, + placeholders, }; }), ); @@ -131,6 +155,65 @@ export const createEnvelopeItemsRoute = authenticatedProcedure ), }); + // Create fields from placeholders if the envelope already has recipients. + if (envelope.recipients.length > 0) { + const orderedRecipients = [...envelope.recipients].sort((a, b) => { + const aOrder = a.signingOrder ?? Number.MAX_SAFE_INTEGER; + const bOrder = b.signingOrder ?? Number.MAX_SAFE_INTEGER; + + if (aOrder !== bOrder) { + return aOrder - bOrder; + } + + return a.id - b.id; + }); + + for (const uploadedItem of envelopeItems) { + if (!uploadedItem.placeholders || uploadedItem.placeholders.length === 0) { + continue; + } + + const createdItem = createdItems.find( + (ci) => ci.documentDataId === uploadedItem.documentDataId, + ); + + if (!createdItem) { + continue; + } + + const fieldsToCreate = convertPlaceholdersToFieldInputs( + uploadedItem.placeholders, + (recipientPlaceholder, placeholder) => + findRecipientByPlaceholder( + recipientPlaceholder, + placeholder, + orderedRecipients, + orderedRecipients, + ), + createdItem.id, + ); + + if (fieldsToCreate.length > 0) { + await tx.field.createMany({ + data: fieldsToCreate.map((field) => ({ + envelopeId: envelope.id, + envelopeItemId: createdItem.id, + recipientId: field.recipientId, + type: field.type, + page: field.page, + positionX: field.positionX, + positionY: field.positionY, + width: field.width, + height: field.height, + customText: '', + inserted: false, + fieldMeta: field.fieldMeta || undefined, + })), + }); + } + } + } + return createdItems; }); diff --git a/packages/trpc/server/envelope-router/create-envelope.ts b/packages/trpc/server/envelope-router/create-envelope.ts index 60f98962d..ead1debfa 100644 --- a/packages/trpc/server/envelope-router/create-envelope.ts +++ b/packages/trpc/server/envelope-router/create-envelope.ts @@ -3,7 +3,9 @@ import { EnvelopeType } from '@prisma/client'; import { getServerLimits } from '@documenso/ee/server-only/limits/server'; import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error'; import { createEnvelope } from '@documenso/lib/server-only/envelope/create-envelope'; -import { putNormalizedPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server'; +import { extractPdfPlaceholders } from '@documenso/lib/server-only/pdf/auto-place-fields'; +import { normalizePdf } from '@documenso/lib/server-only/pdf/normalize-pdf'; +import { putPdfFileServerSide } from '@documenso/lib/universal/upload/put-file.server'; import { insertFormValuesInPdf } from '../../../lib/server-only/pdf/insert-form-values-in-pdf'; import { authenticatedProcedure } from '../trpc'; @@ -69,7 +71,7 @@ export const createEnvelopeRoute = authenticatedProcedure }); } - // For each file, stream to s3 and create the document data. + // For each file: normalize, extract & clean placeholders, then upload. const envelopeItems = await Promise.all( files.map(async (file) => { let pdf = Buffer.from(await file.arrayBuffer()); @@ -82,20 +84,22 @@ export const createEnvelopeRoute = authenticatedProcedure }); } - const { id: documentDataId } = await putNormalizedPdfFileServerSide( - { - name: file.name, - type: 'application/pdf', - arrayBuffer: async () => Promise.resolve(pdf), - }, - { - flattenForm: type !== EnvelopeType.TEMPLATE, - }, - ); + const normalized = await normalizePdf(pdf, { + flattenForm: type !== EnvelopeType.TEMPLATE, + }); + + const { cleanedPdf, placeholders } = await extractPdfPlaceholders(normalized); + + const { id: documentDataId } = await putPdfFileServerSide({ + name: file.name, + type: 'application/pdf', + arrayBuffer: async () => Promise.resolve(cleanedPdf), + }); return { title: file.name, documentDataId, + placeholders, }; }), ); diff --git a/packages/trpc/server/envelope-router/envelope-fields/create-envelope-fields.types.ts b/packages/trpc/server/envelope-router/envelope-fields/create-envelope-fields.types.ts index 065195d04..f1f4e9caa 100644 --- a/packages/trpc/server/envelope-router/envelope-fields/create-envelope-fields.types.ts +++ b/packages/trpc/server/envelope-router/envelope-fields/create-envelope-fields.types.ts @@ -22,7 +22,7 @@ export const createEnvelopeFieldsMeta: TrpcRouteMeta = { }, }; -const ZCreateFieldSchema = ZEnvelopeFieldAndMetaSchema.and( +const ZCreateFieldBaseSchema = ZEnvelopeFieldAndMetaSchema.and( z.object({ recipientId: z.number().describe('The ID of the recipient to create the field for'), envelopeItemId: z @@ -31,14 +31,51 @@ const ZCreateFieldSchema = ZEnvelopeFieldAndMetaSchema.and( .describe( 'The ID of the envelope item to put the field on. If not provided, field will be placed on the first item.', ), - page: ZFieldPageNumberSchema, - positionX: ZClampedFieldPositionXSchema, - positionY: ZClampedFieldPositionYSchema, - width: ZClampedFieldWidthSchema, - height: ZClampedFieldHeightSchema, }), ); +/** + * Position a field using explicit percentage-based coordinates. + */ +const ZCoordinatePositionSchema = z.object({ + page: ZFieldPageNumberSchema, + positionX: ZClampedFieldPositionXSchema, + positionY: ZClampedFieldPositionYSchema, + width: ZClampedFieldWidthSchema, + height: ZClampedFieldHeightSchema, +}); + +/** + * Position a field using a PDF text placeholder (e.g. "{{name}}"). + * + * The placeholder text is matched in the envelope item's PDF and the field is + * placed at the bounding box of that match. Width and height can optionally be + * overridden; when omitted the dimensions of the placeholder text are used. + */ +const ZPlaceholderPositionSchema = z.object({ + placeholder: z + .string() + .describe( + 'Text to search for in the PDF (e.g. "{{name}}"). The field will be placed at the location of this text.', + ), + width: ZClampedFieldWidthSchema.optional().describe( + 'Override the width of the field. When omitted, the width of the placeholder text is used.', + ), + height: ZClampedFieldHeightSchema.optional().describe( + 'Override the height of the field. When omitted, the height of the placeholder text is used.', + ), + matchAll: z + .boolean() + .optional() + .describe( + 'When true, creates a field at every occurrence of the placeholder in the PDF. When false or omitted, only the first occurrence is used.', + ), +}); + +const ZCreateFieldSchema = ZCreateFieldBaseSchema.and( + z.union([ZCoordinatePositionSchema, ZPlaceholderPositionSchema]), +); + export const ZCreateEnvelopeFieldsRequestSchema = z.object({ envelopeId: z.string(), data: ZCreateFieldSchema.array(),