From 436500ee9f2ed83abdf6f0233f01803e9dc074e1 Mon Sep 17 00:00:00 2001 From: Mungai Hosea <59371833+mungaihosea@users.noreply.github.com> Date: Mon, 11 Nov 2024 12:37:35 +0300 Subject: [PATCH] feat: Hosea/ext 213 dropbox file sync (#99) ## Describe your changes ## Issue ticket number and link EXT-213 https://linear.app/nango/issue/EXT-213/dropbox-file-sync ## Checklist before requesting a review (skip if just adding/editing APIs & templates) - [x] I added tests, otherwise the reason is: - [x] External API requests have `retries` - [x] Pagination is used where appropriate - [ ] The built in `nango.paginate` call is used instead of a `while (true)` loop - [x] Third party requests are NOT parallelized (this can cause issues with rate limits) - [x] If a sync requires metadata the `nango.yaml` has `auto_start: false` - [x] If the sync is a `full` sync then `track_deletes: true` is set - [x] I followed the best practices and guidelines from the [Writing Integration Scripts](/NangoHQ/integration-templates/blob/main/WRITING_INTEGRATION_SCRIPTS.md) doc --------- Co-authored-by: Khaliq --- flows.yaml | 31 ++ .../aws-iam/tests/aws-iam-create-user.test.ts | 28 +- .../aws-iam/tests/aws-iam-delete-user.test.ts | 28 +- integrations/dropbox/actions/fetch-file.ts | 43 ++ .../mocks/files/Document/batchDelete.json | 1 + .../mocks/files/Document/batchSave.json | 7 + .../dropbox/mocks/nango/getMetadata.json | 3 + .../mocks/nango/getMetadata/files.json | 3 + .../proxy/2/files/get_metadata/files.json | 13 + .../files/get_temporary_link/fetch-file.json | 15 + .../2/files/list_folder/continue/files.json | 39 ++ .../post/proxy/2/files/list_folder/files.json | 20 + integrations/dropbox/nango.yaml | 30 ++ integrations/dropbox/syncs/files.ts | 114 +++++ .../dropbox/tests/dropbox-files.test.ts | 52 +++ integrations/dropbox/types.ts | 25 + .../tests/freshdesk-articles.test.ts | 79 ++-- .../tests/freshdesk-contacts.test.ts | 79 ++-- .../tests/freshdesk-create-user.test.ts | 28 +- .../tests/freshdesk-delete-user.test.ts | 28 +- .../freshdesk/tests/freshdesk-tickets.test.ts | 79 ++-- .../freshdesk/tests/freshdesk-users.test.ts | 79 ++-- .../conversations/list-conversations.json | 4 +- .../mocks/emails/GmailEmail/batchSave.json | 143 +++--- .../me/messages/1926a973a99da24c/emails.json | 8 +- .../me/messages/1926aae406722332/emails.json | 300 ++++++------ .../me/messages/1926aae5958a57a8/emails.json | 142 +++--- .../me/messages/1926aae906133846/emails.json | 146 ------ .../me/messages/1926ab2f388ee820/emails.json | 152 +++--- .../me/messages/1926ab7f84de3228/emails.json | 234 +++++----- .../me/messages/1926abe2f19f960a/emails.json | 242 +++++----- .../gmail/v1/users/me/messages/emails.json | 52 +-- .../proxy/api/v1/users/list-all-users.json | 28 +- .../nango/get/proxy/api/v1/users/user.json | 28 +- .../nango/get/proxy/api/v1/users/users.json | 28 +- .../okta/mocks/user/User/batchSave.json | 28 +- .../okta/mocks/users/User/batchSave.json | 28 +- integrations/okta/tests/okta-users.test.ts | 79 ++-- .../proxy/api/v2/search/search-tickets.json | 2 +- package-lock.json | 440 ++++++++++++++---- package.json | 3 +- scripts/copy-models-file.bash | 31 ++ scripts/run-integration-template.bash | 5 + 43 files changed, 1718 insertions(+), 1229 deletions(-) create mode 100644 integrations/dropbox/actions/fetch-file.ts create mode 100644 integrations/dropbox/mocks/files/Document/batchDelete.json create mode 100644 integrations/dropbox/mocks/files/Document/batchSave.json create mode 100644 integrations/dropbox/mocks/nango/getMetadata.json create mode 100644 integrations/dropbox/mocks/nango/getMetadata/files.json create mode 100644 integrations/dropbox/mocks/nango/post/proxy/2/files/get_metadata/files.json create mode 100644 integrations/dropbox/mocks/nango/post/proxy/2/files/get_temporary_link/fetch-file.json create mode 100644 integrations/dropbox/mocks/nango/post/proxy/2/files/list_folder/continue/files.json create mode 100644 integrations/dropbox/mocks/nango/post/proxy/2/files/list_folder/files.json create mode 100644 integrations/dropbox/syncs/files.ts create mode 100644 integrations/dropbox/tests/dropbox-files.test.ts delete mode 100644 integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae906133846/emails.json create mode 100755 scripts/copy-models-file.bash diff --git a/flows.yaml b/flows.yaml index 4913ed27..9557f7a7 100644 --- a/flows.yaml +++ b/flows.yaml @@ -1873,6 +1873,17 @@ integrations: input: IdEntity scopes: - members.delete + fetch-file: + description: >- + Fetches the content of a file given its ID, processes the data using a + response stream, and encodes it into a base64 string. This + base64-encoded string can be used to recreate the file in its original + format using an external tool. + endpoint: GET /fetch-file + output: string + input: string + scopes: + - files.content.read syncs: users: runs: every day @@ -1884,6 +1895,19 @@ integrations: endpoint: GET /users scopes: - members.read + files: + runs: every day + description: > + Sync the metadata of a specified files or folders paths from Dropbox. + A file or folder id or path can be used. + input: DocumentMetadata + auto_start: false + output: Document + sync_type: full + track_deletes: true + endpoint: GET /files + scopes: + - files.metadata.read models: SuccessResponse: success: boolean @@ -1898,6 +1922,13 @@ integrations: firstName: string lastName: string email: string + DocumentMetadata: + files: string[] | undefined + folders: string[] | undefined + Document: + id: string + path: string + title: string evaluagent: syncs: users: diff --git a/integrations/aws-iam/tests/aws-iam-create-user.test.ts b/integrations/aws-iam/tests/aws-iam-create-user.test.ts index 5db22564..cc5e3565 100644 --- a/integrations/aws-iam/tests/aws-iam-create-user.test.ts +++ b/integrations/aws-iam/tests/aws-iam-create-user.test.ts @@ -1,19 +1,19 @@ -import { vi, expect, it, describe } from "vitest"; +import { vi, expect, it, describe } from 'vitest'; -import runAction from "../actions/create-user.js"; +import runAction from '../actions/create-user.js'; -describe("aws-iam create-user tests", () => { - const nangoMock = new global.vitest.NangoActionMock({ - dirname: __dirname, - name: "create-user", - Model: "User" - }); +describe('aws-iam create-user tests', () => { + const nangoMock = new global.vitest.NangoActionMock({ + dirname: __dirname, + name: 'create-user', + Model: 'User' + }); - it('should output the action output that is expected', async () => { - const input = await nangoMock.getInput(); - const response = await runAction(nangoMock, input); - const output = await nangoMock.getOutput(); + it('should output the action output that is expected', async () => { + const input = await nangoMock.getInput(); + const response = await runAction(nangoMock, input); + const output = await nangoMock.getOutput(); - expect(response).toEqual(output); - }); + expect(response).toEqual(output); + }); }); diff --git a/integrations/aws-iam/tests/aws-iam-delete-user.test.ts b/integrations/aws-iam/tests/aws-iam-delete-user.test.ts index da56fba6..e1020d82 100644 --- a/integrations/aws-iam/tests/aws-iam-delete-user.test.ts +++ b/integrations/aws-iam/tests/aws-iam-delete-user.test.ts @@ -1,19 +1,19 @@ -import { vi, expect, it, describe } from "vitest"; +import { vi, expect, it, describe } from 'vitest'; -import runAction from "../actions/delete-user.js"; +import runAction from '../actions/delete-user.js'; -describe("aws-iam delete-user tests", () => { - const nangoMock = new global.vitest.NangoActionMock({ - dirname: __dirname, - name: "delete-user", - Model: "SuccessResponse" - }); +describe('aws-iam delete-user tests', () => { + const nangoMock = new global.vitest.NangoActionMock({ + dirname: __dirname, + name: 'delete-user', + Model: 'SuccessResponse' + }); - it('should output the action output that is expected', async () => { - const input = await nangoMock.getInput(); - const response = await runAction(nangoMock, input); - const output = await nangoMock.getOutput(); + it('should output the action output that is expected', async () => { + const input = await nangoMock.getInput(); + const response = await runAction(nangoMock, input); + const output = await nangoMock.getOutput(); - expect(response).toEqual(output); - }); + expect(response).toEqual(output); + }); }); diff --git a/integrations/dropbox/actions/fetch-file.ts b/integrations/dropbox/actions/fetch-file.ts new file mode 100644 index 00000000..76b76d4c --- /dev/null +++ b/integrations/dropbox/actions/fetch-file.ts @@ -0,0 +1,43 @@ +import type { NangoAction, ProxyConfiguration } from '../../models'; +import type { DropboxTemporaryDownloadLink } from '../types.js'; + +export default async function runAction(nango: NangoAction, input: string): Promise { + if (!input || typeof input !== 'string') { + throw new Error('Missing or invalid input: a file ID is required and should be a string'); + } + + const proxyConfig: ProxyConfiguration = { + // https://www.dropbox.com/developers/documentation/http/documentation#files-get_temporary_link + endpoint: `/2/files/get_temporary_link`, + data: { + path: input + }, + retries: 10 + }; + + const { data } = await nango.post(proxyConfig); + + if (!data.metadata.is_downloadable) { + throw new nango.ActionError({ + message: 'File is not downloadable', + data: data.metadata + }); + } + + const config: ProxyConfiguration = { + // https://www.dropbox.com/developers/documentation/http/documentation#files-get_temporary_link + endpoint: data.link, + responseType: 'arraybuffer', + retries: 10 + }; + + const response = await nango.get(config); + + const chunks: Buffer[] = []; + for await (const chunk of response.data) { + chunks.push(chunk); + } + const buffer = Buffer.concat(chunks); + + return buffer.toString('base64'); +} diff --git a/integrations/dropbox/mocks/files/Document/batchDelete.json b/integrations/dropbox/mocks/files/Document/batchDelete.json new file mode 100644 index 00000000..fe51488c --- /dev/null +++ b/integrations/dropbox/mocks/files/Document/batchDelete.json @@ -0,0 +1 @@ +[] diff --git a/integrations/dropbox/mocks/files/Document/batchSave.json b/integrations/dropbox/mocks/files/Document/batchSave.json new file mode 100644 index 00000000..2dd738f3 --- /dev/null +++ b/integrations/dropbox/mocks/files/Document/batchSave.json @@ -0,0 +1,7 @@ +[ + { + "id": "id:3fcG4EwxZfUAAAAAAAMQEg", + "title": "foo.com", + "path": "/nango/example/foo.com" + } +] diff --git a/integrations/dropbox/mocks/nango/getMetadata.json b/integrations/dropbox/mocks/nango/getMetadata.json new file mode 100644 index 00000000..09756990 --- /dev/null +++ b/integrations/dropbox/mocks/nango/getMetadata.json @@ -0,0 +1,3 @@ +{ + "files": ["foo"] +} diff --git a/integrations/dropbox/mocks/nango/getMetadata/files.json b/integrations/dropbox/mocks/nango/getMetadata/files.json new file mode 100644 index 00000000..09756990 --- /dev/null +++ b/integrations/dropbox/mocks/nango/getMetadata/files.json @@ -0,0 +1,3 @@ +{ + "files": ["foo"] +} diff --git a/integrations/dropbox/mocks/nango/post/proxy/2/files/get_metadata/files.json b/integrations/dropbox/mocks/nango/post/proxy/2/files/get_metadata/files.json new file mode 100644 index 00000000..8b5ef58a --- /dev/null +++ b/integrations/dropbox/mocks/nango/post/proxy/2/files/get_metadata/files.json @@ -0,0 +1,13 @@ +{ + ".tag": "file", + "name": "foo.com", + "path_lower": "/nango/example/foo.com", + "path_display": "/nango/example/foo.com", + "id": "id:3fcG4EwxZfUAAAAAAAMQEg", + "client_modified": "2024-11-11T08:23:53Z", + "server_modified": "2024-11-11T08:23:57Z", + "rev": "6269ed26d20f900b0b30d", + "size": 460, + "is_downloadable": true, + "content_hash": "c4f28bc5220f4d5fc29f3a5f34da1ba4fe66210758041a4a07c74c1e98ff86d8" +} diff --git a/integrations/dropbox/mocks/nango/post/proxy/2/files/get_temporary_link/fetch-file.json b/integrations/dropbox/mocks/nango/post/proxy/2/files/get_temporary_link/fetch-file.json new file mode 100644 index 00000000..046d7639 --- /dev/null +++ b/integrations/dropbox/mocks/nango/post/proxy/2/files/get_temporary_link/fetch-file.json @@ -0,0 +1,15 @@ +{ + "metadata": { + "name": "integrations.txt", + "path_lower": "/nango/test/integrations.txt", + "path_display": "/nango/test/integrations.txt", + "id": "id:3fcG4EwxZfUAAAAAAAMQEw", + "client_modified": "2024-11-11T08:24:06Z", + "server_modified": "2024-11-11T08:24:08Z", + "rev": "6269ed31f1e3e00b0b30d", + "size": 40, + "is_downloadable": true, + "content_hash": "00e050e1b9d380b3093fc46e96c7287fb1f3d3aafdc0eefca6a7d5c6c0cee542" + }, + "link": "https://uc2877ef56e4d05243e9792126dd.dl.dropboxusercontent.com/cd/0/get/CeIdP4V5fqTP7YMldOx5LD4Z7ILhC4u2P4jYSMOQmomqK9EIU9IpaKryabn4nquqkNvg5j9c6X7fue6xPXCJw99ZT5xL1Pxc3L0OObZY68uug10SzlGD5NKg0f8qIhhSNdA61hs8pZ9hCyKlObr3IOcSLUIWadQ1YEGkwo0gaoPlQg/file" +} diff --git a/integrations/dropbox/mocks/nango/post/proxy/2/files/list_folder/continue/files.json b/integrations/dropbox/mocks/nango/post/proxy/2/files/list_folder/continue/files.json new file mode 100644 index 00000000..d26b8927 --- /dev/null +++ b/integrations/dropbox/mocks/nango/post/proxy/2/files/list_folder/continue/files.json @@ -0,0 +1,39 @@ +{ + "entries": [ + { + ".tag": "folder", + "name": "example", + "path_lower": "/nango/example", + "path_display": "/nango/example", + "id": "id:3fcG4EwxZfUAAAAAAAMQEQ" + }, + { + ".tag": "file", + "name": "foo.com", + "path_lower": "/nango/example/foo.com", + "path_display": "/nango/example/foo.com", + "id": "id:3fcG4EwxZfUAAAAAAAMQEg", + "client_modified": "2024-11-11T08:23:53Z", + "server_modified": "2024-11-11T08:23:57Z", + "rev": "6269ed26d20f900b0b30d", + "size": 460, + "is_downloadable": true, + "content_hash": "c4f28bc5220f4d5fc29f3a5f34da1ba4fe66210758041a4a07c74c1e98ff86d8" + }, + { + ".tag": "file", + "name": "integrations.txt", + "path_lower": "/nango/test/integrations.txt", + "path_display": "/nango/test/integrations.txt", + "id": "id:3fcG4EwxZfUAAAAAAAMQEw", + "client_modified": "2024-11-11T08:24:06Z", + "server_modified": "2024-11-11T08:24:08Z", + "rev": "6269ed31f1e3e00b0b30d", + "size": 40, + "is_downloadable": true, + "content_hash": "00e050e1b9d380b3093fc46e96c7287fb1f3d3aafdc0eefca6a7d5c6c0cee542" + } + ], + "cursor": "AAGNZypUZDLtWS8HPGfP-G0t-dZlJ2m_nvX83JtvtuVKPJ7oKQ_rXMx1HLR9DZ8uijQ6AtAOQYhXDbeicP5CWs63m2YAwFHpZXO6srAvyev4UVRLelt2_18TZMWwz1d-xx90wkZbCAXsrFd9sdM3u1NcPiY8zy4kPCCLGKFwmZ7xhtfYF3PQd6tRtqtu-k89obsgdQddq2sVuzHgLQU0Eh2m", + "has_more": false +} diff --git a/integrations/dropbox/mocks/nango/post/proxy/2/files/list_folder/files.json b/integrations/dropbox/mocks/nango/post/proxy/2/files/list_folder/files.json new file mode 100644 index 00000000..cab04df9 --- /dev/null +++ b/integrations/dropbox/mocks/nango/post/proxy/2/files/list_folder/files.json @@ -0,0 +1,20 @@ +{ + "entries": [ + { + ".tag": "folder", + "name": "nango", + "path_lower": "/nango", + "path_display": "/nango", + "id": "id:3fcG4EwxZfUAAAAAAAMQDw" + }, + { + ".tag": "folder", + "name": "test", + "path_lower": "/nango/test", + "path_display": "/nango/test", + "id": "id:3fcG4EwxZfUAAAAAAAMQEA" + } + ], + "cursor": "AAHmqx25WE58QO_ia7UzBa8nm4TGIuBmHAVatpgvA1MCD3wI5enSbteq75P9cJkrX5GxM0z-5U2N23f82-UjdJHdrvuxUNrW8HTOw8JGAwlKs44SWldH2ATUjecoD-0xRQSLwEmI1mIS3GYbVL6yc_B1epFAr7ujIc8hSQdUSo60B_Z2jAIH9x1CbJr3xtjXSzd1lfYFVcEtMpKmK8Ia-txzj-xAlt6gFPnHM9RxzN43-A", + "has_more": true +} diff --git a/integrations/dropbox/nango.yaml b/integrations/dropbox/nango.yaml index 32be29a1..9680554f 100644 --- a/integrations/dropbox/nango.yaml +++ b/integrations/dropbox/nango.yaml @@ -15,6 +15,15 @@ integrations: input: IdEntity scopes: - members.delete + fetch-file: + description: Fetches the content of a file given its ID, processes the data using + a response stream, and encodes it into a base64 string. This base64-encoded + string can be used to recreate the file in its original format using an external tool. + endpoint: GET /fetch-file + output: string + input: string + scopes: + - files.content.read syncs: users: runs: every day @@ -26,6 +35,18 @@ integrations: endpoint: GET /users scopes: - members.read + files: + runs: every day + description: | + Sync the metadata of a specified files or folders paths from Dropbox. A file or folder id or path can be used. + input: DocumentMetadata + auto_start: false + output: Document + sync_type: full + track_deletes: true + endpoint: GET /files + scopes: + - files.metadata.read models: # Generic SuccessResponse: @@ -44,3 +65,12 @@ models: firstName: string lastName: string email: string + + DocumentMetadata: + files: string[] | undefined + folders: string[] | undefined + + Document: + id: string + path: string + title: string diff --git a/integrations/dropbox/syncs/files.ts b/integrations/dropbox/syncs/files.ts new file mode 100644 index 00000000..d051c1cf --- /dev/null +++ b/integrations/dropbox/syncs/files.ts @@ -0,0 +1,114 @@ +import type { NangoSync, ProxyConfiguration, DocumentMetadata, Document } from '../../models'; +import type { DropboxFile, DropboxFileList } from '../types'; + +const batchSize = 100; + +export default async function fetchData(nango: NangoSync): Promise { + const metadata = await nango.getMetadata(); + + if (!metadata || (!metadata.files && !metadata.folders)) { + throw new Error('Metadata for files or folders is required.'); + } + + const folders = metadata?.folders ? [...metadata.folders] : []; + const files = metadata?.files ? [...metadata.files] : []; + + for (const folder of folders) { + await fetchFolder(nango, folder); + } + + const batch: Document[] = []; + for (const file of files) { + const metadata = await fetchFile(nango, file); + batch.push(metadata); + + if (batch.length >= batchSize) { + await nango.batchSave(batch, 'Document'); + batch.length = 0; + } + } + + if (batch.length) { + await nango.batchSave(batch, 'Document'); + } +} + +async function fetchFolder(nango: NangoSync, path: string): Promise { + const config: ProxyConfiguration = { + // https://www.dropbox.com/developers/documentation/http/documentation#files-list_folder + endpoint: `/2/files/list_folder`, + retries: 10, + data: { + path, + limit: 100, + recursive: true, + include_mounted_folders: true, + include_non_downloadable_files: false + } + }; + + let hasMore = true; + let cursor: string | undefined; + let batch: Document[] = []; + + do { + // eslint-disable-next-line @nangohq/custom-integrations-linting/proxy-call-retries + const response = await nango.post( + cursor + ? { + // https://www.dropbox.com/developers/documentation/http/documentation#files-list_folder-continue + endpoint: `/2/files/list_folder/continue`, + retries: 10, + data: { cursor } + } + : config + ); + + const { entries, has_more, cursor: newCursor } = response.data; + cursor = newCursor; + hasMore = has_more; + + const files = entries.filter((entry: DropboxFile) => entry['.tag'] === 'file'); + const fileMetadata = files.map((file: DropboxFile) => { + return { + id: file.id || file.path_lower, + title: file.name, + path: file.path_lower + }; + }); + + batch = batch.concat(fileMetadata); + + if (batch.length >= batchSize) { + await nango.batchSave(batch, 'Document'); + batch = []; + } + } while (hasMore); + + if (batch.length) { + await nango.batchSave(batch, 'Document'); + } +} + +async function fetchFile(nango: NangoSync, path: string): Promise { + const config: ProxyConfiguration = { + // https://www.dropbox.com/developers/documentation/http/documentation#files-get_metadata + endpoint: '/2/files/get_metadata', + retries: 10, + data: { + path + } + }; + + const response = await nango.post(config); + + const { data } = response; + + const fileMetadata: Document = { + id: data.id || data.path_lower, + title: data.name, + path: data.path_lower + }; + + return fileMetadata; +} diff --git a/integrations/dropbox/tests/dropbox-files.test.ts b/integrations/dropbox/tests/dropbox-files.test.ts new file mode 100644 index 00000000..cce036e8 --- /dev/null +++ b/integrations/dropbox/tests/dropbox-files.test.ts @@ -0,0 +1,52 @@ +import { vi, expect, it, describe } from 'vitest'; + +import fetchData from '../syncs/files.js'; + +describe('dropbox files tests', () => { + const nangoMock = new global.vitest.NangoSyncMock({ + dirname: __dirname, + name: 'files', + Model: 'Document' + }); + + const models = 'Document'.split(','); + const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); + + it('should get, map correctly the data and batchSave the result', async () => { + await fetchData(nangoMock); + + for (const model of models) { + const batchSaveData = await nangoMock.getBatchSaveData(model); + + const totalCalls = batchSaveSpy.mock.calls.length; + + if (totalCalls > models.length) { + const splitSize = Math.ceil(batchSaveData.length / totalCalls); + + const splitBatchSaveData = []; + for (let i = 0; i < totalCalls; i++) { + const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); + splitBatchSaveData.push(chunk); + } + + splitBatchSaveData.forEach((data, index) => { + // @ts-ignore + expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); + }); + } else { + expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); + } + } + }); + + it('should get, map correctly the data and batchDelete the result', async () => { + await fetchData(nangoMock); + + for (const model of models) { + const batchDeleteData = await nangoMock.getBatchDeleteData(model); + if (batchDeleteData && batchDeleteData.length > 0) { + expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); + } + } + }); +}); diff --git a/integrations/dropbox/types.ts b/integrations/dropbox/types.ts index 62b856a6..f58075f9 100644 --- a/integrations/dropbox/types.ts +++ b/integrations/dropbox/types.ts @@ -95,3 +95,28 @@ export interface DropboxCreatedUser { '.tag': string; complete: CompleteItem[]; } + +export interface DropboxFile { + '.tag': string; + name: string; + path_lower: string; + path_display: string; + id?: string; + client_modified?: string; + server_modified?: string; + rev?: string; + size?: number; + is_downloadable?: boolean; + content_hash?: string; +} + +export interface DropboxTemporaryDownloadLink { + metadata: DropboxFile; + link: string; +} + +export interface DropboxFileList { + entries: DropboxFile[]; + has_more: boolean; + cursor: string; +} diff --git a/integrations/freshdesk/tests/freshdesk-articles.test.ts b/integrations/freshdesk/tests/freshdesk-articles.test.ts index 7ad678bd..366d656e 100644 --- a/integrations/freshdesk/tests/freshdesk-articles.test.ts +++ b/integrations/freshdesk/tests/freshdesk-articles.test.ts @@ -1,53 +1,52 @@ -import { vi, expect, it, describe } from "vitest"; +import { vi, expect, it, describe } from 'vitest'; -import fetchData from "../syncs/articles.js"; +import fetchData from '../syncs/articles.js'; -describe("freshdesk articles tests", () => { - const nangoMock = new global.vitest.NangoSyncMock({ - dirname: __dirname, - name: "articles", - Model: "Article" - }); +describe('freshdesk articles tests', () => { + const nangoMock = new global.vitest.NangoSyncMock({ + dirname: __dirname, + name: 'articles', + Model: 'Article' + }); - const models = "Article".split(','); - const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); + const models = 'Article'.split(','); + const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); - it("should get, map correctly the data and batchSave the result", async () => { - await fetchData(nangoMock); + it('should get, map correctly the data and batchSave the result', async () => { + await fetchData(nangoMock); - for (const model of models) { - const batchSaveData = await nangoMock.getBatchSaveData(model); + for (const model of models) { + const batchSaveData = await nangoMock.getBatchSaveData(model); - const totalCalls = batchSaveSpy.mock.calls.length; + const totalCalls = batchSaveSpy.mock.calls.length; - if (totalCalls > models.length) { - const splitSize = Math.ceil(batchSaveData.length / totalCalls); + if (totalCalls > models.length) { + const splitSize = Math.ceil(batchSaveData.length / totalCalls); - const splitBatchSaveData = []; - for (let i = 0; i < totalCalls; i++) { - const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); - splitBatchSaveData.push(chunk); + const splitBatchSaveData = []; + for (let i = 0; i < totalCalls; i++) { + const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); + splitBatchSaveData.push(chunk); + } + + splitBatchSaveData.forEach((data, index) => { + // @ts-ignore + expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); + }); + } else { + expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); } + } + }); - splitBatchSaveData.forEach((data, index) => { - // @ts-ignore - expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); - }); + it('should get, map correctly the data and batchDelete the result', async () => { + await fetchData(nangoMock); - } else { - expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); + for (const model of models) { + const batchDeleteData = await nangoMock.getBatchDeleteData(model); + if (batchDeleteData && batchDeleteData.length > 0) { + expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); + } } - } - }); - - it('should get, map correctly the data and batchDelete the result', async () => { - await fetchData(nangoMock); - - for (const model of models) { - const batchDeleteData = await nangoMock.getBatchDeleteData(model); - if (batchDeleteData && batchDeleteData.length > 0) { - expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); - } - } - }); + }); }); diff --git a/integrations/freshdesk/tests/freshdesk-contacts.test.ts b/integrations/freshdesk/tests/freshdesk-contacts.test.ts index 37f90ed5..8831d3ff 100644 --- a/integrations/freshdesk/tests/freshdesk-contacts.test.ts +++ b/integrations/freshdesk/tests/freshdesk-contacts.test.ts @@ -1,53 +1,52 @@ -import { vi, expect, it, describe } from "vitest"; +import { vi, expect, it, describe } from 'vitest'; -import fetchData from "../syncs/contacts.js"; +import fetchData from '../syncs/contacts.js'; -describe("freshdesk contacts tests", () => { - const nangoMock = new global.vitest.NangoSyncMock({ - dirname: __dirname, - name: "contacts", - Model: "Contact" - }); +describe('freshdesk contacts tests', () => { + const nangoMock = new global.vitest.NangoSyncMock({ + dirname: __dirname, + name: 'contacts', + Model: 'Contact' + }); - const models = "Contact".split(','); - const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); + const models = 'Contact'.split(','); + const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); - it("should get, map correctly the data and batchSave the result", async () => { - await fetchData(nangoMock); + it('should get, map correctly the data and batchSave the result', async () => { + await fetchData(nangoMock); - for (const model of models) { - const batchSaveData = await nangoMock.getBatchSaveData(model); + for (const model of models) { + const batchSaveData = await nangoMock.getBatchSaveData(model); - const totalCalls = batchSaveSpy.mock.calls.length; + const totalCalls = batchSaveSpy.mock.calls.length; - if (totalCalls > models.length) { - const splitSize = Math.ceil(batchSaveData.length / totalCalls); + if (totalCalls > models.length) { + const splitSize = Math.ceil(batchSaveData.length / totalCalls); - const splitBatchSaveData = []; - for (let i = 0; i < totalCalls; i++) { - const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); - splitBatchSaveData.push(chunk); + const splitBatchSaveData = []; + for (let i = 0; i < totalCalls; i++) { + const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); + splitBatchSaveData.push(chunk); + } + + splitBatchSaveData.forEach((data, index) => { + // @ts-ignore + expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); + }); + } else { + expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); } + } + }); - splitBatchSaveData.forEach((data, index) => { - // @ts-ignore - expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); - }); + it('should get, map correctly the data and batchDelete the result', async () => { + await fetchData(nangoMock); - } else { - expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); + for (const model of models) { + const batchDeleteData = await nangoMock.getBatchDeleteData(model); + if (batchDeleteData && batchDeleteData.length > 0) { + expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); + } } - } - }); - - it('should get, map correctly the data and batchDelete the result', async () => { - await fetchData(nangoMock); - - for (const model of models) { - const batchDeleteData = await nangoMock.getBatchDeleteData(model); - if (batchDeleteData && batchDeleteData.length > 0) { - expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); - } - } - }); + }); }); diff --git a/integrations/freshdesk/tests/freshdesk-create-user.test.ts b/integrations/freshdesk/tests/freshdesk-create-user.test.ts index 902afe8c..2f00a8fb 100644 --- a/integrations/freshdesk/tests/freshdesk-create-user.test.ts +++ b/integrations/freshdesk/tests/freshdesk-create-user.test.ts @@ -1,19 +1,19 @@ -import { vi, expect, it, describe } from "vitest"; +import { vi, expect, it, describe } from 'vitest'; -import runAction from "../actions/create-user.js"; +import runAction from '../actions/create-user.js'; -describe("freshdesk create-user tests", () => { - const nangoMock = new global.vitest.NangoActionMock({ - dirname: __dirname, - name: "create-user", - Model: "User" - }); +describe('freshdesk create-user tests', () => { + const nangoMock = new global.vitest.NangoActionMock({ + dirname: __dirname, + name: 'create-user', + Model: 'User' + }); - it('should output the action output that is expected', async () => { - const input = await nangoMock.getInput(); - const response = await runAction(nangoMock, input); - const output = await nangoMock.getOutput(); + it('should output the action output that is expected', async () => { + const input = await nangoMock.getInput(); + const response = await runAction(nangoMock, input); + const output = await nangoMock.getOutput(); - expect(response).toEqual(output); - }); + expect(response).toEqual(output); + }); }); diff --git a/integrations/freshdesk/tests/freshdesk-delete-user.test.ts b/integrations/freshdesk/tests/freshdesk-delete-user.test.ts index f2ed100b..e9f1736d 100644 --- a/integrations/freshdesk/tests/freshdesk-delete-user.test.ts +++ b/integrations/freshdesk/tests/freshdesk-delete-user.test.ts @@ -1,19 +1,19 @@ -import { vi, expect, it, describe } from "vitest"; +import { vi, expect, it, describe } from 'vitest'; -import runAction from "../actions/delete-user.js"; +import runAction from '../actions/delete-user.js'; -describe("freshdesk delete-user tests", () => { - const nangoMock = new global.vitest.NangoActionMock({ - dirname: __dirname, - name: "delete-user", - Model: "SuccessResponse" - }); +describe('freshdesk delete-user tests', () => { + const nangoMock = new global.vitest.NangoActionMock({ + dirname: __dirname, + name: 'delete-user', + Model: 'SuccessResponse' + }); - it('should output the action output that is expected', async () => { - const input = await nangoMock.getInput(); - const response = await runAction(nangoMock, input); - const output = await nangoMock.getOutput(); + it('should output the action output that is expected', async () => { + const input = await nangoMock.getInput(); + const response = await runAction(nangoMock, input); + const output = await nangoMock.getOutput(); - expect(response).toEqual(output); - }); + expect(response).toEqual(output); + }); }); diff --git a/integrations/freshdesk/tests/freshdesk-tickets.test.ts b/integrations/freshdesk/tests/freshdesk-tickets.test.ts index 8ab9174d..c438bf9f 100644 --- a/integrations/freshdesk/tests/freshdesk-tickets.test.ts +++ b/integrations/freshdesk/tests/freshdesk-tickets.test.ts @@ -1,53 +1,52 @@ -import { vi, expect, it, describe } from "vitest"; +import { vi, expect, it, describe } from 'vitest'; -import fetchData from "../syncs/tickets.js"; +import fetchData from '../syncs/tickets.js'; -describe("freshdesk tickets tests", () => { - const nangoMock = new global.vitest.NangoSyncMock({ - dirname: __dirname, - name: "tickets", - Model: "Ticket" - }); +describe('freshdesk tickets tests', () => { + const nangoMock = new global.vitest.NangoSyncMock({ + dirname: __dirname, + name: 'tickets', + Model: 'Ticket' + }); - const models = "Ticket".split(','); - const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); + const models = 'Ticket'.split(','); + const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); - it("should get, map correctly the data and batchSave the result", async () => { - await fetchData(nangoMock); + it('should get, map correctly the data and batchSave the result', async () => { + await fetchData(nangoMock); - for (const model of models) { - const batchSaveData = await nangoMock.getBatchSaveData(model); + for (const model of models) { + const batchSaveData = await nangoMock.getBatchSaveData(model); - const totalCalls = batchSaveSpy.mock.calls.length; + const totalCalls = batchSaveSpy.mock.calls.length; - if (totalCalls > models.length) { - const splitSize = Math.ceil(batchSaveData.length / totalCalls); + if (totalCalls > models.length) { + const splitSize = Math.ceil(batchSaveData.length / totalCalls); - const splitBatchSaveData = []; - for (let i = 0; i < totalCalls; i++) { - const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); - splitBatchSaveData.push(chunk); + const splitBatchSaveData = []; + for (let i = 0; i < totalCalls; i++) { + const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); + splitBatchSaveData.push(chunk); + } + + splitBatchSaveData.forEach((data, index) => { + // @ts-ignore + expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); + }); + } else { + expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); } + } + }); - splitBatchSaveData.forEach((data, index) => { - // @ts-ignore - expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); - }); + it('should get, map correctly the data and batchDelete the result', async () => { + await fetchData(nangoMock); - } else { - expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); + for (const model of models) { + const batchDeleteData = await nangoMock.getBatchDeleteData(model); + if (batchDeleteData && batchDeleteData.length > 0) { + expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); + } } - } - }); - - it('should get, map correctly the data and batchDelete the result', async () => { - await fetchData(nangoMock); - - for (const model of models) { - const batchDeleteData = await nangoMock.getBatchDeleteData(model); - if (batchDeleteData && batchDeleteData.length > 0) { - expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); - } - } - }); + }); }); diff --git a/integrations/freshdesk/tests/freshdesk-users.test.ts b/integrations/freshdesk/tests/freshdesk-users.test.ts index 424a5ff5..99193bd0 100644 --- a/integrations/freshdesk/tests/freshdesk-users.test.ts +++ b/integrations/freshdesk/tests/freshdesk-users.test.ts @@ -1,53 +1,52 @@ -import { vi, expect, it, describe } from "vitest"; +import { vi, expect, it, describe } from 'vitest'; -import fetchData from "../syncs/users.js"; +import fetchData from '../syncs/users.js'; -describe("freshdesk users tests", () => { - const nangoMock = new global.vitest.NangoSyncMock({ - dirname: __dirname, - name: "users", - Model: "User" - }); +describe('freshdesk users tests', () => { + const nangoMock = new global.vitest.NangoSyncMock({ + dirname: __dirname, + name: 'users', + Model: 'User' + }); - const models = "User".split(','); - const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); + const models = 'User'.split(','); + const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); - it("should get, map correctly the data and batchSave the result", async () => { - await fetchData(nangoMock); + it('should get, map correctly the data and batchSave the result', async () => { + await fetchData(nangoMock); - for (const model of models) { - const batchSaveData = await nangoMock.getBatchSaveData(model); + for (const model of models) { + const batchSaveData = await nangoMock.getBatchSaveData(model); - const totalCalls = batchSaveSpy.mock.calls.length; + const totalCalls = batchSaveSpy.mock.calls.length; - if (totalCalls > models.length) { - const splitSize = Math.ceil(batchSaveData.length / totalCalls); + if (totalCalls > models.length) { + const splitSize = Math.ceil(batchSaveData.length / totalCalls); - const splitBatchSaveData = []; - for (let i = 0; i < totalCalls; i++) { - const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); - splitBatchSaveData.push(chunk); + const splitBatchSaveData = []; + for (let i = 0; i < totalCalls; i++) { + const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); + splitBatchSaveData.push(chunk); + } + + splitBatchSaveData.forEach((data, index) => { + // @ts-ignore + expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); + }); + } else { + expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); } + } + }); - splitBatchSaveData.forEach((data, index) => { - // @ts-ignore - expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); - }); + it('should get, map correctly the data and batchDelete the result', async () => { + await fetchData(nangoMock); - } else { - expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); + for (const model of models) { + const batchDeleteData = await nangoMock.getBatchDeleteData(model); + if (batchDeleteData && batchDeleteData.length > 0) { + expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); + } } - } - }); - - it('should get, map correctly the data and batchDelete the result', async () => { - await fetchData(nangoMock); - - for (const model of models) { - const batchDeleteData = await nangoMock.getBatchDeleteData(model); - if (batchDeleteData && batchDeleteData.length > 0) { - expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); - } - } - }); + }); }); diff --git a/integrations/front/mocks/nango/get/proxy/conversations/list-conversations.json b/integrations/front/mocks/nango/get/proxy/conversations/list-conversations.json index 63130aa4..ee816ac0 100644 --- a/integrations/front/mocks/nango/get/proxy/conversations/list-conversations.json +++ b/integrations/front/mocks/nango/get/proxy/conversations/list-conversations.json @@ -925,7 +925,7 @@ }, "id": "tea_guwgr", "email": "mocktest@gmail.com", - "username": "kelvintest254", + "username": "johntest254", "first_name": "mock", "last_name": "test", "is_admin": false, @@ -1098,7 +1098,7 @@ }, "id": "tea_guwgr", "email": "mocktest@gmail.com", - "username": "kelvintest254", + "username": "johntest254", "first_name": "mock", "last_name": "test", "is_admin": false, diff --git a/integrations/google-mail/mocks/emails/GmailEmail/batchSave.json b/integrations/google-mail/mocks/emails/GmailEmail/batchSave.json index 39035be3..a319fb94 100644 --- a/integrations/google-mail/mocks/emails/GmailEmail/batchSave.json +++ b/integrations/google-mail/mocks/emails/GmailEmail/batchSave.json @@ -1,81 +1,64 @@ [ - { - "id": "1926abe2f19f960a", - "sender": "Windscribe ", - "recipients": "hassanwari254@gmail.com", - "date": "2024-10-08T05:19:55.000Z", - "subject": "Windscribe September Updates (and another new video!)", - "body": "", - "attachments": [], - "threadId": "1926abe2f19f960a" - }, - { - "id": "1926ab7f84de3228", - "sender": "Feedspot Today ", - "recipients": "hassanwari254@gmail.com", - "date": "2024-10-08T06:01:34.000Z", - "subject": "U.K. Hacker Charged in $3.75 Million Insider Trading Scheme Using Hacked Executive Emails, Vulnerable APIs..", - "body": "", - "attachments": [], - "threadId": "1926ab7f84de3228" - }, - { - "id": "1926ab2f388ee820", - "sender": "Hassan Wari ", - "recipients": "Hassan Wari ", - "date": "2024-10-08T05:54:04.000Z", - "subject": "", - "body": "\r\n", - "attachments": [], - "threadId": "1926ab2eb6b97dbd" - }, - { - "id": "1926aae906133846", - "sender": "Hassan Wari ", - "recipients": "Hassan Wari ", - "date": "2024-10-08T05:49:17.000Z", - "subject": "Re: THIS IS AN EXAMPLE", - "body": "Response\r\n\r\nOn Tue, Oct 8, 2024 at 8:48 AM Hassan Wari wrote:\r\n\r\n> This is an example body\r\n>\r\n", - "attachments": [ - { - "filename": "pic.PNG", - "mimeType": "image/png", - "size": 3647, - "attachmentId": "ANGjdJ8t4FaSR6ZYWUz6zNbyosZR9ELO62MaJ3GFcmizO87HK8WXkG9mDzhSxHk5CAgKsrajkxCuPhcQqVISshEa1CmeLgu3iYJbme8tao7juLGv3d14_KtUgVrVYe0Br71T2TJnAJOb2GqeDdzSK0ZsAb7cGfIgGLxRoQAuLMhtMlKTfQ5Ne3Wlvj0ml4BOMxD-6r6-l1LxfkoC7bXcpRXCS_BBQIl_yhekHQkBneoxQx7qbal-aY-RKY4cqorlPNYphBIwHEdDe28m1hXZFZk1bC0F8KacQy3ZEIzlO5tz2gNMqbQMTBSblJEhSNU" - } - ], - "threadId": "1926aade210af14d" - }, - { - "id": "1926aae5958a57a8", - "sender": "Hassan Wari ", - "date": "2024-10-08T05:49:02.000Z", - "subject": "", - "body": "\r\n", - "attachments": [], - "threadId": "1926aae51748a654" - }, - { - "id": "1926aae406722332", - "sender": "Hassan Wari ", - "recipients": "Hassan Wari ", - "date": "2024-10-08T05:48:56.000Z", - "subject": "THIS IS AN EXAMPLE", - "body": "This is an example body\r\n", - "attachments": [ - { - "filename": "img.PNG", - "mimeType": "image/png", - "size": 19165, - "attachmentId": "ANGjdJ8LWm3x7O6Bwac3xTFChBSSEaETWh_iacWZD5j1jwm6f620timuhwTop7Jj6mKiv4qO74PZumcn7vJzC_E3AFGu5dgNNzFMruYNakYaUG4J0yPQE1_HH8TV0aRvdEJaxvVslx1imiA22t9F8zLKTzfs7bvR658L_5j7XMzQEf5dJGZeLGMvnnl9A-Xzky670zw4N8eni8tkfI_lS6N-knZTGQYntzdG1Oc9BgsdPj2LQbe4tb5tXt5P1xV6gIbn_AdVD442nX2bjFE155F-NXGF5oa3MX178XdZfDll_Ph6J6wQ3sSuDXs3LzA" - }, - { - "filename": "imageee.PNG", - "mimeType": "image/png", - "size": 7419, - "attachmentId": "ANGjdJ9NnyZ7MVj8UqLyhdHLNGEX0EP6cxqro7CkMYWq-yFbscDHN_CcPtPHdn3QuIVSZiSvcUmGHYnWBgmGhu9NioyvZ-2owYuT31JRM3cyz89dixV-LdBjy5VTQSlB177u-cs7W_wAsZ68C1Eoyp3sHtMHsd8xTAM-_uOK9tvXUBCVLo860pQcQOfum8AQekmiiiiMOrSahvvdG7dM7aBqx2XVD1fePzatj9biVireq0c_52cKbAV0dbPh578-nXhty_oAfP_Zig3eFuN7iB3jID6q2NhkmAZclnUNduripuXWAhp4qE4Vf4L4FU8" - } - ], - "threadId": "1926aade210af14d" - } -] \ No newline at end of file + { + "id": "1926abe2f19f960a", + "sender": "Windscribe ", + "recipients": "john@foo.com@gmail.com", + "date": "2024-10-08T05:19:55.000Z", + "subject": "Windscribe September Updates (and another new video!)", + "body": "", + "attachments": [], + "threadId": "1926abe2f19f960a" + }, + { + "id": "1926ab7f84de3228", + "sender": "Feedspot Today ", + "recipients": "john@foo.com@gmail.com", + "date": "2024-10-08T06:01:34.000Z", + "subject": "U.K. Hacker Charged in $3.75 Million Insider Trading Scheme Using Hacked Executive Emails, Vulnerable APIs..", + "body": "", + "attachments": [], + "threadId": "1926ab7f84de3228" + }, + { + "id": "1926ab2f388ee820", + "sender": "John Doe ", + "recipients": "John Doe ", + "date": "2024-10-08T05:54:04.000Z", + "subject": "", + "body": "\r\n", + "attachments": [], + "threadId": "1926ab2eb6b97dbd" + }, + { + "id": "1926aae5958a57a8", + "sender": "John Doe ", + "date": "2024-10-08T05:49:02.000Z", + "subject": "", + "body": "\r\n", + "attachments": [], + "threadId": "1926aae51748a654" + }, + { + "id": "1926aae406722332", + "sender": "John Doe ", + "recipients": "John Doe ", + "date": "2024-10-08T05:48:56.000Z", + "subject": "THIS IS AN EXAMPLE", + "body": "This is an example body\r\n", + "attachments": [ + { + "filename": "img.PNG", + "mimeType": "image/png", + "size": 19165, + "attachmentId": "ANGjdJ8LWm3x7O6Bwac3xTFChBSSEaETWh_iacWZD5j1jwm6f620timuhwTop7Jj6mKiv4qO74PZumcn7vJzC_E3AFGu5dgNNzFMruYNakYaUG4J0yPQE1_HH8TV0aRvdEJaxvVslx1imiA22t9F8zLKTzfs7bvR658L_5j7XMzQEf5dJGZeLGMvnnl9A-Xzky670zw4N8eni8tkfI_lS6N-knZTGQYntzdG1Oc9BgsdPj2LQbe4tb5tXt5P1xV6gIbn_AdVD442nX2bjFE155F-NXGF5oa3MX178XdZfDll_Ph6J6wQ3sSuDXs3LzA" + }, + { + "filename": "imageee.PNG", + "mimeType": "image/png", + "size": 7419, + "attachmentId": "ANGjdJ9NnyZ7MVj8UqLyhdHLNGEX0EP6cxqro7CkMYWq-yFbscDHN_CcPtPHdn3QuIVSZiSvcUmGHYnWBgmGhu9NioyvZ-2owYuT31JRM3cyz89dixV-LdBjy5VTQSlB177u-cs7W_wAsZ68C1Eoyp3sHtMHsd8xTAM-_uOK9tvXUBCVLo860pQcQOfum8AQekmiiiiMOrSahvvdG7dM7aBqx2XVD1fePzatj9biVireq0c_52cKbAV0dbPh578-nXhty_oAfP_Zig3eFuN7iB3jID6q2NhkmAZclnUNduripuXWAhp4qE4Vf4L4FU8" + } + ], + "threadId": "1926aade210af14d" + } +] diff --git a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926a973a99da24c/emails.json b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926a973a99da24c/emails.json index 7c70d3cc..bd7b813e 100644 --- a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926a973a99da24c/emails.json +++ b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926a973a99da24c/emails.json @@ -10,7 +10,7 @@ "headers": [ { "name": "Delivered-To", - "value": "hassanwari254@gmail.com" + "value": "john@foo.com@gmail.com" }, { "name": "Received", @@ -42,7 +42,7 @@ }, { "name": "Received", - "value": "from mail.tendersunlimited.com (mail.tendersunlimited.com. [139.162.232.253]) by mx.google.com with ESMTPS id 4fb4d7f45d1cf-5c8e05e7708si5321409a12.211.2024.10.07.22.25.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Oct 2024 22:25:48 -0700 (PDT)" + "value": "from mail.tendersunlimited.com (mail.tendersunlimited.com. [139.162.232.253]) by mx.google.com with ESMTPS id 4fb4d7f45d1cf-5c8e05e7708si5321409a12.211.2024.10.07.22.25.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Oct 2024 22:25:48 -0700 (PDT)" }, { "name": "Received-SPF", @@ -54,7 +54,7 @@ }, { "name": "Received", - "value": "from localhost (unknown [IPv6:2a01:7e00::f03c:93ff:fe97:cccd]) by mail.tendersunlimited.com (Postfix) with ESMTPSA id 61E37DDD43 for ; Tue, 8 Oct 2024 05:22:56 +0000 (UTC)" + "value": "from localhost (unknown [IPv6:2a01:7e00::f03c:93ff:fe97:cccd]) by mail.tendersunlimited.com (Postfix) with ESMTPSA id 61E37DDD43 for ; Tue, 8 Oct 2024 05:22:56 +0000 (UTC)" }, { "name": "DKIM-Filter", @@ -70,7 +70,7 @@ }, { "name": "To", - "value": "hassanwari254@gmail.com" + "value": "john@foo.com@gmail.com" }, { "name": "From", diff --git a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae406722332/emails.json b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae406722332/emails.json index 615ff2ed..d93738f3 100644 --- a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae406722332/emails.json +++ b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae406722332/emails.json @@ -1,161 +1,157 @@ { - "id": "1926aae406722332", - "threadId": "1926aade210af14d", - "labelIds": [ - "IMPORTANT", - "SENT", - "INBOX" - ], - "snippet": "This is an example body", - "payload": { - "partId": "", - "mimeType": "multipart/mixed", - "filename": "", - "headers": [ - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Date", - "value": "Tue, 8 Oct 2024 08:48:56 +0300" - }, - { - "name": "Message-ID", - "value": "" - }, - { - "name": "Subject", - "value": "THIS IS AN EXAMPLE" - }, - { - "name": "From", - "value": "Hassan Wari " - }, - { - "name": "To", - "value": "Hassan Wari " - }, - { - "name": "Content-Type", - "value": "multipart/mixed; boundary=\"000000000000aced560623f0b812\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "multipart/alternative", + "id": "1926aae406722332", + "threadId": "1926aade210af14d", + "labelIds": ["IMPORTANT", "SENT", "INBOX"], + "snippet": "This is an example body", + "payload": { + "partId": "", + "mimeType": "multipart/mixed", "filename": "", "headers": [ - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"000000000000aced540623f0b810\"" - } + { + "name": "MIME-Version", + "value": "1.0" + }, + { + "name": "Date", + "value": "Tue, 8 Oct 2024 08:48:56 +0300" + }, + { + "name": "Message-ID", + "value": "" + }, + { + "name": "Subject", + "value": "THIS IS AN EXAMPLE" + }, + { + "name": "From", + "value": "John Doe " + }, + { + "name": "To", + "value": "John Doe " + }, + { + "name": "Content-Type", + "value": "multipart/mixed; boundary=\"000000000000aced560623f0b812\"" + } ], "body": { - "size": 0 + "size": 0 }, "parts": [ - { - "partId": "0.0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=\"UTF-8\"" - } - ], - "body": { - "size": 25, - "data": "VGhpcyBpcyBhbiBleGFtcGxlIGJvZHkNCg==" + { + "partId": "0", + "mimeType": "multipart/alternative", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "multipart/alternative; boundary=\"000000000000aced540623f0b810\"" + } + ], + "body": { + "size": 0 + }, + "parts": [ + { + "partId": "0.0", + "mimeType": "text/plain", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/plain; charset=\"UTF-8\"" + } + ], + "body": { + "size": 25, + "data": "VGhpcyBpcyBhbiBleGFtcGxlIGJvZHkNCg==" + } + }, + { + "partId": "0.1", + "mimeType": "text/html", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/html; charset=\"UTF-8\"" + } + ], + "body": { + "size": 46, + "data": "PGRpdiBkaXI9Imx0ciI-VGhpcyBpcyBhbiBleGFtcGxlIGJvZHk8L2Rpdj4NCg==" + } + } + ] + }, + { + "partId": "1", + "mimeType": "image/png", + "filename": "img.PNG", + "headers": [ + { + "name": "Content-Type", + "value": "image/png; name=\"img.PNG\"" + }, + { + "name": "Content-Disposition", + "value": "attachment; filename=\"img.PNG\"" + }, + { + "name": "Content-Transfer-Encoding", + "value": "base64" + }, + { + "name": "X-Attachment-Id", + "value": "f_m200t4dm1" + }, + { + "name": "Content-ID", + "value": "" + } + ], + "body": { + "attachmentId": "ANGjdJ8LWm3x7O6Bwac3xTFChBSSEaETWh_iacWZD5j1jwm6f620timuhwTop7Jj6mKiv4qO74PZumcn7vJzC_E3AFGu5dgNNzFMruYNakYaUG4J0yPQE1_HH8TV0aRvdEJaxvVslx1imiA22t9F8zLKTzfs7bvR658L_5j7XMzQEf5dJGZeLGMvnnl9A-Xzky670zw4N8eni8tkfI_lS6N-knZTGQYntzdG1Oc9BgsdPj2LQbe4tb5tXt5P1xV6gIbn_AdVD442nX2bjFE155F-NXGF5oa3MX178XdZfDll_Ph6J6wQ3sSuDXs3LzA", + "size": 19165 + } + }, + { + "partId": "2", + "mimeType": "image/png", + "filename": "imageee.PNG", + "headers": [ + { + "name": "Content-Type", + "value": "image/png; name=\"imageee.PNG\"" + }, + { + "name": "Content-Disposition", + "value": "attachment; filename=\"imageee.PNG\"" + }, + { + "name": "Content-Transfer-Encoding", + "value": "base64" + }, + { + "name": "X-Attachment-Id", + "value": "f_m200t4cz0" + }, + { + "name": "Content-ID", + "value": "" + } + ], + "body": { + "attachmentId": "ANGjdJ9NnyZ7MVj8UqLyhdHLNGEX0EP6cxqro7CkMYWq-yFbscDHN_CcPtPHdn3QuIVSZiSvcUmGHYnWBgmGhu9NioyvZ-2owYuT31JRM3cyz89dixV-LdBjy5VTQSlB177u-cs7W_wAsZ68C1Eoyp3sHtMHsd8xTAM-_uOK9tvXUBCVLo860pQcQOfum8AQekmiiiiMOrSahvvdG7dM7aBqx2XVD1fePzatj9biVireq0c_52cKbAV0dbPh578-nXhty_oAfP_Zig3eFuN7iB3jID6q2NhkmAZclnUNduripuXWAhp4qE4Vf4L4FU8", + "size": 7419 + } } - }, - { - "partId": "0.1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=\"UTF-8\"" - } - ], - "body": { - "size": 46, - "data": "PGRpdiBkaXI9Imx0ciI-VGhpcyBpcyBhbiBleGFtcGxlIGJvZHk8L2Rpdj4NCg==" - } - } ] - }, - { - "partId": "1", - "mimeType": "image/png", - "filename": "img.PNG", - "headers": [ - { - "name": "Content-Type", - "value": "image/png; name=\"img.PNG\"" - }, - { - "name": "Content-Disposition", - "value": "attachment; filename=\"img.PNG\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "base64" - }, - { - "name": "X-Attachment-Id", - "value": "f_m200t4dm1" - }, - { - "name": "Content-ID", - "value": "" - } - ], - "body": { - "attachmentId": "ANGjdJ8LWm3x7O6Bwac3xTFChBSSEaETWh_iacWZD5j1jwm6f620timuhwTop7Jj6mKiv4qO74PZumcn7vJzC_E3AFGu5dgNNzFMruYNakYaUG4J0yPQE1_HH8TV0aRvdEJaxvVslx1imiA22t9F8zLKTzfs7bvR658L_5j7XMzQEf5dJGZeLGMvnnl9A-Xzky670zw4N8eni8tkfI_lS6N-knZTGQYntzdG1Oc9BgsdPj2LQbe4tb5tXt5P1xV6gIbn_AdVD442nX2bjFE155F-NXGF5oa3MX178XdZfDll_Ph6J6wQ3sSuDXs3LzA", - "size": 19165 - } - }, - { - "partId": "2", - "mimeType": "image/png", - "filename": "imageee.PNG", - "headers": [ - { - "name": "Content-Type", - "value": "image/png; name=\"imageee.PNG\"" - }, - { - "name": "Content-Disposition", - "value": "attachment; filename=\"imageee.PNG\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "base64" - }, - { - "name": "X-Attachment-Id", - "value": "f_m200t4cz0" - }, - { - "name": "Content-ID", - "value": "" - } - ], - "body": { - "attachmentId": "ANGjdJ9NnyZ7MVj8UqLyhdHLNGEX0EP6cxqro7CkMYWq-yFbscDHN_CcPtPHdn3QuIVSZiSvcUmGHYnWBgmGhu9NioyvZ-2owYuT31JRM3cyz89dixV-LdBjy5VTQSlB177u-cs7W_wAsZ68C1Eoyp3sHtMHsd8xTAM-_uOK9tvXUBCVLo860pQcQOfum8AQekmiiiiMOrSahvvdG7dM7aBqx2XVD1fePzatj9biVireq0c_52cKbAV0dbPh578-nXhty_oAfP_Zig3eFuN7iB3jID6q2NhkmAZclnUNduripuXWAhp4qE4Vf4L4FU8", - "size": 7419 - } - } - ] - }, - "sizeEstimate": 37568, - "historyId": "3310366", - "internalDate": "1728366536000" -} \ No newline at end of file + }, + "sizeEstimate": 37568, + "historyId": "3310366", + "internalDate": "1728366536000" +} diff --git a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae5958a57a8/emails.json b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae5958a57a8/emails.json index 73ae51ff..3c278d69 100644 --- a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae5958a57a8/emails.json +++ b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae5958a57a8/emails.json @@ -1,77 +1,75 @@ { - "id": "1926aae5958a57a8", - "threadId": "1926aae51748a654", - "labelIds": [ - "DRAFT" - ], - "snippet": "", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Date", - "value": "Tue, 8 Oct 2024 08:49:02 +0300" - }, - { - "name": "Message-ID", - "value": "" - }, - { - "name": "Subject", - "value": "" - }, - { - "name": "From", - "value": "Hassan Wari " - }, - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"0000000000000823c70623f0b93e\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=\"UTF-8\"" - } - ], - "body": { - "size": 2, - "data": "DQo=" - } - }, - { - "partId": "1", - "mimeType": "text/html", + "id": "1926aae5958a57a8", + "threadId": "1926aae51748a654", + "labelIds": ["DRAFT"], + "snippet": "", + "payload": { + "partId": "", + "mimeType": "multipart/alternative", "filename": "", "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=\"UTF-8\"" - } + { + "name": "MIME-Version", + "value": "1.0" + }, + { + "name": "Date", + "value": "Tue, 8 Oct 2024 08:49:02 +0300" + }, + { + "name": "Message-ID", + "value": "" + }, + { + "name": "Subject", + "value": "" + }, + { + "name": "From", + "value": "John Doe " + }, + { + "name": "Content-Type", + "value": "multipart/alternative; boundary=\"0000000000000823c70623f0b93e\"" + } ], "body": { - "size": 27, - "data": "PGRpdiBkaXI9Imx0ciI-PGJyPjwvZGl2Pg0K" - } - } - ] - }, - "sizeEstimate": 493, - "historyId": "3309820", - "internalDate": "1728366542000" -} \ No newline at end of file + "size": 0 + }, + "parts": [ + { + "partId": "0", + "mimeType": "text/plain", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/plain; charset=\"UTF-8\"" + } + ], + "body": { + "size": 2, + "data": "DQo=" + } + }, + { + "partId": "1", + "mimeType": "text/html", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/html; charset=\"UTF-8\"" + } + ], + "body": { + "size": 27, + "data": "PGRpdiBkaXI9Imx0ciI-PGJyPjwvZGl2Pg0K" + } + } + ] + }, + "sizeEstimate": 493, + "historyId": "3309820", + "internalDate": "1728366542000" +} diff --git a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae906133846/emails.json b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae906133846/emails.json deleted file mode 100644 index 2dc89a8b..00000000 --- a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926aae906133846/emails.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "id": "1926aae906133846", - "threadId": "1926aade210af14d", - "labelIds": [ - "IMPORTANT", - "SENT", - "INBOX" - ], - "snippet": "Response On Tue, Oct 8, 2024 at 8:48 AM Hassan Wari <hassanwari254@gmail.com> wrote: This is an example body", - "payload": { - "partId": "", - "mimeType": "multipart/mixed", - "filename": "", - "headers": [ - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Date", - "value": "Tue, 8 Oct 2024 08:49:17 +0300" - }, - { - "name": "References", - "value": "" - }, - { - "name": "In-Reply-To", - "value": "" - }, - { - "name": "Message-ID", - "value": "" - }, - { - "name": "Subject", - "value": "Re: THIS IS AN EXAMPLE" - }, - { - "name": "From", - "value": "Hassan Wari " - }, - { - "name": "To", - "value": "Hassan Wari " - }, - { - "name": "Content-Type", - "value": "multipart/mixed; boundary=\"000000000000e54a2b0623f0b9d8\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"000000000000e54a2a0623f0b9d6\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0.0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=\"UTF-8\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 123, - "data": "UmVzcG9uc2UNCg0KT24gVHVlLCBPY3QgOCwgMjAyNCBhdCA4OjQ44oCvQU0gSGFzc2FuIFdhcmkgPGhhc3NhbndhcmkyNTRAZ21haWwuY29tPiB3cm90ZToNCg0KPiBUaGlzIGlzIGFuIGV4YW1wbGUgYm9keQ0KPg0K" - } - }, - { - "partId": "0.1", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=\"UTF-8\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 418, - "data": "PGRpdiBkaXI9Imx0ciI-UmVzcG9uc2U8L2Rpdj48YnI-PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRyIj5PbiBUdWUsIE9jdCA4LCAyMDI0IGF0IDg6NDjigK9BTSBIYXNzYW4gV2FyaSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmhhc3NhbndhcmkyNTRAZ21haWwuY29tIj5oYXNzYW53YXJpMjU0QGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI-PGRpdiBkaXI9Imx0ciI-VGhpcyBpcyBhbiBleGFtcGxlIGJvZHk8L2Rpdj4NCjwvYmxvY2txdW90ZT48L2Rpdj4NCg==" - } - } - ] - }, - { - "partId": "1", - "mimeType": "image/png", - "filename": "pic.PNG", - "headers": [ - { - "name": "Content-Type", - "value": "image/png; name=\"pic.PNG\"" - }, - { - "name": "Content-Disposition", - "value": "attachment; filename=\"pic.PNG\"" - }, - { - "name": "Content-Transfer-Encoding", - "value": "base64" - }, - { - "name": "X-Attachment-Id", - "value": "f_m200tkdk0" - }, - { - "name": "Content-ID", - "value": "" - } - ], - "body": { - "attachmentId": "ANGjdJ8t4FaSR6ZYWUz6zNbyosZR9ELO62MaJ3GFcmizO87HK8WXkG9mDzhSxHk5CAgKsrajkxCuPhcQqVISshEa1CmeLgu3iYJbme8tao7juLGv3d14_KtUgVrVYe0Br71T2TJnAJOb2GqeDdzSK0ZsAb7cGfIgGLxRoQAuLMhtMlKTfQ5Ne3Wlvj0ml4BOMxD-6r6-l1LxfkoC7bXcpRXCS_BBQIl_yhekHQkBneoxQx7qbal-aY-RKY4cqorlPNYphBIwHEdDe28m1hXZFZk1bC0F8KacQy3ZEIzlO5tz2gNMqbQMTBSblJEhSNU", - "size": 3647 - } - } - ] - }, - "sizeEstimate": 6723, - "historyId": "3310354", - "internalDate": "1728366557000" -} \ No newline at end of file diff --git a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926ab2f388ee820/emails.json b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926ab2f388ee820/emails.json index 42ffb24d..c47cc51e 100644 --- a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926ab2f388ee820/emails.json +++ b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926ab2f388ee820/emails.json @@ -1,83 +1,79 @@ { - "id": "1926ab2f388ee820", - "threadId": "1926ab2eb6b97dbd", - "labelIds": [ - "IMPORTANT", - "SENT", - "INBOX" - ], - "snippet": "", - "payload": { - "partId": "", - "mimeType": "multipart/alternative", - "filename": "", - "headers": [ - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Date", - "value": "Tue, 8 Oct 2024 08:54:04 +0300" - }, - { - "name": "Message-ID", - "value": "" - }, - { - "name": "Subject", - "value": "" - }, - { - "name": "From", - "value": "Hassan Wari " - }, - { - "name": "To", - "value": "Hassan Wari " - }, - { - "name": "Content-Type", - "value": "multipart/alternative; boundary=\"000000000000089a9e0623f0cb41\"" - } - ], - "body": { - "size": 0 - }, - "parts": [ - { - "partId": "0", - "mimeType": "text/plain", - "filename": "", - "headers": [ - { - "name": "Content-Type", - "value": "text/plain; charset=\"UTF-8\"" - } - ], - "body": { - "size": 2, - "data": "DQo=" - } - }, - { - "partId": "1", - "mimeType": "text/html", + "id": "1926ab2f388ee820", + "threadId": "1926ab2eb6b97dbd", + "labelIds": ["IMPORTANT", "SENT", "INBOX"], + "snippet": "", + "payload": { + "partId": "", + "mimeType": "multipart/alternative", "filename": "", "headers": [ - { - "name": "Content-Type", - "value": "text/html; charset=\"UTF-8\"" - } + { + "name": "MIME-Version", + "value": "1.0" + }, + { + "name": "Date", + "value": "Tue, 8 Oct 2024 08:54:04 +0300" + }, + { + "name": "Message-ID", + "value": "" + }, + { + "name": "Subject", + "value": "" + }, + { + "name": "From", + "value": "John Doe " + }, + { + "name": "To", + "value": "John Doe " + }, + { + "name": "Content-Type", + "value": "multipart/alternative; boundary=\"000000000000089a9e0623f0cb41\"" + } ], "body": { - "size": 27, - "data": "PGRpdiBkaXI9Imx0ciI-PGJyPjwvZGl2Pg0K" - } - } - ] - }, - "sizeEstimate": 536, - "historyId": "3310399", - "internalDate": "1728366844000" -} \ No newline at end of file + "size": 0 + }, + "parts": [ + { + "partId": "0", + "mimeType": "text/plain", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/plain; charset=\"UTF-8\"" + } + ], + "body": { + "size": 2, + "data": "DQo=" + } + }, + { + "partId": "1", + "mimeType": "text/html", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/html; charset=\"UTF-8\"" + } + ], + "body": { + "size": 27, + "data": "PGRpdiBkaXI9Imx0ciI-PGJyPjwvZGl2Pg0K" + } + } + ] + }, + "sizeEstimate": 536, + "historyId": "3310399", + "internalDate": "1728366844000" +} diff --git a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926ab7f84de3228/emails.json b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926ab7f84de3228/emails.json index d800038e..c121cdc1 100644 --- a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926ab7f84de3228/emails.json +++ b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926ab7f84de3228/emails.json @@ -1,120 +1,116 @@ { - "id": "1926ab7f84de3228", - "threadId": "1926ab7f84de3228", - "labelIds": [ - "CATEGORY_PROMOTIONS", - "UNREAD", - "INBOX" - ], - "snippet": "For Publishers View in browser Switch to weekly Feedspot Try Pro for Free Feedspot digest contains latest stories from the sites you're following on Feedspot. Configure. The Hacker News UK Hacker", - "payload": { - "partId": "", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "hassanwari254@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a05:6f02:c091:b0:74:e4b5:b3c7 with SMTP id a17csp2294703rcc; Mon, 7 Oct 2024 23:01:35 -0700 (PDT)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IH07niUGdw7T4gK49d8WbCzAY/cx4IM+yYuS8SwdKUUz3PVt9P7+MmjdR12nokubFsn6pe3" - }, - { - "name": "X-Received", - "value": "by 2002:a17:902:e80d:b0:20b:4f95:9335 with SMTP id d9443c01a7336-20bff04ba04mr229391015ad.43.1728367294945; Mon, 07 Oct 2024 23:01:34 -0700 (PDT)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1728367294; cv=none; d=google.com; s=arc-20240605; b=B27gPkBcJfGHizlPuGiq2eGZ01wbO0Kx2X87e7QgarpyKg57Hljgq7dUhUFN8ER0tm idj1mIN0VcaK6EYMP8kegOSret+50dYjpXeG/R2vQayeyZv6LiLEkvctuBTsuWZyE21B xZcC8WoqQG58fGrjd1GeW0mdgm4LTa9X1SlV8C3auDnOFyfQDAQbrKRuggcnvyUz5k+E 7RrNgeQO3j+3UvqpZ8yQWiLhL00K7cotLUFyltwsyhKnb42zxza6HY8FLI1wJO94eYh0 VGZiJ8CqxKwkHeAoNWfpdUEv7itWsULvAAFDblkL22O7neB+879OYJClIWNDBW8PGAYD 9EGA==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:mail-log-id:feedback-id:message-id :subject:reply-to:from:to:dkim-signature:date; bh=0PXW0qyOUlcTd6X3ljOvUwLnP7nJzjS147wuX7ROeY4=; fh=ZFfeWVxw4L0EQu5c9o8c02kNCYnwsvyCNJ1DnZxyxSI=; b=ZyK+X8Sf7vvnO6cg72Yn1oQvCAapemRBPseqHrmCni02JXrKhuCkEN7/V1HSk30vBc yQGc6SHRyDkmtdWmD8a0EgPZuqr3f3f2bSLuEBvIWc8MIik63IEPolyALnH/Ns9Qw4d9 enNsskxwVKNbFdRAcC+Ar9oTAbzX9MAacLuvpjpBxEiIQHcbjXE3fVPTrrE1VP5scQmf bdBNsjZtaAGW/awwLiFh9108RHvLDrzdR92bI198+eevZrf9ivJhW8eWtcOr1Sn1nWrf Wj+FsGWDlzc0vDXe1w+QS/jp2Tfsr4y01NsKJJO8kPNIwHXDgPO54qBNwpqRys8aT7T7 l4eg==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@e.feedspot.com header.s=default header.b=hMQoXYE7; spf=pass (google.com: domain of nobody@e.feedspot.com designates 54.203.70.116 as permitted sender) smtp.mailfrom=nobody@e.feedspot.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=e.feedspot.com" - }, - { - "name": "Return-Path", - "value": "" - }, - { - "name": "Received", - "value": "from e6.feedspot.com (e6.feedspot.com. [54.203.70.116]) by mx.google.com with ESMTPS id 41be03b00d2f7-7e9f683fca0si8242222a12.127.2024.10.07.23.01.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Oct 2024 23:01:34 -0700 (PDT)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of nobody@e.feedspot.com designates 54.203.70.116 as permitted sender) client-ip=54.203.70.116;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@e.feedspot.com header.s=default header.b=hMQoXYE7; spf=pass (google.com: domain of nobody@e.feedspot.com designates 54.203.70.116 as permitted sender) smtp.mailfrom=nobody@e.feedspot.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=e.feedspot.com" - }, - { - "name": "Date", - "value": "Mon, 7 Oct 2024 23:01:34 -0700" - }, - { - "name": "X-DKIM", - "value": "Sendmail DKIM Filter v2.8.3 e6.feedspot.com 8D4D741136" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/simple; d=e.feedspot.com; s=default; t=1728367294; bh=fJnOf2MDWHKcqIPGvv7JkFfOqAtFkwiMYyzLztT4iQM=; h=To:From:Reply-To:Subject:Message-ID:Content-Type:\t Content-Transfer-Encoding; b=hMQoXYE7VqPQK2xz1l3qx0lJj5vQFJ4E4+OjgdDOIiYF4BBuIY1GJM0uxwa2WHg9c\t /f+tEbvp5igCb0MTs+KjT7XucHdcwMvqZeyMkjzVvU1bTkWcNb8s81zqEkW3dybllR\t Xda1mlf3JWPZQ5uJvq4kEQJ6ngOf+rE8gkl801/k=" - }, - { - "name": "To", - "value": "hassanwari254@gmail.com" - }, - { - "name": "From", - "value": "Feedspot Today " - }, - { - "name": "Reply-To", - "value": "Feedspot Today " - }, - { - "name": "Subject", - "value": "U.K. Hacker Charged in $3.75 Million Insider Trading Scheme Using Hacked Executive Emails, Vulnerable APIs.." - }, - { - "name": "Message-ID", - "value": "" - }, - { - "name": "X-Priority", - "value": "3" - }, - { - "name": "Feedback-ID", - "value": "dd-HVH275Ji8xsTFxZKCAhWCCMQ9++b:HVH275Ji8xsTFxZKCAhWCCMQ9++b:general:feedspot" - }, - { - "name": "Mail-Log-Id", - "value": "7644858343528394" - }, - { - "name": "Content-Type", - "value": "text/html; charset=UTF-8" - }, - { - "name": "Content-Transfer-Encoding", - "value": "quoted-printable" - } - ], - "body": { - "size": 29570, - "data": "PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj48aHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PXV0Zi04PjxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiBuYW1lPXZpZXdwb3J0PjxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbCBjaGFyc2V0PVVURi04IiBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZT48bWV0YSBjb250ZW50PSIiIGh0dHAtZXF1aXY9ZmVlZHNwb3Rfc2NyaXB0PjxzdHlsZT5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjYwMHB4KSB7DQogICAgICAgICAgICAuaW1nLXRodW1iIHsNCiAgICAgICAgICAgICAgICB3aWR0aDogODBweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgIGhlaWdodDogODBweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLmVudHJ5X2Rlc2Mgew0KICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfTwvc3R5bGU-PC9oZWFkPiA8Ym9keSBzdHlsZT0ibWFyZ2luOiAwIGF1dG87cGFkZGluZzogMDtiYWNrZ3JvdW5kOiAjRjFGMUYyO2JhY2tncm91bmQtY29sb3I6ICNGMUYxRjI7Ij48dGFibGUgYWxpZ249Y2VudGVyIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT0ibWF4LXdpZHRoOjY0OHB4O3dpZHRoOjEwMCU7cGFkZGluZzowIDEwcHggMTBweCAxMHB4O2ZvbnQtZmFtaWx5OiBoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmO2JhY2tncm91bmQ6ICNGMUYxRjI7YmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMjsiPjx0Ym9keT48dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNGMUYxRjI7YmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMjsiPjx0ZCBhbGlnbj1yaWdodCBjb2xzcGFuPTIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7cGFkZGluZzo1cHggMCI-PGEgaHJlZj0iaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5mZWVkc3BvdCIgc3R5bGU9Y29sb3I6YmxhY2shaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIHRhcmdldD1fYmxhbms-PGltZyBoZWlnaHQ9MXB4IHNyYz1odHRwczovL3QuZmVlZHNwb3QuY29tL2ZzL2ltZy9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZnpKUlVWRWRBS1J3THNJc1cyWngzbDV4NCUzRC9sb2dvLmdpZiB3aWR0aD0xcHg-IDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGcHVibGlzaGVyJTJGcHJpY2luZyUzRl9zcmMlM0RkZCIgc3R5bGU9ImNvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcDtib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAjYWZhZmFmO3BhZGRpbmc6IDAgNXB4O2ZvbnQtc2l6ZTogMTFweDsiPkZvciBQdWJsaXNoZXJzPC9hPiA8YSBocmVmPSJodHRwczovL3d3dy5mZWVkc3BvdC5jb20vbG9naW4_aD1GME1IODQ5WEtoZFhHdU1hMk5WTkJoQkxBSzZSV0NEaUhoWVdITlg0RzhyaUZNVzJaVS9vR2hqbkUwc0Y5aGZTNEJySjVaRWU1QnNSNHVnWTE4c2F5dUVieUE9PSZjb250aW51ZT1odHRwcyUzQSUyRiUyRnd3dy5mZWVkc3BvdC5jb20lMkZicm93c2VydmlldyUzRmtleSUzRDVoakl0R1llNiUyQmtaNU9ZWDNNZ2Z6ZTlCMU45dVVSUXBXQklmWEFVSFQ4dmtGdFRubTBvY0loTVVJRkxrOUNiNDd4UExzbVljNmUwWDZ1VWIyOFVhJTJGQkJFJTJCYmVUSWhrYyIgc3R5bGU9ImNvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcDtib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAjYWZhZmFmO3BhZGRpbmc6IDAgNXB4O2ZvbnQtc2l6ZTogMTFweDsiPlZpZXcgaW4gYnJvd3NlcjwvYT4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGdXNlcmVkaXQlM0ZpbnRlbnQlM0R3ZWVrbHklMjZzZXQlM0RkYWlseWRpZ2VzdCUyNmRkJTNENzY0NDg1ODM0MzUyODM5NCIgc3R5bGU9ImNvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcDtwYWRkaW5nOiAwIDVweDtmb250LXNpemU6IDExcHg7Zm9udC13ZWlnaHQ6IG5vcm1hbDsiPlN3aXRjaCB0byB3ZWVrbHk8L2E-PC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGFsaWduPWNlbnRlciBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6NnB4IDBweCA2cHg7IiB2YWxpZ249dG9wPjxkaXYgc3R5bGU9Zm9udC1zaXplOjEzcHg7Y29sb3I6I2ZmZjs-PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGcmVhZGVyIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7bWFyZ2luLWxlZnQ6IDE1cHg7cGFkZGluZzo3cHggMCAwIDA7Ij48aW1nIGFsdD1GZWVkc3BvdCBoZWlnaHQ9MjRweCBzcmM9aHR0cHM6Ly9jZG4uZmVlZHNwb3QuY29tL2ltZy9lbWFpbC9kZC92Ny9sb2dvX2JsdWUucG5nIHN0eWxlPSJ3aWR0aDogMTMwcHg7aGVpZ2h0OiBhdXRvOyIgd2lkdGg9MTMwcHg-IDwvYT4gPGRpdiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmxvYXQ6IHJpZ2h0O21hcmdpbi1yaWdodDogMTVweDtwYWRkaW5nOiAxMHB4IDA7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUw5NlVYR1J0S0ZTUlZFd2tVJTJGQjVQdyUyQnlkVUJ3a0pCbnVLOVRpTHRIakclMkJ6TGxrMEwlMkZWciUyQkVoZnk2elRiRnlUZ3dYa2ZCUTBvOVJvdERPNDk0ZjA2eU1kbVd4ejhNZ2pqUCUyRm5FVmVBWFRBTEZYbHo1NzAwWEJCbm1CekRPQ1NmNXRYQmNCZXBhR0FvVzNBaEhFaVFuOXZsdkp2RGNTQ0FmV1EwRFclMkY3c1NnajBubHpZNlNiVzR5dkp4eXdRSmxuQzVwTk9GeWxWSUNVVEJ3UlR2dUVvdWJOMFNDWW9TTmJrS1FqNVJmMFFTd0Q1a2xJYUcxZ2xGbElGJTJGbElIRUZnJTNEIHN0eWxlPSJib3JkZXItcmFkaXVzOiA0cHg7cGFkZGluZzogNXB4IDEwcHg7YmFja2dyb3VuZC1jb2xvcjogIzI2ODRGQztib3JkZXI6IDFweCBzb2xpZCAjMjY4NEZDO2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6ICNmZmY7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtc2l6ZTogc21hbGw7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPlRyeSBQcm8gZm9yIEZyZWU8L2E-IDwvZGl2PjwvZGl2PiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJjb2xvcjojMzMzO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LWFsaWduOiBsZWZ0O3BhZGRpbmc6IDEwcHg7Zm9udC1mYW1pbHk6IGhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyaWY7ICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOyI-PGRpdiBzdHlsZT1mb250LXNpemU6MTNweDtjb2xvcjojNzI3MjdEOz4gRmVlZHNwb3QgZGlnZXN0IGNvbnRhaW5zIGxhdGVzdCBzdG9yaWVzIGZyb20gdGhlIDxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFTDk2VVhHUnRLRlNSVkV3a1UlMkZCNVB3JTJCeWRVQndrSkJudUs5VGlMdEhqRyUyQnpMbGswTCUyRlZyJTJCRWhmeTZ6VGJGeVRnd1hrZkJRMG85Um90RE80OTRmMDZ5TWRtV3h6OE1nampQJTJGbkVWZUFYVEFMRlhsejU3MDBYQkJubUJ6RE9DU2Y1dFhCY0JlcGFHQW9XM0FoSEVpUW45dmx2SnZEY1NDQWZXUTBEVyUyRjdzU2dqMG5selk2U2JXNHl2Snh5d1FKbG5DNXBOT0Z5bFZJQ1VUQndSVHZ1RW9DZk9UV3hnYVRpWFdHT3IlMkJWQTBVVUFpbFlTMGlLRXdTSDA0ZSUyQmd2TDVWWDU5Rk1jOXhwR0doMWVDUDVOJTJGaUpXdWJKa1RSZmJHUFhvRzlqSkhzN25GY2l6WXh2cjZSN2wgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZTtjb2xvcjogIzI2ODRGQzt3aGl0ZS1zcGFjZTogbm9ybWFsOyIgdGFyZ2V0PV9ibGFuaz5zaXRlcyB5b3UncmUgZm9sbG93aW5nPC9hPiBvbiBGZWVkc3BvdC4gPGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHclMkJ5ZFVCd2tKQm51SzlUaUx0SGpHJTJCekxsazBMJTJGVnIlMkJFaGZ5NnpUYkZ5VGd3WGtmQlEwbzlSb3RETzQ5NGYwNnlNZG1XeHo4TWdqalAlMkZuRVZlQVhUQUxGWGx6NTcwMFhCQm5tQnpET0NTZjV0WEJjQmVwYUdBb1czQWhIRWlRbjl2bHZKdkRjU0NBZldRMERXJTJGN3NTZ2owbmx6WTZTYlc0eXZKeHl3UUpsbkM1cE5PRnlsVklDVVRCd1JUdnVFb0NmT1RXeGdhVGlYV0dPb0lTdzNVRmRqa2oxSWZMMGthR0VvWENRdkw1VWI0cFdFdDZ1d1o1ZWthM01nYXpPUVV6TE5uSFElM0QlM0Qgc3R5bGU9dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzI2ODRGQzs-Q29uZmlndXJlPC9hPi4gPC9kaXY-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI0YxRjFGMjtiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYyOyI-PHRkIGNvbHNwYW49Mj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxNXB4OyI-PC9kaXY-PC90ZD4gPC90cj4gPHRyPjx0ZCBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6MTBweCAxMHB4O2JhY2tncm91bmQ6ICNmZmY7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFTDk2VVhHUnRLRlNSVkV3a1UlMkZCNVB3NyUyQldKdm5tTXZucEdkM3RNUUVUT3R2MWUwcmxCRHYlMkY4MDNtNFNmazVUVHJ3M0pTJTJCeDQlMkJDUGt6JTJGTWt0MFNGTDJzMkZHdzBMRkNENFRRNERLOGtpS00zb2xEem4lMkJGZjc1aiUyRnAlMkJodmJJalRJOVpWQzVPNVlFaXBhNmZkZjJ1d2Z1dWlQWEJ2elN4WVdTZFA3VmY4T1NBUGZvRWdTSEVUazVSN2J5Qm5ZRTBiUnQyUWQ1JTJCNGE2ZVFaMThvWTBlSWJ5QSUzRCUzRCBzdHlsZT1jb2xvcjojNTE1MDVEO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxNnB4Oz48c3BhbiBzdHlsZT1mb250LXdlaWdodDpib2xkO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTs-VGhlIEhhY2tlciBOZXdzPC9zcGFuPiA8L2E-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjx0ZCBjb2xzcGFuPSIiIHN0eWxlPSJwYWRkaW5nOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDt3aWR0aDogMTAwJTsiIHZhbGlnbj10b3A-PGRpdj48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUk2Sk5SRkJsUUZpTlRDUXhaeHhKUkFhOWdHZVhxRk9MaEZCa0FFd0VRUmYlMkZsb0JZV0hrWWpHRW9Jd2s4SDNCWEx0VnRXSENKUkdpQlQwdjFhQmhzJTNEIHN0eWxlPWZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjI0cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM0MTQwNEQ7IHRhcmdldD1fYmxhbms-VS5LLiBIYWNrZXIgQ2hhcmdlZCBpbiAkMy43NSBNaWxsaW9uIEluc2lkZXIgVHJhZGluZyBTY2hlbWUgVXNpbmcgSGFja2VkIEV4ZWN1dGl2ZSBFbWFpbHM8L2E-IDwvZGl2PiA8ZGl2IGNsYXNzPWVudHJ5X2Rlc2Mgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDtjb2xvcjojNzI3MjdEOz5UaGUgVS5TLiBEZXBhcnRtZW50IG9mIEp1c3RpY2UgKERvSikgaGFzIGNoYXJnZWQgYSAzOS15ZWFyLW9sZCBVLksuIG5hdGlvbmFsIGZvciBwZXJwZXRyYXRpbmcgYSBoYWNrLXRvLXRyYWRlIGZyYXVkIHMuLi48L2Rpdj4gPGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjogIzk1OTU5RCI-PHNwYW4-MTMgaG91cnMgYWdvPC9zcGFuPiA8L2Rpdj48L3RkPiA8dGQgc3R5bGU9InBhZGRpbmc6MTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO3BhZGRpbmctbGVmdDowIiB2YWxpZ249dG9wPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFSTZKTlJGQmxRRmlOVENReFp4eEpSQWE5Z0dlWHFGT0xoRkJrQUV3RVFSZiUyRmxvQllXSGtZakdFb0l3azhIM0JYTHRWdFdIQ0pSR2lCVDB2MWFCaHMlM0QgdGFyZ2V0PV9ibGFuaz48aW1nIGFsdD0iVGhlIEhhY2tlciBOZXdzIiBjbGFzcz1pbWctdGh1bWIgc3JjPSJodHRwczovL3Byb3h5LmZlZWRzcG90LmNvbS80NzZkY2ZmNDUyMTg2ZDdmYWI2MWJkNjQ5YjU5NTdiZDc4MzUyY2MyLzY4NzQ3NDcwNzMzYTJmMmY2MjZjNmY2NzY3NjU3MjJlNjc2ZjZmNjc2YzY1NzU3MzY1NzI2MzZmNmU3NDY1NmU3NDJlNjM2ZjZkMmY2OTZkNjcyZjYyMmY1MjMyMzk3NjVhMzI3ODZjMmY0MTU2NzY1ODczNDU2OTZlNjY2ZDZlNDE0ODczNmM1ODZkNGQ2NjM0NmE3MDcyNTAzMjMzMzA3MDM3NDMzMjdhNjM1NjQyNzI1MzZhNGE2YjQ3NDk1NDdhNzE2NTcxNjI2Yzc2MzQ1ODRjN2EzMjQzNGMzMjY4N2E2MzM4NDY2NzY2NjE3MjRkNTM3MzMyNGM2YzYyNGI2MzQzN2E2ZjUyMzg0NDcxNDQ1Zjc0NmE1Mjc5NTU0OTc2Nzk0Njc5NTM3OTZlMzY0MjRiNTA3OTQzNDQzOTU4NjMzNzMxNGQ0NzZmNDQzNDY5NzQ1NDQ3Mzk3NTQ3NTcyZDVhMzYzNjU5NDk2MjQzNzk0MTQ5NjM1MzZjNzU2MTc5MzM0Yjc3MzAzNjRkMzk2ODQ5Mzc0NDY0NTA2ZTQxNTI0MzY1MzQ2NDZiNTE1MTcxNGU0YTZlNmY1NjRiNDI3OTc0NmE1OTVmMzQ2YTQ2NmQ1MDUxMzE1MjM0NTA3OTY4NTY1ODUwNmQ2MTRiNmY3NTJmNzMzNzMyMzgyZDcyNzcyZDY1MzMzNjM1MmY2ODYxNjM2NTY0MmU3MDZlNjcvP3A9MyIgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtvYmplY3QtZml0OiBjb3Zlcjtib3JkZXI6IDBweCBzb2xpZCAjZGRkOyIgd2lkdGg9MTAwPjwvYT4gPC90ZD48L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUk2Sk5SRkJsUUZpTlRDUXhaeHhKUkFhOWdHZVhxRk9MaEZCb0tVZ2NVVlBYaW1rN2dGMVVhSkJJRkEwckdFVkVJclk5ZEp4ZElIQ1FTQndSWkRSaFElMkI2NldYU0FpIHN0eWxlPWZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzQxNDA0RDs-VnVsbmVyYWJsZSBBUElzIGFuZCBCb3QgQXR0YWNrcyBDb3N0aW5nIEJ1c2luZXNzZXMgVXAgdG8gLi4uIDxzcGFuIHN0eWxlPSJjb2xvcjogIzc3Nztmb250LXNpemU6ODAlO3doaXRlLXNwYWNlOiBub3dyYXA7Ij4gJmJ1bGw7IDE4IGhvdXJzIGFnbzwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUw5NlVYR1J0S0ZTUlZFd2tVJTJGQjVQdzclMkJXSnZubU12bnBHZDN0TVFFVE90djFlMHJsQkR2JTJGODAzbTRTZms1VFRydzNKUyUyQng0JTJCQ1BreiUyRk1rdDBTRkwyczJGR3cwTEZDRDRUUTRESzhraUtNM29sRHpuJTJCRmY3NWolMkZwJTJCaHZiSWpUSTlaVkM1TzVZRWlwYTZmZGYydXdmdXVpUFhCdnpTeFlXU2RQN1ZmOE9TQVBmb0VnU0hFVGs1UjdieUJuWUUwYlJ0MlFkNSUyQjRhNmVRWjE4b1kwZUlieUElM0QlM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMjY4NEZDO2ZvbnQtd2VpZ2h0Om5vcm1hbDs-NyBtb3JlIG5ldyBwb3N0cy4gUmVhZCBtb3JlIGF0IDxzcGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogbm93cmFwOyI-RmVlZHNwb3QgJnJhcnI7PC9zcGFuPjwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRjFGMUYyO2JhY2tncm91bmQtY29sb3I6ICNGMUYxRjI7Ij48dGQgY29sc3Bhbj0yPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDE1cHg7Ij48L2Rpdj48L3RkPiA8L3RyPiA8dHI-PHRkIGNvbHNwYW49Mj48dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmO2JhY2tncm91bmQtY29sb3I6ICNmZmY7Zm9udC1mYW1pbHk6IGhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO21hcmdpbjowO3dpZHRoOiAxMDAlO21heC13aWR0aDogNjQ4cHg7Ij48dHI-PHRkIHN0eWxlPSJwYWRkaW5nOjEwcHggMTBweDt3aWR0aDogMTAwJTsgIj48ZGl2IHN0eWxlPSJwYWRkaW5nOiAxNnB4O2JvcmRlcjogMXB4IHNvbGlkICNkZGQ7dGV4dC1hbGlnbjogY2VudGVyO2JhY2tncm91bmQ6ICMyNjg0ZmMgdXJsKCdodHRwczovL2Nkbi5mZWVkc3BvdC5jb20vaW1nL2VtYWlsL2RkL3Y3L2FkLXdhdmUtYmcuanBnJykgbm8tcmVwZWF0IGNlbnRlciBsZWZ0IC8gY292ZXI7YmFja2dyb3VuZC1jb2xvcjogIzI2ODRmYzsiPjxkaXYgc3R5bGU9Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjJweDtmb250LXdlaWdodDpib2xkO2NvbG9yOiNmZmZmZmY-IFByb21vdGUgeW91ciBCbG9nICZhbXA7IFBvZGNhc3QgPC9kaXY-IDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIycHg7Y29sb3I6I2ZmZmZmZjttYXJnaW46NXB4IDAgMTBweCAwIj4gMjUwSyBCbG9ncywgUG9kY2FzdHMsIGFuZCBQdWJsaWNhdGlvbnMgbGlzdGVkIG9uIEZlZWRTcG90LiA8L2Rpdj4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGcHVibGlzaGVyJTJGaG9tZSUzRl9zcmMlM0RkZCUyNnV0bV9jYW1wYWlnbiUzRGRkYWRkIiBzdHlsZT0iYm9yZGVyLXJhZGl1czo0cHg7cGFkZGluZzoxMHB4IDEycHg7YmFja2dyb3VuZC1jb2xvcjojRkZFMUNDO2JvcmRlcjoxcHggc29saWQgI0ZGQTQ2Njtmb250LXdlaWdodDpib2xkO2NvbG9yOiMzMzMzMzM7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OiAxO3RleHQtZGVjb3JhdGlvbjpub25lO21hcmdpbi10b3A6NHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIiB0YXJnZXQ9X2JsYW5rPiBTdWJtaXQgWW91ciBTaXRlIEZvciBGcmVlIDwvYT48L2Rpdj4gPC90ZD4gPC90cj4gPC90YWJsZT4gPC90ZD4gPC90cj4gPHRyPjx0ZCBjb2xzcGFuPTI-PC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRjFGMUYyO2JhY2tncm91bmQtY29sb3I6ICNGMUYxRjI7Ij48dGQgY29sc3Bhbj0yPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDE1cHg7Ij48L2Rpdj48L3RkPiA8L3RyPiA8dHI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzoxMHB4IDEwcHg7YmFja2dyb3VuZDogI2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHc3JTJCV0p2bm1Ndm5wR2QzdE1RRVRPdHYxZTBybEJEdiUyRjgwM200U2ZrNVRUcnczSlMlMkJ4NCUyQkNQa3olMkZNa3QwU0ZMMnMyRkd3MExGQ0Q0VFE0REs4a2lLTTNvbER6biUyQkZmNzVqJTJGcCUyQmh2YklqVEk5WlZDNU81WUVpcGE2ZmRmMnV3ZnV1aVBYQnZ6U3hZV1NkUDdWZjhPU0FQZm9FZ1NIRVRsNVJiZHlCJTJGTTdrYjR2V1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlElM0Qgc3R5bGU9Y29sb3I6IzUxNTA1RDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNpemU6MTZweDs-PHNwYW4gc3R5bGU9Zm9udC13ZWlnaHQ6Ym9sZDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Pktub3dCZTQgQmxvZzwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0iIiBzdHlsZT0icGFkZGluZzoxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7d2lkdGg6IDEwMCU7IiB2YWxpZ249dG9wPjxkaXY-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEgyN0oxUTRTRlRJQ2hIQ2NrVSUyRkI1UHclMkJhZ1RoampWUmthV0F6JTJCVkFEY1VnRGhvazhpS0ZMZUZGY0o5bHIlMkJFdyUyRkZ0RjRaNCUyQllTSkNGVUUlMkZ0TCUyRmR4WiUyQmVLaFVpY2JXQSUzRCUzRCBzdHlsZT1mb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyNHB4O2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojNDE0MDREOyB0YXJnZXQ9X2JsYW5rPkZyZWUgUGhpc2hpbmcgUGxhdGZvcm0gSGFzIENyZWF0ZWQgTW9yZSB0aGFuIDE0MCwwMDAgU3Bvb2ZlZCBXZWJzaXRlczwvYT4gPC9kaXY-IDxkaXYgY2xhc3M9ZW50cnlfZGVzYyBzdHlsZT1mb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNHB4O2NvbG9yOiM3MjcyN0Q7PkEgZnJlZSBwaGlzaGluZy1hcy1hLXNlcnZpY2UgKFBoYWFTKSBwbGF0Zm9ybSBuYW1lZCBTbmlwZXIgRHogaGFzIGFzc2lzdGVkIGluIHRoZSBjcmVhdGlvbiBvZiBtb3JlIHRoYW4gMTQwLDAwMCBwaGlzaC4uLjwvZGl2PiA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOiAjOTU5NTlEIj48c3Bhbj4mbWludXM7IFN0dSBTam91d2VybWFuICZidWxsOyA1IGhvdXJzIGFnbzwvc3Bhbj4gPC9kaXY-PC90ZD4gPHRkIHN0eWxlPSJwYWRkaW5nOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDtwYWRkaW5nLWxlZnQ6MCIgdmFsaWduPXRvcD48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoSDI3SjFRNFNGVElDaEhDY2tVJTJGQjVQdyUyQmFnVGhqalZSa2FXQXolMkJWQURjVWdEaG9rOGlLRkxlRkZjSjlsciUyQkV3JTJGRnRGNFo0JTJCWVNKQ0ZVRSUyRnRMJTJGZHhaJTJCZUtoVWljYldBJTNEJTNEIHRhcmdldD1fYmxhbms-PGltZyBhbHQ9Iktub3dCZTQgQmxvZyIgY2xhc3M9aW1nLXRodW1iIHNyYz0iaHR0cHM6Ly9wcm94eS5mZWVkc3BvdC5jb20vMDhiNTEwMDc2MzQ3NDI5MDljMGJlNzg1NDdhZjc3MjQxZDFhZjBhYS82ODc0NzQ3MDczM2EyZjJmNjI2YzZmNjcyZTZiNmU2Zjc3NjI2NTM0MmU2MzZmNmQyZjY4NzU2MjY2NzMyZjQ0NmY2ZDYxNjk2ZTI1MzIzMDUzNzA2ZjZmNjY2OTZlNjcyNTMyMzA2NjZmNzIyNTMyMzA1MjY1NzY2NTZlNzU2NTJlNmE3MDY3Lz9wPTQiIHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7b2JqZWN0LWZpdDogY292ZXI7Ym9yZGVyOiAwcHggc29saWQgI2RkZDsiIHdpZHRoPTEwMD48L2E-IDwvdGQ-PC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzo1cHggMTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEgyN0oxUTRTRlRJQ2hIQ2NrVSUyRkI1UHclMkZlV1NpZmpSeDBXV1FmOVV2NG9Ed1Rob0ZUZ0trb1NGRTNSOTFzQ0cwYjk3cFVXSmlwWElCOU0wUWhMJTJGQ1JVJTJGZlNuRmhZclVTVW1Wd2slM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojNDE0MDREOz5XaGF0IEJsZXRjaGxleSBQYXJrIENhbiBUZWFjaCBVcyBBYm91dCBCdWlsZGluZyBhIFN0cm9uZyAuLi4gPHNwYW4gc3R5bGU9ImNvbG9yOiAjNzc3O2ZvbnQtc2l6ZTo4MCU7d2hpdGUtc3BhY2U6IG5vd3JhcDsiPiAmYnVsbDsgNSBob3VycyBhZ288L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzo1cHggMTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHc3JTJCV0p2bm1Ndm5wR2QzdE1RRVRPdHYxZTBybEJEdiUyRjgwM200U2ZrNVRUcnczSlMlMkJ4NCUyQkNQa3olMkZNa3QwU0ZMMnMyRkd3MExGQ0Q0VFE0REs4a2lLTTNvbER6biUyQkZmNzVqJTJGcCUyQmh2YklqVEk5WlZDNU81WUVpcGE2ZmRmMnV3ZnV1aVBYQnZ6U3hZV1NkUDdWZjhPU0FQZm9FZ1NIRVRsNVJiZHlCJTJGTTdrYjR2V1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlElM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMjY4NEZDO2ZvbnQtd2VpZ2h0Om5vcm1hbDs-MyBtb3JlIG5ldyBwb3N0cy4gUmVhZCBtb3JlIGF0IDxzcGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogbm93cmFwOyI-RmVlZHNwb3QgJnJhcnI7PC9zcGFuPjwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRjFGMUYyO2JhY2tncm91bmQtY29sb3I6ICNGMUYxRjI7Ij48dGQgY29sc3Bhbj0yPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDE1cHg7Ij48L2Rpdj48L3RkPiA8L3RyPiA8dHI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzoxMHB4IDEwcHg7YmFja2dyb3VuZDogI2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHc3JTJCV0p2bm1Ndm5wR2QzdE1RRVRPdHYxZTBybEJEdiUyRjgwM200U2ZrNVRUcnczSlMlMkJ4NCUyQkNQa3olMkZNa3QwU0ZMMnMyRkd3MExGQ0Q0VFE0REs4a2lLTTNvbER6biUyQkZmNzVqJTJGcCUyQmh2YklqVEk5WlZDNU81WUVpcGE2ZmRmMnV3ZnV1aVBYQnZ6U3hZV1NkUDdWZjhPU0FQZm9FZ1NIRVRsNXh2Y3hobks3a2I0dldVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJRJTNEIHN0eWxlPWNvbG9yOiM1MTUwNUQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1zaXplOjE2cHg7PjxzcGFuIHN0eWxlPWZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOz5HQkhhY2tlcnMgb24gU2VjdXJpdHk8L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49IiIgc3R5bGU9InBhZGRpbmc6MTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO3dpZHRoOiAxMDAlOyIgdmFsaWduPXRvcD48ZGl2PjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hINzRwWktGaUZLSXlRVEJ3UlR5QmRiOXZLWFRlQVhVeElkWGhmJTJCV2NZa1Z2M3NsMk1ZS1JJVUkwNFIlMkZsVDZHdyUyRjk4S0VXSlNWSEppUlowZmxWQmhCTEFxMlNTaWNYRkElM0QlM0Qgc3R5bGU9Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjRweDtmb250LXdlaWdodDo3MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzQxNDA0RDsgdGFyZ2V0PV9ibGFuaz5IeWJyaWQgQW5hbHlzaXMgVXRpbGl6ZXMgQ3JpbWluYWwgSVDigJlzIFJvYnVzdCBEb21haW4gRGF0YSBmb3IgQmV0dGVyIE1hbHdhcmUgRGV0ZWN0aW9uPC9hPiA8L2Rpdj4gPGRpdiBjbGFzcz1lbnRyeV9kZXNjIHN0eWxlPWZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7Y29sb3I6IzcyNzI3RDs-Q3JpbWluYWwgSVAsIGEgcmVub3duZWQgQ3liZXIgVGhyZWF0IEludGVsbGlnZW5jZSAoQ1RJKSBzZWFyY2ggZW5naW5lIGRldmVsb3BlZCBieSBBSSBTUEVSQSwgaGFzIHBhcnRuZXJlZCB3aXRoIEh5YnJpLi4uPC9kaXY-IDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7Y29sb3I6ICM5NTk1OUQiPjxzcGFuPiZtaW51czsgS2Fhdml5YSAmYnVsbDsgMTQgaG91cnMgYWdvPC9zcGFuPiA8L2Rpdj48L3RkPiA8dGQgc3R5bGU9InBhZGRpbmc6MTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO3BhZGRpbmctbGVmdDowIiB2YWxpZ249dG9wPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hINzRwWktGaUZLSXlRVEJ3UlR5QmRiOXZLWFRlQVhVeElkWGhmJTJCV2NZa1Z2M3NsMk1ZS1JJVUkwNFIlMkZsVDZHdyUyRjk4S0VXSlNWSEppUlowZmxWQmhCTEFxMlNTaWNYRkElM0QlM0QgdGFyZ2V0PV9ibGFuaz48aW1nIGFsdD0iR0JIYWNrZXJzIG9uIFNlY3VyaXR5IiBjbGFzcz1pbWctdGh1bWIgc3JjPSJodHRwczovL3Byb3h5LmZlZWRzcG90LmNvbS85OWMwODIxOWJiNWIwODk0MzBjNDRiMmZmNWFmNjQ0NjQyMDlhNjJmLzY4NzQ3NDcwNzMzYTJmMmY2MjZjNmY2NzY3NjU3MjJlNjc2ZjZmNjc2YzY1NzU3MzY1NzI2MzZmNmU3NDY1NmU3NDJlNjM2ZjZkMmY2OTZkNjcyZjYyMmY1MjMyMzk3NjVhMzI3ODZjMmY0MTU2NzY1ODczNDU2OTU3Njc2ODc5NzA2ODY1NmU2ODc5NzA2ODY1NmU2Nzc4NDkzMTM3NmU1OTYzNTM3MTQ2NDQzODc1NDkzOTcwNWEzNzY1NDIzNTQ4NGU3YTZmNTc0ZTY1NWE0YTM4Njk0ZTVhMzc3NzU3NGU2ZDdhNTU2ODUzNDI1ODYxNmQ1MzQzNDY3OTYyMzU0ODRlNTM1ODMyNzA2NzRlMzc0MTcwNTE0NzM0NGMzOTZmNTYzMTc1NzU2YzVhNjQ2MjQ5NmM1ODQyNDg2YTQ5NjI2NTZiNDM1NjMyNjk0NDU0MzA0NDRhNGM3MTYzNjczODY0NzI0NjU1NGM2MjU4NWY3YTZiNGQ0YjM0Njg0ZjYyNjIzNzc5NGU1MTQyNDMzNzUzNGI0NTMxMzgyZDU5NzEzNzZlNmM0MTMyNTU3YTQ1NGM1ODMyNDgzMDM4NWE2ODZiNjE3MzcxNzg0OTM2NTY0MTU1MzA0ZTU4MzI0ODZjNmM1MjRmMzc0MzcyNDE2MzU3NDQ0NTMyNTc0OTYxNzkzOTVmMmY3MzMxMzYzMDMwMzAyZjc1NmU2ZTYxNmQ2NTY0MjUzMjMwMjgzNjMwMjkyZTc3NjU2MjcwLz9wPTYiIHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7b2JqZWN0LWZpdDogY292ZXI7Ym9yZGVyOiAwcHggc29saWQgI2RkZDsiIHdpZHRoPTEwMD48L2E-IDwvdGQ-PC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzo1cHggMTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHc3JTJCV0p2bm1Ndm5wR2QzdE1RRVRPdHYxZTBybEJEdiUyRjgwM200U2ZrNVRUcnczSlMlMkJ4NCUyQkNQa3olMkZNa3QwU0ZMMnMyRkd3MExGQ0Q0VFE0REs4a2lLTTNvbER6biUyQkZmNzVqJTJGcCUyQmh2YklqVEk5WlZDNU81WUVpcGE2ZmRmMnV3ZnV1aVBYQnZ6U3hZV1NkUDdWZjhPU0FQZm9FZ1NIRVRsNXh2Y3hobks3a2I0dldVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJRJTNEIHN0eWxlPWZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzI2ODRGQztmb250LXdlaWdodDpub3JtYWw7PjUgbW9yZSBuZXcgcG9zdHMuIFJlYWQgbW9yZSBhdCA8c3BhbiBzdHlsZT0id2hpdGUtc3BhY2U6IG5vd3JhcDsiPkZlZWRzcG90ICZyYXJyOzwvc3Bhbj48L2E-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI0YxRjFGMjtiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYyOyI-PHRkIGNvbHNwYW49Mj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxNXB4OyI-PC9kaXY-PC90ZD4gPC90cj4gPHRyPjx0ZCBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6MTBweCAxMHB4O2JhY2tncm91bmQ6ICNmZmY7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFTDk2VVhHUnRLRlNSVkV3a1UlMkZCNVB3NyUyQldKdm5tTXZucEdkM3RNUUVUT3R2MWUwcmxCRHYlMkY4MDNtNFNmazVUVHJ3M0pTJTJCeDQlMkJDUGt6JTJGTWt0MFNGTDJzMkZHdzBMRkNENFRRNERLOGtpS00zb2xEem4lMkJGZjc1aiUyRnAlMkJodmJJalRJOVpWQzVPNVlFaXBhNmZkZjJ1d2Z1dWlQWEJ2elN4WVdTZFA3UmN6bUZzV3laeDN5R2tudTZCdll5UjdPNXhYSXMyTWI2JTJCa2U1USUzRCUzRCBzdHlsZT1jb2xvcjojNTE1MDVEO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxNnB4Oz48c3BhbiBzdHlsZT1mb250LXdlaWdodDpib2xkO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTs-a2VueWEgLSBHb29nbGUgTmV3czwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0iIiBzdHlsZT0icGFkZGluZzoxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7d2lkdGg6IDEwMCU7IiB2YWxpZ249dG9wPjxkaXY-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVDNWFWYzRSMVVJQmhSQ2NOSkNCd1JCdk9oR0JRb1dSb1VVUWtJRmR6eEwlMkYzdXBTJTJGMUREdnE1a2o1RFRiejRTZ0QxbDgzJTJGZ1E4NXY5SEVRRmM1eWtzMyUyQlJlTXdJSlVoWDFOdnNKVU9yZlV2N05tejhFQ3pyMyUyQmpQWDcxVHNCbHJaMktncjloZGZIUjFINjl0UDdmVWs0OWFDVFNrTUtmJTJGNU9RN3ZMT29kTU52T25EZjdHVkglMkYlMkZUYjQ0MWo2OUZvRjJLY2E5Z2xTJTJGeU04JTJCZWRNJTJCd1V3QU5xRlVlTUtLZmJqU096bktPdmdSdWpYbVZVckRWTVpIRGtRNDFYbEJrN240M1V5NVFrc0IlMkJReiUyQkFFeCUyQmlrdzZPTjFXUUlRWCUyRk1yUnc3ZlVPMEVHJTJCbmtseHI2Q3ozekNqSDU0eXp2OWxiOTA0VmRBUmdwR1BCVUI5SWIgc3R5bGU9Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjRweDtmb250LXdlaWdodDo3MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzQxNDA0RDsgdGFyZ2V0PV9ibGFuaz5LZW55YSBqZXQgZnVlbCByZS1leHBvcnRzIHRvIFVBRSBoaXQgU2gyN2JuIC0gQnVzaW5lc3MgRGFpbHk8L2E-IDwvZGl2PiA8ZGl2IGNsYXNzPWVudHJ5X2Rlc2Mgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDtjb2xvcjojNzI3MjdEOz5LZW55YSBqZXQgZnVlbCByZS1leHBvcnRzIHRvIFVBRSBoaXQgU2gyN2JuJm5ic3A7Jm5ic3A7QnVzaW5lc3MgRGFpbHk8L2Rpdj4gPGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjogIzk1OTU5RCI-PHNwYW4-NiBob3VycyBhZ288L3NwYW4-IDwvZGl2PjwvdGQ-IDx0ZCBzdHlsZT0icGFkZGluZzoxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7cGFkZGluZy1sZWZ0OjAiIHZhbGlnbj10b3A-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVDNWFWYzRSMVVJQmhSQ2NOSkNCd1JCdk9oR0JRb1dSb1VVUWtJRmR6eEwlMkYzdXBTJTJGMUREdnE1a2o1RFRiejRTZ0QxbDgzJTJGZ1E4NXY5SEVRRmM1eWtzMyUyQlJlTXdJSlVoWDFOdnNKVU9yZlV2N05tejhFQ3pyMyUyQmpQWDcxVHNCbHJaMktncjloZGZIUjFINjl0UDdmVWs0OWFDVFNrTUtmJTJGNU9RN3ZMT29kTU52T25EZjdHVkglMkYlMkZUYjQ0MWo2OUZvRjJLY2E5Z2xTJTJGeU04JTJCZWRNJTJCd1V3QU5xRlVlTUtLZmJqU096bktPdmdSdWpYbVZVckRWTVpIRGtRNDFYbEJrN240M1V5NVFrc0IlMkJReiUyQkFFeCUyQmlrdzZPTjFXUUlRWCUyRk1yUnc3ZlVPMEVHJTJCbmtseHI2Q3ozekNqSDU0eXp2OWxiOTA0VmRBUmdwR1BCVUI5SWIgdGFyZ2V0PV9ibGFuaz48aW1nIGFsdD0ia2VueWEgLSBHb29nbGUgTmV3cyIgY2xhc3M9aW1nLXRodW1iIHNyYz0iaHR0cHM6Ly9wcm94eS5mZWVkc3BvdC5jb20vYTIwODJlMmM1MzVlOGZiMWYzMGZkNmNiOTM3OGE0YmU1NDA4ZmZmYi82ODc0NzQ3MDczM2EyZjJmNmM2ODMzMmU2NzZmNmY2NzZjNjU3NTczNjU3MjYzNmY2ZTc0NjU2ZTc0MmU2MzZmNmQyZjRhMzY1ZjYzNmY0NjYyNmY2Nzc4Njg1MjQ5Mzk2OTRkMzgzNjM0NGU0YzVmNmM2OTQ3NTg3NjczNTE3MDMyNDE3NTcwNzM0YjY1NjkzNzdhMzA2MzRlNGU2NjQ0NzY0NzU1NmQ1NzU1NzkzMjMwNmU3NTU1Njg2YjUyNDU1MTc5NzI3MDU5MzQ2MjQ1NjU0OTQyNzU2MzNkNzMzMDJkNzczMzMwMzAvP3A9MiIgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtvYmplY3QtZml0OiBjb3Zlcjtib3JkZXI6IDBweCBzb2xpZCAjZGRkOyIgd2lkdGg9MTAwPjwvYT4gPC90ZD48L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUM1YVZjNFIxVUlCaFJDY05KQ0J3UkJ2T2hHQlFvV1JvVVVRa0lGZHp4TCUyRjN4bFMlMkYxRER2cTVrajVEVGZ5SFNnTHpJWlZId01wQSUyQlklMkY3T2RhOHh3czYlMkJOelRTUWFGU0RoT2ZnQUdlb1pUdUhTbVRzaUdEbjc0a1lQQ1VEdEJ6enAybDVkNWdkUEJ3czREOTlYN1BNOENPT0dUZnNRTGZ2JTJCT09uR1d1WXBNTWZhY2xFakRDbjdDampYMjFUbjl6RGowNWxoNVFkUDl3cEhEOHBXOCUyRmRHNHVKekl1Z05PZlB6T2ZrQlBQb2JTZ0xXWVRNQkFqMEQ5RHpyeWk3dktUUEg0WE1hQXhjODV1TTREY1VYOCUyRlJLMjlTYVRlY1FPJTJGY0FTQTc1T09mZlVnN1hoRU1aQ1ZIMkt6NFFCVHJuOWp6VzVaeFZIeHBTOXhsSiUyQlFSZTV1STN4ZFNHUCUyRmdIU2ZyelZndmJLTzhGRzhuamcyRUNHQmozJTJCREg0MXozbktURFkwbk12QlFzWSUyRiUyRlEzRVBrMjclMkZaR0NkS0ZWZVlKUFBzbVAlMkZ2OFh2cmdNQVBhZ2pib0VEd2xIRG5wQVRMckcwN1p6b0kzSGdzOUhRUSUyRiUyQnU5TzVod3clMkY5VnlLeW9JVCUyRmJpTk96cVglMkJ2MFR0dk9YbGt0R0JiN0EwY1M0eSUyRjYzMXJxem9RdiUyRlF3ODlpdEc2Z0ViN3dZNDROVmVVUlFKRmdzWE9SRHZOUHYyUnZ6VllFTWdEVHJpJTJGVCUyRnI3MDdxM3hMSDFsNVk2QWM1OHgxSTdBVVglMkJnZE54OHlDUXdBWU93Y29QUHNOTSUyQnYyT0FuWm1FMzlBam4lMkZBanpvN2huODlVNEU0NFZZNHdjWUlTRTREJTJCc1g3Z0FoQSUyQk5ySGclM0QlM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojNDE0MDREOz5LZW55YSdzIEVtYmF0dGxlZCBEZXB1dHkgUHJlc2lkZW50IERlbmllcyBDb3JydXB0aW9uIEFsbGUuLi4gPHNwYW4gc3R5bGU9ImNvbG9yOiAjNzc3O2ZvbnQtc2l6ZTo4MCU7d2hpdGUtc3BhY2U6IG5vd3JhcDsiPiAmYnVsbDsgNiBob3VycyBhZ288L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzo1cHggMTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVDNWFWYzRSMVVJQmhSQ2NOSkNCd1JCdk9oR0JRb1dSb1VVUWtJRmR6eEwlMkYzbmxTJTJGMUREdnE1a2o1RFRYekcwYmt6bkpOOXc4WUhRWTYxZHNxNXh3VDRkYUVXUVlZS3dzRVJ0VUZWJTJGcmZUZ3JpaFQ0bkNWUDMlMkJVbjQ1MkQ3R2pUYTJZVkQ5UWtxQ3dSSCUyQlBoZDZ1QTA1dFZ6WVIwWUtnTW5OUGtORnYzaE5OdlJtVTBIQzA4SEVqVDczbDd1Qml3QXpWNHpDUnNyJTJGd2MzJTJCTmRkJTJGU2swNmROek0lMkJrUE91SWJQUHpmTHZIZkY4alRjazB0R0JZZzRVYjd6bGZ6QTA0QjBtRTMlMkZnbzY1aGs2RUFGTzh0OUtBciUyQmRUUERyIHN0eWxlPWZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzQxNDA0RDs-MjAyNCBTYWZhcmkgU2V2ZW5zIHNldCB0byBJZ25pdGUgTWFjaGFrb3MgZnJvbSBGcmlkYXkgLSBLLi4uIDxzcGFuIHN0eWxlPSJjb2xvcjogIzc3Nztmb250LXNpemU6ODAlO3doaXRlLXNwYWNlOiBub3dyYXA7Ij4gJmJ1bGw7IDYgaG91cnMgYWdvPC9zcGFuPiA8L2E-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjx0ZCBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6NXB4IDEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDsiPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFQzVhVmM0UjFVSUJoUkNjTkpDQndSQnZPaEdCUW9XUm9VVVFrSUZkenhMJTJGMzNieSUyRjFERHZxNWtqNURUVHZHazdZMDRWWkNnbzdGZjglMkY2JTJCODglMkJocEd4ZHAyUXhzSFBQc2hNOVRmTGV3ZEpPZlVYenZrQ1UlMkY3JTJGRDNWN3pueUJFcm0xbk0lMkZLeGxTR1NwSUh1OHg3d1FYNWRtWlhDY0VVZ3JpUCUyRm52VyUyRkFjTzhYalhpOGVCVGtaQWpnTzR6VHJCQnZuelhSUktCY1ZDeDB6JTJGQVVyJTJCJTJCRlJEZE9hVkN3WEslMkZZclNnJTJGT1VQUHpLTVRQY3olMkZqQWpycDVqZjY3ekw5QlNUczFISXZDeEE4SlJ3NEVmZ1o2eG9veDlGZ0h2WU5QUXNYU2V2T0clMkZBY05BdmxuRlVBQ1ZMaSUyRkR6cTN6dm85Q2o4MXBsWkpnb1dBJTJCRkglMkIlMkI5VzVoazR4dFowVFMwS0toa2VTdXJYRyUyRnJ6TjhUT2N4NEdBemtaOVRvTzF5diUyQjl6amkwNXRROGlWSTd1WSUzRCBzdHlsZT1mb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM0MTQwNEQ7PktlbnlhJ3MgRGVwdXR5IFByZXNpZGVudCB0byBGaWdodCBJbXBlYWNobWVudCBpbiBQYXJsaWFtZS4uLiA8c3BhbiBzdHlsZT0iY29sb3I6ICM3Nzc7Zm9udC1zaXplOjgwJTt3aGl0ZS1zcGFjZTogbm93cmFwOyI-ICZidWxsOyA2IGhvdXJzIGFnbzwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUM1YVZjNFIxVUlCaFJDY05KQ0J3UkJ2T2hHQlFvV1JvVVVRa0lGZHp4TCUyRjNycFMlMkYxRER2cTVrajVEVGZxNERqSzRvWSUyRkd4aFFIZmc2NnV0Vjh4d29BdU9CR2lZRUZ2OGZNOVlGVFAwWk1PelNkVmtwQ2hmNzlEYjV4bHo4QkJ2WjBuWlo1d0k2QXlrNDF1TTI1UVpGQ09LR1B5RUVGdk1oTWZyWE5QNEhQTmpPZ2tMb0RGSUhBRWdPNXpuJTJCOWxJTzBadFpBQkFYNHVNejZRUVc3aGxLQSUyQlJ6UCUyRmdGUEJrZE90Yk9VJTJCN2lPTmZrY2k4b0JUejMlMkZEWWUlMkJWJTJGbTREVHA0b1E3SFFncjh4MDU2dW9YN2h4SzQlMkJTYVRRRVhLdmNuTTlUZVlPY0RSdVhrbUM4aEIxRGtCQ2IlMkIlMkZDanFCVGo2NVlZdkFBb1YlMkZ5QXklMkJkOWElMkZDbE8xdFJnTndBSUdQJTJGJTJGT2clMkZqWE9zSFR0bk9neThVQkJnREp6TVAyelR6OVRqbDFZSk5JZ1VzJTJCJTJCSTcxdDlYNyUyQkJLeXMxMVhmOE5VQjBkTWZ2T09mRDFNT1BXWVUwVUREc1pLRGdSNnp2N0JGcm8xRjlVNkJCUkhlVXk2dXMzN3dVbkM4MmFQeUVES3hrWFNOYjlWdThHTE8zT21sWCUyRkZ5b0RIRHY4N3pEdjlCc0t6blpONkFkUyUyQiUyQlk3RXRaZCUyQndRWHhlV0VVUVVRRmVMM091dkZYZThGVWNUVWMxMG9DbCUyRiUyQkpUcjU1eXYlMkJHaXpkNUprdkNRczdGUEJVQjlJYiBzdHlsZT1mb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM0MTQwNEQ7PktlbnlhbiBhdGhsZXRlIEtpcHllZ29uIEJldHQgZGllcyBhdCB0aGUgYWdlIG9mIDI2IC0gQWZyaS4uLiA8c3BhbiBzdHlsZT0iY29sb3I6ICM3Nzc7Zm9udC1zaXplOjgwJTt3aGl0ZS1zcGFjZTogbm93cmFwOyI-ICZidWxsOyA2IGhvdXJzIGFnbzwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUw5NlVYR1J0S0ZTUlZFd2tVJTJGQjVQdzclMkJXSnZubU12bnBHZDN0TVFFVE90djFlMHJsQkR2JTJGODAzbTRTZms1VFRydzNKUyUyQng0JTJCQ1BreiUyRk1rdDBTRkwyczJGR3cwTEZDRDRUUTRESzhraUtNM29sRHpuJTJCRmY3NWolMkZwJTJCaHZiSWpUSTlaVkM1TzVZRWlwYTZmZGYydXdmdXVpUFhCdnpTeFlXU2RQN1Jjem1Gc1d5WngzeUdrbnU2QnZZeVI3TzV4WElzMk1iNiUyQmtlNVElM0QlM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMjY4NEZDO2ZvbnQtd2VpZ2h0Om5vcm1hbDs-MTMgbW9yZSBuZXcgcG9zdHMuIFJlYWQgbW9yZSBhdCA8c3BhbiBzdHlsZT0id2hpdGUtc3BhY2U6IG5vd3JhcDsiPkZlZWRzcG90ICZyYXJyOzwvc3Bhbj48L2E-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI0YxRjFGMjtiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYyOyI-PHRkIGNvbHNwYW49Mj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxNXB4OyI-PC9kaXY-PC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmO2JhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgYWxpZ249Y2VudGVyIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzogMTBweCAxMHB4O21hcmdpbi1ib3R0b206IDE1cHg7IiB2YWxpZ249bWlkZGxlPjxkaXYgc3R5bGU9InBhZGRpbmcgNXB4IDEwcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO3BhZGRpbmc6IDE2cHggMTZweDsiPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFTDk2VVhHUnRLRlNSVkV3a1UlMkZCNVB3JTJCeWRVQndrSkJudUs5VGlMdEhqRyUyQnpMbGswTCUyRlZyJTJCRWhmeTZ6VGJGeVRnd1hrZkJRMG85Um90RE80OTRmMDZ5TWRtV3h6OE1nampQJTJGbkVWZUFYVEFMRlhsejU3MDBYQkJubUJ6RE9DU2Y1dFhCY0JlcGFHQW9XM0FoSEVpUW45dmx2SnZEY1NDQWZXUTBEVyUyRjdzU2dqMG5selk2U2JXNHl2Snh5d1FKbG5DNXBOT0Z5bFZJQ1VUQndSVHZ1RW91Yk4wU0NZb1NOYmtLUmY5VlJBT1R3UHlrMGdmSlVnYzFoZmElMkJVcSUyQjRpYkx0bUlkNiUyQnNkNU9VWTJjY2V6T2dXIHN0eWxlPXRleHQtZGVjb3JhdGlvbjpub25lIHRhcmdldD1fYmxhbms-PHNwYW4gc3R5bGU9ImJvcmRlci1yYWRpdXM6IDRweDtwYWRkaW5nOiA1cHggMTBweDtiYWNrZ3JvdW5kLWNvbG9yOiMyNjg0RkM7Ym9yZGVyOiAxcHggc29saWQgIzI2ODRGQztmb250LXdlaWdodDpib2xkO2NvbG9yOiAjZmZmO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6IDE2cHg7ZGlzcGxheTogaW5saW5lLWJsb2NrOyI-PGltZyBhbHQ9TUNEIGhlaWdodD0xNXB4IHNyYz1odHRwczovL2Nkbi5mZWVkc3BvdC5jb20vaW1nL2VtYWlsL2RkL3Y3L2xvY2sucG5nIHN0eWxlPSJ3aWR0aDogMTJweDtoZWlnaHQ6IDE1cHg7cGFkZGluZy1yaWdodDo0cHg7bWFyZ2luLWJvdHRvbTogLTJweDsiIHdpZHRoPTEycHg-IFNob3cgbW9yZTwvc3Bhbj48L2E-IDwvZGl2PiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNGMUYxRjI7YmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMjsiPjx0ZCBjb2xzcGFuPTI-PGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMTVweDsiPjwvZGl2PjwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGFsaWduPWNlbnRlciBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6IDIwcHggMCAxMHB4IDA7IiB2YWxpZ249bWlkZGxlPjxkaXYgY2xhc3M9dGV4dC1hbGlnbjpjZW50ZXI7PjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9sb2dpbj9oPUYwTUg4NDlYS2hkWEd1TWEyTlZOQmhCTEFLNlJXQ0RpSGhZV0hOWDRHOHJpRk1XMlpVL29HaGpuRTBzRjloZlM0QnJKNVpFZTVCc1I0dWdZMThzYXl1RWJ5QT09JmNvbnRpbnVlPWh0dHBzJTNBJTJGJTJGd3d3LmZlZWRzcG90LmNvbSUyRnJlYWRlciIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAxNXB4O3BhZGRpbmc6N3B4IDAgMCAwOyI-PGltZyBhbHQ9RmVlZHNwb3QgaGVpZ2h0PTI0cHggc3JjPWh0dHBzOi8vY2RuLmZlZWRzcG90LmNvbS9pbWcvZW1haWwvZGQvdjcvbG9nby1ncmF5LnBuZyBzdHlsZT0id2lkdGg6IDEzMHB4O2hlaWdodDogYXV0bzsiIHdpZHRoPTEzMHB4PiA8L2E-IDwvZGl2PiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjx0ZCBjb2xzcGFuPTI-PGRpdiBzdHlsZT0iZm9udC1zaXplOiAxM3B4O2NvbG9yOiAjNzI3MjdEO3BhZGRpbmc6IDEwcHggMTBweDtsaW5lLWhlaWdodDoyMHB4O3RleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgc3R5bGU9Zm9udC13ZWlnaHQ6Ym9sZDttYXJnaW4tYm90dG9tOjRweD4gTWlzc2luZyBvdXQgb24gRmVlZHNwb3QgZW1haWxzPyBCZSBzdXJlIHRvIGFkZCB1cyB0byB5b3VyIHByaW1hcnkgaW5ib3guIDwvZGl2PiBZb3UgcmVjZWl2ZWQgdGhpcyBlbWFpbCBiZWNhdXNlIHlvdSBzaWduZWQgdXAgYXQgRmVlZHNwb3QuPGJyPiA8YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUw5NlVYR1J0S0ZTUlZFd2tVJTJGQjVQdyUyQnlkVUJ3a0pCbnVLOVRpTHRIakclMkJ6TGxrMEwlMkZWciUyQkVoZnk2elRiRnlUZ3dYa2ZCUTBvOVJvdERPNDk0ZjA2eU1kbVd4ejhNZ2pqUCUyRm5FVmVBWFRBTEZYbHo1NzAwWEJCbm1CekRPQ1NmNXRYQmNCZXBhR0FvVzNBaEhFaVFuOXZsdkp2RGNTQ0FmV1EwRFclMkY3c1NnajBubHpZNlNiVzR5dkp4eXdRSmxuQzVwTk9GeWxWSUNVVEJ3UlR2dUVvQ2ZPVFd4Z2FUaVhXR09yJTJCVkEwVVVBaWxZUzBvSkZnbUUxZ0hCMCUyRjdGQWZHdHFGT0o5c1k5U1pURndwSURCSlUlMkZlS1REdVhzU1JYV0dPak1ITTNqR3NtNFlSM202eGZwNUI3WSBzdHlsZT13aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6IzcyNzI3RDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyPlVuc3Vic2NyaWJlPC9hPiAmYnVsbDsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGdXNlcmVkaXQlM0ZpbnRlbnQlM0R3ZWVrbHklMjZzZXQlM0RkYWlseWRpZ2VzdCUyNmRkJTNENzY0NDg1ODM0MzUyODM5NCIgc3R5bGU9d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcj5Td2l0Y2ggdG8gd2Vla2x5PC9hPiAmYnVsbDsgPGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHclMkJ5ZFVCd2tKQm51SzlUaUx0SGpHJTJCekxsazBMJTJGVnIlMkJFaGZ5NnpUYkZ5VGd3WGtmQlEwbzlSb3RETzQ5NGYwNnlNZG1XeHo4TWdqalAlMkZuRVZlQVhUQUxGWGx6NTcwMFhCQm5tQnpET0NTZjV0WEJjQmVwYUdBb1czQWhIRWlRbjl2bHZKdkRjU0NBZldRMERXJTJGN3NTZ2owbmx6WTZTYlc0eXZKeHl3UUpsbkM1cE5PRnlsVklDVVRCd1JUdnVFb0NmT1RXeGdhVGlYV0dPb0lTdzNVRmRqa2oxSWZMMGthR0VvWENRdkw1VWI0cFdFdDZ1d1o1ZWthM01nYXpPUVV6TE5uSFElM0QlM0Qgc3R5bGU9d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcj5DaGFuZ2UgRW1haWwgU2V0dGluZ3M8L2E-ICZidWxsOyA8YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy9wcml2YWN5IHN0eWxlPXdoaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjojNzI3MjdEO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y3Vyc29yOnBvaW50ZXIgdGFyZ2V0PV9ibGFuaz5Qcml2YWN5PC9hPiAmYnVsbDsgPGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGVybXMgc3R5bGU9d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlciB0YXJnZXQ9X2JsYW5rPlRlcm1zPC9hPiAmYnVsbDsgPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmZlZWRzcG90LmNvbT9fc3JjPWRkX2Zvb3RlciIgc3R5bGU9d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlciB0YXJnZXQ9X2JsYW5rPkhlbHA8L2E-IDxicj5GZWVkc3BvdC5jb20sIDMwMyBDYXBlIENvdXJ0LCBNaWxsIFZhbGxleSwgQ0EgOTQ5NDEgPC9kaXY-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGFsaWduPWNlbnRlciBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6IDEwcHggMTBweDsiIHZhbGlnbj1taWRkbGU-PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGYnJvd3NlcnZpZXclM0ZrZXklM0Q1aGpJdEdZZTYlMkJrWjVPWVgzTWdmemU5QjFOOXVVUlFwV0JJZlhBVUhUOHZrRnRUbm0wb2NJaE1VSUZMazlDYjQ3eFBMc21ZYzZlMFg2dVViMjhVYSUyRkJCRSUyQmJlVEloa2MiIHN0eWxlPWNvbG9yOiM3MjcyN0Q7Zm9udC1zaXplOjEzcHg7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt3aGl0ZS1zcGFjZTpub3dyYXA7Y3Vyc29yOnBvaW50ZXI-Q2xpY2sgaGVyZSB0byB2aWV3IHRoaXMgZW1haWwgaW4geW91ciBicm93c2VyPC9hPiA8L3RkPiA8L3RyPjwvdGJvZHk-IDwvdGFibGU-IDwvYm9keT48L2h0bWw-DQo=" - } - }, - "sizeEstimate": 35427, - "historyId": "3310109", - "internalDate": "1728367294000" -} \ No newline at end of file + "id": "1926ab7f84de3228", + "threadId": "1926ab7f84de3228", + "labelIds": ["CATEGORY_PROMOTIONS", "UNREAD", "INBOX"], + "snippet": "For Publishers View in browser Switch to weekly Feedspot Try Pro for Free Feedspot digest contains latest stories from the sites you're following on Feedspot. Configure. The Hacker News UK Hacker", + "payload": { + "partId": "", + "mimeType": "text/html", + "filename": "", + "headers": [ + { + "name": "Delivered-To", + "value": "john@foo.com@gmail.com" + }, + { + "name": "Received", + "value": "by 2002:a05:6f02:c091:b0:74:e4b5:b3c7 with SMTP id a17csp2294703rcc; Mon, 7 Oct 2024 23:01:35 -0700 (PDT)" + }, + { + "name": "X-Google-Smtp-Source", + "value": "AGHT+IH07niUGdw7T4gK49d8WbCzAY/cx4IM+yYuS8SwdKUUz3PVt9P7+MmjdR12nokubFsn6pe3" + }, + { + "name": "X-Received", + "value": "by 2002:a17:902:e80d:b0:20b:4f95:9335 with SMTP id d9443c01a7336-20bff04ba04mr229391015ad.43.1728367294945; Mon, 07 Oct 2024 23:01:34 -0700 (PDT)" + }, + { + "name": "ARC-Seal", + "value": "i=1; a=rsa-sha256; t=1728367294; cv=none; d=google.com; s=arc-20240605; b=B27gPkBcJfGHizlPuGiq2eGZ01wbO0Kx2X87e7QgarpyKg57Hljgq7dUhUFN8ER0tm idj1mIN0VcaK6EYMP8kegOSret+50dYjpXeG/R2vQayeyZv6LiLEkvctuBTsuWZyE21B xZcC8WoqQG58fGrjd1GeW0mdgm4LTa9X1SlV8C3auDnOFyfQDAQbrKRuggcnvyUz5k+E 7RrNgeQO3j+3UvqpZ8yQWiLhL00K7cotLUFyltwsyhKnb42zxza6HY8FLI1wJO94eYh0 VGZiJ8CqxKwkHeAoNWfpdUEv7itWsULvAAFDblkL22O7neB+879OYJClIWNDBW8PGAYD 9EGA==" + }, + { + "name": "ARC-Message-Signature", + "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:mail-log-id:feedback-id:message-id :subject:reply-to:from:to:dkim-signature:date; bh=0PXW0qyOUlcTd6X3ljOvUwLnP7nJzjS147wuX7ROeY4=; fh=ZFfeWVxw4L0EQu5c9o8c02kNCYnwsvyCNJ1DnZxyxSI=; b=ZyK+X8Sf7vvnO6cg72Yn1oQvCAapemRBPseqHrmCni02JXrKhuCkEN7/V1HSk30vBc yQGc6SHRyDkmtdWmD8a0EgPZuqr3f3f2bSLuEBvIWc8MIik63IEPolyALnH/Ns9Qw4d9 enNsskxwVKNbFdRAcC+Ar9oTAbzX9MAacLuvpjpBxEiIQHcbjXE3fVPTrrE1VP5scQmf bdBNsjZtaAGW/awwLiFh9108RHvLDrzdR92bI198+eevZrf9ivJhW8eWtcOr1Sn1nWrf Wj+FsGWDlzc0vDXe1w+QS/jp2Tfsr4y01NsKJJO8kPNIwHXDgPO54qBNwpqRys8aT7T7 l4eg==; dara=google.com" + }, + { + "name": "ARC-Authentication-Results", + "value": "i=1; mx.google.com; dkim=pass header.i=@e.feedspot.com header.s=default header.b=hMQoXYE7; spf=pass (google.com: domain of nobody@e.feedspot.com designates 54.203.70.116 as permitted sender) smtp.mailfrom=nobody@e.feedspot.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=e.feedspot.com" + }, + { + "name": "Return-Path", + "value": "" + }, + { + "name": "Received", + "value": "from e6.feedspot.com (e6.feedspot.com. [54.203.70.116]) by mx.google.com with ESMTPS id 41be03b00d2f7-7e9f683fca0si8242222a12.127.2024.10.07.23.01.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Oct 2024 23:01:34 -0700 (PDT)" + }, + { + "name": "Received-SPF", + "value": "pass (google.com: domain of nobody@e.feedspot.com designates 54.203.70.116 as permitted sender) client-ip=54.203.70.116;" + }, + { + "name": "Authentication-Results", + "value": "mx.google.com; dkim=pass header.i=@e.feedspot.com header.s=default header.b=hMQoXYE7; spf=pass (google.com: domain of nobody@e.feedspot.com designates 54.203.70.116 as permitted sender) smtp.mailfrom=nobody@e.feedspot.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=e.feedspot.com" + }, + { + "name": "Date", + "value": "Mon, 7 Oct 2024 23:01:34 -0700" + }, + { + "name": "X-DKIM", + "value": "Sendmail DKIM Filter v2.8.3 e6.feedspot.com 8D4D741136" + }, + { + "name": "DKIM-Signature", + "value": "v=1; a=rsa-sha256; c=relaxed/simple; d=e.feedspot.com; s=default; t=1728367294; bh=fJnOf2MDWHKcqIPGvv7JkFfOqAtFkwiMYyzLztT4iQM=; h=To:From:Reply-To:Subject:Message-ID:Content-Type:\t Content-Transfer-Encoding; b=hMQoXYE7VqPQK2xz1l3qx0lJj5vQFJ4E4+OjgdDOIiYF4BBuIY1GJM0uxwa2WHg9c\t /f+tEbvp5igCb0MTs+KjT7XucHdcwMvqZeyMkjzVvU1bTkWcNb8s81zqEkW3dybllR\t Xda1mlf3JWPZQ5uJvq4kEQJ6ngOf+rE8gkl801/k=" + }, + { + "name": "To", + "value": "john@foo.com@gmail.com" + }, + { + "name": "From", + "value": "Feedspot Today " + }, + { + "name": "Reply-To", + "value": "Feedspot Today " + }, + { + "name": "Subject", + "value": "U.K. Hacker Charged in $3.75 Million Insider Trading Scheme Using Hacked Executive Emails, Vulnerable APIs.." + }, + { + "name": "Message-ID", + "value": "" + }, + { + "name": "X-Priority", + "value": "3" + }, + { + "name": "Feedback-ID", + "value": "dd-HVH275Ji8xsTFxZKCAhWCCMQ9++b:HVH275Ji8xsTFxZKCAhWCCMQ9++b:general:feedspot" + }, + { + "name": "Mail-Log-Id", + "value": "7644858343528394" + }, + { + "name": "Content-Type", + "value": "text/html; charset=UTF-8" + }, + { + "name": "Content-Transfer-Encoding", + "value": "quoted-printable" + } + ], + "body": { + "size": 29570, + "data": "PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj48aHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PXV0Zi04PjxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiBuYW1lPXZpZXdwb3J0PjxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbCBjaGFyc2V0PVVURi04IiBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZT48bWV0YSBjb250ZW50PSIiIGh0dHAtZXF1aXY9ZmVlZHNwb3Rfc2NyaXB0PjxzdHlsZT5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjYwMHB4KSB7DQogICAgICAgICAgICAuaW1nLXRodW1iIHsNCiAgICAgICAgICAgICAgICB3aWR0aDogODBweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgIGhlaWdodDogODBweCAhaW1wb3J0YW50Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLmVudHJ5X2Rlc2Mgew0KICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfTwvc3R5bGU-PC9oZWFkPiA8Ym9keSBzdHlsZT0ibWFyZ2luOiAwIGF1dG87cGFkZGluZzogMDtiYWNrZ3JvdW5kOiAjRjFGMUYyO2JhY2tncm91bmQtY29sb3I6ICNGMUYxRjI7Ij48dGFibGUgYWxpZ249Y2VudGVyIGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT0ibWF4LXdpZHRoOjY0OHB4O3dpZHRoOjEwMCU7cGFkZGluZzowIDEwcHggMTBweCAxMHB4O2ZvbnQtZmFtaWx5OiBoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmO2JhY2tncm91bmQ6ICNGMUYxRjI7YmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMjsiPjx0Ym9keT48dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNGMUYxRjI7YmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMjsiPjx0ZCBhbGlnbj1yaWdodCBjb2xzcGFuPTIgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7cGFkZGluZzo1cHggMCI-PGEgaHJlZj0iaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5mZWVkc3BvdCIgc3R5bGU9Y29sb3I6YmxhY2shaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIHRhcmdldD1fYmxhbms-PGltZyBoZWlnaHQ9MXB4IHNyYz1odHRwczovL3QuZmVlZHNwb3QuY29tL2ZzL2ltZy9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZnpKUlVWRWRBS1J3THNJc1cyWngzbDV4NCUzRC9sb2dvLmdpZiB3aWR0aD0xcHg-IDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGcHVibGlzaGVyJTJGcHJpY2luZyUzRl9zcmMlM0RkZCIgc3R5bGU9ImNvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcDtib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAjYWZhZmFmO3BhZGRpbmc6IDAgNXB4O2ZvbnQtc2l6ZTogMTFweDsiPkZvciBQdWJsaXNoZXJzPC9hPiA8YSBocmVmPSJodHRwczovL3d3dy5mZWVkc3BvdC5jb20vbG9naW4_aD1GME1IODQ5WEtoZFhHdU1hMk5WTkJoQkxBSzZSV0NEaUhoWVdITlg0RzhyaUZNVzJaVS9vR2hqbkUwc0Y5aGZTNEJySjVaRWU1QnNSNHVnWTE4c2F5dUVieUE9PSZjb250aW51ZT1odHRwcyUzQSUyRiUyRnd3dy5mZWVkc3BvdC5jb20lMkZicm93c2VydmlldyUzRmtleSUzRDVoakl0R1llNiUyQmtaNU9ZWDNNZ2Z6ZTlCMU45dVVSUXBXQklmWEFVSFQ4dmtGdFRubTBvY0loTVVJRkxrOUNiNDd4UExzbVljNmUwWDZ1VWIyOFVhJTJGQkJFJTJCYmVUSWhrYyIgc3R5bGU9ImNvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcDtib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAjYWZhZmFmO3BhZGRpbmc6IDAgNXB4O2ZvbnQtc2l6ZTogMTFweDsiPlZpZXcgaW4gYnJvd3NlcjwvYT4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGdXNlcmVkaXQlM0ZpbnRlbnQlM0R3ZWVrbHklMjZzZXQlM0RkYWlseWRpZ2VzdCUyNmRkJTNENzY0NDg1ODM0MzUyODM5NCIgc3R5bGU9ImNvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcDtwYWRkaW5nOiAwIDVweDtmb250LXNpemU6IDExcHg7Zm9udC13ZWlnaHQ6IG5vcm1hbDsiPlN3aXRjaCB0byB3ZWVrbHk8L2E-PC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGFsaWduPWNlbnRlciBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6NnB4IDBweCA2cHg7IiB2YWxpZ249dG9wPjxkaXYgc3R5bGU9Zm9udC1zaXplOjEzcHg7Y29sb3I6I2ZmZjs-PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGcmVhZGVyIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7bWFyZ2luLWxlZnQ6IDE1cHg7cGFkZGluZzo3cHggMCAwIDA7Ij48aW1nIGFsdD1GZWVkc3BvdCBoZWlnaHQ9MjRweCBzcmM9aHR0cHM6Ly9jZG4uZmVlZHNwb3QuY29tL2ltZy9lbWFpbC9kZC92Ny9sb2dvX2JsdWUucG5nIHN0eWxlPSJ3aWR0aDogMTMwcHg7aGVpZ2h0OiBhdXRvOyIgd2lkdGg9MTMwcHg-IDwvYT4gPGRpdiBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmxvYXQ6IHJpZ2h0O21hcmdpbi1yaWdodDogMTVweDtwYWRkaW5nOiAxMHB4IDA7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUw5NlVYR1J0S0ZTUlZFd2tVJTJGQjVQdyUyQnlkVUJ3a0pCbnVLOVRpTHRIakclMkJ6TGxrMEwlMkZWciUyQkVoZnk2elRiRnlUZ3dYa2ZCUTBvOVJvdERPNDk0ZjA2eU1kbVd4ejhNZ2pqUCUyRm5FVmVBWFRBTEZYbHo1NzAwWEJCbm1CekRPQ1NmNXRYQmNCZXBhR0FvVzNBaEhFaVFuOXZsdkp2RGNTQ0FmV1EwRFclMkY3c1NnajBubHpZNlNiVzR5dkp4eXdRSmxuQzVwTk9GeWxWSUNVVEJ3UlR2dUVvdWJOMFNDWW9TTmJrS1FqNVJmMFFTd0Q1a2xJYUcxZ2xGbElGJTJGbElIRUZnJTNEIHN0eWxlPSJib3JkZXItcmFkaXVzOiA0cHg7cGFkZGluZzogNXB4IDEwcHg7YmFja2dyb3VuZC1jb2xvcjogIzI2ODRGQztib3JkZXI6IDFweCBzb2xpZCAjMjY4NEZDO2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6ICNmZmY7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtc2l6ZTogc21hbGw7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPlRyeSBQcm8gZm9yIEZyZWU8L2E-IDwvZGl2PjwvZGl2PiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJjb2xvcjojMzMzO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LWFsaWduOiBsZWZ0O3BhZGRpbmc6IDEwcHg7Zm9udC1mYW1pbHk6IGhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyaWY7ICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOyI-PGRpdiBzdHlsZT1mb250LXNpemU6MTNweDtjb2xvcjojNzI3MjdEOz4gRmVlZHNwb3QgZGlnZXN0IGNvbnRhaW5zIGxhdGVzdCBzdG9yaWVzIGZyb20gdGhlIDxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFTDk2VVhHUnRLRlNSVkV3a1UlMkZCNVB3JTJCeWRVQndrSkJudUs5VGlMdEhqRyUyQnpMbGswTCUyRlZyJTJCRWhmeTZ6VGJGeVRnd1hrZkJRMG85Um90RE80OTRmMDZ5TWRtV3h6OE1nampQJTJGbkVWZUFYVEFMRlhsejU3MDBYQkJubUJ6RE9DU2Y1dFhCY0JlcGFHQW9XM0FoSEVpUW45dmx2SnZEY1NDQWZXUTBEVyUyRjdzU2dqMG5selk2U2JXNHl2Snh5d1FKbG5DNXBOT0Z5bFZJQ1VUQndSVHZ1RW9DZk9UV3hnYVRpWFdHT3IlMkJWQTBVVUFpbFlTMGlLRXdTSDA0ZSUyQmd2TDVWWDU5Rk1jOXhwR0doMWVDUDVOJTJGaUpXdWJKa1RSZmJHUFhvRzlqSkhzN25GY2l6WXh2cjZSN2wgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZTtjb2xvcjogIzI2ODRGQzt3aGl0ZS1zcGFjZTogbm9ybWFsOyIgdGFyZ2V0PV9ibGFuaz5zaXRlcyB5b3UncmUgZm9sbG93aW5nPC9hPiBvbiBGZWVkc3BvdC4gPGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHclMkJ5ZFVCd2tKQm51SzlUaUx0SGpHJTJCekxsazBMJTJGVnIlMkJFaGZ5NnpUYkZ5VGd3WGtmQlEwbzlSb3RETzQ5NGYwNnlNZG1XeHo4TWdqalAlMkZuRVZlQVhUQUxGWGx6NTcwMFhCQm5tQnpET0NTZjV0WEJjQmVwYUdBb1czQWhIRWlRbjl2bHZKdkRjU0NBZldRMERXJTJGN3NTZ2owbmx6WTZTYlc0eXZKeHl3UUpsbkM1cE5PRnlsVklDVVRCd1JUdnVFb0NmT1RXeGdhVGlYV0dPb0lTdzNVRmRqa2oxSWZMMGthR0VvWENRdkw1VWI0cFdFdDZ1d1o1ZWthM01nYXpPUVV6TE5uSFElM0QlM0Qgc3R5bGU9dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzI2ODRGQzs-Q29uZmlndXJlPC9hPi4gPC9kaXY-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI0YxRjFGMjtiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYyOyI-PHRkIGNvbHNwYW49Mj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxNXB4OyI-PC9kaXY-PC90ZD4gPC90cj4gPHRyPjx0ZCBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6MTBweCAxMHB4O2JhY2tncm91bmQ6ICNmZmY7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFTDk2VVhHUnRLRlNSVkV3a1UlMkZCNVB3NyUyQldKdm5tTXZucEdkM3RNUUVUT3R2MWUwcmxCRHYlMkY4MDNtNFNmazVUVHJ3M0pTJTJCeDQlMkJDUGt6JTJGTWt0MFNGTDJzMkZHdzBMRkNENFRRNERLOGtpS00zb2xEem4lMkJGZjc1aiUyRnAlMkJodmJJalRJOVpWQzVPNVlFaXBhNmZkZjJ1d2Z1dWlQWEJ2elN4WVdTZFA3VmY4T1NBUGZvRWdTSEVUazVSN2J5Qm5ZRTBiUnQyUWQ1JTJCNGE2ZVFaMThvWTBlSWJ5QSUzRCUzRCBzdHlsZT1jb2xvcjojNTE1MDVEO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxNnB4Oz48c3BhbiBzdHlsZT1mb250LXdlaWdodDpib2xkO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTs-VGhlIEhhY2tlciBOZXdzPC9zcGFuPiA8L2E-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjx0ZCBjb2xzcGFuPSIiIHN0eWxlPSJwYWRkaW5nOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDt3aWR0aDogMTAwJTsiIHZhbGlnbj10b3A-PGRpdj48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUk2Sk5SRkJsUUZpTlRDUXhaeHhKUkFhOWdHZVhxRk9MaEZCa0FFd0VRUmYlMkZsb0JZV0hrWWpHRW9Jd2s4SDNCWEx0VnRXSENKUkdpQlQwdjFhQmhzJTNEIHN0eWxlPWZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjI0cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM0MTQwNEQ7IHRhcmdldD1fYmxhbms-VS5LLiBIYWNrZXIgQ2hhcmdlZCBpbiAkMy43NSBNaWxsaW9uIEluc2lkZXIgVHJhZGluZyBTY2hlbWUgVXNpbmcgSGFja2VkIEV4ZWN1dGl2ZSBFbWFpbHM8L2E-IDwvZGl2PiA8ZGl2IGNsYXNzPWVudHJ5X2Rlc2Mgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDtjb2xvcjojNzI3MjdEOz5UaGUgVS5TLiBEZXBhcnRtZW50IG9mIEp1c3RpY2UgKERvSikgaGFzIGNoYXJnZWQgYSAzOS15ZWFyLW9sZCBVLksuIG5hdGlvbmFsIGZvciBwZXJwZXRyYXRpbmcgYSBoYWNrLXRvLXRyYWRlIGZyYXVkIHMuLi48L2Rpdj4gPGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjogIzk1OTU5RCI-PHNwYW4-MTMgaG91cnMgYWdvPC9zcGFuPiA8L2Rpdj48L3RkPiA8dGQgc3R5bGU9InBhZGRpbmc6MTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO3BhZGRpbmctbGVmdDowIiB2YWxpZ249dG9wPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFSTZKTlJGQmxRRmlOVENReFp4eEpSQWE5Z0dlWHFGT0xoRkJrQUV3RVFSZiUyRmxvQllXSGtZakdFb0l3azhIM0JYTHRWdFdIQ0pSR2lCVDB2MWFCaHMlM0QgdGFyZ2V0PV9ibGFuaz48aW1nIGFsdD0iVGhlIEhhY2tlciBOZXdzIiBjbGFzcz1pbWctdGh1bWIgc3JjPSJodHRwczovL3Byb3h5LmZlZWRzcG90LmNvbS80NzZkY2ZmNDUyMTg2ZDdmYWI2MWJkNjQ5YjU5NTdiZDc4MzUyY2MyLzY4NzQ3NDcwNzMzYTJmMmY2MjZjNmY2NzY3NjU3MjJlNjc2ZjZmNjc2YzY1NzU3MzY1NzI2MzZmNmU3NDY1NmU3NDJlNjM2ZjZkMmY2OTZkNjcyZjYyMmY1MjMyMzk3NjVhMzI3ODZjMmY0MTU2NzY1ODczNDU2OTZlNjY2ZDZlNDE0ODczNmM1ODZkNGQ2NjM0NmE3MDcyNTAzMjMzMzA3MDM3NDMzMjdhNjM1NjQyNzI1MzZhNGE2YjQ3NDk1NDdhNzE2NTcxNjI2Yzc2MzQ1ODRjN2EzMjQzNGMzMjY4N2E2MzM4NDY2NzY2NjE3MjRkNTM3MzMyNGM2YzYyNGI2MzQzN2E2ZjUyMzg0NDcxNDQ1Zjc0NmE1Mjc5NTU0OTc2Nzk0Njc5NTM3OTZlMzY0MjRiNTA3OTQzNDQzOTU4NjMzNzMxNGQ0NzZmNDQzNDY5NzQ1NDQ3Mzk3NTQ3NTcyZDVhMzYzNjU5NDk2MjQzNzk0MTQ5NjM1MzZjNzU2MTc5MzM0Yjc3MzAzNjRkMzk2ODQ5Mzc0NDY0NTA2ZTQxNTI0MzY1MzQ2NDZiNTE1MTcxNGU0YTZlNmY1NjRiNDI3OTc0NmE1OTVmMzQ2YTQ2NmQ1MDUxMzE1MjM0NTA3OTY4NTY1ODUwNmQ2MTRiNmY3NTJmNzMzNzMyMzgyZDcyNzcyZDY1MzMzNjM1MmY2ODYxNjM2NTY0MmU3MDZlNjcvP3A9MyIgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtvYmplY3QtZml0OiBjb3Zlcjtib3JkZXI6IDBweCBzb2xpZCAjZGRkOyIgd2lkdGg9MTAwPjwvYT4gPC90ZD48L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUk2Sk5SRkJsUUZpTlRDUXhaeHhKUkFhOWdHZVhxRk9MaEZCb0tVZ2NVVlBYaW1rN2dGMVVhSkJJRkEwckdFVkVJclk5ZEp4ZElIQ1FTQndSWkRSaFElMkI2NldYU0FpIHN0eWxlPWZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzQxNDA0RDs-VnVsbmVyYWJsZSBBUElzIGFuZCBCb3QgQXR0YWNrcyBDb3N0aW5nIEJ1c2luZXNzZXMgVXAgdG8gLi4uIDxzcGFuIHN0eWxlPSJjb2xvcjogIzc3Nztmb250LXNpemU6ODAlO3doaXRlLXNwYWNlOiBub3dyYXA7Ij4gJmJ1bGw7IDE4IGhvdXJzIGFnbzwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUw5NlVYR1J0S0ZTUlZFd2tVJTJGQjVQdzclMkJXSnZubU12bnBHZDN0TVFFVE90djFlMHJsQkR2JTJGODAzbTRTZms1VFRydzNKUyUyQng0JTJCQ1BreiUyRk1rdDBTRkwyczJGR3cwTEZDRDRUUTRESzhraUtNM29sRHpuJTJCRmY3NWolMkZwJTJCaHZiSWpUSTlaVkM1TzVZRWlwYTZmZGYydXdmdXVpUFhCdnpTeFlXU2RQN1ZmOE9TQVBmb0VnU0hFVGs1UjdieUJuWUUwYlJ0MlFkNSUyQjRhNmVRWjE4b1kwZUlieUElM0QlM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMjY4NEZDO2ZvbnQtd2VpZ2h0Om5vcm1hbDs-NyBtb3JlIG5ldyBwb3N0cy4gUmVhZCBtb3JlIGF0IDxzcGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogbm93cmFwOyI-RmVlZHNwb3QgJnJhcnI7PC9zcGFuPjwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRjFGMUYyO2JhY2tncm91bmQtY29sb3I6ICNGMUYxRjI7Ij48dGQgY29sc3Bhbj0yPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDE1cHg7Ij48L2Rpdj48L3RkPiA8L3RyPiA8dHI-PHRkIGNvbHNwYW49Mj48dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmO2JhY2tncm91bmQtY29sb3I6ICNmZmY7Zm9udC1mYW1pbHk6IGhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO21hcmdpbjowO3dpZHRoOiAxMDAlO21heC13aWR0aDogNjQ4cHg7Ij48dHI-PHRkIHN0eWxlPSJwYWRkaW5nOjEwcHggMTBweDt3aWR0aDogMTAwJTsgIj48ZGl2IHN0eWxlPSJwYWRkaW5nOiAxNnB4O2JvcmRlcjogMXB4IHNvbGlkICNkZGQ7dGV4dC1hbGlnbjogY2VudGVyO2JhY2tncm91bmQ6ICMyNjg0ZmMgdXJsKCdodHRwczovL2Nkbi5mZWVkc3BvdC5jb20vaW1nL2VtYWlsL2RkL3Y3L2FkLXdhdmUtYmcuanBnJykgbm8tcmVwZWF0IGNlbnRlciBsZWZ0IC8gY292ZXI7YmFja2dyb3VuZC1jb2xvcjogIzI2ODRmYzsiPjxkaXYgc3R5bGU9Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjJweDtmb250LXdlaWdodDpib2xkO2NvbG9yOiNmZmZmZmY-IFByb21vdGUgeW91ciBCbG9nICZhbXA7IFBvZGNhc3QgPC9kaXY-IDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIycHg7Y29sb3I6I2ZmZmZmZjttYXJnaW46NXB4IDAgMTBweCAwIj4gMjUwSyBCbG9ncywgUG9kY2FzdHMsIGFuZCBQdWJsaWNhdGlvbnMgbGlzdGVkIG9uIEZlZWRTcG90LiA8L2Rpdj4gPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGcHVibGlzaGVyJTJGaG9tZSUzRl9zcmMlM0RkZCUyNnV0bV9jYW1wYWlnbiUzRGRkYWRkIiBzdHlsZT0iYm9yZGVyLXJhZGl1czo0cHg7cGFkZGluZzoxMHB4IDEycHg7YmFja2dyb3VuZC1jb2xvcjojRkZFMUNDO2JvcmRlcjoxcHggc29saWQgI0ZGQTQ2Njtmb250LXdlaWdodDpib2xkO2NvbG9yOiMzMzMzMzM7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OiAxO3RleHQtZGVjb3JhdGlvbjpub25lO21hcmdpbi10b3A6NHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIiB0YXJnZXQ9X2JsYW5rPiBTdWJtaXQgWW91ciBTaXRlIEZvciBGcmVlIDwvYT48L2Rpdj4gPC90ZD4gPC90cj4gPC90YWJsZT4gPC90ZD4gPC90cj4gPHRyPjx0ZCBjb2xzcGFuPTI-PC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRjFGMUYyO2JhY2tncm91bmQtY29sb3I6ICNGMUYxRjI7Ij48dGQgY29sc3Bhbj0yPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDE1cHg7Ij48L2Rpdj48L3RkPiA8L3RyPiA8dHI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzoxMHB4IDEwcHg7YmFja2dyb3VuZDogI2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHc3JTJCV0p2bm1Ndm5wR2QzdE1RRVRPdHYxZTBybEJEdiUyRjgwM200U2ZrNVRUcnczSlMlMkJ4NCUyQkNQa3olMkZNa3QwU0ZMMnMyRkd3MExGQ0Q0VFE0REs4a2lLTTNvbER6biUyQkZmNzVqJTJGcCUyQmh2YklqVEk5WlZDNU81WUVpcGE2ZmRmMnV3ZnV1aVBYQnZ6U3hZV1NkUDdWZjhPU0FQZm9FZ1NIRVRsNVJiZHlCJTJGTTdrYjR2V1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlElM0Qgc3R5bGU9Y29sb3I6IzUxNTA1RDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXNpemU6MTZweDs-PHNwYW4gc3R5bGU9Zm9udC13ZWlnaHQ6Ym9sZDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Pktub3dCZTQgQmxvZzwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0iIiBzdHlsZT0icGFkZGluZzoxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7d2lkdGg6IDEwMCU7IiB2YWxpZ249dG9wPjxkaXY-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEgyN0oxUTRTRlRJQ2hIQ2NrVSUyRkI1UHclMkJhZ1RoampWUmthV0F6JTJCVkFEY1VnRGhvazhpS0ZMZUZGY0o5bHIlMkJFdyUyRkZ0RjRaNCUyQllTSkNGVUUlMkZ0TCUyRmR4WiUyQmVLaFVpY2JXQSUzRCUzRCBzdHlsZT1mb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyNHB4O2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojNDE0MDREOyB0YXJnZXQ9X2JsYW5rPkZyZWUgUGhpc2hpbmcgUGxhdGZvcm0gSGFzIENyZWF0ZWQgTW9yZSB0aGFuIDE0MCwwMDAgU3Bvb2ZlZCBXZWJzaXRlczwvYT4gPC9kaXY-IDxkaXYgY2xhc3M9ZW50cnlfZGVzYyBzdHlsZT1mb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNHB4O2NvbG9yOiM3MjcyN0Q7PkEgZnJlZSBwaGlzaGluZy1hcy1hLXNlcnZpY2UgKFBoYWFTKSBwbGF0Zm9ybSBuYW1lZCBTbmlwZXIgRHogaGFzIGFzc2lzdGVkIGluIHRoZSBjcmVhdGlvbiBvZiBtb3JlIHRoYW4gMTQwLDAwMCBwaGlzaC4uLjwvZGl2PiA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoyMHB4O2NvbG9yOiAjOTU5NTlEIj48c3Bhbj4mbWludXM7IFN0dSBTam91d2VybWFuICZidWxsOyA1IGhvdXJzIGFnbzwvc3Bhbj4gPC9kaXY-PC90ZD4gPHRkIHN0eWxlPSJwYWRkaW5nOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDtwYWRkaW5nLWxlZnQ6MCIgdmFsaWduPXRvcD48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoSDI3SjFRNFNGVElDaEhDY2tVJTJGQjVQdyUyQmFnVGhqalZSa2FXQXolMkJWQURjVWdEaG9rOGlLRkxlRkZjSjlsciUyQkV3JTJGRnRGNFo0JTJCWVNKQ0ZVRSUyRnRMJTJGZHhaJTJCZUtoVWljYldBJTNEJTNEIHRhcmdldD1fYmxhbms-PGltZyBhbHQ9Iktub3dCZTQgQmxvZyIgY2xhc3M9aW1nLXRodW1iIHNyYz0iaHR0cHM6Ly9wcm94eS5mZWVkc3BvdC5jb20vMDhiNTEwMDc2MzQ3NDI5MDljMGJlNzg1NDdhZjc3MjQxZDFhZjBhYS82ODc0NzQ3MDczM2EyZjJmNjI2YzZmNjcyZTZiNmU2Zjc3NjI2NTM0MmU2MzZmNmQyZjY4NzU2MjY2NzMyZjQ0NmY2ZDYxNjk2ZTI1MzIzMDUzNzA2ZjZmNjY2OTZlNjcyNTMyMzA2NjZmNzIyNTMyMzA1MjY1NzY2NTZlNzU2NTJlNmE3MDY3Lz9wPTQiIHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7b2JqZWN0LWZpdDogY292ZXI7Ym9yZGVyOiAwcHggc29saWQgI2RkZDsiIHdpZHRoPTEwMD48L2E-IDwvdGQ-PC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzo1cHggMTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEgyN0oxUTRTRlRJQ2hIQ2NrVSUyRkI1UHclMkZlV1NpZmpSeDBXV1FmOVV2NG9Ed1Rob0ZUZ0trb1NGRTNSOTFzQ0cwYjk3cFVXSmlwWElCOU0wUWhMJTJGQ1JVJTJGZlNuRmhZclVTVW1Wd2slM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojNDE0MDREOz5XaGF0IEJsZXRjaGxleSBQYXJrIENhbiBUZWFjaCBVcyBBYm91dCBCdWlsZGluZyBhIFN0cm9uZyAuLi4gPHNwYW4gc3R5bGU9ImNvbG9yOiAjNzc3O2ZvbnQtc2l6ZTo4MCU7d2hpdGUtc3BhY2U6IG5vd3JhcDsiPiAmYnVsbDsgNSBob3VycyBhZ288L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzo1cHggMTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHc3JTJCV0p2bm1Ndm5wR2QzdE1RRVRPdHYxZTBybEJEdiUyRjgwM200U2ZrNVRUcnczSlMlMkJ4NCUyQkNQa3olMkZNa3QwU0ZMMnMyRkd3MExGQ0Q0VFE0REs4a2lLTTNvbER6biUyQkZmNzVqJTJGcCUyQmh2YklqVEk5WlZDNU81WUVpcGE2ZmRmMnV3ZnV1aVBYQnZ6U3hZV1NkUDdWZjhPU0FQZm9FZ1NIRVRsNVJiZHlCJTJGTTdrYjR2V1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlElM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMjY4NEZDO2ZvbnQtd2VpZ2h0Om5vcm1hbDs-MyBtb3JlIG5ldyBwb3N0cy4gUmVhZCBtb3JlIGF0IDxzcGFuIHN0eWxlPSJ3aGl0ZS1zcGFjZTogbm93cmFwOyI-RmVlZHNwb3QgJnJhcnI7PC9zcGFuPjwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRjFGMUYyO2JhY2tncm91bmQtY29sb3I6ICNGMUYxRjI7Ij48dGQgY29sc3Bhbj0yPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDE1cHg7Ij48L2Rpdj48L3RkPiA8L3RyPiA8dHI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzoxMHB4IDEwcHg7YmFja2dyb3VuZDogI2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHc3JTJCV0p2bm1Ndm5wR2QzdE1RRVRPdHYxZTBybEJEdiUyRjgwM200U2ZrNVRUcnczSlMlMkJ4NCUyQkNQa3olMkZNa3QwU0ZMMnMyRkd3MExGQ0Q0VFE0REs4a2lLTTNvbER6biUyQkZmNzVqJTJGcCUyQmh2YklqVEk5WlZDNU81WUVpcGE2ZmRmMnV3ZnV1aVBYQnZ6U3hZV1NkUDdWZjhPU0FQZm9FZ1NIRVRsNXh2Y3hobks3a2I0dldVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJRJTNEIHN0eWxlPWNvbG9yOiM1MTUwNUQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1zaXplOjE2cHg7PjxzcGFuIHN0eWxlPWZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOz5HQkhhY2tlcnMgb24gU2VjdXJpdHk8L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49IiIgc3R5bGU9InBhZGRpbmc6MTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO3dpZHRoOiAxMDAlOyIgdmFsaWduPXRvcD48ZGl2PjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hINzRwWktGaUZLSXlRVEJ3UlR5QmRiOXZLWFRlQVhVeElkWGhmJTJCV2NZa1Z2M3NsMk1ZS1JJVUkwNFIlMkZsVDZHdyUyRjk4S0VXSlNWSEppUlowZmxWQmhCTEFxMlNTaWNYRkElM0QlM0Qgc3R5bGU9Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjRweDtmb250LXdlaWdodDo3MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzQxNDA0RDsgdGFyZ2V0PV9ibGFuaz5IeWJyaWQgQW5hbHlzaXMgVXRpbGl6ZXMgQ3JpbWluYWwgSVDigJlzIFJvYnVzdCBEb21haW4gRGF0YSBmb3IgQmV0dGVyIE1hbHdhcmUgRGV0ZWN0aW9uPC9hPiA8L2Rpdj4gPGRpdiBjbGFzcz1lbnRyeV9kZXNjIHN0eWxlPWZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7Y29sb3I6IzcyNzI3RDs-Q3JpbWluYWwgSVAsIGEgcmVub3duZWQgQ3liZXIgVGhyZWF0IEludGVsbGlnZW5jZSAoQ1RJKSBzZWFyY2ggZW5naW5lIGRldmVsb3BlZCBieSBBSSBTUEVSQSwgaGFzIHBhcnRuZXJlZCB3aXRoIEh5YnJpLi4uPC9kaXY-IDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7Y29sb3I6ICM5NTk1OUQiPjxzcGFuPiZtaW51czsgS2Fhdml5YSAmYnVsbDsgMTQgaG91cnMgYWdvPC9zcGFuPiA8L2Rpdj48L3RkPiA8dGQgc3R5bGU9InBhZGRpbmc6MTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO3BhZGRpbmctbGVmdDowIiB2YWxpZ249dG9wPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hINzRwWktGaUZLSXlRVEJ3UlR5QmRiOXZLWFRlQVhVeElkWGhmJTJCV2NZa1Z2M3NsMk1ZS1JJVUkwNFIlMkZsVDZHdyUyRjk4S0VXSlNWSEppUlowZmxWQmhCTEFxMlNTaWNYRkElM0QlM0QgdGFyZ2V0PV9ibGFuaz48aW1nIGFsdD0iR0JIYWNrZXJzIG9uIFNlY3VyaXR5IiBjbGFzcz1pbWctdGh1bWIgc3JjPSJodHRwczovL3Byb3h5LmZlZWRzcG90LmNvbS85OWMwODIxOWJiNWIwODk0MzBjNDRiMmZmNWFmNjQ0NjQyMDlhNjJmLzY4NzQ3NDcwNzMzYTJmMmY2MjZjNmY2NzY3NjU3MjJlNjc2ZjZmNjc2YzY1NzU3MzY1NzI2MzZmNmU3NDY1NmU3NDJlNjM2ZjZkMmY2OTZkNjcyZjYyMmY1MjMyMzk3NjVhMzI3ODZjMmY0MTU2NzY1ODczNDU2OTU3Njc2ODc5NzA2ODY1NmU2ODc5NzA2ODY1NmU2Nzc4NDkzMTM3NmU1OTYzNTM3MTQ2NDQzODc1NDkzOTcwNWEzNzY1NDIzNTQ4NGU3YTZmNTc0ZTY1NWE0YTM4Njk0ZTVhMzc3NzU3NGU2ZDdhNTU2ODUzNDI1ODYxNmQ1MzQzNDY3OTYyMzU0ODRlNTM1ODMyNzA2NzRlMzc0MTcwNTE0NzM0NGMzOTZmNTYzMTc1NzU2YzVhNjQ2MjQ5NmM1ODQyNDg2YTQ5NjI2NTZiNDM1NjMyNjk0NDU0MzA0NDRhNGM3MTYzNjczODY0NzI0NjU1NGM2MjU4NWY3YTZiNGQ0YjM0Njg0ZjYyNjIzNzc5NGU1MTQyNDMzNzUzNGI0NTMxMzgyZDU5NzEzNzZlNmM0MTMyNTU3YTQ1NGM1ODMyNDgzMDM4NWE2ODZiNjE3MzcxNzg0OTM2NTY0MTU1MzA0ZTU4MzI0ODZjNmM1MjRmMzc0MzcyNDE2MzU3NDQ0NTMyNTc0OTYxNzkzOTVmMmY3MzMxMzYzMDMwMzAyZjc1NmU2ZTYxNmQ2NTY0MjUzMjMwMjgzNjMwMjkyZTc3NjU2MjcwLz9wPTYiIHN0eWxlPSJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7b2JqZWN0LWZpdDogY292ZXI7Ym9yZGVyOiAwcHggc29saWQgI2RkZDsiIHdpZHRoPTEwMD48L2E-IDwvdGQ-PC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzo1cHggMTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHc3JTJCV0p2bm1Ndm5wR2QzdE1RRVRPdHYxZTBybEJEdiUyRjgwM200U2ZrNVRUcnczSlMlMkJ4NCUyQkNQa3olMkZNa3QwU0ZMMnMyRkd3MExGQ0Q0VFE0REs4a2lLTTNvbER6biUyQkZmNzVqJTJGcCUyQmh2YklqVEk5WlZDNU81WUVpcGE2ZmRmMnV3ZnV1aVBYQnZ6U3hZV1NkUDdWZjhPU0FQZm9FZ1NIRVRsNXh2Y3hobks3a2I0dldVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJRJTNEIHN0eWxlPWZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzI2ODRGQztmb250LXdlaWdodDpub3JtYWw7PjUgbW9yZSBuZXcgcG9zdHMuIFJlYWQgbW9yZSBhdCA8c3BhbiBzdHlsZT0id2hpdGUtc3BhY2U6IG5vd3JhcDsiPkZlZWRzcG90ICZyYXJyOzwvc3Bhbj48L2E-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI0YxRjFGMjtiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYyOyI-PHRkIGNvbHNwYW49Mj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxNXB4OyI-PC9kaXY-PC90ZD4gPC90cj4gPHRyPjx0ZCBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6MTBweCAxMHB4O2JhY2tncm91bmQ6ICNmZmY7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFTDk2VVhHUnRLRlNSVkV3a1UlMkZCNVB3NyUyQldKdm5tTXZucEdkM3RNUUVUT3R2MWUwcmxCRHYlMkY4MDNtNFNmazVUVHJ3M0pTJTJCeDQlMkJDUGt6JTJGTWt0MFNGTDJzMkZHdzBMRkNENFRRNERLOGtpS00zb2xEem4lMkJGZjc1aiUyRnAlMkJodmJJalRJOVpWQzVPNVlFaXBhNmZkZjJ1d2Z1dWlQWEJ2elN4WVdTZFA3UmN6bUZzV3laeDN5R2tudTZCdll5UjdPNXhYSXMyTWI2JTJCa2U1USUzRCUzRCBzdHlsZT1jb2xvcjojNTE1MDVEO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxNnB4Oz48c3BhbiBzdHlsZT1mb250LXdlaWdodDpib2xkO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTs-a2VueWEgLSBHb29nbGUgTmV3czwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0iIiBzdHlsZT0icGFkZGluZzoxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7d2lkdGg6IDEwMCU7IiB2YWxpZ249dG9wPjxkaXY-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVDNWFWYzRSMVVJQmhSQ2NOSkNCd1JCdk9oR0JRb1dSb1VVUWtJRmR6eEwlMkYzdXBTJTJGMUREdnE1a2o1RFRiejRTZ0QxbDgzJTJGZ1E4NXY5SEVRRmM1eWtzMyUyQlJlTXdJSlVoWDFOdnNKVU9yZlV2N05tejhFQ3pyMyUyQmpQWDcxVHNCbHJaMktncjloZGZIUjFINjl0UDdmVWs0OWFDVFNrTUtmJTJGNU9RN3ZMT29kTU52T25EZjdHVkglMkYlMkZUYjQ0MWo2OUZvRjJLY2E5Z2xTJTJGeU04JTJCZWRNJTJCd1V3QU5xRlVlTUtLZmJqU096bktPdmdSdWpYbVZVckRWTVpIRGtRNDFYbEJrN240M1V5NVFrc0IlMkJReiUyQkFFeCUyQmlrdzZPTjFXUUlRWCUyRk1yUnc3ZlVPMEVHJTJCbmtseHI2Q3ozekNqSDU0eXp2OWxiOTA0VmRBUmdwR1BCVUI5SWIgc3R5bGU9Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjRweDtmb250LXdlaWdodDo3MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzQxNDA0RDsgdGFyZ2V0PV9ibGFuaz5LZW55YSBqZXQgZnVlbCByZS1leHBvcnRzIHRvIFVBRSBoaXQgU2gyN2JuIC0gQnVzaW5lc3MgRGFpbHk8L2E-IDwvZGl2PiA8ZGl2IGNsYXNzPWVudHJ5X2Rlc2Mgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDtjb2xvcjojNzI3MjdEOz5LZW55YSBqZXQgZnVlbCByZS1leHBvcnRzIHRvIFVBRSBoaXQgU2gyN2JuJm5ic3A7Jm5ic3A7QnVzaW5lc3MgRGFpbHk8L2Rpdj4gPGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDtjb2xvcjogIzk1OTU5RCI-PHNwYW4-NiBob3VycyBhZ288L3NwYW4-IDwvZGl2PjwvdGQ-IDx0ZCBzdHlsZT0icGFkZGluZzoxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7cGFkZGluZy1sZWZ0OjAiIHZhbGlnbj10b3A-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVDNWFWYzRSMVVJQmhSQ2NOSkNCd1JCdk9oR0JRb1dSb1VVUWtJRmR6eEwlMkYzdXBTJTJGMUREdnE1a2o1RFRiejRTZ0QxbDgzJTJGZ1E4NXY5SEVRRmM1eWtzMyUyQlJlTXdJSlVoWDFOdnNKVU9yZlV2N05tejhFQ3pyMyUyQmpQWDcxVHNCbHJaMktncjloZGZIUjFINjl0UDdmVWs0OWFDVFNrTUtmJTJGNU9RN3ZMT29kTU52T25EZjdHVkglMkYlMkZUYjQ0MWo2OUZvRjJLY2E5Z2xTJTJGeU04JTJCZWRNJTJCd1V3QU5xRlVlTUtLZmJqU096bktPdmdSdWpYbVZVckRWTVpIRGtRNDFYbEJrN240M1V5NVFrc0IlMkJReiUyQkFFeCUyQmlrdzZPTjFXUUlRWCUyRk1yUnc3ZlVPMEVHJTJCbmtseHI2Q3ozekNqSDU0eXp2OWxiOTA0VmRBUmdwR1BCVUI5SWIgdGFyZ2V0PV9ibGFuaz48aW1nIGFsdD0ia2VueWEgLSBHb29nbGUgTmV3cyIgY2xhc3M9aW1nLXRodW1iIHNyYz0iaHR0cHM6Ly9wcm94eS5mZWVkc3BvdC5jb20vYTIwODJlMmM1MzVlOGZiMWYzMGZkNmNiOTM3OGE0YmU1NDA4ZmZmYi82ODc0NzQ3MDczM2EyZjJmNmM2ODMzMmU2NzZmNmY2NzZjNjU3NTczNjU3MjYzNmY2ZTc0NjU2ZTc0MmU2MzZmNmQyZjRhMzY1ZjYzNmY0NjYyNmY2Nzc4Njg1MjQ5Mzk2OTRkMzgzNjM0NGU0YzVmNmM2OTQ3NTg3NjczNTE3MDMyNDE3NTcwNzM0YjY1NjkzNzdhMzA2MzRlNGU2NjQ0NzY0NzU1NmQ1NzU1NzkzMjMwNmU3NTU1Njg2YjUyNDU1MTc5NzI3MDU5MzQ2MjQ1NjU0OTQyNzU2MzNkNzMzMDJkNzczMzMwMzAvP3A9MiIgc3R5bGU9IndpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtvYmplY3QtZml0OiBjb3Zlcjtib3JkZXI6IDBweCBzb2xpZCAjZGRkOyIgd2lkdGg9MTAwPjwvYT4gPC90ZD48L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUM1YVZjNFIxVUlCaFJDY05KQ0J3UkJ2T2hHQlFvV1JvVVVRa0lGZHp4TCUyRjN4bFMlMkYxRER2cTVrajVEVGZ5SFNnTHpJWlZId01wQSUyQlklMkY3T2RhOHh3czYlMkJOelRTUWFGU0RoT2ZnQUdlb1pUdUhTbVRzaUdEbjc0a1lQQ1VEdEJ6enAybDVkNWdkUEJ3czREOTlYN1BNOENPT0dUZnNRTGZ2JTJCT09uR1d1WXBNTWZhY2xFakRDbjdDampYMjFUbjl6RGowNWxoNVFkUDl3cEhEOHBXOCUyRmRHNHVKekl1Z05PZlB6T2ZrQlBQb2JTZ0xXWVRNQkFqMEQ5RHpyeWk3dktUUEg0WE1hQXhjODV1TTREY1VYOCUyRlJLMjlTYVRlY1FPJTJGY0FTQTc1T09mZlVnN1hoRU1aQ1ZIMkt6NFFCVHJuOWp6VzVaeFZIeHBTOXhsSiUyQlFSZTV1STN4ZFNHUCUyRmdIU2ZyelZndmJLTzhGRzhuamcyRUNHQmozJTJCREg0MXozbktURFkwbk12QlFzWSUyRiUyRlEzRVBrMjclMkZaR0NkS0ZWZVlKUFBzbVAlMkZ2OFh2cmdNQVBhZ2pib0VEd2xIRG5wQVRMckcwN1p6b0kzSGdzOUhRUSUyRiUyQnU5TzVod3clMkY5VnlLeW9JVCUyRmJpTk96cVglMkJ2MFR0dk9YbGt0R0JiN0EwY1M0eSUyRjYzMXJxem9RdiUyRlF3ODlpdEc2Z0ViN3dZNDROVmVVUlFKRmdzWE9SRHZOUHYyUnZ6VllFTWdEVHJpJTJGVCUyRnI3MDdxM3hMSDFsNVk2QWM1OHgxSTdBVVglMkJnZE54OHlDUXdBWU93Y29QUHNOTSUyQnYyT0FuWm1FMzlBam4lMkZBanpvN2huODlVNEU0NFZZNHdjWUlTRTREJTJCc1g3Z0FoQSUyQk5ySGclM0QlM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojNDE0MDREOz5LZW55YSdzIEVtYmF0dGxlZCBEZXB1dHkgUHJlc2lkZW50IERlbmllcyBDb3JydXB0aW9uIEFsbGUuLi4gPHNwYW4gc3R5bGU9ImNvbG9yOiAjNzc3O2ZvbnQtc2l6ZTo4MCU7d2hpdGUtc3BhY2U6IG5vd3JhcDsiPiAmYnVsbDsgNiBob3VycyBhZ288L3NwYW4-IDwvYT4gPC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzo1cHggMTBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyI-PGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVDNWFWYzRSMVVJQmhSQ2NOSkNCd1JCdk9oR0JRb1dSb1VVUWtJRmR6eEwlMkYzbmxTJTJGMUREdnE1a2o1RFRYekcwYmt6bkpOOXc4WUhRWTYxZHNxNXh3VDRkYUVXUVlZS3dzRVJ0VUZWJTJGcmZUZ3JpaFQ0bkNWUDMlMkJVbjQ1MkQ3R2pUYTJZVkQ5UWtxQ3dSSCUyQlBoZDZ1QTA1dFZ6WVIwWUtnTW5OUGtORnYzaE5OdlJtVTBIQzA4SEVqVDczbDd1Qml3QXpWNHpDUnNyJTJGd2MzJTJCTmRkJTJGU2swNmROek0lMkJrUE91SWJQUHpmTHZIZkY4alRjazB0R0JZZzRVYjd6bGZ6QTA0QjBtRTMlMkZnbzY1aGs2RUFGTzh0OUtBciUyQmRUUERyIHN0eWxlPWZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzQxNDA0RDs-MjAyNCBTYWZhcmkgU2V2ZW5zIHNldCB0byBJZ25pdGUgTWFjaGFrb3MgZnJvbSBGcmlkYXkgLSBLLi4uIDxzcGFuIHN0eWxlPSJjb2xvcjogIzc3Nztmb250LXNpemU6ODAlO3doaXRlLXNwYWNlOiBub3dyYXA7Ij4gJmJ1bGw7IDYgaG91cnMgYWdvPC9zcGFuPiA8L2E-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjx0ZCBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6NXB4IDEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZDsiPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFQzVhVmM0UjFVSUJoUkNjTkpDQndSQnZPaEdCUW9XUm9VVVFrSUZkenhMJTJGMzNieSUyRjFERHZxNWtqNURUVHZHazdZMDRWWkNnbzdGZjglMkY2JTJCODglMkJocEd4ZHAyUXhzSFBQc2hNOVRmTGV3ZEpPZlVYenZrQ1UlMkY3JTJGRDNWN3pueUJFcm0xbk0lMkZLeGxTR1NwSUh1OHg3d1FYNWRtWlhDY0VVZ3JpUCUyRm52VyUyRkFjTzhYalhpOGVCVGtaQWpnTzR6VHJCQnZuelhSUktCY1ZDeDB6JTJGQVVyJTJCJTJCRlJEZE9hVkN3WEslMkZZclNnJTJGT1VQUHpLTVRQY3olMkZqQWpycDVqZjY3ekw5QlNUczFISXZDeEE4SlJ3NEVmZ1o2eG9veDlGZ0h2WU5QUXNYU2V2T0clMkZBY05BdmxuRlVBQ1ZMaSUyRkR6cTN6dm85Q2o4MXBsWkpnb1dBJTJCRkglMkIlMkI5VzVoazR4dFowVFMwS0toa2VTdXJYRyUyRnJ6TjhUT2N4NEdBemtaOVRvTzF5diUyQjl6amkwNXRROGlWSTd1WSUzRCBzdHlsZT1mb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM0MTQwNEQ7PktlbnlhJ3MgRGVwdXR5IFByZXNpZGVudCB0byBGaWdodCBJbXBlYWNobWVudCBpbiBQYXJsaWFtZS4uLiA8c3BhbiBzdHlsZT0iY29sb3I6ICM3Nzc7Zm9udC1zaXplOjgwJTt3aGl0ZS1zcGFjZTogbm93cmFwOyI-ICZidWxsOyA2IGhvdXJzIGFnbzwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUM1YVZjNFIxVUlCaFJDY05KQ0J3UkJ2T2hHQlFvV1JvVVVRa0lGZHp4TCUyRjNycFMlMkYxRER2cTVrajVEVGZxNERqSzRvWSUyRkd4aFFIZmc2NnV0Vjh4d29BdU9CR2lZRUZ2OGZNOVlGVFAwWk1PelNkVmtwQ2hmNzlEYjV4bHo4QkJ2WjBuWlo1d0k2QXlrNDF1TTI1UVpGQ09LR1B5RUVGdk1oTWZyWE5QNEhQTmpPZ2tMb0RGSUhBRWdPNXpuJTJCOWxJTzBadFpBQkFYNHVNejZRUVc3aGxLQSUyQlJ6UCUyRmdGUEJrZE90Yk9VJTJCN2lPTmZrY2k4b0JUejMlMkZEWWUlMkJWJTJGbTREVHA0b1E3SFFncjh4MDU2dW9YN2h4SzQlMkJTYVRRRVhLdmNuTTlUZVlPY0RSdVhrbUM4aEIxRGtCQ2IlMkIlMkZDanFCVGo2NVlZdkFBb1YlMkZ5QXklMkJkOWElMkZDbE8xdFJnTndBSUdQJTJGJTJGT2clMkZqWE9zSFR0bk9neThVQkJnREp6TVAyelR6OVRqbDFZSk5JZ1VzJTJCJTJCSTcxdDlYNyUyQkJLeXMxMVhmOE5VQjBkTWZ2T09mRDFNT1BXWVUwVUREc1pLRGdSNnp2N0JGcm8xRjlVNkJCUkhlVXk2dXMzN3dVbkM4MmFQeUVES3hrWFNOYjlWdThHTE8zT21sWCUyRkZ5b0RIRHY4N3pEdjlCc0t6blpONkFkUyUyQiUyQlk3RXRaZCUyQndRWHhlV0VVUVVRRmVMM091dkZYZThGVWNUVWMxMG9DbCUyRiUyQkpUcjU1eXYlMkJHaXpkNUprdkNRczdGUEJVQjlJYiBzdHlsZT1mb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM0MTQwNEQ7PktlbnlhbiBhdGhsZXRlIEtpcHllZ29uIEJldHQgZGllcyBhdCB0aGUgYWdlIG9mIDI2IC0gQWZyaS4uLiA8c3BhbiBzdHlsZT0iY29sb3I6ICM3Nzc7Zm9udC1zaXplOjgwJTt3aGl0ZS1zcGFjZTogbm93cmFwOyI-ICZidWxsOyA2IGhvdXJzIGFnbzwvc3Bhbj4gPC9hPiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgY29sc3Bhbj0yIHN0eWxlPSJwYWRkaW5nOjVweCAxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7Ij48YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUw5NlVYR1J0S0ZTUlZFd2tVJTJGQjVQdzclMkJXSnZubU12bnBHZDN0TVFFVE90djFlMHJsQkR2JTJGODAzbTRTZms1VFRydzNKUyUyQng0JTJCQ1BreiUyRk1rdDBTRkwyczJGR3cwTEZDRDRUUTRESzhraUtNM29sRHpuJTJCRmY3NWolMkZwJTJCaHZiSWpUSTlaVkM1TzVZRWlwYTZmZGYydXdmdXVpUFhCdnpTeFlXU2RQN1Jjem1Gc1d5WngzeUdrbnU2QnZZeVI3TzV4WElzMk1iNiUyQmtlNVElM0QlM0Qgc3R5bGU9Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMjY4NEZDO2ZvbnQtd2VpZ2h0Om5vcm1hbDs-MTMgbW9yZSBuZXcgcG9zdHMuIFJlYWQgbW9yZSBhdCA8c3BhbiBzdHlsZT0id2hpdGUtc3BhY2U6IG5vd3JhcDsiPkZlZWRzcG90ICZyYXJyOzwvc3Bhbj48L2E-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI0YxRjFGMjtiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYyOyI-PHRkIGNvbHNwYW49Mj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxNXB4OyI-PC9kaXY-PC90ZD4gPC90cj4gPHRyIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmO2JhY2tncm91bmQtY29sb3I6ICNmZmY7Ij48dGQgYWxpZ249Y2VudGVyIGNvbHNwYW49MiBzdHlsZT0icGFkZGluZzogMTBweCAxMHB4O21hcmdpbi1ib3R0b206IDE1cHg7IiB2YWxpZ249bWlkZGxlPjxkaXYgc3R5bGU9InBhZGRpbmcgNXB4IDEwcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO3BhZGRpbmc6IDE2cHggMTZweDsiPjxhIGhyZWY9aHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2ZzL3RrL0dFYlJ3R1VmNSUyQm9kNXVrWTJNZ2J5JTJCY1Z6YlJhRlNnWFR1N3hGdHJPR3N2Z0c4Q3NuRTRyS2lMeEdWa1lCVm5UM2hFTDk2VVhHUnRLRlNSVkV3a1UlMkZCNVB3JTJCeWRVQndrSkJudUs5VGlMdEhqRyUyQnpMbGswTCUyRlZyJTJCRWhmeTZ6VGJGeVRnd1hrZkJRMG85Um90RE80OTRmMDZ5TWRtV3h6OE1nampQJTJGbkVWZUFYVEFMRlhsejU3MDBYQkJubUJ6RE9DU2Y1dFhCY0JlcGFHQW9XM0FoSEVpUW45dmx2SnZEY1NDQWZXUTBEVyUyRjdzU2dqMG5selk2U2JXNHl2Snh5d1FKbG5DNXBOT0Z5bFZJQ1VUQndSVHZ1RW91Yk4wU0NZb1NOYmtLUmY5VlJBT1R3UHlrMGdmSlVnYzFoZmElMkJVcSUyQjRpYkx0bUlkNiUyQnNkNU9VWTJjY2V6T2dXIHN0eWxlPXRleHQtZGVjb3JhdGlvbjpub25lIHRhcmdldD1fYmxhbms-PHNwYW4gc3R5bGU9ImJvcmRlci1yYWRpdXM6IDRweDtwYWRkaW5nOiA1cHggMTBweDtiYWNrZ3JvdW5kLWNvbG9yOiMyNjg0RkM7Ym9yZGVyOiAxcHggc29saWQgIzI2ODRGQztmb250LXdlaWdodDpib2xkO2NvbG9yOiAjZmZmO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6IDE2cHg7ZGlzcGxheTogaW5saW5lLWJsb2NrOyI-PGltZyBhbHQ9TUNEIGhlaWdodD0xNXB4IHNyYz1odHRwczovL2Nkbi5mZWVkc3BvdC5jb20vaW1nL2VtYWlsL2RkL3Y3L2xvY2sucG5nIHN0eWxlPSJ3aWR0aDogMTJweDtoZWlnaHQ6IDE1cHg7cGFkZGluZy1yaWdodDo0cHg7bWFyZ2luLWJvdHRvbTogLTJweDsiIHdpZHRoPTEycHg-IFNob3cgbW9yZTwvc3Bhbj48L2E-IDwvZGl2PiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNGMUYxRjI7YmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMjsiPjx0ZCBjb2xzcGFuPTI-PGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMTVweDsiPjwvZGl2PjwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGFsaWduPWNlbnRlciBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6IDIwcHggMCAxMHB4IDA7IiB2YWxpZ249bWlkZGxlPjxkaXYgY2xhc3M9dGV4dC1hbGlnbjpjZW50ZXI7PjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9sb2dpbj9oPUYwTUg4NDlYS2hkWEd1TWEyTlZOQmhCTEFLNlJXQ0RpSGhZV0hOWDRHOHJpRk1XMlpVL29HaGpuRTBzRjloZlM0QnJKNVpFZTVCc1I0dWdZMThzYXl1RWJ5QT09JmNvbnRpbnVlPWh0dHBzJTNBJTJGJTJGd3d3LmZlZWRzcG90LmNvbSUyRnJlYWRlciIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAxNXB4O3BhZGRpbmc6N3B4IDAgMCAwOyI-PGltZyBhbHQ9RmVlZHNwb3QgaGVpZ2h0PTI0cHggc3JjPWh0dHBzOi8vY2RuLmZlZWRzcG90LmNvbS9pbWcvZW1haWwvZGQvdjcvbG9nby1ncmF5LnBuZyBzdHlsZT0id2lkdGg6IDEzMHB4O2hlaWdodDogYXV0bzsiIHdpZHRoPTEzMHB4PiA8L2E-IDwvZGl2PiA8L3RkPiA8L3RyPiA8dHIgc3R5bGU9ImJhY2tncm91bmQ6ICNmZmY7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsiPjx0ZCBjb2xzcGFuPTI-PGRpdiBzdHlsZT0iZm9udC1zaXplOiAxM3B4O2NvbG9yOiAjNzI3MjdEO3BhZGRpbmc6IDEwcHggMTBweDtsaW5lLWhlaWdodDoyMHB4O3RleHQtYWxpZ246IGNlbnRlcjsiPjxkaXYgc3R5bGU9Zm9udC13ZWlnaHQ6Ym9sZDttYXJnaW4tYm90dG9tOjRweD4gTWlzc2luZyBvdXQgb24gRmVlZHNwb3QgZW1haWxzPyBCZSBzdXJlIHRvIGFkZCB1cyB0byB5b3VyIHByaW1hcnkgaW5ib3guIDwvZGl2PiBZb3UgcmVjZWl2ZWQgdGhpcyBlbWFpbCBiZWNhdXNlIHlvdSBzaWduZWQgdXAgYXQgRmVlZHNwb3QuPGJyPiA8YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy90ay9HRWJSd0dVZjUlMkJvZDV1a1kyTWdieSUyQmNWemJSYUZTZ1hUdTd4RnRyT0dzdmdHOENzbkU0cktpTHhHVmtZQlZuVDNoRUw5NlVYR1J0S0ZTUlZFd2tVJTJGQjVQdyUyQnlkVUJ3a0pCbnVLOVRpTHRIakclMkJ6TGxrMEwlMkZWciUyQkVoZnk2elRiRnlUZ3dYa2ZCUTBvOVJvdERPNDk0ZjA2eU1kbVd4ejhNZ2pqUCUyRm5FVmVBWFRBTEZYbHo1NzAwWEJCbm1CekRPQ1NmNXRYQmNCZXBhR0FvVzNBaEhFaVFuOXZsdkp2RGNTQ0FmV1EwRFclMkY3c1NnajBubHpZNlNiVzR5dkp4eXdRSmxuQzVwTk9GeWxWSUNVVEJ3UlR2dUVvQ2ZPVFd4Z2FUaVhXR09yJTJCVkEwVVVBaWxZUzBvSkZnbUUxZ0hCMCUyRjdGQWZHdHFGT0o5c1k5U1pURndwSURCSlUlMkZlS1REdVhzU1JYV0dPak1ITTNqR3NtNFlSM202eGZwNUI3WSBzdHlsZT13aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6IzcyNzI3RDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyPlVuc3Vic2NyaWJlPC9hPiAmYnVsbDsgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGdXNlcmVkaXQlM0ZpbnRlbnQlM0R3ZWVrbHklMjZzZXQlM0RkYWlseWRpZ2VzdCUyNmRkJTNENzY0NDg1ODM0MzUyODM5NCIgc3R5bGU9d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcj5Td2l0Y2ggdG8gd2Vla2x5PC9hPiAmYnVsbDsgPGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGsvR0ViUndHVWY1JTJCb2Q1dWtZMk1nYnklMkJjVnpiUmFGU2dYVHU3eEZ0ck9Hc3ZnRzhDc25FNHJLaUx4R1ZrWUJWblQzaEVMOTZVWEdSdEtGU1JWRXdrVSUyRkI1UHclMkJ5ZFVCd2tKQm51SzlUaUx0SGpHJTJCekxsazBMJTJGVnIlMkJFaGZ5NnpUYkZ5VGd3WGtmQlEwbzlSb3RETzQ5NGYwNnlNZG1XeHo4TWdqalAlMkZuRVZlQVhUQUxGWGx6NTcwMFhCQm5tQnpET0NTZjV0WEJjQmVwYUdBb1czQWhIRWlRbjl2bHZKdkRjU0NBZldRMERXJTJGN3NTZ2owbmx6WTZTYlc0eXZKeHl3UUpsbkM1cE5PRnlsVklDVVRCd1JUdnVFb0NmT1RXeGdhVGlYV0dPb0lTdzNVRmRqa2oxSWZMMGthR0VvWENRdkw1VWI0cFdFdDZ1d1o1ZWthM01nYXpPUVV6TE5uSFElM0QlM0Qgc3R5bGU9d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlcj5DaGFuZ2UgRW1haWwgU2V0dGluZ3M8L2E-ICZidWxsOyA8YSBocmVmPWh0dHBzOi8vd3d3LmZlZWRzcG90LmNvbS9mcy9wcml2YWN5IHN0eWxlPXdoaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjojNzI3MjdEO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y3Vyc29yOnBvaW50ZXIgdGFyZ2V0PV9ibGFuaz5Qcml2YWN5PC9hPiAmYnVsbDsgPGEgaHJlZj1odHRwczovL3d3dy5mZWVkc3BvdC5jb20vZnMvdGVybXMgc3R5bGU9d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlciB0YXJnZXQ9X2JsYW5rPlRlcm1zPC9hPiAmYnVsbDsgPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmZlZWRzcG90LmNvbT9fc3JjPWRkX2Zvb3RlciIgc3R5bGU9d2hpdGUtc3BhY2U6bm93cmFwO2NvbG9yOiM3MjcyN0Q7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlciB0YXJnZXQ9X2JsYW5rPkhlbHA8L2E-IDxicj5GZWVkc3BvdC5jb20sIDMwMyBDYXBlIENvdXJ0LCBNaWxsIFZhbGxleSwgQ0EgOTQ5NDEgPC9kaXY-IDwvdGQ-IDwvdHI-IDx0ciBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyI-PHRkIGFsaWduPWNlbnRlciBjb2xzcGFuPTIgc3R5bGU9InBhZGRpbmc6IDEwcHggMTBweDsiIHZhbGlnbj1taWRkbGU-PGEgaHJlZj0iaHR0cHM6Ly93d3cuZmVlZHNwb3QuY29tL2xvZ2luP2g9RjBNSDg0OVhLaGRYR3VNYTJOVk5CaEJMQUs2UldDRGlIaFlXSE5YNEc4cmlGTVcyWlUvb0doam5FMHNGOWhmUzRCcko1WkVlNUJzUjR1Z1kxOHNheXVFYnlBPT0mY29udGludWU9aHR0cHMlM0ElMkYlMkZ3d3cuZmVlZHNwb3QuY29tJTJGYnJvd3NlcnZpZXclM0ZrZXklM0Q1aGpJdEdZZTYlMkJrWjVPWVgzTWdmemU5QjFOOXVVUlFwV0JJZlhBVUhUOHZrRnRUbm0wb2NJaE1VSUZMazlDYjQ3eFBMc21ZYzZlMFg2dVViMjhVYSUyRkJCRSUyQmJlVEloa2MiIHN0eWxlPWNvbG9yOiM3MjcyN0Q7Zm9udC1zaXplOjEzcHg7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt3aGl0ZS1zcGFjZTpub3dyYXA7Y3Vyc29yOnBvaW50ZXI-Q2xpY2sgaGVyZSB0byB2aWV3IHRoaXMgZW1haWwgaW4geW91ciBicm93c2VyPC9hPiA8L3RkPiA8L3RyPjwvdGJvZHk-IDwvdGFibGU-IDwvYm9keT48L2h0bWw-DQo=" + } + }, + "sizeEstimate": 35427, + "historyId": "3310109", + "internalDate": "1728367294000" +} diff --git a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926abe2f19f960a/emails.json b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926abe2f19f960a/emails.json index 25852ab6..27a5f6df 100644 --- a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926abe2f19f960a/emails.json +++ b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/1926abe2f19f960a/emails.json @@ -1,124 +1,120 @@ { - "id": "1926abe2f19f960a", - "threadId": "1926abe2f19f960a", - "labelIds": [ - "CATEGORY_PROMOTIONS", - "UNREAD", - "INBOX" - ], - "snippet": "Windscribe Updates Since...August Reading Disgusts Me, Give Me Video After last month's jam packed newsletter, we wanted to make sure we had enough treats for all of you baby birds to feast on...", - "payload": { - "partId": "", - "mimeType": "text/html", - "filename": "", - "headers": [ - { - "name": "Delivered-To", - "value": "hassanwari254@gmail.com" - }, - { - "name": "Received", - "value": "by 2002:a05:6f02:c091:b0:74:e4b5:b3c7 with SMTP id a17csp2297441rcc; Mon, 7 Oct 2024 23:08:22 -0700 (PDT)" - }, - { - "name": "X-Google-Smtp-Source", - "value": "AGHT+IHK+VcKYI5BS0CGSO+9ud0dJWxni7OSyMqyr2Bp6aSGdTAV17zgW14vpuxAlvp6mUJfvAj9" - }, - { - "name": "X-Received", - "value": "by 2002:a05:620a:1995:b0:7ab:3ec9:f4c7 with SMTP id af79cd13be357-7ae6f44dbb0mr2283099285a.35.1728367701942; Mon, 07 Oct 2024 23:08:21 -0700 (PDT)" - }, - { - "name": "ARC-Seal", - "value": "i=1; a=rsa-sha256; t=1728367701; cv=none; d=google.com; s=arc-20240605; b=a6/gj3D/TmahL5MgoeJIpn6yLSYHol3t1ubtBMqA1BcLLWGQcfORV/zgcFAcJFo2xA Uy6Htzqus9j6PJwXi76GZRKmArJeHsizz+Yb2V5tUgqCv8eS3qAzrD+cSVTOSY2ujh/A mQ2N+m0LeJDKQaTXOfetRWE5pgvg7rap/hNN6hFadrKhao2sAg29b2DhG3Q3UrdpoFdI FoJrSMKLXyqF9Gd/5CKmLciZzw3JBNFo4xZLTbpH5AMWC8xynJOr3q7ClDtBfTzXahhw f5tGPMojagO0mrcsGv9ZACMXgQB7kVqpCrLc64bT23DLVDDDGrN26aQ6uYdnB7ibVeO1 U6HA==" - }, - { - "name": "ARC-Message-Signature", - "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=date:feedback-id:list-unsubscribe-post:list-unsubscribe:message-id :reply-to:from:mime-version:subject:to:dkim-signature; bh=YIIYA1rBs/9huxBjRwzoP0CP4wLvaXoiNj29J7zQHsc=; fh=ZFfeWVxw4L0EQu5c9o8c02kNCYnwsvyCNJ1DnZxyxSI=; b=AmyZlwKNjKrxEj1BAPtFklubgPJwPsLJ77aDCBhPpZV8MPObz/JPMEzUNNqUiVnD0S s8dYTci0Q4hWPNvvIHV9woOwJMS1mJSeOqM9I+J4YdIYfSkUDIMumHpSqUFY5dMrhbkX fc7WBN1+rfe/pJX78B9Z/oBitU0x+DXZe/OgUveff9jv0f0DysC+5r7ys27w4HWXa1qP lqiyGDB/D6LUmjTgreRPIEXTodyvLmPYCV9W1N/CbMLnYPOunST8BW+O+z+MU3dTLZKf 2PT00jkHr3sSsj0NWgFTUmlNJMJKtTaUkhubJ88LC2lf22HuKLd8FFpgSkkS21CJRJ1J BVFw==; dara=google.com" - }, - { - "name": "ARC-Authentication-Results", - "value": "i=1; mx.google.com; dkim=pass header.i=@windscribe.com header.s=dkim header.b=wwrHe49k; spf=pass (google.com: domain of noreply@windscribe.com designates 209.127.204.17 as permitted sender) smtp.mailfrom=noreply@windscribe.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=windscribe.com" - }, - { - "name": "Return-Path", - "value": "" - }, - { - "name": "Received", - "value": "from mx-out-17.windscribe.com (mx-out-17.windscribe.com. [209.127.204.17]) by mx.google.com with ESMTPS id af79cd13be357-7ae75616586si810176585a.142.2024.10.07.23.08.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Oct 2024 23:08:21 -0700 (PDT)" - }, - { - "name": "Received-SPF", - "value": "pass (google.com: domain of noreply@windscribe.com designates 209.127.204.17 as permitted sender) client-ip=209.127.204.17;" - }, - { - "name": "Authentication-Results", - "value": "mx.google.com; dkim=pass header.i=@windscribe.com header.s=dkim header.b=wwrHe49k; spf=pass (google.com: domain of noreply@windscribe.com designates 209.127.204.17 as permitted sender) smtp.mailfrom=noreply@windscribe.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=windscribe.com" - }, - { - "name": "Received", - "value": "by 127.0.0.1 with SMTP" - }, - { - "name": "DKIM-Signature", - "value": "v=1; a=rsa-sha256; c=relaxed/simple; d=windscribe.com; s=dkim; t=1728364796; bh=Nj/qXO8Bh3DFEuX/2lFBzatqmHCM777GkUMm+0V3LWE=; h=To:Subject:From:Reply-To:List-Unsubscribe:Date; b=wwrHe49kTDmmdnksaQqxNT/q9e2AF3dbWXiUM0sfcelY8FglrnG09GH1EsmvuNhLV\t 9V0TDH8UsmsccxohC4Q2f+BtU9vuSxy+nkYGY2pon2zXICitXY3nh9XmVqHI3wDqFU\t qEAdmdzC7/DQB8JgpJfZAQHJFGvGNXE0D7bKkP+AxlznVpGhJPTnfYg6E3m7OSngQJ\t F+86aXvs5TBpMIrg2dhUtjRMNB946kiVvKf4INoN22pvAPriUv+4SV72NbCK1ULooW\t fO/8gHsklKeOOvzXic9WQ1HhR/WHZfVmieygzDqI3L0LG4kgRa7GVlGlDuDP36FniI\t AkyQGesyYBkqw==" - }, - { - "name": "Received", - "value": "by 127.0.0.1 with SMTP" - }, - { - "name": "To", - "value": "hassanwari254@gmail.com" - }, - { - "name": "Subject", - "value": "Windscribe September Updates (and another new video!)" - }, - { - "name": "MIME-Version", - "value": "1.0" - }, - { - "name": "Content-type", - "value": "text/html;charset=UTF-8" - }, - { - "name": "From", - "value": "Windscribe " - }, - { - "name": "Reply-To", - "value": "support@windscribe.com" - }, - { - "name": "Message-ID", - "value": "<1728364795.4995.noreply@windscribe.com>" - }, - { - "name": "List-Unsubscribe", - "value": ", " - }, - { - "name": "List-Unsubscribe-Post", - "value": "List-Unsubscribe=One-Click" - }, - { - "name": "Feedback-ID", - "value": "5:b72217e259f086aca63cde68e6917fa7:2024-10-08:windscribe" - }, - { - "name": "Date", - "value": "Tue, 8 Oct 2024 01:19:55 -0400 (EDT)" - } - ], - "body": { - "size": 13588, - "data": "PCFET0NUWVBFIGh0bWw-DQo8aHRtbCBsYW5nPSJlbiI-DQo8aGVhZD4NCiAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI-DQo8L2hlYWQ-DQo8Ym9keSBzdHlsZT0icGFkZGluZzowOyBtYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ij4NCjxkaXYgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWFyZ2luOjBweDtwYWRkaW5nOjA7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij4NCiAgICA8ZGl2IHN0eWxlPSJtYXJnaW46MHB4IGF1dG87Ij4NCiAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmO2NsZWFyOmJvdGg7Y29sb3I6IzY2NjtsaW5lLWhlaWdodDogMzJweDsgbWF4LXdpZHRoOiA1MDBweDsgbWFyZ2luOiA1MHB4IGF1dG87Ym9yZGVyLXJhZGl1czogNXB4IDVweCA1cHggNXB4OyBib3gtc2hhZG93OiAwcHggMTVweCA0MHB4IC0xNXB4ICM5OTk7Ij4NCg0KICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogI2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzowcHggMHB4IDBweDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdodHRwczovL3dpbmRzY3JpYmUuY29tL2ltZy9lbWFpbHMvZW1haWxfaGVhZGVyLnBuZycpOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7IGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEyNXB4OyBib3JkZXItcmFkaXVzOiA1cHggNXB4IDBweCAwcHg7Ij4NCiAgICAgICAgPC9kaXY-DQogICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1ZScsJ0hlbHZldGljYScsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDowO21hcmdpbi1ib3R0b206MDttYXJnaW4tbGVmdDowO3BhZGRpbmctdG9wOjA7cGFkZGluZy1yaWdodDowO3BhZGRpbmctYm90dG9tOjEwcHg7cGFkZGluZy1sZWZ0OjA7Zm9udC1zaXplOjE1cHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICA8cCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyM3B4OyBjb2xvcjojNDI4MEQ2OyBmb250LXdlaWdodDo1MDA7IHBhZGRpbmc6MTBweCAzMHB4IDBweCAzMHB4OyI-V2luZHNjcmliZSBVcGRhdGVzIFNpbmNlLi4uQXVndXN0PC9wPg0KPCEtLSBpbnRybyAtLT4NCg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHggMHB4O3RleHQtYWxpZ246Y2VudGVyOyI-DQogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_dj1pcHR1MF9yWlFpZyI-DQogICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9zaGFyZS53aW5kc2NyaWJlLmNvbS9lbWFpbC9zZXB0X3RodW1ibmFpbC5wbmciIHdpZHRoPSIxMDAlIj4NCiAgICA8L2E-DQogIDwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4IDBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWlwdHUwX3JaUWlnIiBzdHlsZT0iZm9udC1zaXplOjIwcHg7IGRpc3BsYXk6YmxvY2s7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwMDAwOyBwYWRkaW5nOjEwcHggMHB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MTBweCBhdXRvOyB0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjVweDsiPlJlYWRpbmcgRGlzZ3VzdHMgTWUsIEdpdmUgTWUgVmlkZW88L2E-DQo8L3A-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsiPkFmdGVyIGxhc3QgbW9udGgncyBqYW0gcGFja2VkIG5ld3NsZXR0ZXIsIHdlIHdhbnRlZCB0byBtYWtlIHN1cmUgd2UgaGFkIGVub3VnaCB0cmVhdHMgZm9yIGFsbCBvZiB5b3UgYmFieSBiaXJkcyB0byBmZWFzdCBvbi4uLiBhbmQgbG8gYW5kIGJlaG9sZCwgd2UgZG8uIFdlJ3ZlIGdvdCBiaWcgbmV3cyByZWdhcmRpbmcgdGhlIFdpbmRzY3JpYmUgQXBwbGUgVFYgYXBwLCBhIGRlbGVjdGFibGUgbGl0dGxlIGV4cG9zw6kgb24gaG93IHRoZSBWUE4gbWFya2V0IHRyaWVzIHRvIHJpcCB5b3Ugb2ZmLCBNVjMgdXBkYXRlcywgYW5kIG1vcmUuLi4gPC9wPg0KPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI-DQogIDxpbWcgc3R5bGU9InBhZGRpbmc6MHB4OyIgc3JjPSJodHRwczovL3NoYXJlLndpbmRzY3JpYmUuY29tL2VtYWlsL3NlcHRfYmFubmVyLnBuZyIgd2lkdGg9IjEwMCUiPg0KPC9wPg0KPCEtLUFwcGxlIFRWIHVwZGF0ZS0tPg0KDQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyM3B4OyBjb2xvcjojNDI4MEQ2OyBmb250LXdlaWdodDo1MDA7Ij5BcHBsZSBUViBBcHA8L3A-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsiPkNvbmZ1Y2lvdXMgb25jZSBzYWlkLCAiUGxhY2UgYW4gYXBwbGUgb250byBhIHRlbGV2aXNpb24gYW5kIHlvdSBoYXZlIEFwcGxlIFRWLiIgSGUgYWN0dWFsbHkgc2FpZCB0aGF0LiBUaGUgQ2hpbmVzZSBnb3Zlcm5tZW50IGNlbnNvcmVkIGhpcyB3b3JrIGJlY2F1c2UgSHVhd2VpIGdvdCBqZWFsb3VzIHRoYXQgdGhleSB3ZXJlbid0IG5hbWVkIGFmdGVyIGEgZnJ1aXQuIEF0IFdpbmRzY3JpYmUgd2UgdGFrZSBDb25mdWNpYW4gcGhpbG9zb3BoeSB2ZXJ5IHNlcmlvdXNseSwgYW5kIHNvLCBpdCBpcyB3aXRoIGEgdHJlbWVuZG91cyBzZW5zZSBvZiBob25vciB0aGF0IHdlIHByZXNlbnQgdG8geW91Li4uIHRoZSBXaW5kc2NyaWJlIEFwcGxlIFRWIGFwcC48L3A-DQoNCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4IDBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8YSBocmVmPSJodHRwczovL2FwcHMuYXBwbGUuY29tL3VzL2FwcC93aW5kc2NyaWJlLXZwbi9pZDExMjk0MzUyMjg_cGxhdGZvcm09YXBwbGVUViIgc3R5bGU9ImZvbnQtc2l6ZToyMHB4OyBkaXNwbGF5OmJsb2NrOyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzRDQUY1MDsgcGFkZGluZzoxMHB4IDBweDsgd2lkdGg6MTAwJTsgbWFyZ2luOjEwcHggYXV0bzsgdGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyLXJhZGl1czo1cHg7Ij5HZXQgdGhlIEFwcDwvYT4NCjwvcD4NCg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7Ij5UaGlzIGlzIHRoZSBtb3N0IGFudGljaXBhdGVkIFdpbmRzY3JpYmUgZmVhdHVyZSBzaW5jZSB0aGUgb24vb2ZmIGJ1dHRvbi4gWW91J3ZlIGFsbCBiZWVuIGFza2luZyBmb3IgdGhlIEFwcGxlIFRWIGFwcCBmb3Igd2hhdCBzZWVtcyBsaWtlIGNlbnR1cmllcywgYnV0IHdhcyBhY3R1YWxseSBqdXN0IGEgeWVhci4gV2UgcGFzc2VkIGFsb25nIHlvdXIgcmVxdWVzdHMgdG8gb3VyIGNyYWNrIHRlYW0gb2YgZGV2ZWxvcGVycywgYW5kIHRoZXkgbG9va2VkIGF0IHVzIGFuZCBzYWlkLi4uICJob3cgbXVjaCBkbyB5b3Ugd2FudCBpdD8iIEFuZCB3ZSByZXNwb25kZWQsICJ3ZSB3YW50IGl0IGJhZC4iIEFuZCB0aGV5IHdlcmUgbGlrZSwgImhvdyBiYWQ_IiwgYW5kIHdlIHNhaWQsICJEaXNuZXkncyBUaGUgQWNvbHl0ZSBsZXZlbHMgb2YgYmFkLiIgVGhleSBpbW1lZGlhdGVseSB1bmRlcnN0b29kLCBhbmQgY3JlYXRlZCB3aGF0IGNvdWxkIGJlIHRoZSBncmVhdGVzdCBUViBWUE4gYXBwIG9uIHRoZSBwbGFuZXQuIEF2YWlsYWJsZSBub3cgb24gQXBwbGUgVFYuPC9wPg0KDQo8IS0tIEp1cmFzc2ljIFBhcmsgTWVtZS0tPg0KPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI-DQogIDxpbWcgc3R5bGU9InBhZGRpbmc6MHB4OyIgc3JjPSJodHRwczovL3NoYXJlLndpbmRzY3JpYmUuY29tL2VtYWlsL2p1cmFzc2ljX21lbWUucG5nIiB3aWR0aD0iMTAwJSI-DQo8L3A-DQoNCjwhLS1NVjMgdXBkYXRlLS0-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyM3B4OyBjb2xvcjojNDI4MEQ2OyBmb250LXdlaWdodDo1MDA7Ij5NVjMgSW5jb21pbmcuLi4gVGhhbmtzIEdvb2dsZSE8L3A-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsiPkdvb2dsZSBoYXMgbWFuZGF0ZWQgYW4gZWNvc3lzdGVtLXdpZGUgc2hpZnQgdG8gdGhlaXIgbmV3IHJ1bGVzIGFuZCByZWd1bGF0aW9ucywgYWxzbyBrbm93biBhcyBNYW5pZmVzdCBWZXJzaW9uIDMgb3IgTVYzLiBXaGlsZSBkZXRhaWxzIGFyZSByYXRoZXIgdGVjaG5pY2FsLCB0aGUgaW1wb3J0YW50IHRoaW5nIGZvciB5b3UgdG8ga25vdyBpcyB0aGF0IEdvb2dsZSBpcyBtYWtpbmcgaXQgaGFyZGVyIHRvIGVmZmVjdGl2ZWx5IGJsb2NrIGFkcy4gVGhhbmtzIEdvb2dsZSwgeW91IHRydWx5IGFyZSBtYWtpbmcgdGhlIGludGVybmV0IGEgYmV0dGVyIHBsYWNlLiBZYSBidW5jaCBvZiA8ZW0-cGVuZGVqb3M8L2VtPi4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzIGRpZCB0aGV5IG1ha2UgaXQgaGFyZCBlbm91Z2ggdG8gYmVhdCBvdXIgZGV2ZWxvcGVycz8gTm9wZSwgbm90IGVudGlyZWx5ISBBZCBibG9ja2luZyBvbiBNVjIgaXMgc3RpbGwgYmV0dGVyIHRoYW4gTVYzIChmb3Igbm93KS4gU2luY2Ugd2UncmUgYXdlc29tZSwgeW91IGNhbiBjb250aW51ZSB0byB1c2Ugb3VyIE9HIE1WMiB2ZXJzaW9uIG9mIHRoZSBleHRlbnNpb24gd2l0aCBpdHMgZnVsbCBhZC1ibG9ja2luZyBjYXBhYmlsaXRpZXMgb24gbm9uLUNocm9taXVtIGJyb3dzZXJzIChha2EgRmlyZWZveCksIHdoaWxlIGFsbCBleHRlbnNpb25zIGZvciBDaHJvbWl1bS9CbGluayBlbmdpbmUgYnJvd3NlcnMgd2lsbCBiZSBmb3JjZWQgdG8gY29tcGx5IHdpdGggTVYzLiBUaGlzIHNob3VsZG4ndCBtYWtlIGEgaHVnZSBkaWZmZXJlbmNlIGZvciBtb3N0IG9mIHlvdSwgYnV0IHNvbWUgbWF5IGJlIGFubm95ZWQgYnkgdGhlIGxpbWl0YXRpb25zIG9mIE1WMyAtICJUaGFua3MiIEdvb2dsZS4uLi4gPC9wPg0KDQo8IS0tcHJpY2UgaXMgd3JvbmcgY2FsbCBvdXQgKyBHSUYtLT4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjIzcHg7IGNvbG9yOiM0MjgwRDY7IGZvbnQtd2VpZ2h0OjUwMDsiPlRoZSBQcmljZSBpcyBXcm9uZywgQml0Y2ghPC9wPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7Ij5FdmVyIHdvbmRlciBob3cgc2hhZHkgdGhlIFZQTiBpbmR1c3RyeSByZWFsbHkgaXM_IFdlJ3ZlIG1hZGUgaXQgcGFydCBvZiBvdXIgbWlzc2lvbiB0byBjYWxsIG91dCB0aGVpciBzY3VtbXkgYmVoYXZpb3Igd2hlbmV2ZXIgd2Ugc2VlIGl0LiBXaHk_IEJlY2F1c2UgeW91IGRlc2VydmUgdG8ga25vdyB3aGVuIHlvdSBhcmUgYmVpbmcgZl4lJGVkLiBBbHNvLCBpdCByZW1pbmRzIHVzIHRoYXQgd2UgYXJlIGRvaW5nIHNvbWV0aGluZyByaWdodC4gVGhlIGxhdGVzdCB0cmVuZD8gUHVsbGluZyB0aGUgb2wgJ2JhaXQgJiBzd2l0Y2ggb24geW91ciBjdXN0b21lcnMgYWZ0ZXIgdGhleSBoYXZlIGFncmVlZCB0byBhIHByaWNlLiBUaGV5IHdvdWxkIGhhdmUgeW91IHRoaW5rIHRoZWlyIGRpc2NvdW50ZWQgcHJpY2Ugd2lsbCBzdGF5IHRoZSBzYW1lIGZvcmV2ZXIuLi4gYnV0IGl0IGRvZXNuJ3QuIFJlYWQgbW9yZSA8YSBocmVmPSJodHRwczovL2Jsb2cud2luZHNjcmliZS5jb20vdGhlLXByaWNlLWlzLW5vdC1yaWdodC8iIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPi48L3A-DQoNCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8aW1nIHN0eWxlPSJwYWRkaW5nOjBweDsiIHNyYz0iaHR0cHM6Ly9zaGFyZS53aW5kc2NyaWJlLmNvbS9lbWFpbC9wcmljZV9pc193cm9uZy5naWYiIHdpZHRoPSIxMDAlIj4NCjwvcD4NCg0KPCEtLUNUQS0tPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHggMHB4O3RleHQtYWxpZ246Y2VudGVyOyI-DQogIDxhIGhyZWY9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vdXBncmFkZT9wY3BpZD0yMDI0X3NlcHRlbWJlcl9uZXdzbGV0dGVyIiBzdHlsZT0iZm9udC1zaXplOjIwcHg7IGRpc3BsYXk6YmxvY2s7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNENBRjUwOyBwYWRkaW5nOjEwcHggMHB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MTBweCBhdXRvOyB0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjVweDsiPkxvY2sgaW4geW91ciBwcmljZSwgZm9yZXZlcjwvYT4NCjwvcD4NCg0KPCEtLUNMSSB1cGRhdGUtLT4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MjNweDsgY29sb3I6IzQyODBENjsgZm9udC13ZWlnaHQ6NTAwOyI-VGhlIE15dGhpY2FsIENMSTwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyI-TGFzdGx5LCBvdXIgZGV2ZWxvcGVycyBoYXZlIHNvbHZlZCB0aGUgYWdlIG9sZCBteXN0ZXJ5IHRoYXQgaGFzIHBsYWd1ZWQgbWVuIGZvciBtaWxsZW5pYSwgdGhlIGxvY2F0aW9uIG9mIHRoZSBDTEkuLi4gVGhlIGFuc3dlciBtYXkgc3VycHJpc2UgeW91LCBpdCBjYW4gYWN0dWFsbHkgYmUgZm91bmQgb24gb3VyIDxhIGhyZWY9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vZG93bmxvYWQvIiB0YXJnZXQ9Il9ibGFuayI-ZG93bmxvYWQ8L2E-IHBhZ2UuIElmIHlvdSBpZGVudGlmeSBhcyBhIFdpbmRzY3JpYmUgTGludXggZW50aHVzaWFzdCwgeW91IHdpbGwgYmUgcGxlYXNlZCB0byBrbm93IHRoYXQgb3VyIENMSSBpcyBmdWxseSByZWxlYXNlZC4gRG9uJ3QgZm9yZ2V0IHRvIHVuaW5zdGFsbCB0aGUgV2luZHNjcmliZSBHVUkgYmVmb3JlIGRvd25sb2FkaW5nIHRoZSBDTEkuIFVzZWZ1bCBpbmZvcm1hdGlvbj8gQ2hlY2suIE1pbGQgc2V4dWFsIGlubnVlbmRvPyBDaGVjay4gUGFyYWdyYXBoIGNvbmNsdWRlZD8gQ2hlY2suPC9wPg0KDQo8IS0tYXBwIHVwZGF0ZSwgd2ludHVubmVsLS0-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsgdGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjIzcHg7IGNvbG9yOiM0MjgwRDY7IGZvbnQtd2VpZ2h0OjUwMDsiPldpbnR1biBvdXQsIE9wZW5WUE4gRENPIGluPC9wPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7Ij5XaW5kc2NyaWJlIGZvciBXaW5kb3dzIGhhcyBiZWVuIGltcHJvdmVkLCBtdWNoIGxpa2Ugb3VyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdXIgbW9tLiBUaGUgV2luZG93cyBhcHAgbm93IHVzZXMgdGhlIE9wZW5WUE4gRGF0YSBDaGFubmVsIE9mZmxvYWQgKERDTykga2VybmVsIGRyaXZlciBmb3IgYW55IGFuZCBhbGwgT3BlblZQTi1iYXNlZCBwcm90b2NvbHMgKFVEUCwgVENQLCBTdGVhbHRoLCBXU3R1bm5lbCkgYnkgZGVmYXVsdCwgd2l0aCBXaW50dW4gc3RpbGwgYXZhaWxhYmxlIGFzIGEgYmFja3VwIGp1c3QgaW4gY2FzZS4gVGhpcyBnaXZlcyBPcGVuVlBOIHVzZXJzIG11Y2ggZmFzdGVyIGRhdGEgdGhyb3VnaHB1dCwgYW5kIGluY3JlYXNlcyB5b3VyIHBlcmZvcm1hbmNlIGluIHRoZSBiZWRyb29tIHRvbyAoeW91ciBtb20gdG9sZCB1cyBzbyBsYXN0IG5pZ2h0KS4gVGhpcyBpcyB3aHkgeW91IHVzZSB1cywgd2UgaGF2ZSBmZWF0dXJlcywgYW5kIGNhbiBtYWtlIGpva2VzIGFib3V0IHlvdXIgZ29yZ2VvdXMgbW90aGVyIGF0IHRoZSBzYW1lIHRpbWUuPC9wPg0KDQo8IS0tc3BsaXQgdHVubmVsaW5nIGNhbGxvdXQgKyBDVEEtLT4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MjNweDsgY29sb3I6IzQyODBENjsgZm9udC13ZWlnaHQ6NTAwOyI-RmVhdHVyZSBvZiB0aGUgTW9udGg6IFNwbGl0IFR1bm5lbGluZzwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyI-WW91ciBwYXJlbnRzJyBtYXJyaWFnZSBpc24ndCB0aGUgb25seSB0aGluZyB3ZSBzcGxpdCB1cC4gV2UgY2FuIGFsc28gc3BsaXQgeW91ciBjb25uZWN0aW9uIG9uIGEgd2hpbSwgaWYgeW91IHNvIGRlc2lyZS4gU2F5IHlvdSB3YW50IHRvIHRocm93IG9uIHlvdXIgZmF2b3JpdGUgTmV0ZmxpeCBzaG93LCBidXQgaXQncyBub3cgb25seSBhdmFpbGFibGUgaW4gVHVya2V5LiBJbnN0ZWFkIG9mIHJvdXRpbmcgYWxsIHlvdXIgbmV0d29yayB0cmFmZmljIHRvIFR1cmtleSBmb3Igb25lIG1lYXNseSBOZXRmbGl4IHNob3csIHlvdSBjYW4gdXNlIHRoZSBzcGxpdCB0dW5uZWxpbmcgZmVhdHVyZSB0byBzZWxlY3Qgd2hpY2ggYXBwIGdldHMgcm91dGVkIHRocm91Z2ggeW91ciBWUE4gY29ubmVjdGlvbiBhbmQgd2hpY2ggZG9lc24ndC4gVGhhdCBtZWFucyBubyBtb3JlIGN1c3RvZHkgYmF0dGxlcyBvdmVyIHlvdXIgSVAgYWRkcmVzcy4gV2F0Y2ggb3VyIHZpZGVvIHRvIGxlYXJuIG1vcmUsIHdpdGhvdXQgdGhlIG5lZWQgdG8gcmVhZCE8L3A-DQoNCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4IDBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVd2UDd3d05OeVJvIj4NCiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9zaGFyZS53aW5kc2NyaWJlLmNvbS9lbWFpbC9zcGxpdF90dW5uZWwuanBnIiB3aWR0aD0iMTAwJSI-DQogIDwvYT4NCjwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4IDBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVd2UDd3d05OeVJvIiBzdHlsZT0iZm9udC1zaXplOjIwcHg7IGRpc3BsYXk6YmxvY2s7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwMDAwOyBwYWRkaW5nOjEwcHggMHB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MTBweCBhdXRvOyB0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjVweDsiPldhdGNoIFRoZSBWaWRlbzwvYT4NCjwvcD4NCg0KPCEtLSBDRCBQbHVnIC0tPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MjNweDsgY29sb3I6IzQyODBENjsgZm9udC13ZWlnaHQ6NTAwOyI-Q29udHJvbCBZb3VyIEQ8L3A-DQo8cCBzdHlsZT0icGFkZGluZzogMHB4IDMwcHg7Ij5BcmUgeW91IHNpY2sgYW5kIHRpcmVkIG9mIGhhdmluZyB0byB1c2Ugc3BsaXQgdHVubmVsaW5nIGZvciBldmVyeSBzaW5nbGUgc2l0ZSBvciBhcHAgeW91IHVzZT8gPGEgaHJlZj0iaHR0cHM6Ly9jb250cm9sZC5jb20vIiB0YXJnZXQ9Il9ibGFuayI-Q29udHJvbCBEPC9hPiBpcyB0aGUgYmUgYWxsLCBlbmQgYWxsIHNvbHV0aW9uIGZvciB5b3UuIEdvIGNoZWNrIGl0IG91dCwgcGxheSBhcm91bmQsIGZpZGRsZSB3aXRoIHNvbWUgYnV0dG9ucy4gSWYgeW91IGxvdmUgaXQsIGdyZWF0LCBpZiB5b3UgZG9uJ3QsIG5vIHdvcnJpZXMhIEJlY29tZSB0aGUgbWFzdGVyIG9mIHlvdXIgbmV0d29yayE8L3A-DQoNCjwhLS1Db25jbHVzaW9uLS0-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyM3B4OyBjb2xvcjojNDI4MEQ2OyBmb250LXdlaWdodDo1MDA7Ij5GaW5pdG88L3A-DQo8cCBzdHlsZT0icGFkZGluZzoxMHB4IDMwcHg7Ij5CQU0hIEFub3RoZXIgc3VjY2Vzc2Z1bCBuZXdzbGV0dGVyIGNvbXBsZXRlZC4gV2UgaG9wZSB3ZSd2ZSBpbXByZXNzZWQgeW91IGFzIG11Y2ggYXMgd2UgaGF2ZSBpbXByZXNzZWQgb3Vyc2VsdmVzLiBBbGwgeW91IGhhZCB0byBkbyB3YXMgZ2l2ZSB1cyAzIHRvIDggbWludXRlcyBvZiB5b3VyIHRpbWUgYW5kIHdlJ3ZlIGxlZnQgeW91IHNtYXJ0ZXIsIGhlYWx0aGllciwgYW5kIHBvc3NpYmx5IGhvcm5pZXIgKGp1cnkgaXMgc3RpbGwgb3V0IG9uIHRoYXQgb25lKS4gRWl0aGVyIHdheSwgc3RheSBzYWZlIG91dCB0aGVyZSB5YSBiaWcgYmVhdXRpZXMhPC9wPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7Ij5Mb3ZlLDwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyI-DQogIDxiPlRlYW0gV2luZHNjcmliZTwvYj4NCjwvcD4NCjxociBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzQyODBENjsgbWFyZ2luOiAxMHB4IGF1dG87IGJvcmRlcjogMDsgaGVpZ2h0OiAxcHg7IHdpZHRoOiAxNTBweDsiPg0KPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MjBweDsgY29sb3I6IzM5NjhiYzsgZm9udC13ZWlnaHQ6NTAwOyBwYWRkaW5nOjEwcHggMzBweCAwcHggMzBweDsgbWFyZ2luOiAwOyI-UmFuZG9tIEZhY3Q8L3A-DQo8cCBzdHlsZT0icGFkZGluZzogMTBweDt0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBweCAzMHB4O2ZvbnQtc3R5bGU6IGl0YWxpYzsiPiAiSXQgaXMgaW1wb3NzaWJsZSB0byBzbmVlemUgd2l0aCB5b3VyIGV5ZXMgb3Blbi4iIDwvcD4NCiAgICAgICAgICAgDQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6MTBweCAwcHg7Y29sb3I6IzY2NjtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7bWFyZ2luOjEwcHggYXV0byAwcHggYXV0bztmb250LXNpemU6MTJweDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDozMHB4O3RleHQtYWxpZ246Y2VudGVyIj4NCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbSIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIiA-SG9tZTwvYT4NCiAgICAgICAg44O7DQogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vdXBncmFkZSIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIj5VcGdyYWRlPC9hPg0KICAgICAgICDjg7sNCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9zdXBwb3J0IiBzdHlsZT0iY29sb3I6IzY2NiIgdGFyZ2V0PSJfYmxhbmsiPlN1cHBvcnQ8L2E-DQogICAgICAgIOODuw0KICAgICAgICA8YSBocmVmPSJodHRwczovL3dpbmRzY3JpYmUuY29tL3ByaXZhY3kiIHN0eWxlPSJjb2xvcjojNjY2IiB0YXJnZXQ9Il9ibGFuayI-UHJpdmFjeTwvYT4NCiAgICAgICAg44O7DQogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vdGVybXMiIHN0eWxlPSJjb2xvcjojNjY2IiB0YXJnZXQ9Il9ibGFuayI-VE9TPC9hPg0KICAgICAgICDjg7sNCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93ZWxsZm91bmQuY29tL2NvbXBhbnkvd2luZHNjcmliZSIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIj5Kb2JzPC9hPg0KICAgICAgICDjg7sNCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9ibG9nLndpbmRzY3JpYmUuY29tLyIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIj5CbG9nPC9hPg0KICAgICAgICDjg7sNCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9teWFjY291bnQvdW5zdWJzY3JpYmU_d2hvPWFHRnpjMkZ1ZDJGeWFUSTFORUJuYldGcGJDNWpiMjA9JnNpZz04YjJhZTFhMDE3OGE1ZTM3YWZkNmNhNzEwMDlkZDJjNCIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIj5VbnN1YnNjcmliZTwvYT4NCg0KICAgICAgICA8cD4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2MvV2luZHNjcmliZSIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3dpbmRzY3JpYmUuY29tL2ltZy9lbWFpbHMveW91dHViZS5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5yZWRkaXQuY29tL3IvV2luZHNjcmliZS8iIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9pbWcvZW1haWxzL3JlZGRpdC5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL3dpbmRzY3JpYmVjb20iIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9pbWcvZW1haWxzL3R3aXR0ZXIucG5nIiB3aWR0aD0iMjRweCI-PC9hPg0KICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmdnL3ZwbiIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3dpbmRzY3JpYmUuY29tL2ltZy9lbWFpbHMvZGlzY29yZC5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3QubWUvV2luZHNjcmliZUhRIiB0YXJnZXQ9Il9ibGFuayI-DQogICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vaW1nL2VtYWlscy90ZWxlZ3JhbS5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FwcHMuYXBwbGUuY29tL3VzL2FwcC93aW5kc2NyaWJlLXZwbi9pZDExMjk0MzUyMjgiIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9pbWcvZW1haWxzL2FwcHN0b3JlLnBuZyIgd2lkdGg9IjI0cHgiPjwvYT4NCiAgICAgICAgICAgICAgICAmbmJzcDsNCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20ud2luZHNjcmliZS52cG4iIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9pbWcvZW1haWxzL3BsYXlzdG9yZS5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uY29tL1dpbmRzY3JpYmUtVlBOL2RwL0IwNzZaWVY2SFEvIiB0YXJnZXQ9Il9ibGFuayI-DQogICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vaW1nL2VtYWlscy9hbWF6b24ucG5nIiB3aWR0aD0iMjRweCI-PC9hPg0KICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvd2luZHNjcmliZS1mcmVlLXByb3h5LWFuZC9obm1wY2FncHBsbXBmb2ptZ21ubmdpbGNuYW5kZGxoYiIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3dpbmRzY3JpYmUuY29tL2ltZy9lbWFpbHMvY2hyb21lLnBuZyIgd2lkdGg9IjI0cHgiPjwvYT4NCiAgICAgICAgPC9wPg0KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9waXhlbD9jcGlkPTIwMjRfc2VwdGVtYmVyX25ld3NsZXR0ZXImY2I9MTcyODM2NDc5NS40OTliNzIyMTdlMjU5ZjA4NmFjYTYzY2RlNjhlNjkxN2ZhNzM2ODg1MTAwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4NCg0KICAgIDwvZGl2Pg0KPC9kaXY-DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg==" - } - }, - "sizeEstimate": 17837, - "historyId": "3310200", - "internalDate": "1728364795000" -} \ No newline at end of file + "id": "1926abe2f19f960a", + "threadId": "1926abe2f19f960a", + "labelIds": ["CATEGORY_PROMOTIONS", "UNREAD", "INBOX"], + "snippet": "Windscribe Updates Since...August Reading Disgusts Me, Give Me Video After last month's jam packed newsletter, we wanted to make sure we had enough treats for all of you baby birds to feast on...", + "payload": { + "partId": "", + "mimeType": "text/html", + "filename": "", + "headers": [ + { + "name": "Delivered-To", + "value": "john@foo.com@gmail.com" + }, + { + "name": "Received", + "value": "by 2002:a05:6f02:c091:b0:74:e4b5:b3c7 with SMTP id a17csp2297441rcc; Mon, 7 Oct 2024 23:08:22 -0700 (PDT)" + }, + { + "name": "X-Google-Smtp-Source", + "value": "AGHT+IHK+VcKYI5BS0CGSO+9ud0dJWxni7OSyMqyr2Bp6aSGdTAV17zgW14vpuxAlvp6mUJfvAj9" + }, + { + "name": "X-Received", + "value": "by 2002:a05:620a:1995:b0:7ab:3ec9:f4c7 with SMTP id af79cd13be357-7ae6f44dbb0mr2283099285a.35.1728367701942; Mon, 07 Oct 2024 23:08:21 -0700 (PDT)" + }, + { + "name": "ARC-Seal", + "value": "i=1; a=rsa-sha256; t=1728367701; cv=none; d=google.com; s=arc-20240605; b=a6/gj3D/TmahL5MgoeJIpn6yLSYHol3t1ubtBMqA1BcLLWGQcfORV/zgcFAcJFo2xA Uy6Htzqus9j6PJwXi76GZRKmArJeHsizz+Yb2V5tUgqCv8eS3qAzrD+cSVTOSY2ujh/A mQ2N+m0LeJDKQaTXOfetRWE5pgvg7rap/hNN6hFadrKhao2sAg29b2DhG3Q3UrdpoFdI FoJrSMKLXyqF9Gd/5CKmLciZzw3JBNFo4xZLTbpH5AMWC8xynJOr3q7ClDtBfTzXahhw f5tGPMojagO0mrcsGv9ZACMXgQB7kVqpCrLc64bT23DLVDDDGrN26aQ6uYdnB7ibVeO1 U6HA==" + }, + { + "name": "ARC-Message-Signature", + "value": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=date:feedback-id:list-unsubscribe-post:list-unsubscribe:message-id :reply-to:from:mime-version:subject:to:dkim-signature; bh=YIIYA1rBs/9huxBjRwzoP0CP4wLvaXoiNj29J7zQHsc=; fh=ZFfeWVxw4L0EQu5c9o8c02kNCYnwsvyCNJ1DnZxyxSI=; b=AmyZlwKNjKrxEj1BAPtFklubgPJwPsLJ77aDCBhPpZV8MPObz/JPMEzUNNqUiVnD0S s8dYTci0Q4hWPNvvIHV9woOwJMS1mJSeOqM9I+J4YdIYfSkUDIMumHpSqUFY5dMrhbkX fc7WBN1+rfe/pJX78B9Z/oBitU0x+DXZe/OgUveff9jv0f0DysC+5r7ys27w4HWXa1qP lqiyGDB/D6LUmjTgreRPIEXTodyvLmPYCV9W1N/CbMLnYPOunST8BW+O+z+MU3dTLZKf 2PT00jkHr3sSsj0NWgFTUmlNJMJKtTaUkhubJ88LC2lf22HuKLd8FFpgSkkS21CJRJ1J BVFw==; dara=google.com" + }, + { + "name": "ARC-Authentication-Results", + "value": "i=1; mx.google.com; dkim=pass header.i=@windscribe.com header.s=dkim header.b=wwrHe49k; spf=pass (google.com: domain of noreply@windscribe.com designates 209.127.204.17 as permitted sender) smtp.mailfrom=noreply@windscribe.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=windscribe.com" + }, + { + "name": "Return-Path", + "value": "" + }, + { + "name": "Received", + "value": "from mx-out-17.windscribe.com (mx-out-17.windscribe.com. [209.127.204.17]) by mx.google.com with ESMTPS id af79cd13be357-7ae75616586si810176585a.142.2024.10.07.23.08.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Oct 2024 23:08:21 -0700 (PDT)" + }, + { + "name": "Received-SPF", + "value": "pass (google.com: domain of noreply@windscribe.com designates 209.127.204.17 as permitted sender) client-ip=209.127.204.17;" + }, + { + "name": "Authentication-Results", + "value": "mx.google.com; dkim=pass header.i=@windscribe.com header.s=dkim header.b=wwrHe49k; spf=pass (google.com: domain of noreply@windscribe.com designates 209.127.204.17 as permitted sender) smtp.mailfrom=noreply@windscribe.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=windscribe.com" + }, + { + "name": "Received", + "value": "by 127.0.0.1 with SMTP" + }, + { + "name": "DKIM-Signature", + "value": "v=1; a=rsa-sha256; c=relaxed/simple; d=windscribe.com; s=dkim; t=1728364796; bh=Nj/qXO8Bh3DFEuX/2lFBzatqmHCM777GkUMm+0V3LWE=; h=To:Subject:From:Reply-To:List-Unsubscribe:Date; b=wwrHe49kTDmmdnksaQqxNT/q9e2AF3dbWXiUM0sfcelY8FglrnG09GH1EsmvuNhLV\t 9V0TDH8UsmsccxohC4Q2f+BtU9vuSxy+nkYGY2pon2zXICitXY3nh9XmVqHI3wDqFU\t qEAdmdzC7/DQB8JgpJfZAQHJFGvGNXE0D7bKkP+AxlznVpGhJPTnfYg6E3m7OSngQJ\t F+86aXvs5TBpMIrg2dhUtjRMNB946kiVvKf4INoN22pvAPriUv+4SV72NbCK1ULooW\t fO/8gHsklKeOOvzXic9WQ1HhR/WHZfVmieygzDqI3L0LG4kgRa7GVlGlDuDP36FniI\t AkyQGesyYBkqw==" + }, + { + "name": "Received", + "value": "by 127.0.0.1 with SMTP" + }, + { + "name": "To", + "value": "john@foo.com@gmail.com" + }, + { + "name": "Subject", + "value": "Windscribe September Updates (and another new video!)" + }, + { + "name": "MIME-Version", + "value": "1.0" + }, + { + "name": "Content-type", + "value": "text/html;charset=UTF-8" + }, + { + "name": "From", + "value": "Windscribe " + }, + { + "name": "Reply-To", + "value": "support@windscribe.com" + }, + { + "name": "Message-ID", + "value": "<1728364795.4995.noreply@windscribe.com>" + }, + { + "name": "List-Unsubscribe", + "value": ", " + }, + { + "name": "List-Unsubscribe-Post", + "value": "List-Unsubscribe=One-Click" + }, + { + "name": "Feedback-ID", + "value": "5:b72217e259f086aca63cde68e6917fa7:2024-10-08:windscribe" + }, + { + "name": "Date", + "value": "Tue, 8 Oct 2024 01:19:55 -0400 (EDT)" + } + ], + "body": { + "size": 13588, + "data": "PCFET0NUWVBFIGh0bWw-DQo8aHRtbCBsYW5nPSJlbiI-DQo8aGVhZD4NCiAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI-DQo8L2hlYWQ-DQo8Ym9keSBzdHlsZT0icGFkZGluZzowOyBtYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ij4NCjxkaXYgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWFyZ2luOjBweDtwYWRkaW5nOjA7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Ij4NCiAgICA8ZGl2IHN0eWxlPSJtYXJnaW46MHB4IGF1dG87Ij4NCiAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmO2NsZWFyOmJvdGg7Y29sb3I6IzY2NjtsaW5lLWhlaWdodDogMzJweDsgbWF4LXdpZHRoOiA1MDBweDsgbWFyZ2luOiA1MHB4IGF1dG87Ym9yZGVyLXJhZGl1czogNXB4IDVweCA1cHggNXB4OyBib3gtc2hhZG93OiAwcHggMTVweCA0MHB4IC0xNXB4ICM5OTk7Ij4NCg0KICAgICAgICA8ZGl2IHN0eWxlPSJjb2xvcjogI2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzowcHggMHB4IDBweDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdodHRwczovL3dpbmRzY3JpYmUuY29tL2ltZy9lbWFpbHMvZW1haWxfaGVhZGVyLnBuZycpOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7IGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEyNXB4OyBib3JkZXItcmFkaXVzOiA1cHggNXB4IDBweCAwcHg7Ij4NCiAgICAgICAgPC9kaXY-DQogICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1ZScsJ0hlbHZldGljYScsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDowO21hcmdpbi1ib3R0b206MDttYXJnaW4tbGVmdDowO3BhZGRpbmctdG9wOjA7cGFkZGluZy1yaWdodDowO3BhZGRpbmctYm90dG9tOjEwcHg7cGFkZGluZy1sZWZ0OjA7Zm9udC1zaXplOjE1cHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICA8cCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyM3B4OyBjb2xvcjojNDI4MEQ2OyBmb250LXdlaWdodDo1MDA7IHBhZGRpbmc6MTBweCAzMHB4IDBweCAzMHB4OyI-V2luZHNjcmliZSBVcGRhdGVzIFNpbmNlLi4uQXVndXN0PC9wPg0KPCEtLSBpbnRybyAtLT4NCg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHggMHB4O3RleHQtYWxpZ246Y2VudGVyOyI-DQogICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_dj1pcHR1MF9yWlFpZyI-DQogICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9zaGFyZS53aW5kc2NyaWJlLmNvbS9lbWFpbC9zZXB0X3RodW1ibmFpbC5wbmciIHdpZHRoPSIxMDAlIj4NCiAgICA8L2E-DQogIDwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4IDBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWlwdHUwX3JaUWlnIiBzdHlsZT0iZm9udC1zaXplOjIwcHg7IGRpc3BsYXk6YmxvY2s7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwMDAwOyBwYWRkaW5nOjEwcHggMHB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MTBweCBhdXRvOyB0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjVweDsiPlJlYWRpbmcgRGlzZ3VzdHMgTWUsIEdpdmUgTWUgVmlkZW88L2E-DQo8L3A-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsiPkFmdGVyIGxhc3QgbW9udGgncyBqYW0gcGFja2VkIG5ld3NsZXR0ZXIsIHdlIHdhbnRlZCB0byBtYWtlIHN1cmUgd2UgaGFkIGVub3VnaCB0cmVhdHMgZm9yIGFsbCBvZiB5b3UgYmFieSBiaXJkcyB0byBmZWFzdCBvbi4uLiBhbmQgbG8gYW5kIGJlaG9sZCwgd2UgZG8uIFdlJ3ZlIGdvdCBiaWcgbmV3cyByZWdhcmRpbmcgdGhlIFdpbmRzY3JpYmUgQXBwbGUgVFYgYXBwLCBhIGRlbGVjdGFibGUgbGl0dGxlIGV4cG9zw6kgb24gaG93IHRoZSBWUE4gbWFya2V0IHRyaWVzIHRvIHJpcCB5b3Ugb2ZmLCBNVjMgdXBkYXRlcywgYW5kIG1vcmUuLi4gPC9wPg0KPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI-DQogIDxpbWcgc3R5bGU9InBhZGRpbmc6MHB4OyIgc3JjPSJodHRwczovL3NoYXJlLndpbmRzY3JpYmUuY29tL2VtYWlsL3NlcHRfYmFubmVyLnBuZyIgd2lkdGg9IjEwMCUiPg0KPC9wPg0KPCEtLUFwcGxlIFRWIHVwZGF0ZS0tPg0KDQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyM3B4OyBjb2xvcjojNDI4MEQ2OyBmb250LXdlaWdodDo1MDA7Ij5BcHBsZSBUViBBcHA8L3A-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsiPkNvbmZ1Y2lvdXMgb25jZSBzYWlkLCAiUGxhY2UgYW4gYXBwbGUgb250byBhIHRlbGV2aXNpb24gYW5kIHlvdSBoYXZlIEFwcGxlIFRWLiIgSGUgYWN0dWFsbHkgc2FpZCB0aGF0LiBUaGUgQ2hpbmVzZSBnb3Zlcm5tZW50IGNlbnNvcmVkIGhpcyB3b3JrIGJlY2F1c2UgSHVhd2VpIGdvdCBqZWFsb3VzIHRoYXQgdGhleSB3ZXJlbid0IG5hbWVkIGFmdGVyIGEgZnJ1aXQuIEF0IFdpbmRzY3JpYmUgd2UgdGFrZSBDb25mdWNpYW4gcGhpbG9zb3BoeSB2ZXJ5IHNlcmlvdXNseSwgYW5kIHNvLCBpdCBpcyB3aXRoIGEgdHJlbWVuZG91cyBzZW5zZSBvZiBob25vciB0aGF0IHdlIHByZXNlbnQgdG8geW91Li4uIHRoZSBXaW5kc2NyaWJlIEFwcGxlIFRWIGFwcC48L3A-DQoNCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4IDBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8YSBocmVmPSJodHRwczovL2FwcHMuYXBwbGUuY29tL3VzL2FwcC93aW5kc2NyaWJlLXZwbi9pZDExMjk0MzUyMjg_cGxhdGZvcm09YXBwbGVUViIgc3R5bGU9ImZvbnQtc2l6ZToyMHB4OyBkaXNwbGF5OmJsb2NrOyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzRDQUY1MDsgcGFkZGluZzoxMHB4IDBweDsgd2lkdGg6MTAwJTsgbWFyZ2luOjEwcHggYXV0bzsgdGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyLXJhZGl1czo1cHg7Ij5HZXQgdGhlIEFwcDwvYT4NCjwvcD4NCg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7Ij5UaGlzIGlzIHRoZSBtb3N0IGFudGljaXBhdGVkIFdpbmRzY3JpYmUgZmVhdHVyZSBzaW5jZSB0aGUgb24vb2ZmIGJ1dHRvbi4gWW91J3ZlIGFsbCBiZWVuIGFza2luZyBmb3IgdGhlIEFwcGxlIFRWIGFwcCBmb3Igd2hhdCBzZWVtcyBsaWtlIGNlbnR1cmllcywgYnV0IHdhcyBhY3R1YWxseSBqdXN0IGEgeWVhci4gV2UgcGFzc2VkIGFsb25nIHlvdXIgcmVxdWVzdHMgdG8gb3VyIGNyYWNrIHRlYW0gb2YgZGV2ZWxvcGVycywgYW5kIHRoZXkgbG9va2VkIGF0IHVzIGFuZCBzYWlkLi4uICJob3cgbXVjaCBkbyB5b3Ugd2FudCBpdD8iIEFuZCB3ZSByZXNwb25kZWQsICJ3ZSB3YW50IGl0IGJhZC4iIEFuZCB0aGV5IHdlcmUgbGlrZSwgImhvdyBiYWQ_IiwgYW5kIHdlIHNhaWQsICJEaXNuZXkncyBUaGUgQWNvbHl0ZSBsZXZlbHMgb2YgYmFkLiIgVGhleSBpbW1lZGlhdGVseSB1bmRlcnN0b29kLCBhbmQgY3JlYXRlZCB3aGF0IGNvdWxkIGJlIHRoZSBncmVhdGVzdCBUViBWUE4gYXBwIG9uIHRoZSBwbGFuZXQuIEF2YWlsYWJsZSBub3cgb24gQXBwbGUgVFYuPC9wPg0KDQo8IS0tIEp1cmFzc2ljIFBhcmsgTWVtZS0tPg0KPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyI-DQogIDxpbWcgc3R5bGU9InBhZGRpbmc6MHB4OyIgc3JjPSJodHRwczovL3NoYXJlLndpbmRzY3JpYmUuY29tL2VtYWlsL2p1cmFzc2ljX21lbWUucG5nIiB3aWR0aD0iMTAwJSI-DQo8L3A-DQoNCjwhLS1NVjMgdXBkYXRlLS0-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyM3B4OyBjb2xvcjojNDI4MEQ2OyBmb250LXdlaWdodDo1MDA7Ij5NVjMgSW5jb21pbmcuLi4gVGhhbmtzIEdvb2dsZSE8L3A-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsiPkdvb2dsZSBoYXMgbWFuZGF0ZWQgYW4gZWNvc3lzdGVtLXdpZGUgc2hpZnQgdG8gdGhlaXIgbmV3IHJ1bGVzIGFuZCByZWd1bGF0aW9ucywgYWxzbyBrbm93biBhcyBNYW5pZmVzdCBWZXJzaW9uIDMgb3IgTVYzLiBXaGlsZSBkZXRhaWxzIGFyZSByYXRoZXIgdGVjaG5pY2FsLCB0aGUgaW1wb3J0YW50IHRoaW5nIGZvciB5b3UgdG8ga25vdyBpcyB0aGF0IEdvb2dsZSBpcyBtYWtpbmcgaXQgaGFyZGVyIHRvIGVmZmVjdGl2ZWx5IGJsb2NrIGFkcy4gVGhhbmtzIEdvb2dsZSwgeW91IHRydWx5IGFyZSBtYWtpbmcgdGhlIGludGVybmV0IGEgYmV0dGVyIHBsYWNlLiBZYSBidW5jaCBvZiA8ZW0-cGVuZGVqb3M8L2VtPi4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzIGRpZCB0aGV5IG1ha2UgaXQgaGFyZCBlbm91Z2ggdG8gYmVhdCBvdXIgZGV2ZWxvcGVycz8gTm9wZSwgbm90IGVudGlyZWx5ISBBZCBibG9ja2luZyBvbiBNVjIgaXMgc3RpbGwgYmV0dGVyIHRoYW4gTVYzIChmb3Igbm93KS4gU2luY2Ugd2UncmUgYXdlc29tZSwgeW91IGNhbiBjb250aW51ZSB0byB1c2Ugb3VyIE9HIE1WMiB2ZXJzaW9uIG9mIHRoZSBleHRlbnNpb24gd2l0aCBpdHMgZnVsbCBhZC1ibG9ja2luZyBjYXBhYmlsaXRpZXMgb24gbm9uLUNocm9taXVtIGJyb3dzZXJzIChha2EgRmlyZWZveCksIHdoaWxlIGFsbCBleHRlbnNpb25zIGZvciBDaHJvbWl1bS9CbGluayBlbmdpbmUgYnJvd3NlcnMgd2lsbCBiZSBmb3JjZWQgdG8gY29tcGx5IHdpdGggTVYzLiBUaGlzIHNob3VsZG4ndCBtYWtlIGEgaHVnZSBkaWZmZXJlbmNlIGZvciBtb3N0IG9mIHlvdSwgYnV0IHNvbWUgbWF5IGJlIGFubm95ZWQgYnkgdGhlIGxpbWl0YXRpb25zIG9mIE1WMyAtICJUaGFua3MiIEdvb2dsZS4uLi4gPC9wPg0KDQo8IS0tcHJpY2UgaXMgd3JvbmcgY2FsbCBvdXQgKyBHSUYtLT4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjIzcHg7IGNvbG9yOiM0MjgwRDY7IGZvbnQtd2VpZ2h0OjUwMDsiPlRoZSBQcmljZSBpcyBXcm9uZywgQml0Y2ghPC9wPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7Ij5FdmVyIHdvbmRlciBob3cgc2hhZHkgdGhlIFZQTiBpbmR1c3RyeSByZWFsbHkgaXM_IFdlJ3ZlIG1hZGUgaXQgcGFydCBvZiBvdXIgbWlzc2lvbiB0byBjYWxsIG91dCB0aGVpciBzY3VtbXkgYmVoYXZpb3Igd2hlbmV2ZXIgd2Ugc2VlIGl0LiBXaHk_IEJlY2F1c2UgeW91IGRlc2VydmUgdG8ga25vdyB3aGVuIHlvdSBhcmUgYmVpbmcgZl4lJGVkLiBBbHNvLCBpdCByZW1pbmRzIHVzIHRoYXQgd2UgYXJlIGRvaW5nIHNvbWV0aGluZyByaWdodC4gVGhlIGxhdGVzdCB0cmVuZD8gUHVsbGluZyB0aGUgb2wgJ2JhaXQgJiBzd2l0Y2ggb24geW91ciBjdXN0b21lcnMgYWZ0ZXIgdGhleSBoYXZlIGFncmVlZCB0byBhIHByaWNlLiBUaGV5IHdvdWxkIGhhdmUgeW91IHRoaW5rIHRoZWlyIGRpc2NvdW50ZWQgcHJpY2Ugd2lsbCBzdGF5IHRoZSBzYW1lIGZvcmV2ZXIuLi4gYnV0IGl0IGRvZXNuJ3QuIFJlYWQgbW9yZSA8YSBocmVmPSJodHRwczovL2Jsb2cud2luZHNjcmliZS5jb20vdGhlLXByaWNlLWlzLW5vdC1yaWdodC8iIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPi48L3A-DQoNCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8aW1nIHN0eWxlPSJwYWRkaW5nOjBweDsiIHNyYz0iaHR0cHM6Ly9zaGFyZS53aW5kc2NyaWJlLmNvbS9lbWFpbC9wcmljZV9pc193cm9uZy5naWYiIHdpZHRoPSIxMDAlIj4NCjwvcD4NCg0KPCEtLUNUQS0tPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHggMHB4O3RleHQtYWxpZ246Y2VudGVyOyI-DQogIDxhIGhyZWY9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vdXBncmFkZT9wY3BpZD0yMDI0X3NlcHRlbWJlcl9uZXdzbGV0dGVyIiBzdHlsZT0iZm9udC1zaXplOjIwcHg7IGRpc3BsYXk6YmxvY2s7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNENBRjUwOyBwYWRkaW5nOjEwcHggMHB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MTBweCBhdXRvOyB0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjVweDsiPkxvY2sgaW4geW91ciBwcmljZSwgZm9yZXZlcjwvYT4NCjwvcD4NCg0KPCEtLUNMSSB1cGRhdGUtLT4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MjNweDsgY29sb3I6IzQyODBENjsgZm9udC13ZWlnaHQ6NTAwOyI-VGhlIE15dGhpY2FsIENMSTwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyI-TGFzdGx5LCBvdXIgZGV2ZWxvcGVycyBoYXZlIHNvbHZlZCB0aGUgYWdlIG9sZCBteXN0ZXJ5IHRoYXQgaGFzIHBsYWd1ZWQgbWVuIGZvciBtaWxsZW5pYSwgdGhlIGxvY2F0aW9uIG9mIHRoZSBDTEkuLi4gVGhlIGFuc3dlciBtYXkgc3VycHJpc2UgeW91LCBpdCBjYW4gYWN0dWFsbHkgYmUgZm91bmQgb24gb3VyIDxhIGhyZWY9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vZG93bmxvYWQvIiB0YXJnZXQ9Il9ibGFuayI-ZG93bmxvYWQ8L2E-IHBhZ2UuIElmIHlvdSBpZGVudGlmeSBhcyBhIFdpbmRzY3JpYmUgTGludXggZW50aHVzaWFzdCwgeW91IHdpbGwgYmUgcGxlYXNlZCB0byBrbm93IHRoYXQgb3VyIENMSSBpcyBmdWxseSByZWxlYXNlZC4gRG9uJ3QgZm9yZ2V0IHRvIHVuaW5zdGFsbCB0aGUgV2luZHNjcmliZSBHVUkgYmVmb3JlIGRvd25sb2FkaW5nIHRoZSBDTEkuIFVzZWZ1bCBpbmZvcm1hdGlvbj8gQ2hlY2suIE1pbGQgc2V4dWFsIGlubnVlbmRvPyBDaGVjay4gUGFyYWdyYXBoIGNvbmNsdWRlZD8gQ2hlY2suPC9wPg0KDQo8IS0tYXBwIHVwZGF0ZSwgd2ludHVubmVsLS0-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsgdGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjIzcHg7IGNvbG9yOiM0MjgwRDY7IGZvbnQtd2VpZ2h0OjUwMDsiPldpbnR1biBvdXQsIE9wZW5WUE4gRENPIGluPC9wPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7Ij5XaW5kc2NyaWJlIGZvciBXaW5kb3dzIGhhcyBiZWVuIGltcHJvdmVkLCBtdWNoIGxpa2Ugb3VyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdXIgbW9tLiBUaGUgV2luZG93cyBhcHAgbm93IHVzZXMgdGhlIE9wZW5WUE4gRGF0YSBDaGFubmVsIE9mZmxvYWQgKERDTykga2VybmVsIGRyaXZlciBmb3IgYW55IGFuZCBhbGwgT3BlblZQTi1iYXNlZCBwcm90b2NvbHMgKFVEUCwgVENQLCBTdGVhbHRoLCBXU3R1bm5lbCkgYnkgZGVmYXVsdCwgd2l0aCBXaW50dW4gc3RpbGwgYXZhaWxhYmxlIGFzIGEgYmFja3VwIGp1c3QgaW4gY2FzZS4gVGhpcyBnaXZlcyBPcGVuVlBOIHVzZXJzIG11Y2ggZmFzdGVyIGRhdGEgdGhyb3VnaHB1dCwgYW5kIGluY3JlYXNlcyB5b3VyIHBlcmZvcm1hbmNlIGluIHRoZSBiZWRyb29tIHRvbyAoeW91ciBtb20gdG9sZCB1cyBzbyBsYXN0IG5pZ2h0KS4gVGhpcyBpcyB3aHkgeW91IHVzZSB1cywgd2UgaGF2ZSBmZWF0dXJlcywgYW5kIGNhbiBtYWtlIGpva2VzIGFib3V0IHlvdXIgZ29yZ2VvdXMgbW90aGVyIGF0IHRoZSBzYW1lIHRpbWUuPC9wPg0KDQo8IS0tc3BsaXQgdHVubmVsaW5nIGNhbGxvdXQgKyBDVEEtLT4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MjNweDsgY29sb3I6IzQyODBENjsgZm9udC13ZWlnaHQ6NTAwOyI-RmVhdHVyZSBvZiB0aGUgTW9udGg6IFNwbGl0IFR1bm5lbGluZzwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyI-WW91ciBwYXJlbnRzJyBtYXJyaWFnZSBpc24ndCB0aGUgb25seSB0aGluZyB3ZSBzcGxpdCB1cC4gV2UgY2FuIGFsc28gc3BsaXQgeW91ciBjb25uZWN0aW9uIG9uIGEgd2hpbSwgaWYgeW91IHNvIGRlc2lyZS4gU2F5IHlvdSB3YW50IHRvIHRocm93IG9uIHlvdXIgZmF2b3JpdGUgTmV0ZmxpeCBzaG93LCBidXQgaXQncyBub3cgb25seSBhdmFpbGFibGUgaW4gVHVya2V5LiBJbnN0ZWFkIG9mIHJvdXRpbmcgYWxsIHlvdXIgbmV0d29yayB0cmFmZmljIHRvIFR1cmtleSBmb3Igb25lIG1lYXNseSBOZXRmbGl4IHNob3csIHlvdSBjYW4gdXNlIHRoZSBzcGxpdCB0dW5uZWxpbmcgZmVhdHVyZSB0byBzZWxlY3Qgd2hpY2ggYXBwIGdldHMgcm91dGVkIHRocm91Z2ggeW91ciBWUE4gY29ubmVjdGlvbiBhbmQgd2hpY2ggZG9lc24ndC4gVGhhdCBtZWFucyBubyBtb3JlIGN1c3RvZHkgYmF0dGxlcyBvdmVyIHlvdXIgSVAgYWRkcmVzcy4gV2F0Y2ggb3VyIHZpZGVvIHRvIGxlYXJuIG1vcmUsIHdpdGhvdXQgdGhlIG5lZWQgdG8gcmVhZCE8L3A-DQoNCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4IDBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVd2UDd3d05OeVJvIj4NCiAgICA8aW1nIHNyYz0iaHR0cHM6Ly9zaGFyZS53aW5kc2NyaWJlLmNvbS9lbWFpbC9zcGxpdF90dW5uZWwuanBnIiB3aWR0aD0iMTAwJSI-DQogIDwvYT4NCjwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4IDBweDt0ZXh0LWFsaWduOmNlbnRlcjsiPg0KICA8YSBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVd2UDd3d05OeVJvIiBzdHlsZT0iZm9udC1zaXplOjIwcHg7IGRpc3BsYXk6YmxvY2s7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwMDAwOyBwYWRkaW5nOjEwcHggMHB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MTBweCBhdXRvOyB0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjVweDsiPldhdGNoIFRoZSBWaWRlbzwvYT4NCjwvcD4NCg0KPCEtLSBDRCBQbHVnIC0tPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MjNweDsgY29sb3I6IzQyODBENjsgZm9udC13ZWlnaHQ6NTAwOyI-Q29udHJvbCBZb3VyIEQ8L3A-DQo8cCBzdHlsZT0icGFkZGluZzogMHB4IDMwcHg7Ij5BcmUgeW91IHNpY2sgYW5kIHRpcmVkIG9mIGhhdmluZyB0byB1c2Ugc3BsaXQgdHVubmVsaW5nIGZvciBldmVyeSBzaW5nbGUgc2l0ZSBvciBhcHAgeW91IHVzZT8gPGEgaHJlZj0iaHR0cHM6Ly9jb250cm9sZC5jb20vIiB0YXJnZXQ9Il9ibGFuayI-Q29udHJvbCBEPC9hPiBpcyB0aGUgYmUgYWxsLCBlbmQgYWxsIHNvbHV0aW9uIGZvciB5b3UuIEdvIGNoZWNrIGl0IG91dCwgcGxheSBhcm91bmQsIGZpZGRsZSB3aXRoIHNvbWUgYnV0dG9ucy4gSWYgeW91IGxvdmUgaXQsIGdyZWF0LCBpZiB5b3UgZG9uJ3QsIG5vIHdvcnJpZXMhIEJlY29tZSB0aGUgbWFzdGVyIG9mIHlvdXIgbmV0d29yayE8L3A-DQoNCjwhLS1Db25jbHVzaW9uLS0-DQo8cCBzdHlsZT0icGFkZGluZzowcHggMzBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyM3B4OyBjb2xvcjojNDI4MEQ2OyBmb250LXdlaWdodDo1MDA7Ij5GaW5pdG88L3A-DQo8cCBzdHlsZT0icGFkZGluZzoxMHB4IDMwcHg7Ij5CQU0hIEFub3RoZXIgc3VjY2Vzc2Z1bCBuZXdzbGV0dGVyIGNvbXBsZXRlZC4gV2UgaG9wZSB3ZSd2ZSBpbXByZXNzZWQgeW91IGFzIG11Y2ggYXMgd2UgaGF2ZSBpbXByZXNzZWQgb3Vyc2VsdmVzLiBBbGwgeW91IGhhZCB0byBkbyB3YXMgZ2l2ZSB1cyAzIHRvIDggbWludXRlcyBvZiB5b3VyIHRpbWUgYW5kIHdlJ3ZlIGxlZnQgeW91IHNtYXJ0ZXIsIGhlYWx0aGllciwgYW5kIHBvc3NpYmx5IGhvcm5pZXIgKGp1cnkgaXMgc3RpbGwgb3V0IG9uIHRoYXQgb25lKS4gRWl0aGVyIHdheSwgc3RheSBzYWZlIG91dCB0aGVyZSB5YSBiaWcgYmVhdXRpZXMhPC9wPg0KPHAgc3R5bGU9InBhZGRpbmc6MHB4IDMwcHg7Ij5Mb3ZlLDwvcD4NCjxwIHN0eWxlPSJwYWRkaW5nOjBweCAzMHB4OyI-DQogIDxiPlRlYW0gV2luZHNjcmliZTwvYj4NCjwvcD4NCjxociBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzQyODBENjsgbWFyZ2luOiAxMHB4IGF1dG87IGJvcmRlcjogMDsgaGVpZ2h0OiAxcHg7IHdpZHRoOiAxNTBweDsiPg0KPHAgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MjBweDsgY29sb3I6IzM5NjhiYzsgZm9udC13ZWlnaHQ6NTAwOyBwYWRkaW5nOjEwcHggMzBweCAwcHggMzBweDsgbWFyZ2luOiAwOyI-UmFuZG9tIEZhY3Q8L3A-DQo8cCBzdHlsZT0icGFkZGluZzogMTBweDt0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMTBweCAzMHB4O2ZvbnQtc3R5bGU6IGl0YWxpYzsiPiAiSXQgaXMgaW1wb3NzaWJsZSB0byBzbmVlemUgd2l0aCB5b3VyIGV5ZXMgb3Blbi4iIDwvcD4NCiAgICAgICAgICAgDQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6MTBweCAwcHg7Y29sb3I6IzY2NjtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7bWFyZ2luOjEwcHggYXV0byAwcHggYXV0bztmb250LXNpemU6MTJweDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDozMHB4O3RleHQtYWxpZ246Y2VudGVyIj4NCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbSIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIiA-SG9tZTwvYT4NCiAgICAgICAg44O7DQogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vdXBncmFkZSIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIj5VcGdyYWRlPC9hPg0KICAgICAgICDjg7sNCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9zdXBwb3J0IiBzdHlsZT0iY29sb3I6IzY2NiIgdGFyZ2V0PSJfYmxhbmsiPlN1cHBvcnQ8L2E-DQogICAgICAgIOODuw0KICAgICAgICA8YSBocmVmPSJodHRwczovL3dpbmRzY3JpYmUuY29tL3ByaXZhY3kiIHN0eWxlPSJjb2xvcjojNjY2IiB0YXJnZXQ9Il9ibGFuayI-UHJpdmFjeTwvYT4NCiAgICAgICAg44O7DQogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vdGVybXMiIHN0eWxlPSJjb2xvcjojNjY2IiB0YXJnZXQ9Il9ibGFuayI-VE9TPC9hPg0KICAgICAgICDjg7sNCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93ZWxsZm91bmQuY29tL2NvbXBhbnkvd2luZHNjcmliZSIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIj5Kb2JzPC9hPg0KICAgICAgICDjg7sNCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9ibG9nLndpbmRzY3JpYmUuY29tLyIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIj5CbG9nPC9hPg0KICAgICAgICDjg7sNCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9teWFjY291bnQvdW5zdWJzY3JpYmU_d2hvPWFHRnpjMkZ1ZDJGeWFUSTFORUJuYldGcGJDNWpiMjA9JnNpZz04YjJhZTFhMDE3OGE1ZTM3YWZkNmNhNzEwMDlkZDJjNCIgc3R5bGU9ImNvbG9yOiM2NjYiIHRhcmdldD0iX2JsYW5rIj5VbnN1YnNjcmliZTwvYT4NCg0KICAgICAgICA8cD4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2MvV2luZHNjcmliZSIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3dpbmRzY3JpYmUuY29tL2ltZy9lbWFpbHMveW91dHViZS5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5yZWRkaXQuY29tL3IvV2luZHNjcmliZS8iIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9pbWcvZW1haWxzL3JlZGRpdC5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tL3dpbmRzY3JpYmVjb20iIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9pbWcvZW1haWxzL3R3aXR0ZXIucG5nIiB3aWR0aD0iMjRweCI-PC9hPg0KICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmdnL3ZwbiIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3dpbmRzY3JpYmUuY29tL2ltZy9lbWFpbHMvZGlzY29yZC5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3QubWUvV2luZHNjcmliZUhRIiB0YXJnZXQ9Il9ibGFuayI-DQogICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vaW1nL2VtYWlscy90ZWxlZ3JhbS5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FwcHMuYXBwbGUuY29tL3VzL2FwcC93aW5kc2NyaWJlLXZwbi9pZDExMjk0MzUyMjgiIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9pbWcvZW1haWxzL2FwcHN0b3JlLnBuZyIgd2lkdGg9IjI0cHgiPjwvYT4NCiAgICAgICAgICAgICAgICAmbmJzcDsNCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20ud2luZHNjcmliZS52cG4iIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9pbWcvZW1haWxzL3BsYXlzdG9yZS5wbmciIHdpZHRoPSIyNHB4Ij48L2E-DQogICAgICAgICAgICAgICAgJm5ic3A7DQogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5hbWF6b24uY29tL1dpbmRzY3JpYmUtVlBOL2RwL0IwNzZaWVY2SFEvIiB0YXJnZXQ9Il9ibGFuayI-DQogICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vd2luZHNjcmliZS5jb20vaW1nL2VtYWlscy9hbWF6b24ucG5nIiB3aWR0aD0iMjRweCI-PC9hPg0KICAgICAgICAgICAgICAgICZuYnNwOw0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvd2luZHNjcmliZS1mcmVlLXByb3h5LWFuZC9obm1wY2FncHBsbXBmb2ptZ21ubmdpbGNuYW5kZGxoYiIgdGFyZ2V0PSJfYmxhbmsiPg0KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3dpbmRzY3JpYmUuY29tL2ltZy9lbWFpbHMvY2hyb21lLnBuZyIgd2lkdGg9IjI0cHgiPjwvYT4NCiAgICAgICAgPC9wPg0KICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly93aW5kc2NyaWJlLmNvbS9waXhlbD9jcGlkPTIwMjRfc2VwdGVtYmVyX25ld3NsZXR0ZXImY2I9MTcyODM2NDc5NS40OTliNzIyMTdlMjU5ZjA4NmFjYTYzY2RlNjhlNjkxN2ZhNzM2ODg1MTAwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4NCg0KICAgIDwvZGl2Pg0KPC9kaXY-DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg==" + } + }, + "sizeEstimate": 17837, + "historyId": "3310200", + "internalDate": "1728364795000" +} diff --git a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/emails.json b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/emails.json index d63c2603..2c279c4f 100644 --- a/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/emails.json +++ b/integrations/google-mail/mocks/nango/get/proxy/gmail/v1/users/me/messages/emails.json @@ -1,29 +1,25 @@ { - "messages": [ - { - "id": "1926abe2f19f960a", - "threadId": "1926abe2f19f960a" - }, - { - "id": "1926ab7f84de3228", - "threadId": "1926ab7f84de3228" - }, - { - "id": "1926ab2f388ee820", - "threadId": "1926ab2eb6b97dbd" - }, - { - "id": "1926aae906133846", - "threadId": "1926aade210af14d" - }, - { - "id": "1926aae5958a57a8", - "threadId": "1926aae51748a654" - }, - { - "id": "1926aae406722332", - "threadId": "1926aade210af14d" - } - ], - "resultSizeEstimate": 6 -} \ No newline at end of file + "messages": [ + { + "id": "1926abe2f19f960a", + "threadId": "1926abe2f19f960a" + }, + { + "id": "1926ab7f84de3228", + "threadId": "1926ab7f84de3228" + }, + { + "id": "1926ab2f388ee820", + "threadId": "1926ab2eb6b97dbd" + }, + { + "id": "1926aae5958a57a8", + "threadId": "1926aae51748a654" + }, + { + "id": "1926aae406722332", + "threadId": "1926aade210af14d" + } + ], + "resultSizeEstimate": 6 +} diff --git a/integrations/okta/mocks/nango/get/proxy/api/v1/users/list-all-users.json b/integrations/okta/mocks/nango/get/proxy/api/v1/users/list-all-users.json index b66c91b5..8c7322df 100644 --- a/integrations/okta/mocks/nango/get/proxy/api/v1/users/list-all-users.json +++ b/integrations/okta/mocks/nango/get/proxy/api/v1/users/list-all-users.json @@ -16,8 +16,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmail.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmail.com", + "email": "john@foo.com@gmail.com" }, "credentials": { "provider": { @@ -48,8 +48,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmaile.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmaile.com", + "email": "john@foo.com@gmail.com" }, "credentials": { "provider": { @@ -80,8 +80,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254p@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -112,8 +112,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari254pp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.compp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -144,8 +144,8 @@ "lastName": "Brock", "mobilePhone": "null", "secondEmail": null, - "login": "hassanwari254ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comppp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -176,8 +176,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari2p54ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john2p54ppp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -272,8 +272,8 @@ "lastName": "Wari", "mobilePhone": null, "secondEmail": null, - "login": "kelvin@nango.dev", - "email": "kelvin@nango.dev" + "login": "john@some-company.com", + "email": "john@some-company.com" }, "credentials": { "password": {}, diff --git a/integrations/okta/mocks/nango/get/proxy/api/v1/users/user.json b/integrations/okta/mocks/nango/get/proxy/api/v1/users/user.json index b66c91b5..8c7322df 100644 --- a/integrations/okta/mocks/nango/get/proxy/api/v1/users/user.json +++ b/integrations/okta/mocks/nango/get/proxy/api/v1/users/user.json @@ -16,8 +16,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmail.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmail.com", + "email": "john@foo.com@gmail.com" }, "credentials": { "provider": { @@ -48,8 +48,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmaile.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmaile.com", + "email": "john@foo.com@gmail.com" }, "credentials": { "provider": { @@ -80,8 +80,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254p@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -112,8 +112,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari254pp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.compp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -144,8 +144,8 @@ "lastName": "Brock", "mobilePhone": "null", "secondEmail": null, - "login": "hassanwari254ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comppp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -176,8 +176,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari2p54ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john2p54ppp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -272,8 +272,8 @@ "lastName": "Wari", "mobilePhone": null, "secondEmail": null, - "login": "kelvin@nango.dev", - "email": "kelvin@nango.dev" + "login": "john@some-company.com", + "email": "john@some-company.com" }, "credentials": { "password": {}, diff --git a/integrations/okta/mocks/nango/get/proxy/api/v1/users/users.json b/integrations/okta/mocks/nango/get/proxy/api/v1/users/users.json index b66c91b5..8c7322df 100644 --- a/integrations/okta/mocks/nango/get/proxy/api/v1/users/users.json +++ b/integrations/okta/mocks/nango/get/proxy/api/v1/users/users.json @@ -16,8 +16,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmail.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmail.com", + "email": "john@foo.com@gmail.com" }, "credentials": { "provider": { @@ -48,8 +48,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmaile.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmaile.com", + "email": "john@foo.com@gmail.com" }, "credentials": { "provider": { @@ -80,8 +80,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254p@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -112,8 +112,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari254pp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.compp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -144,8 +144,8 @@ "lastName": "Brock", "mobilePhone": "null", "secondEmail": null, - "login": "hassanwari254ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comppp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -176,8 +176,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari2p54ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john2p54ppp@gmaile.com", + "email": "john@foo.comp@gmail.com" }, "credentials": { "provider": { @@ -272,8 +272,8 @@ "lastName": "Wari", "mobilePhone": null, "secondEmail": null, - "login": "kelvin@nango.dev", - "email": "kelvin@nango.dev" + "login": "john@some-company.com", + "email": "john@some-company.com" }, "credentials": { "password": {}, diff --git a/integrations/okta/mocks/user/User/batchSave.json b/integrations/okta/mocks/user/User/batchSave.json index 08a335d7..7078a001 100644 --- a/integrations/okta/mocks/user/User/batchSave.json +++ b/integrations/okta/mocks/user/User/batchSave.json @@ -16,8 +16,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmail.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmail.com", + "email": "john@foo.com@gmail.com" } }, { @@ -37,8 +37,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmaile.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmaile.com", + "email": "john@foo.com@gmail.com" } }, { @@ -58,8 +58,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254p@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comp@gmaile.com", + "email": "john@foo.comp@gmail.com" } }, { @@ -79,8 +79,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari254pp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.compp@gmaile.com", + "email": "john@foo.comp@gmail.com" } }, { @@ -100,8 +100,8 @@ "lastName": "Brock", "mobilePhone": "null", "secondEmail": null, - "login": "hassanwari254ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comppp@gmaile.com", + "email": "john@foo.comp@gmail.com" } }, { @@ -121,8 +121,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari2p54ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john2p54ppp@gmaile.com", + "email": "john@foo.comp@gmail.com" } }, { @@ -184,8 +184,8 @@ "lastName": "Wari", "mobilePhone": null, "secondEmail": null, - "login": "kelvin@nango.dev", - "email": "kelvin@nango.dev" + "login": "john@some-company.com", + "email": "john@some-company.com" } } ] diff --git a/integrations/okta/mocks/users/User/batchSave.json b/integrations/okta/mocks/users/User/batchSave.json index 08a335d7..7078a001 100644 --- a/integrations/okta/mocks/users/User/batchSave.json +++ b/integrations/okta/mocks/users/User/batchSave.json @@ -16,8 +16,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmail.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmail.com", + "email": "john@foo.com@gmail.com" } }, { @@ -37,8 +37,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254@gmaile.com", - "email": "hassanwari254@gmail.com" + "login": "john@foo.com@gmaile.com", + "email": "john@foo.com@gmail.com" } }, { @@ -58,8 +58,8 @@ "lastName": "Brock", "mobilePhone": "555-415-1337", "secondEmail": null, - "login": "hassanwari254p@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comp@gmaile.com", + "email": "john@foo.comp@gmail.com" } }, { @@ -79,8 +79,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari254pp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.compp@gmaile.com", + "email": "john@foo.comp@gmail.com" } }, { @@ -100,8 +100,8 @@ "lastName": "Brock", "mobilePhone": "null", "secondEmail": null, - "login": "hassanwari254ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john@foo.comppp@gmaile.com", + "email": "john@foo.comp@gmail.com" } }, { @@ -121,8 +121,8 @@ "lastName": "Brock", "mobilePhone": null, "secondEmail": null, - "login": "hassanwari2p54ppp@gmaile.com", - "email": "hassanwari254p@gmail.com" + "login": "john2p54ppp@gmaile.com", + "email": "john@foo.comp@gmail.com" } }, { @@ -184,8 +184,8 @@ "lastName": "Wari", "mobilePhone": null, "secondEmail": null, - "login": "kelvin@nango.dev", - "email": "kelvin@nango.dev" + "login": "john@some-company.com", + "email": "john@some-company.com" } } ] diff --git a/integrations/okta/tests/okta-users.test.ts b/integrations/okta/tests/okta-users.test.ts index d8de798c..7ec29e1e 100644 --- a/integrations/okta/tests/okta-users.test.ts +++ b/integrations/okta/tests/okta-users.test.ts @@ -1,53 +1,52 @@ -import { vi, expect, it, describe } from "vitest"; +import { vi, expect, it, describe } from 'vitest'; -import fetchData from "../syncs/users.js"; +import fetchData from '../syncs/users.js'; -describe("okta users tests", () => { - const nangoMock = new global.vitest.NangoSyncMock({ - dirname: __dirname, - name: "users", - Model: "User" - }); +describe('okta users tests', () => { + const nangoMock = new global.vitest.NangoSyncMock({ + dirname: __dirname, + name: 'users', + Model: 'User' + }); - const models = "User".split(','); - const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); + const models = 'User'.split(','); + const batchSaveSpy = vi.spyOn(nangoMock, 'batchSave'); - it("should get, map correctly the data and batchSave the result", async () => { - await fetchData(nangoMock); + it('should get, map correctly the data and batchSave the result', async () => { + await fetchData(nangoMock); - for (const model of models) { - const batchSaveData = await nangoMock.getBatchSaveData(model); + for (const model of models) { + const batchSaveData = await nangoMock.getBatchSaveData(model); - const totalCalls = batchSaveSpy.mock.calls.length; + const totalCalls = batchSaveSpy.mock.calls.length; - if (totalCalls > models.length) { - const splitSize = Math.ceil(batchSaveData.length / totalCalls); + if (totalCalls > models.length) { + const splitSize = Math.ceil(batchSaveData.length / totalCalls); - const splitBatchSaveData = []; - for (let i = 0; i < totalCalls; i++) { - const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); - splitBatchSaveData.push(chunk); + const splitBatchSaveData = []; + for (let i = 0; i < totalCalls; i++) { + const chunk = batchSaveData.slice(i * splitSize, (i + 1) * splitSize); + splitBatchSaveData.push(chunk); + } + + splitBatchSaveData.forEach((data, index) => { + // @ts-ignore + expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); + }); + } else { + expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); } + } + }); - splitBatchSaveData.forEach((data, index) => { - // @ts-ignore - expect(batchSaveSpy?.mock.calls[index][0]).toEqual(data); - }); + it('should get, map correctly the data and batchDelete the result', async () => { + await fetchData(nangoMock); - } else { - expect(nangoMock.batchSave).toHaveBeenCalledWith(batchSaveData, model); + for (const model of models) { + const batchDeleteData = await nangoMock.getBatchDeleteData(model); + if (batchDeleteData && batchDeleteData.length > 0) { + expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); + } } - } - }); - - it('should get, map correctly the data and batchDelete the result', async () => { - await fetchData(nangoMock); - - for (const model of models) { - const batchDeleteData = await nangoMock.getBatchDeleteData(model); - if (batchDeleteData && batchDeleteData.length > 0) { - expect(nangoMock.batchDelete).toHaveBeenCalledWith(batchDeleteData, model); - } - } - }); + }); }); diff --git a/integrations/zendesk/mocks/nango/get/proxy/api/v2/search/search-tickets.json b/integrations/zendesk/mocks/nango/get/proxy/api/v2/search/search-tickets.json index c218f8fe..8435d1d8 100644 --- a/integrations/zendesk/mocks/nango/get/proxy/api/v2/search/search-tickets.json +++ b/integrations/zendesk/mocks/nango/get/proxy/api/v2/search/search-tickets.json @@ -1043,7 +1043,7 @@ "id": 29627414427537, "url": "https://nango9110.zendesk.com/api/v2/users/29627414427537.json", "name": "Mock Test", - "email": "kelvin@nango.dev", + "email": "john@some-company.com", "created_at": "2024-10-30T06:06:29Z", "updated_at": "2024-10-31T04:37:23Z", "time_zone": "Africa/Nairobi", diff --git a/package-lock.json b/package-lock.json index e6a9e242..f9db4ace 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "husky": "8.0.3", "js-yaml": "4.1.0", "lint-staged": "15.2.9", - "nango": "^0.42.20", + "nango": "^0.42.21", "onchange": "7.1.0", "ts-to-zod": "^3.9.1", "tsx": "^4.19.0", @@ -67,6 +67,7 @@ "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", @@ -81,6 +82,7 @@ "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", @@ -92,6 +94,7 @@ "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", @@ -106,6 +109,7 @@ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -118,6 +122,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -131,6 +136,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -144,6 +150,7 @@ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", @@ -159,6 +166,7 @@ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -171,6 +179,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -184,6 +193,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -197,6 +207,7 @@ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", @@ -211,6 +222,7 @@ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" } @@ -220,6 +232,7 @@ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", @@ -231,6 +244,7 @@ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -243,6 +257,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -256,6 +271,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -269,6 +285,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.637.0.tgz", "integrity": "sha512-y6UC94fsMvhKbf0dzfnjVP1HePeGjplfcYfilZU1COIJLyTkMcUv4XcT4I407CGIrvgEafONHkiC09ygqUauNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", @@ -338,6 +355,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.637.0.tgz", "integrity": "sha512-+KjLvgX5yJYROWo3TQuwBJlHCY0zz9PsLuEolmXQn0BVK1L/m9GteZHtd+rEdAoDGBpE0Xqjy1oz5+SmtsaRUw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -387,6 +405,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.637.0.tgz", "integrity": "sha512-27bHALN6Qb6m6KZmPvRieJ/QRlj1lyac/GT2Rn5kJpre8Mpp+yxrtvp3h9PjNBty4lCeFEENfY4dGNSozBuBcw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -440,6 +459,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.637.0.tgz", "integrity": "sha512-xUi7x4qDubtA8QREtlblPuAcn91GS/09YVEY/RwU7xCY0aqGuFwgszAANlha4OUIqva8oVj2WO4gJuG+iaSnhw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -491,6 +511,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.635.0.tgz", "integrity": "sha512-i1x/E/sgA+liUE1XJ7rj1dhyXpAKO1UKFUcTTHXok2ARjWTvszHnSXMOsB77aPbmn0fUp1JTx2kHUAZ1LVt5Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/core": "^2.4.0", "@smithy/node-config-provider": "^3.1.4", @@ -512,6 +533,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/property-provider": "^3.1.3", @@ -527,6 +549,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.635.0.tgz", "integrity": "sha512-iJyRgEjOCQlBMXqtwPLIKYc7Bsc6nqjrZybdMDenPDa+kmLg7xh8LxHsu9088e+2/wtLicE34FsJJIfzu3L82g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/fetch-http-handler": "^3.2.4", @@ -547,6 +570,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.637.0.tgz", "integrity": "sha512-h+PFCWfZ0Q3Dx84SppET/TFpcQHmxFW8/oV9ArEvMilw4EBN+IlxgbL0CnHwjHW64szcmrM0mbebjEfHf4FXmw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-provider-env": "3.620.1", "@aws-sdk/credential-provider-http": "3.635.0", @@ -572,6 +596,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.637.0.tgz", "integrity": "sha512-yoEhoxJJfs7sPVQ6Is939BDQJZpZCoUgKr/ySse4YKOZ24t4VqgHA6+wV7rYh+7IW24Rd91UTvEzSuHYTlxlNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-provider-env": "3.620.1", "@aws-sdk/credential-provider-http": "3.635.0", @@ -595,6 +620,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/property-provider": "^3.1.3", @@ -611,6 +637,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.637.0.tgz", "integrity": "sha512-Mvz+h+e62/tl+dVikLafhv+qkZJ9RUb8l2YN/LeKMWkxQylPT83CPk9aimVhCV89zth1zpREArl97+3xsfgQvA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-sso": "3.637.0", "@aws-sdk/token-providers": "3.614.0", @@ -629,6 +656,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/property-provider": "^3.1.3", @@ -647,6 +675,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz", "integrity": "sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@aws-sdk/util-arn-parser": "3.568.0", @@ -665,6 +694,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz", "integrity": "sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/protocol-http": "^4.1.0", @@ -680,6 +710,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz", "integrity": "sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", @@ -699,6 +730,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/protocol-http": "^4.1.0", @@ -714,6 +746,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz", "integrity": "sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", @@ -728,6 +761,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", @@ -742,6 +776,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/protocol-http": "^4.1.0", @@ -757,6 +792,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.635.0.tgz", "integrity": "sha512-RLdYJPEV4JL/7NBoFUs7VlP90X++5FlJdxHz0DzCjmiD3qCviKy+Cym3qg1gBgHwucs5XisuClxDrGokhAdTQw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.635.0", "@aws-sdk/types": "3.609.0", @@ -782,6 +818,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz", "integrity": "sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", @@ -796,6 +833,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.637.0.tgz", "integrity": "sha512-EYo0NE9/da/OY8STDsK2LvM4kNa79DBsf4YVtaG4P5pZ615IeFsD8xOHZeuJmUrSMlVQ8ywPRX7WMucUybsKug==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@aws-sdk/util-endpoints": "3.637.0", @@ -812,6 +850,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/node-config-provider": "^3.1.4", @@ -829,6 +868,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.635.0.tgz", "integrity": "sha512-J6QY4/invOkpogCHjSaDON1hF03viPpOnsrzVuCvJMmclS/iG62R4EY0wq1alYll0YmSdmKlpJwHMWwGtqK63Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/middleware-sdk-s3": "3.635.0", "@aws-sdk/types": "3.609.0", @@ -846,6 +886,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/property-provider": "^3.1.3", @@ -865,6 +906,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" @@ -878,6 +920,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz", "integrity": "sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -890,6 +933,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.637.0.tgz", "integrity": "sha512-pAqOKUHeVWHEXXDIp/qoMk/6jyxIb6GGjnK1/f8dKHtKIEs4tKsnnL563gceEvdad53OPXIt86uoevCcCzmBnw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", @@ -905,6 +949,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.679.0.tgz", "integrity": "sha512-zKTd48/ZWrCplkXpYDABI74rQlbR0DNHs8nH95htfSLj9/mWRSwaGptoxwcihaq/77vi/fl2X3y0a1Bo8bt7RA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -917,6 +962,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", @@ -929,6 +975,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/node-config-provider": "^3.1.4", @@ -952,6 +999,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz", "integrity": "sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" @@ -1124,7 +1172,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@braintree/wrap-promise/-/wrap-promise-2.1.0.tgz", "integrity": "sha512-UIrJB+AfKU0CCfbMoWrsGpd2D/hBpY/SGgFI6WRHPOwhaZ3g9rz1weiJ6eb6L9KgVyunT7s2tckcPkbHw+NzeA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", @@ -1153,6 +1202,7 @@ "resolved": "https://registry.npmjs.org/@datadog/datadog-api-client/-/datadog-api-client-1.26.0.tgz", "integrity": "sha512-k90ZEwN0nBf9KaH+PVZhXyYQ39fSaRnxXjcLWl7MXgusm/Gaxr7fxkYJdEjQhGH1fEaKF+W3tNQjNdEuiCWOjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/buffer-from": "^1.1.0", "@types/node": "*", @@ -1175,6 +1225,7 @@ "integrity": "sha512-SpWkoo7K4+pwxFze1ogRF1qBaKm8sZjWfZKnQ8Ex67f6L5odLjWOoiiIAs5rp01sLKGXjxU8IJf+X9j4PvI2zQ==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "node-gyp-build": "^3.9.0" }, @@ -1187,6 +1238,7 @@ "resolved": "https://registry.npmjs.org/@datadog/native-iast-rewriter/-/native-iast-rewriter-2.4.1.tgz", "integrity": "sha512-j3auTmyyn63e2y+SL28CGNy/l+jXQyh+pxqoGTacWaY5FW/dvo5nGQepAismgJ3qJ8VhQfVWRdxBSiT7wu9clw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lru-cache": "^7.14.0", "node-gyp-build": "^4.5.0" @@ -1200,6 +1252,7 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", "dev": true, + "license": "MIT", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -1212,6 +1265,7 @@ "integrity": "sha512-rw6qSjmxmu1yFHVvZLXFt/rVq2tUZXocNogPLB8n7MPpA0jijNGb109WokWw5ITImiW91GcGDuBW6elJDVKouQ==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "node-gyp-build": "^3.9.0" } @@ -1222,6 +1276,7 @@ "integrity": "sha512-YklGVwUtmKGYqFf1MNZuOHvTYdKuR4+Af1XkWcMD8BwOAjxmd9Z+97328rCOY8TFUJzlGUPaXzB8j2qgG/BMwA==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "node-addon-api": "^6.1.0", "node-gyp-build": "^3.9.0" @@ -1236,6 +1291,7 @@ "integrity": "sha512-53z2Q3K92T6Pf4vz4Ezh8kfkVEvLzbnVqacZGgcbkP//q0joFzO8q00Etw1S6NdnCX0XmX08ULaF4rUI5r14mw==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "delay": "^5.0.0", "node-gyp-build": "<4.0", @@ -1251,7 +1307,8 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@datadog/sketches-js/-/sketches-js-2.1.1.tgz", "integrity": "sha512-d5RjycE+MObE/hU+8OM5Zp4VjTwiPLRa8299fj7muOmR16fb942z8byoMbCErnGh0lBevvgkGrLclQDvINbIyg==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", @@ -1747,6 +1804,7 @@ "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^11.0.2" } @@ -1755,19 +1813,22 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hapi/hoek": { "version": "11.0.6", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.6.tgz", "integrity": "sha512-mu8He+jghTDJ+la/uGBT4b1rqQdqFADZiXhzd98b3XW5nb/c+5woXx3FiNco2nm4wPJFHQVRGxYeWeSDPIYpYw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -1776,13 +1837,15 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hapi/wreck": { "version": "18.1.0", "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.1.0.tgz", "integrity": "sha512-0z6ZRCmFEfV/MQqkQomJ7sl/hyxvcZM7LtuVqN3vdAO4vM9eBbowl0kaqQj9EJJQab+3Uuh1GxbGIBFy4NfJ4w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/boom": "^10.0.1", "@hapi/bourne": "^3.0.0", @@ -2157,9 +2220,9 @@ "dev": true }, "node_modules/@nangohq/nango-yaml": { - "version": "0.42.20", - "resolved": "https://registry.npmjs.org/@nangohq/nango-yaml/-/nango-yaml-0.42.20.tgz", - "integrity": "sha512-NIClhYnjxAB3Itp1Gcc0uYSH9D1K+AvNFgI0m4eK0avb+OnnAf8UjQ0JRZYMmaBFG5xk1o4JzKbQDWAE6wNfqg==", + "version": "0.42.21", + "resolved": "https://registry.npmjs.org/@nangohq/nango-yaml/-/nango-yaml-0.42.21.tgz", + "integrity": "sha512-lHUxAIUBH6gCmBEYX3rORk92hMjUsO1pNEjBXrrFQyMW3ZZbeXt6PCQlRaWQMF0zh8VNMDJ12qbS6tI5iyhP+A==", "dev": true, "dependencies": { "js-yaml": "^4.1.0", @@ -2171,15 +2234,17 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.13" } }, "node_modules/@nangohq/node": { - "version": "0.42.20", - "resolved": "https://registry.npmjs.org/@nangohq/node/-/node-0.42.20.tgz", - "integrity": "sha512-NQcBDe2jSATC+SQpdoli4zRUKgX/lyQU8neUfEVw8HX+swuf7BBFO7T8dqi4jnr3zxwXM4RSxW9+tYo+utPdlQ==", + "version": "0.42.21", + "resolved": "https://registry.npmjs.org/@nangohq/node/-/node-0.42.21.tgz", + "integrity": "sha512-LdB99LsmWKywomTo05ghMwiHvVO1awibqQyIFiBcJ2MtEQbHz3WSNeZ41v8txxeMmgnX6Lxi0jirtlsun1J4oQ==", "dev": true, + "license": "SEE LICENSE IN LICENSE FILE IN GIT REPOSITORY", "dependencies": { "axios": "^1.7.4" }, @@ -2188,30 +2253,29 @@ } }, "node_modules/@nangohq/shared": { - "version": "0.42.20", - "resolved": "https://registry.npmjs.org/@nangohq/shared/-/shared-0.42.20.tgz", - "integrity": "sha512-1scS0EfO2Y+JVnF+FeNvEckSu1pgZ5ZQeXy3c2hfmXjJCV4MqudvkbNCpGHynBsxRqJHdav1wAUjSbuChf4kOA==", + "version": "0.42.21", + "resolved": "https://registry.npmjs.org/@nangohq/shared/-/shared-0.42.21.tgz", + "integrity": "sha512-Ow1XwgN/coupJkGlL/JvOl6ssukAKrPpd3U7JfCs9eDmjRss/+zGHt09sg5tjsKn5rYuqajFijZ68wqS0UT5Jw==", "bundleDependencies": [ "@nangohq/utils", "@nangohq/database" ], "dev": true, + "license": "SEE LICENSE IN LICENSE FILE IN GIT REPOSITORY", "dependencies": { "@aws-sdk/client-s3": "3.637.0", "@datadog/datadog-api-client": "1.26.0", "@hapi/boom": "^10.0.1", "@nangohq/database": "file:vendor/nangohq-database-1.0.0.tgz", - "@nangohq/nango-yaml": "^0.42.20", - "@nangohq/node": "^0.42.20", + "@nangohq/nango-yaml": "^0.42.21", + "@nangohq/node": "^0.42.21", "@nangohq/utils": "file:vendor/nangohq-utils-1.0.0.tgz", - "@sentry/node": "^7.106.0", + "@sentry/node": "^7.119.2", "ajv": "^8.12.0", "ajv-formats": "^3.0.1", "archiver": "^6.0.1", "axios": "^1.7.4", "braintree": "^3.15.0", - "dayjs": "^1.11.7", - "dayjs-plugin-utc": "^0.1.2", "dd-trace": "5.21.0", "exponential-backoff": "^3.1.1", "form-data": "4.0.0", @@ -2221,7 +2285,7 @@ "ms": "3.0.0-canary.1", "oauth-1.0a": "2.2.6", "parse-link-header": "^2.0.0", - "posthog-node": "^3.1.3", + "posthog-node": "^3.6.3", "qs": "^6.11.2", "redis": "4.6.13", "semver": "^7.5.4", @@ -5172,6 +5236,7 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.13" } @@ -5411,6 +5476,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=8.0.0" } @@ -5420,6 +5486,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, @@ -5435,6 +5502,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -5465,31 +5533,36 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -5499,37 +5572,43 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@redis/bloom": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", "dev": true, + "license": "MIT", "peerDependencies": { "@redis/client": "^1.0.0" } @@ -5539,6 +5618,7 @@ "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.14.tgz", "integrity": "sha512-YGn0GqsRBFUQxklhY7v562VMOP0DcmlrHHs3IV1mFE3cbxe31IITUkqhBcIhVSI/2JqtWAJXg5mjV4aU+zD0HA==", "dev": true, + "license": "MIT", "dependencies": { "cluster-key-slot": "1.1.2", "generic-pool": "3.9.0", @@ -5553,6 +5633,7 @@ "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", "dev": true, + "license": "MIT", "peerDependencies": { "@redis/client": "^1.0.0" } @@ -5562,6 +5643,7 @@ "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.6.tgz", "integrity": "sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw==", "dev": true, + "license": "MIT", "peerDependencies": { "@redis/client": "^1.0.0" } @@ -5571,6 +5653,7 @@ "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.6.tgz", "integrity": "sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw==", "dev": true, + "license": "MIT", "peerDependencies": { "@redis/client": "^1.0.0" } @@ -5580,6 +5663,7 @@ "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", "dev": true, + "license": "MIT", "peerDependencies": { "@redis/client": "^1.0.0" } @@ -5797,6 +5881,7 @@ "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.119.2.tgz", "integrity": "sha512-V2W+STWrafyGJhQv3ulMFXYDwWHiU6wHQAQBShsHVACiFaDrJ2kPRet38FKv4dMLlLlP2xN+ss2e5zv3tYlTiQ==", "dev": true, + "license": "MIT", "dependencies": { "@sentry/core": "7.119.2", "@sentry/types": "7.119.2", @@ -5811,6 +5896,7 @@ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.119.2.tgz", "integrity": "sha512-hQr3d2yWq/2lMvoyBPOwXw1IHqTrCjOsU1vYKhAa6w9vGbJZFGhKGGE2KEi/92c3gqGn+gW/PC7cV6waCTDuVA==", "dev": true, + "license": "MIT", "dependencies": { "@sentry/types": "7.119.2", "@sentry/utils": "7.119.2" @@ -5824,6 +5910,7 @@ "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.119.2.tgz", "integrity": "sha512-dCuXKvbUE3gXVVa696SYMjlhSP6CxpMH/gl4Jk26naEB8Xjsn98z/hqEoXLg6Nab73rjR9c/9AdKqBbwVMHyrQ==", "dev": true, + "license": "MIT", "dependencies": { "@sentry/core": "7.119.2", "@sentry/types": "7.119.2", @@ -5839,6 +5926,7 @@ "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.119.2.tgz", "integrity": "sha512-TPNnqxh+Myooe4jTyRiXrzrM2SH08R4+nrmBls4T7lKp2E5R/3mDSe/YTn5rRcUt1k1hPx1NgO/taG0DoS5cXA==", "dev": true, + "license": "MIT", "dependencies": { "@sentry-internal/tracing": "7.119.2", "@sentry/core": "7.119.2", @@ -5855,6 +5943,7 @@ "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.119.2.tgz", "integrity": "sha512-ydq1tWsdG7QW+yFaTp0gFaowMLNVikIqM70wxWNK+u98QzKnVY/3XTixxNLsUtnAB4Y+isAzFhrc6Vb5GFdFeg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5864,6 +5953,7 @@ "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.119.2.tgz", "integrity": "sha512-TLdUCvcNgzKP0r9YD7tgCL1PEUp42TObISridsPJ5rhpVGQJvpr+Six0zIkfDUxerLYWZoK8QMm9KgFlPLNQzA==", "dev": true, + "license": "MIT", "dependencies": { "@sentry/types": "7.119.2" }, @@ -5876,6 +5966,7 @@ "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -5884,25 +5975,29 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@sideway/formula": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@smithy/abort-controller": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.6.tgz", "integrity": "sha512-0XuhuHQlEqbNQZp7QxxrFTdVWdwxch4vjxYgfInF91hZFkPxf9QDrdQka0KfxFMPqLNzSw0b95uGTrLliQUavQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -5916,6 +6011,7 @@ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz", "integrity": "sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" } @@ -5925,6 +6021,7 @@ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz", "integrity": "sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/util-base64": "^3.0.0", "tslib": "^2.6.2" @@ -5935,6 +6032,7 @@ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.10.tgz", "integrity": "sha512-Uh0Sz9gdUuz538nvkPiyv1DZRX9+D15EKDtnQP5rYVAzM/dnYk3P8cg73jcxyOitPgT3mE3OVj7ky7sibzHWkw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^3.1.9", "@smithy/types": "^3.6.0", @@ -5951,6 +6049,7 @@ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.5.1.tgz", "integrity": "sha512-DujtuDA7BGEKExJ05W5OdxCoyekcKT3Rhg1ZGeiUWaz2BJIWXjZmsG/DIP4W48GHno7AQwRsaCb8NcBgH3QZpg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/middleware-serde": "^3.0.8", "@smithy/protocol-http": "^4.1.5", @@ -5970,6 +6069,7 @@ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.5.tgz", "integrity": "sha512-4FTQGAsuwqTzVMmiRVTn0RR9GrbRfkP0wfu/tXWVHd2LgNpTY0uglQpIScXK4NaEyXbB3JmZt8gfVqO50lP8wg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^3.1.9", "@smithy/property-provider": "^3.1.8", @@ -5986,6 +6086,7 @@ "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.7.tgz", "integrity": "sha512-kVSXScIiRN7q+s1x7BrQtZ1Aa9hvvP9FeCqCdBxv37GimIHgBCOnZ5Ip80HLt0DhnAKpiobFdGqTFgbaJNrazA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^3.6.0", @@ -5998,6 +6099,7 @@ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.11.tgz", "integrity": "sha512-Pd1Wnq3CQ/v2SxRifDUihvpXzirJYbbtXfEnnLV/z0OGCTx/btVX74P86IgrZkjOydOASBGXdPpupYQI+iO/6A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/eventstream-serde-universal": "^3.0.10", "@smithy/types": "^3.6.0", @@ -6012,6 +6114,7 @@ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.8.tgz", "integrity": "sha512-zkFIG2i1BLbfoGQnf1qEeMqX0h5qAznzaZmMVNnvPZz9J5AWBPkOMckZWPedGUPcVITacwIdQXoPcdIQq5FRcg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -6025,6 +6128,7 @@ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.10.tgz", "integrity": "sha512-hjpU1tIsJ9qpcoZq9zGHBJPBOeBGYt+n8vfhDwnITPhEre6APrvqq/y3XMDEGUT2cWQ4ramNqBPRbx3qn55rhw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/eventstream-serde-universal": "^3.0.10", "@smithy/types": "^3.6.0", @@ -6039,6 +6143,7 @@ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.10.tgz", "integrity": "sha512-ewG1GHbbqsFZ4asaq40KmxCmXO+AFSM1b+DcO2C03dyJj/ZH71CiTg853FSE/3SHK9q3jiYQIFjlGSwfxQ9kww==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/eventstream-codec": "^3.1.7", "@smithy/types": "^3.6.0", @@ -6053,6 +6158,7 @@ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz", "integrity": "sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^4.1.4", "@smithy/querystring-builder": "^3.0.7", @@ -6066,6 +6172,7 @@ "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.7.tgz", "integrity": "sha512-4yNlxVNJifPM5ThaA5HKnHkn7JhctFUHvcaz6YXxHlYOSIrzI6VKQPTN8Gs1iN5nqq9iFcwIR9THqchUCouIfg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/chunked-blob-reader": "^4.0.0", "@smithy/chunked-blob-reader-native": "^3.0.1", @@ -6078,6 +6185,7 @@ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.8.tgz", "integrity": "sha512-tlNQYbfpWXHimHqrvgo14DrMAgUBua/cNoz9fMYcDmYej7MAmUcjav/QKQbFc3NrcPxeJ7QClER4tWZmfwoPng==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "@smithy/util-buffer-from": "^3.0.0", @@ -6093,6 +6201,7 @@ "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.7.tgz", "integrity": "sha512-xMAsvJ3hLG63lsBVi1Hl6BBSfhd8/Qnp8fC06kjOpJvyyCEXdwHITa5Kvdsk6gaAXLhbZMhQMIGvgUbfnJDP6Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "@smithy/util-utf8": "^3.0.0", @@ -6107,6 +6216,7 @@ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.8.tgz", "integrity": "sha512-7Qynk6NWtTQhnGTTZwks++nJhQ1O54Mzi7fz4PqZOiYXb4Z1Flpb2yRvdALoggTS8xjtohWUM+RygOtB30YL3Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -6117,6 +6227,7 @@ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -6129,6 +6240,7 @@ "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.8.tgz", "integrity": "sha512-LwApfTK0OJ/tCyNUXqnWCKoE2b4rDSr4BJlDAVCkiWYeHESr+y+d5zlAanuLW6fnitVJRD/7d9/kN/ZM9Su4mA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "@smithy/util-utf8": "^3.0.0", @@ -6140,6 +6252,7 @@ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.10.tgz", "integrity": "sha512-T4dIdCs1d/+/qMpwhJ1DzOhxCZjZHbHazEPJWdB4GDi2HjIZllVzeBEcdJUN0fomV8DURsgOyrbEUzg3vzTaOg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^4.1.5", "@smithy/types": "^3.6.0", @@ -6154,6 +6267,7 @@ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.1.tgz", "integrity": "sha512-wWO3xYmFm6WRW8VsEJ5oU6h7aosFXfszlz3Dj176pTij6o21oZnzkCLzShfmRaaCHDkBXWBdO0c4sQAvLFP6zA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/core": "^2.5.1", "@smithy/middleware-serde": "^3.0.8", @@ -6173,6 +6287,7 @@ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.25.tgz", "integrity": "sha512-m1F70cPaMBML4HiTgCw5I+jFNtjgz5z5UdGnUbG37vw6kh4UvizFYjqJGHvicfgKMkDL6mXwyPp5mhZg02g5sg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^3.1.9", "@smithy/protocol-http": "^4.1.5", @@ -6193,6 +6308,7 @@ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.8.tgz", "integrity": "sha512-Xg2jK9Wc/1g/MBMP/EUn2DLspN8LNt+GMe7cgF+Ty3vl+Zvu+VeZU5nmhveU+H8pxyTsjrAkci8NqY6OuvZnjA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -6206,6 +6322,7 @@ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.8.tgz", "integrity": "sha512-d7ZuwvYgp1+3682Nx0MD3D/HtkmZd49N3JUndYWQXfRZrYEnCWYc8BHcNmVsPAp9gKvlurdg/mubE6b/rPS9MA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -6219,6 +6336,7 @@ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.9.tgz", "integrity": "sha512-qRHoah49QJ71eemjuS/WhUXB+mpNtwHRWQr77J/m40ewBVVwvo52kYAmb7iuaECgGTTcYxHS4Wmewfwy++ueew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^3.1.8", "@smithy/shared-ini-file-loader": "^3.1.9", @@ -6234,6 +6352,7 @@ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.5.tgz", "integrity": "sha512-PkOwPNeKdvX/jCpn0A8n9/TyoxjGZB8WVoJmm9YzsnAgggTj4CrjpRHlTQw7dlLZ320n1mY1y+nTRUDViKi/3w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^3.1.6", "@smithy/protocol-http": "^4.1.5", @@ -6250,6 +6369,7 @@ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.8.tgz", "integrity": "sha512-ukNUyo6rHmusG64lmkjFeXemwYuKge1BJ8CtpVKmrxQxc6rhUX0vebcptFA9MmrGsnLhwnnqeH83VTU9hwOpjA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -6263,6 +6383,7 @@ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.5.tgz", "integrity": "sha512-hsjtwpIemmCkm3ZV5fd/T0bPIugW1gJXwZ/hpuVubt2hEUApIoUTrf6qIdh9MAWlw0vjMrA1ztJLAwtNaZogvg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -6276,6 +6397,7 @@ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.8.tgz", "integrity": "sha512-btYxGVqFUARbUrN6VhL9c3dnSviIwBYD9Rz1jHuN1hgh28Fpv2xjU1HeCeDJX68xctz7r4l1PBnFhGg1WBBPuA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "@smithy/util-uri-escape": "^3.0.0", @@ -6290,6 +6412,7 @@ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.8.tgz", "integrity": "sha512-BtEk3FG7Ks64GAbt+JnKqwuobJNX8VmFLBsKIwWr1D60T426fGrV2L3YS5siOcUhhp6/Y6yhBw1PSPxA5p7qGg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -6303,6 +6426,7 @@ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.8.tgz", "integrity": "sha512-uEC/kCCFto83bz5ZzapcrgGqHOh/0r69sZ2ZuHlgoD5kYgXJEThCoTuw/y1Ub3cE7aaKdznb+jD9xRPIfIwD7g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0" }, @@ -6315,6 +6439,7 @@ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.9.tgz", "integrity": "sha512-/+OsJRNtoRbtsX0UpSgWVxFZLsJHo/4sTr+kBg/J78sr7iC+tHeOvOJrS5hCpVQ6sWBbhWLp1UNiuMyZhE6pmA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -6328,6 +6453,7 @@ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.1.tgz", "integrity": "sha512-NsV1jF4EvmO5wqmaSzlnTVetemBS3FZHdyc5CExbDljcyJCEEkJr8ANu2JvtNbVg/9MvKAWV44kTrGS+Pi4INg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", "@smithy/protocol-http": "^4.1.5", @@ -6347,6 +6473,7 @@ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.4.2.tgz", "integrity": "sha512-dxw1BDxJiY9/zI3cBqfVrInij6ShjpV4fmGHesGZZUiP9OSE/EVfdwdRz0PgvkEvrZHpsj2htRaHJfftE8giBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/core": "^2.5.1", "@smithy/middleware-endpoint": "^3.2.1", @@ -6365,6 +6492,7 @@ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.6.0.tgz", "integrity": "sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -6377,6 +6505,7 @@ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.8.tgz", "integrity": "sha512-4FdOhwpTW7jtSFWm7SpfLGKIBC9ZaTKG5nBF0wK24aoQKQyDIKUw3+KFWCQ9maMzrgTJIuOvOnsV2lLGW5XjTg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/querystring-parser": "^3.0.8", "@smithy/types": "^3.6.0", @@ -6388,6 +6517,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-utf8": "^3.0.0", @@ -6402,6 +6532,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" } @@ -6411,6 +6542,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -6423,6 +6555,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" @@ -6436,6 +6569,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -6448,6 +6582,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.25.tgz", "integrity": "sha512-fRw7zymjIDt6XxIsLwfJfYUfbGoO9CmCJk6rjJ/X5cd20+d2Is7xjU5Kt/AiDt6hX8DAf5dztmfP5O82gR9emA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^3.1.8", "@smithy/smithy-client": "^3.4.2", @@ -6464,6 +6599,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.25.tgz", "integrity": "sha512-H3BSZdBDiVZGzt8TG51Pd2FvFO0PAx/A0mJ0EH8a13KJ6iUCdYnw/Dk/MdC1kTd0eUuUGisDFaxXVXo4HHFL1g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/config-resolver": "^3.0.10", "@smithy/credential-provider-imds": "^3.2.5", @@ -6482,6 +6618,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.4.tgz", "integrity": "sha512-kPt8j4emm7rdMWQyL0F89o92q10gvCUa6sBkBtDJ7nV2+P7wpXczzOfoDJ49CKXe5CCqb8dc1W+ZdLlrKzSAnQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^3.1.9", "@smithy/types": "^3.6.0", @@ -6496,6 +6633,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -6508,6 +6646,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.8.tgz", "integrity": "sha512-p7iYAPaQjoeM+AKABpYWeDdtwQNxasr4aXQEA/OmbOaug9V0odRVDy3Wx4ci8soljE/JXQo+abV0qZpW8NX0yA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^3.6.0", "tslib": "^2.6.2" @@ -6521,6 +6660,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.8.tgz", "integrity": "sha512-TCEhLnY581YJ+g1x0hapPz13JFqzmh/pMWL2KEFASC51qCfw3+Y47MrTmea4bUE5vsdxQ4F6/KFbUeSz22Q1ow==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/service-error-classification": "^3.0.8", "@smithy/types": "^3.6.0", @@ -6535,6 +6675,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.2.1.tgz", "integrity": "sha512-R3ufuzJRxSJbE58K9AEnL/uSZyVdHzud9wLS8tIbXclxKzoe09CRohj2xV8wpx5tj7ZbiJaKYcutMm1eYgz/0A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/fetch-http-handler": "^4.0.0", "@smithy/node-http-handler": "^3.2.5", @@ -6554,6 +6695,7 @@ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-4.0.0.tgz", "integrity": "sha512-MLb1f5tbBO2X6K4lMEKJvxeLooyg7guq48C2zKr4qM7F2Gpkz4dc+hdSgu77pCJ76jVqFBjZczHYAs6dp15N+g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^4.1.5", "@smithy/querystring-builder": "^3.0.8", @@ -6567,6 +6709,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -6579,6 +6722,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" @@ -6592,6 +6736,7 @@ "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.7.tgz", "integrity": "sha512-d5yGlQtmN/z5eoTtIYgkvOw27US2Ous4VycnXatyoImIF9tzlcpnKqQ/V7qhvJmb2p6xZne1NopCLakdTnkBBQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^3.1.6", "@smithy/types": "^3.6.0", @@ -6850,6 +6995,7 @@ "resolved": "https://registry.npmjs.org/@types/buffer-from/-/buffer-from-1.1.3.tgz", "integrity": "sha512-2lq4YC9uLUMGHkl2IDtX4tCXSo2+hwMpOJcY1qiIk1kybc31rIlPyM1HCVJhkPFIo75a/pOVxqyvwuf5TpCG/w==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6897,7 +7043,8 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.7.tgz", "integrity": "sha512-YBtzT2ztNF6R/9+UXj2wTGFnC9NklAnASt3sC0h2m1bbH7G6FyBIkt4AN8ThZpNfxUo1b2iMVO0UawiJymEt8A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "7.18.0", @@ -7224,6 +7371,7 @@ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -7279,6 +7427,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -7363,6 +7512,7 @@ "resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.2.tgz", "integrity": "sha512-UQ/2nW7NMl1G+1UnrLypQw1VdT9XZg/ECcKPq7l+STzStrSivFIXIp34D8M5zeNGW5NoOupdYCHv6VySCPNNlw==", "dev": true, + "license": "MIT", "dependencies": { "archiver-utils": "^4.0.1", "async": "^3.2.4", @@ -7381,6 +7531,7 @@ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz", "integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==", "dev": true, + "license": "MIT", "dependencies": { "glob": "^8.0.0", "graceful-fs": "^4.2.0", @@ -7398,6 +7549,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -7408,6 +7560,7 @@ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7427,6 +7580,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7588,7 +7742,8 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/atomically": { "version": "2.0.3", @@ -7620,6 +7775,7 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -7630,7 +7786,8 @@ "version": "1.6.7", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/balanced-match": { "version": "1.0.2", @@ -7643,6 +7800,7 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", "dev": true, + "license": "Apache-2.0", "optional": true }, "node_modules/base64-js": { @@ -7692,7 +7850,8 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -7717,10 +7876,11 @@ } }, "node_modules/braintree": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/braintree/-/braintree-3.25.0.tgz", - "integrity": "sha512-m9WQvHw1PRYuJMrFjZH1dB+25yuaFeG5fD8QyK4VeWlAoxVFAzURap1NH6cKcq90XEI4MkU/fAbftdGq2Hwqag==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/braintree/-/braintree-3.26.0.tgz", + "integrity": "sha512-dNNIp9utMa+EC7gxifUeabTFwGvsDJ/rNNCQYCnbu0PD1LrTUcYr7rI4upwNEtruAc0aVWuA5SITlVM4G9TiJw==", "dev": true, + "license": "MIT", "dependencies": { "@braintree/wrap-promise": "2.1.0", "dateformat": "4.5.1", @@ -7760,6 +7920,7 @@ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -7768,13 +7929,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bundle-require": { "version": "5.0.0", @@ -7908,7 +8071,8 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/clean-stack": { "version": "3.0.1", @@ -8128,6 +8292,7 @@ "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.10.0" } @@ -8158,6 +8323,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -8179,6 +8345,7 @@ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.3.tgz", "integrity": "sha512-/UIcLWvwAQyVibgpQDPtfNM3SvqN7G9elAPAV7GM0L53EbNWwWiCsWtK8Fwed/APEbptPHXs5PuW+y8Bq8lFTA==", "dev": true, + "license": "MIT", "dependencies": { "crc-32": "^1.2.0", "crc32-stream": "^5.0.0", @@ -8295,6 +8462,7 @@ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, + "license": "Apache-2.0", "bin": { "crc32": "bin/crc32.njs" }, @@ -8307,6 +8475,7 @@ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.1.tgz", "integrity": "sha512-lO1dFui+CEUh/ztYIpgpKItKW9Bb4NWakCRJrnqAbFIYD+OZAwb2VfD5T5eXMw2FNcsDHkQcNl/Wh3iVXYwU6g==", "dev": true, + "license": "MIT", "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" @@ -8326,6 +8495,7 @@ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, + "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } @@ -8348,7 +8518,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-randomuuid/-/crypto-randomuuid-1.0.0.tgz", "integrity": "sha512-/RC5F4l1SCqD/jazwUF6+t34Cd8zTSAGZ7rvvZu1whZUhD2a5MOGKjSGowoGcpj/cbVZk1ZODIooJEQQq3nNAA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/data-view-buffer": { "version": "1.0.1", @@ -8406,27 +8577,17 @@ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz", "integrity": "sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "dev": true - }, - "node_modules/dayjs-plugin-utc": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dayjs-plugin-utc/-/dayjs-plugin-utc-0.1.2.tgz", - "integrity": "sha512-ExERH5o3oo6jFOdkvMP3gytTCQ9Ksi5PtylclJWghr7k7m3o2U5QrwtdiJkOxLOH4ghr0EKhpqGefzGz1VvVJg==", - "dev": true - }, "node_modules/dc-polyfill": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/dc-polyfill/-/dc-polyfill-0.1.6.tgz", "integrity": "sha512-UV33cugmCC49a5uWAApM+6Ev9ZdvIUMTrtCO9fj96TPGOQiea54oeO3tiEVdVeo3J9N2UdJEmbS4zOkkEA35uQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } @@ -8437,6 +8598,7 @@ "integrity": "sha512-3jgrYxifuYmSl3kuAxpTSOS7/kKK9DLbw4m85hS/Yn5IFCXer+uvG8sWwFIcBNXOidF/BcyeKC92WX4X87W4Iw==", "dev": true, "hasInstallScript": true, + "license": "(Apache-2.0 OR BSD-3-Clause)", "dependencies": { "@datadog/native-appsec": "8.0.1", "@datadog/native-iast-rewriter": "2.4.1", @@ -8570,6 +8732,7 @@ "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -8582,6 +8745,7 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -8591,6 +8755,7 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8666,6 +8831,7 @@ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" } @@ -8852,7 +9018,8 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esbuild": { "version": "0.21.5", @@ -9388,7 +9555,8 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/event-lite/-/event-lite-0.1.3.tgz", "integrity": "sha512-8qz9nOz5VeD2z96elrEKD2U433+L3DWdUdDkOINLGOJvx1GsMBbMn0aCeu28y8/e85A6mCigBiFlYMnTBEGlSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eventemitter3": { "version": "5.0.1", @@ -9423,7 +9591,8 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/external-editor": { "version": "3.1.0", @@ -9455,7 +9624,8 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", @@ -9506,6 +9676,7 @@ "url": "https://paypal.me/naturalintelligence" } ], + "license": "MIT", "dependencies": { "strnum": "^1.0.5" }, @@ -9650,6 +9821,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -9689,6 +9861,7 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -9773,6 +9946,7 @@ "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -10163,7 +10337,8 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.0", @@ -10195,6 +10370,7 @@ "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -10484,7 +10660,8 @@ "version": "0.1.10", "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/internal-slot": { "version": "1.0.7", @@ -10865,6 +11042,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -10977,6 +11155,7 @@ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, + "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -10989,6 +11168,7 @@ "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", @@ -11001,7 +11181,8 @@ "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/joycon": { "version": "3.1.1", @@ -11095,6 +11276,7 @@ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dev": true, + "license": "MIT", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -11117,6 +11299,7 @@ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, + "license": "MIT", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -11128,6 +11311,7 @@ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, + "license": "MIT", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -11147,6 +11331,7 @@ "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz", "integrity": "sha512-RYhBbYaTTTHId3l6fnMZc3eGQNW6FVCqMG6AMwA5I1Mafr6AflaXeoi6x3xQuATRotGYRLk6+1ELZH4dstFNOA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11156,6 +11341,7 @@ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "^2.0.5" }, @@ -11168,6 +11354,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11182,13 +11369,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lazystream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -11211,6 +11400,7 @@ "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "dev": true, + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } @@ -11346,6 +11536,7 @@ "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lie": "3.1.1" } @@ -11375,43 +11566,50 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -11423,7 +11621,8 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", @@ -11612,6 +11811,7 @@ "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" }, @@ -11624,7 +11824,8 @@ "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/loupe": { "version": "3.1.1", @@ -11692,6 +11893,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -11701,6 +11903,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -11778,7 +11981,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ms": { "version": "2.1.3", @@ -11791,6 +11995,7 @@ "resolved": "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz", "integrity": "sha512-SZ2IxeqZ1oRFGo0xFGbvBJWMp3yLIY9rlIJyxy8CGrwZn1f0ZK4r6jV/AM1r0FZMDUkWkglOk/eeKIL9g77Nxw==", "dev": true, + "license": "MIT", "dependencies": { "event-lite": "^0.1.1", "ieee754": "^1.1.8", @@ -11819,16 +12024,17 @@ } }, "node_modules/nango": { - "version": "0.42.20", - "resolved": "https://registry.npmjs.org/nango/-/nango-0.42.20.tgz", - "integrity": "sha512-qeXf4JSHHNVNRJ0v4ZwRQFmVqucY7enmTs9LDSBY9d8w+9mObWFFCbN1G7XQkoGOSTTZbbriIskhuuGO+SJo8g==", + "version": "0.42.21", + "resolved": "https://registry.npmjs.org/nango/-/nango-0.42.21.tgz", + "integrity": "sha512-yXzGnEt3SLA/2Ge6peSXb9od2IPTTiu5aEwSnggUFQhIY2aSM7wHZYpKSmCa5UXXz0eFkHh81JKdLY2Yifdiaw==", "dev": true, + "license": "SEE LICENSE IN LICENSE FILE IN GIT REPOSITORY", "dependencies": { "@babel/parser": "^7.22.5", "@babel/traverse": "^7.22.5", "@babel/types": "^7.22.5", - "@nangohq/nango-yaml": "^0.42.20", - "@nangohq/shared": "^0.42.20", + "@nangohq/nango-yaml": "^0.42.21", + "@nangohq/shared": "^0.42.21", "@swc/core": "^1.5.25", "ajv": "^8.12.0", "ajv-errors": "^3.0.0", @@ -11846,7 +12052,7 @@ "js-yaml": "^4.1.0", "npm-package-arg": "^10.1.0", "promptly": "^3.2.0", - "semver": "^7.5.2", + "semver": "^7.5.4", "ts-json-schema-generator": "^2.3.0", "ts-node": "^10.9.1", "tsup": "^8.1.0", @@ -11888,13 +12094,15 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -11915,6 +12123,7 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.9.0.tgz", "integrity": "sha512-zLcTg6P4AbcHPq465ZMFNXx7XpKKJh+7kkN699NiQWisR2uWYOWNWqRHAmbnmKiL4e9aLSlmy5U7rEMUXV59+A==", "dev": true, + "license": "MIT", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -12010,7 +12219,8 @@ "version": "2.2.6", "resolved": "https://registry.npmjs.org/oauth-1.0a/-/oauth-1.0a-2.2.6.tgz", "integrity": "sha512-6bkxv3N4Gu5lty4viIcIAnq5GbxECviMBeKR3WX/q87SPQ8E8aursPZUtsXDnxCs787af09WPRBLqYrf/lwoYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", @@ -12162,6 +12372,7 @@ "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", "integrity": "sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.10" } @@ -12401,7 +12612,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", - "dev": true + "dev": true, + "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { "version": "1.0.1", @@ -12420,6 +12632,7 @@ "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz", "integrity": "sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==", "dev": true, + "license": "MIT", "dependencies": { "xtend": "~4.0.1" } @@ -12483,7 +12696,8 @@ "version": "0.1.11", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.11.tgz", "integrity": "sha512-c0t+KCuUkO/YDLPG4WWzEwx3J5F/GHXsD1h/SNZfySqAIKe/BaP95x8fWtOfRJokpS5yYHRJjMtYlXD8jxnpbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", @@ -12632,6 +12846,7 @@ "resolved": "https://registry.npmjs.org/posthog-node/-/posthog-node-3.6.3.tgz", "integrity": "sha512-JB+ei0LkwE+rKHyW5z79Nd1jUaGxU6TvkfjFqY9vQaHxU5aU8dRl0UUaEmZdZbHwjp3WmXCBQQRNyimwbNQfCw==", "dev": true, + "license": "MIT", "dependencies": { "axios": "^1.6.2", "rusha": "^0.8.14" @@ -12644,7 +12859,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/pprof-format/-/pprof-format-2.1.0.tgz", "integrity": "sha512-0+G5bHH0RNr8E5hoZo/zJYsL92MhkZjwrHp3O2IxmY8RJL9ooKeuZ8Tm0ZNBw5sGZ9TiM71sthTjWoR2Vf5/xw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -12712,6 +12928,7 @@ "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "dev": true, "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -12734,7 +12951,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/punycode": { "version": "2.3.1", @@ -12750,6 +12968,7 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -12764,7 +12983,8 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -12790,7 +13010,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/read": { "version": "1.0.7", @@ -12823,6 +13044,7 @@ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "minimatch": "^5.1.0" } @@ -12832,6 +13054,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -12841,6 +13064,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -12865,6 +13089,7 @@ "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.13.tgz", "integrity": "sha512-MHgkS4B+sPjCXpf+HfdetBwbRz6vCtsceTmw1pHNYJAsYxrfpOP6dz+piJWGos8wqG7qb3vj/Rrc5qOlmInUuA==", "dev": true, + "license": "MIT", "workspaces": [ "./packages/*" ], @@ -12917,7 +13142,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", @@ -12990,6 +13216,7 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -13118,7 +13345,8 @@ "version": "0.8.14", "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rxjs": { "version": "7.8.1", @@ -13209,7 +13437,8 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/semver": { "version": "7.6.3", @@ -13281,6 +13510,7 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13326,6 +13556,7 @@ "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-5.1.0.tgz", "integrity": "sha512-gWDa38Ccm4MwlG5U7AlcJxPv3lvr80dU7ARJWrGdgvOKyzSj1gr3GBPN1rABTedAYvC/LsGYoFuFxwDBPtGEbw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@hapi/hoek": "^11.0.4", "@hapi/wreck": "^18.0.0", @@ -13375,6 +13606,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } @@ -13405,6 +13637,7 @@ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dev": true, + "license": "MIT", "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", @@ -13614,7 +13847,8 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stubborn-fs": { "version": "1.2.5", @@ -13698,6 +13932,7 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, + "license": "MIT", "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -13708,7 +13943,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/text-table": { "version": "0.2.0", @@ -13887,7 +14123,8 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/tlhunter-sorted-set/-/tlhunter-sorted-set-0.1.0.tgz", "integrity": "sha512-eGYW4bjf1DtrHzUYxYfAcSytpOkA44zsr7G2n3PV7yOUR23vmkGe3LL4R+1jL9OsXtbsFOwe8XtbCrabeaEFnw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tmp": { "version": "0.0.33", @@ -13926,7 +14163,8 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tree-kill": { "version": "1.2.2", @@ -15339,6 +15577,7 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -15359,6 +15598,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -15536,13 +15776,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -15808,6 +16050,7 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dev": true, + "license": "MIT", "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -15821,6 +16064,7 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0" } @@ -15847,7 +16091,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "2.5.1", @@ -15955,6 +16200,7 @@ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.2.tgz", "integrity": "sha512-LfOdrUvPB8ZoXtvOBz6DlNClfvi//b5d56mSWyJi7XbH/HfhOHfUhOqxhT/rUiR7yiktlunqRo+jY6y/cWC/5g==", "dev": true, + "license": "MIT", "dependencies": { "archiver-utils": "^4.0.1", "compress-commons": "^5.0.1", diff --git a/package.json b/package.json index b417cda2..476b34fd 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "lint": "eslint . --ext .ts", "fix": "eslint . --ext .ts --fix", "move:integrations": "bash scripts/move-all-to-nango-integration-directories.bash $npm_config_integration", + "copy:models-file": "bash scripts/copy-models-file.bash $npm_config_integration", "undo:move:integrations": "bash scripts/undo-move-to-nango-directories.bash", "lint-moved-integrations": "npm run move:integrations && npm run lint && npm run undo:move:integrations", "dryrun": "bash scripts/run-integration-template.bash --dryrun", @@ -33,7 +34,7 @@ "husky": "8.0.3", "js-yaml": "4.1.0", "lint-staged": "15.2.9", - "nango": "^0.42.20", + "nango": "^0.42.21", "onchange": "7.1.0", "ts-to-zod": "^3.9.1", "tsx": "^4.19.0", diff --git a/scripts/copy-models-file.bash b/scripts/copy-models-file.bash new file mode 100755 index 00000000..4af2ebe6 --- /dev/null +++ b/scripts/copy-models-file.bash @@ -0,0 +1,31 @@ +#!/bin/bash + +pushd () { + command pushd "$@" > /dev/null +} + +popd () { + command popd "$@" > /dev/null +} + +integration=("$npm_config_integration") + +cd integrations + +mkdir -p $integration/nango-integrations/$integration + +# copy everything except the nango-integrations directory +rsync -av --exclude='nango-integrations' $integration/ $integration/nango-integrations/$integration --quiet + +pushd $integration/nango-integrations +mv $integration/nango.yaml . + +npx nango compile + +cp models.ts ../../models.ts +popd + +rsync -av $integration/nango-integrations/$integration/ $integration/ --quiet +mv $integration/nango-integrations/nango.yaml $integration/ +# Remove the nango-integrations directory +rm -rf $integration/nango-integrations diff --git a/scripts/run-integration-template.bash b/scripts/run-integration-template.bash index bdcea654..052d3322 100755 --- a/scripts/run-integration-template.bash +++ b/scripts/run-integration-template.bash @@ -66,6 +66,7 @@ mv $TEMP_DIRECTORY/nango-integrations/$INTEGRATION/nango.yaml $TEMP_DIRECTORY/na [ -f $TEMP_DIRECTORY/nango-integrations/*.ts ] && mv $TEMP_DIRECTORY/nango-integrations/*.ts $TEMP_DIRECTORY/nango-integrations/$INTEGRATION/ + pushd $TEMP_DIRECTORY/nango-integrations if $USE_ITERATIONS; then @@ -95,4 +96,8 @@ if $USE_ITERATIONS && [ -f "$ORIGINAL_JSON" ]; then fi popd + +# keep the models.ts file around for esolution +cp $TEMP_DIRECTORY/nango-integrations/models.ts integrations/models.ts + rm -rf $TEMP_DIRECTORY