diff --git a/biome.json b/biome.json index c8a5ab8..c5eb038 100644 --- a/biome.json +++ b/biome.json @@ -15,7 +15,7 @@ "rules": { "recommended": true, "complexity": { - "noThisInStatic": "warn" + "noThisInStatic": "off" } } } diff --git a/netlify/functions/cloudinary/index.js b/netlify/functions/cloudinary/index.js deleted file mode 100644 index 32eb2f2..0000000 --- a/netlify/functions/cloudinary/index.js +++ /dev/null @@ -1,62 +0,0 @@ -import crypto from 'node:crypto'; -import { v2 as cloudinary } from 'cloudinary'; - -const { USE_HIGH_QUALITY = false } = process.env; - -const search = (providerName, videoId) => - cloudinary.search - .expression(`resource_type:"image" AND folder="video_to_markdown/images" AND filename="${providerName}-${videoId}"`) - .sort_by('uploaded_at', 'desc') - .max_results(30) - .execute(); - -const useHighQuality = () => USE_HIGH_QUALITY === 'true'; - -const create = (source, video, options = {}) => - new Promise((resolve, reject) => { - const highQualitySize = 720; - const lowQualitySize = 500; - - // https://cloudinary.com/documentation/image_transformations#adjusting_image_quality - const highQuality = [{ height: highQualitySize }]; - - const lowQuality = [ - { quality: 'auto:low' }, - { if: 'w_gt_h' }, - { height: lowQualitySize }, - { if: 'else' }, - { width: lowQualitySize }, - { if: 'end' }, - ]; - - const overlayHeight = useHighQuality() ? '1.0' : (lowQualitySize / highQualitySize).toFixed(2).toString(); - const transformations = options.showPlayIcon - ? { - overlay: `video_to_markdown:icons:${video.providerName}`, - height: overlayHeight, - flag: 'relative', - gravity: 'center', - } - : {}; - const hash = crypto.createHash('md5').update(JSON.stringify(options)).digest('hex'); - const cloudinaryOptions = { - folder: 'video_to_markdown/images', - public_id: `${video.providerName}--${video.getId()}-${hash}`, - context: `url=${video.url}|provider=${video.providerName}`, - secure: true, - transformation: [...(useHighQuality() ? highQuality : lowQuality), { ...transformations }], - }; - - cloudinary.uploader.upload(source, cloudinaryOptions, (error, result) => { - if (error) { - return reject(error); - } - resolve(result); - }); - }); - -export default { - search, - create, - useHighQuality, -}; diff --git a/netlify/functions/cloudinary/index.ts b/netlify/functions/cloudinary/index.ts new file mode 100644 index 0000000..3cf2260 --- /dev/null +++ b/netlify/functions/cloudinary/index.ts @@ -0,0 +1,60 @@ +import crypto from 'node:crypto'; +import { v2 as cloudinary } from 'cloudinary'; +import type { Options } from '../types'; +import type VideoProvider from '../videoWrapper/VideoProvider'; + +const { USE_HIGH_QUALITY = false } = process.env; + +// const search = (providerName, videoId) => +// cloudinary.search +// .expression(`resource_type:"image" AND folder="video_to_markdown/images" AND filename="${providerName}-${videoId}"`) +// .sort_by('uploaded_at', 'desc') +// .max_results(30) +// .execute(); + +const useHighQuality = () => USE_HIGH_QUALITY === 'true'; + +async function create(source: string, video: VideoProvider, options?: Options) { + const highQualitySize = 720; + const lowQualitySize = 500; + + // https://cloudinary.com/documentation/image_transformations#adjusting_image_quality + const highQuality = [{ height: highQualitySize }]; + + const lowQuality = [ + { quality: 'auto:low' }, + { if: 'w_gt_h' }, + { height: lowQualitySize }, + { if: 'else' }, + { width: lowQualitySize }, + { if: 'end' }, + ]; + + const overlayHeight = useHighQuality() ? '1.0' : (lowQualitySize / highQualitySize).toFixed(2).toString(); + const transformations = options?.showPlayIcon + ? { + overlay: `video_to_markdown:icons:${video.providerName}`, + height: overlayHeight, + flag: 'relative', + gravity: 'center', + } + : {}; + const hash = crypto.createHash('md5').update(JSON.stringify(options)).digest('hex'); + const cloudinaryOptions = { + folder: 'video_to_markdown/images', + public_id: `${video.providerName}--${video.getId()}-${hash}`, + context: `url=${video.url}|provider=${video.providerName}`, + secure: true, + transformation: [...(useHighQuality() ? highQuality : lowQuality), { ...transformations }], + }; + + const cloudinaryResponse = await cloudinary.uploader.upload(source, cloudinaryOptions); + + return cloudinaryResponse; +} + +export default { + // search, + create, + useHighQuality, +}; diff --git a/netlify/functions/image-json.js b/netlify/functions/image-json.ts similarity index 97% rename from netlify/functions/image-json.js rename to netlify/functions/image-json.ts index 87628a3..16888db 100644 --- a/netlify/functions/image-json.js +++ b/netlify/functions/image-json.ts @@ -1,5 +1,3 @@ -// @ts-check - import cloudinary from './cloudinary/index.js'; import { create } from './videoWrapper/index.js'; @@ -30,7 +28,8 @@ export const handler = async (event, context, callback) => { return throwException(422, 'param URL is mandatory.'); } - let video; + let video: Awaited>; + try { video = await create(url, { showPlayIcon: getParam(event, 'showPlayIcon') === 'true', diff --git a/netlify/functions/types.ts b/netlify/functions/types.ts new file mode 100644 index 0000000..78cbb3f --- /dev/null +++ b/netlify/functions/types.ts @@ -0,0 +1,13 @@ +import type VideoProvider from './videoWrapper/VideoProvider'; + +export type ImageService = { + // search: (providerName: string, videoId: string) => Promise; + create: (source: string, video: VideoProvider, options?: Options) => Promise<{ secure_url: string }>; + useHighQuality: () => boolean; +}; + +export type Options = { + showPlayIcon?: boolean; + image?: string; + ImageService?: ImageService; +}; diff --git a/netlify/functions/videoWrapper/Providers/Asciinema.test.js b/netlify/functions/videoWrapper/Providers/Asciinema.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Asciinema.test.js rename to netlify/functions/videoWrapper/Providers/Asciinema.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Asciinema.js b/netlify/functions/videoWrapper/Providers/Asciinema.ts similarity index 85% rename from netlify/functions/videoWrapper/Providers/Asciinema.js rename to netlify/functions/videoWrapper/Providers/Asciinema.ts index 3491c04..42cea2e 100644 --- a/netlify/functions/videoWrapper/Providers/Asciinema.js +++ b/netlify/functions/videoWrapper/Providers/Asciinema.ts @@ -19,6 +19,6 @@ export default class Asciinema extends VideoProvider { } getThumbnail_asVideoUrl() { - return new Promise((resolve) => resolve(`${this.url}.svg`)); + return Promise.resolve(`${this.url}.svg`); } } diff --git a/netlify/functions/videoWrapper/Providers/CleanShotCloud.test.js b/netlify/functions/videoWrapper/Providers/CleanShotCloud.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/CleanShotCloud.test.js rename to netlify/functions/videoWrapper/Providers/CleanShotCloud.test.ts diff --git a/netlify/functions/videoWrapper/Providers/CleanShotCloud.js b/netlify/functions/videoWrapper/Providers/CleanShotCloud.ts similarity index 72% rename from netlify/functions/videoWrapper/Providers/CleanShotCloud.js rename to netlify/functions/videoWrapper/Providers/CleanShotCloud.ts index 083e1d1..68144e3 100644 --- a/netlify/functions/videoWrapper/Providers/CleanShotCloud.js +++ b/netlify/functions/videoWrapper/Providers/CleanShotCloud.ts @@ -23,14 +23,15 @@ export default class CleanShotCloud extends VideoProvider { return fetch(this.url) .then((response) => response.text()) .then((html) => { - return parse(html).querySelector('[property="og:image"]').getAttribute('content'); + return parse(html)?.querySelector('[property="og:image"]')?.getAttribute('content'); }) .then((image) => { if (this.options.showPlayIcon) { return image; } - return image.replace(/\/draw\(image\(.*\),position:center\)/, '').replace(/&?play=1/, ''); - }); + return image?.replace(/\/draw\(image\(.*\),position:center\)/, '').replace(/&?play=1/, ''); + }) + .then((image) => image ?? null); } } diff --git a/netlify/functions/videoWrapper/Providers/Dailymotion.test.js b/netlify/functions/videoWrapper/Providers/Dailymotion.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Dailymotion.test.js rename to netlify/functions/videoWrapper/Providers/Dailymotion.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Dailymotion.js b/netlify/functions/videoWrapper/Providers/Dailymotion.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Dailymotion.js rename to netlify/functions/videoWrapper/Providers/Dailymotion.ts diff --git a/netlify/functions/videoWrapper/Providers/Facebook.test.js b/netlify/functions/videoWrapper/Providers/Facebook.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Facebook.test.js rename to netlify/functions/videoWrapper/Providers/Facebook.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Facebook.js b/netlify/functions/videoWrapper/Providers/Facebook.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Facebook.js rename to netlify/functions/videoWrapper/Providers/Facebook.ts diff --git a/netlify/functions/videoWrapper/Providers/GoogleDrive.test.js b/netlify/functions/videoWrapper/Providers/GoogleDrive.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/GoogleDrive.test.js rename to netlify/functions/videoWrapper/Providers/GoogleDrive.test.ts diff --git a/netlify/functions/videoWrapper/Providers/GoogleDrive.js b/netlify/functions/videoWrapper/Providers/GoogleDrive.ts similarity index 83% rename from netlify/functions/videoWrapper/Providers/GoogleDrive.js rename to netlify/functions/videoWrapper/Providers/GoogleDrive.ts index f3983c1..db51049 100644 --- a/netlify/functions/videoWrapper/Providers/GoogleDrive.js +++ b/netlify/functions/videoWrapper/Providers/GoogleDrive.ts @@ -19,8 +19,6 @@ export default class GoogleDrive extends VideoProvider { } getThumbnail_asVideoUrl() { - return new Promise((resolve) => - resolve(`https://drive.google.com/thumbnail?authuser=0&sz=w1280&id=${this.getId()}`), - ); + return Promise.resolve(`https://drive.google.com/thumbnail?authuser=0&sz=w1280&id=${this.getId()}`); } } diff --git a/netlify/functions/videoWrapper/Providers/Imgur.test.js b/netlify/functions/videoWrapper/Providers/Imgur.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Imgur.test.js rename to netlify/functions/videoWrapper/Providers/Imgur.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Imgur.js b/netlify/functions/videoWrapper/Providers/Imgur.ts similarity index 83% rename from netlify/functions/videoWrapper/Providers/Imgur.js rename to netlify/functions/videoWrapper/Providers/Imgur.ts index 721c16c..b68d9b8 100644 --- a/netlify/functions/videoWrapper/Providers/Imgur.js +++ b/netlify/functions/videoWrapper/Providers/Imgur.ts @@ -15,6 +15,6 @@ export default class Imgur extends VideoProvider { } getThumbnail_asVideoUrl() { - return new Promise((resolve) => resolve(`${this.url}.jpg`)); + return Promise.resolve(`${this.url}.jpg`); } } diff --git a/netlify/functions/videoWrapper/Providers/Loom.test.js b/netlify/functions/videoWrapper/Providers/Loom.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Loom.test.js rename to netlify/functions/videoWrapper/Providers/Loom.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Loom.js b/netlify/functions/videoWrapper/Providers/Loom.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Loom.js rename to netlify/functions/videoWrapper/Providers/Loom.ts diff --git a/netlify/functions/videoWrapper/Providers/OneDrive.test.js b/netlify/functions/videoWrapper/Providers/OneDrive.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/OneDrive.test.js rename to netlify/functions/videoWrapper/Providers/OneDrive.test.ts diff --git a/netlify/functions/videoWrapper/Providers/OneDrive.js b/netlify/functions/videoWrapper/Providers/OneDrive.ts similarity index 95% rename from netlify/functions/videoWrapper/Providers/OneDrive.js rename to netlify/functions/videoWrapper/Providers/OneDrive.ts index e980bef..0635edf 100644 --- a/netlify/functions/videoWrapper/Providers/OneDrive.js +++ b/netlify/functions/videoWrapper/Providers/OneDrive.ts @@ -50,7 +50,7 @@ export default class OneDrive extends VideoProvider { if (redeem != null) { this.log('auth', 'authentication required'); - const [, appId] = text.match(/"clientId":"([\w-]+)"/); + const [, appId] = text.match(/"clientId":"([\w-]+)"/) ?? []; this.log('appId', appId); const auth = await fetch('https://api-badgerp.svc.ms/v1.0/token', { headers: { @@ -109,7 +109,13 @@ export default class OneDrive extends VideoProvider { }); } }) - .then((res) => res.json()) + .then((res) => { + if (res == null) { + throw new Error('Cannot elaborate the request.'); + } + + return res.json(); + }) .then((json) => { const [firstThumbnail] = json.value; diff --git a/netlify/functions/videoWrapper/Providers/PeerTube.test.js b/netlify/functions/videoWrapper/Providers/PeerTube.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/PeerTube.test.js rename to netlify/functions/videoWrapper/Providers/PeerTube.test.ts diff --git a/netlify/functions/videoWrapper/Providers/PeerTube.js b/netlify/functions/videoWrapper/Providers/PeerTube.ts similarity index 73% rename from netlify/functions/videoWrapper/Providers/PeerTube.js rename to netlify/functions/videoWrapper/Providers/PeerTube.ts index 9a7623f..a1796cd 100644 --- a/netlify/functions/videoWrapper/Providers/PeerTube.js +++ b/netlify/functions/videoWrapper/Providers/PeerTube.ts @@ -19,7 +19,7 @@ export default class PeerTube extends VideoProvider { return fetch(this.url) .then((response) => response.text()) .then((html) => { - const platform = htmlMiner(html, (arg) => arg.$('[property="og:platform"]').attr('content')); + const platform = parse(html)?.querySelector('[property="og:platform"]')?.getAttribute('content'); if (platform !== 'PeerTube') { throw new Error(`'og:platform' does not match PeerTube`); @@ -28,7 +28,8 @@ export default class PeerTube extends VideoProvider { return html; }) .then((html) => { - return parse(html).querySelector('[property="og:image"]').getAttribute('content'); - }); + return parse(html)?.querySelector('[property="og:image"]')?.getAttribute('content'); + }) + .then((url) => url ?? null); } } diff --git a/netlify/functions/videoWrapper/Providers/Streamable.js b/netlify/functions/videoWrapper/Providers/Streamable.js deleted file mode 100644 index dabd118..0000000 --- a/netlify/functions/videoWrapper/Providers/Streamable.js +++ /dev/null @@ -1,34 +0,0 @@ -import VideoProvider from '../VideoProvider.js'; - -// https://support.streamable.com/api-documentation - -export default class Streamable extends VideoProvider { - get providerName() { - return 'streamable'; - } - - static get regex() { - return [ - // - //streamable.com/1nvj5i - /https?\:\/\/streamable\.com\/([a-z0-9]+)/, - ]; - } - - getThumbnail_asVideoUrl() { - const endpoint = `https://api.streamable.com/oembed.json?url=https%3A%2F%2Fstreamable.com%2F${this.getId()}`; - - return fetch(endpoint) - .then((response) => response.json()) - .then((json) => { - const cdns = ['-west', '-east']; - const thumbnail_url = `https:${json.thumbnail_url}?height=540`; - - const thumbnails = cdns.map((cdn) => thumbnail_url.replace(new RegExp(cdns.join('|')), cdn)); - - return Promise.all(thumbnails.map((tmb) => fetch(tmb))); - }) - .then((results) => results.filter((result) => result.status === 200)) - .then((results) => results.shift()) - .then((result) => (result ? result.url : Promise.reject())); - } -} diff --git a/netlify/functions/videoWrapper/Providers/Streamable.test.js b/netlify/functions/videoWrapper/Providers/Streamable.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Streamable.test.js rename to netlify/functions/videoWrapper/Providers/Streamable.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Streamable.ts b/netlify/functions/videoWrapper/Providers/Streamable.ts new file mode 100644 index 0000000..61f843c --- /dev/null +++ b/netlify/functions/videoWrapper/Providers/Streamable.ts @@ -0,0 +1,28 @@ +import VideoProvider from '../VideoProvider.js'; + +// https://support.streamable.com/api-documentation + +export default class Streamable extends VideoProvider { + get providerName() { + return 'streamable'; + } + + static get regex() { + return [ + // - //streamable.com/1nvj5i + /https?\:\/\/streamable\.com\/([a-z0-9]+)/, + ]; + } + + needsCloudinary() { + return true; + } + + getThumbnail_asVideoUrl() { + const endpoint = `https://api.streamable.com/oembed.json?url=${encodeURIComponent(`https://streamable.com/${this.getId()}`)}`; + + return fetch(endpoint) + .then((response) => response.json()) + .then((json) => json.thumbnail_url); + } +} diff --git a/netlify/functions/videoWrapper/Providers/TikTok.test.js b/netlify/functions/videoWrapper/Providers/TikTok.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/TikTok.test.js rename to netlify/functions/videoWrapper/Providers/TikTok.test.ts diff --git a/netlify/functions/videoWrapper/Providers/TikTok.js b/netlify/functions/videoWrapper/Providers/TikTok.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/TikTok.js rename to netlify/functions/videoWrapper/Providers/TikTok.ts diff --git a/netlify/functions/videoWrapper/Providers/Video.js b/netlify/functions/videoWrapper/Providers/Video.js deleted file mode 100644 index fddab27..0000000 --- a/netlify/functions/videoWrapper/Providers/Video.js +++ /dev/null @@ -1,22 +0,0 @@ -import VideoProvider from '../VideoProvider.js'; -import { videoRegEx } from '../videoRegEx.js'; - -import crypto from 'node:crypto'; - -export default class Video extends VideoProvider { - get providerName() { - return 'video'; - } - - static get regex() { - return videoRegEx; - } - - static getVideoId(url = '') { - return super.getVideoId(url) ? crypto.createHash('md5').update(url).digest('hex') : undefined; - } - - getThumbnail_asVideoUrl() { - return Promise.resolve(this.options.image); - } -} diff --git a/netlify/functions/videoWrapper/Providers/Video.test.js b/netlify/functions/videoWrapper/Providers/Video.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Video.test.js rename to netlify/functions/videoWrapper/Providers/Video.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Video.ts b/netlify/functions/videoWrapper/Providers/Video.ts new file mode 100644 index 0000000..27deb13 --- /dev/null +++ b/netlify/functions/videoWrapper/Providers/Video.ts @@ -0,0 +1,25 @@ +import VideoProvider from '../VideoProvider.js'; +import { videoRegEx } from '../videoRegEx.js'; + +import crypto from 'node:crypto'; + +export default class Video extends VideoProvider { + get providerName() { + return 'video'; + } + + static get regex() { + return videoRegEx; + } + + static getVideoId(url = '') { + return super.getVideoId(url) ? crypto.createHash('md5').update(url).digest('hex') : undefined; + } + + getThumbnail_asVideoUrl() { + return Promise.resolve(this.options.image ?? image404); + } +} + +const image404 = + 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAjwCPAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDABQODxIPDRQSEBIXFRQYHjIhHhwcHj0sLiQySUBMS0dARkVQWnNiUFVtVkVGZIhlbXd7gYKBTmCNl4x9lnN+gXz/2wBDARUXFx4aHjshITt8U0ZTfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHz/wgARCALQBQADAREAAhEBAxEB/8QAGgABAQADAQEAAAAAAAAAAAAAAAECBAUGA//EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAeSQAFAAIUEAKQoICggKQoIUAAEKCFIAAUAgKQpCkKCFAIAUhSFAAIUhQACFBCggBQCmIBSFIUhSFBCgApiCkKAQoICkBQQAoBCkKQoICggBQQoIUhQQFAICggABQCFAIUhQCFBCghQQFIUAEBSAAoAAIUhSFMTIgKCFIUAAhSAFBCkKCApAACkKACFAIUAhQCGRCFIAUEBSFIACghQAUGIAKQApAUEABSAFBCkKAAAQFAICkBSFBAUAhSFIUEBQQAoABAUhQCFIUFICApACkAKAAQApAUEKCAoIUgKAQoBiUFBCgAAhSApCkKQpDIhCgAhSFKQhQCAoABCkKAQyMQUpiZGJQCApAUhQAQpACgEKCFIUAgAKAAQoICgAhSkIACgEKCAoAABAUFIAAACFKQpACFBAUEBQAAQFIUAhSAApAAAUgAKCFBCgEKCFAIUAhSFAIUhSFIQoIUoIAUgKQApCgEBDIAEBQCFAAIAUhSAoBAUgKQoAIACgAEKAAQoIUAAhQQGRCFAIAUEBSApACkAKCFABAUgKCAoICkKAACFBCkKQpAUAhSFIAZGJQQoIUhSFAIUApAAAACFIUhQQpCggKCApCgEBSAFABCkKQAFBAUAAAEAABQACAEMgQAAoIUAgKCAhkCFAAIUAAhSFABCkKAQoIACgEKCAFIUEKAQFIUpACFBAZEBCkAAMiAAgBSFABAUgKQAAGRCAAFICkABSFAAABCkKQpCgAgKAQyIQFAICkBQQpAUEKAAACFBCghQQpCghQAAQoIAUpCFIUEKCFBAAQpSFBCgAgKQpAUEKQApTEpCkAKQApCghQQoAABAUhQCFIUgKCAoBACkKQpCgAAAFIAQoAABTEoBAUAEKCFAABAUgKCFBCgAAhQQpCgEKAACAAoBACkAKAACApAAUhQCFBCkABSAoIUgKCAFIAACggKAQoBAAUhSFIAUEKAQFICkKACFIUhQAQApCkBQAAQApCkKQoAAAIUhQQpCkBQQApTEAFBACgAAAAEKAQpAUEBkYlBCkBSFBCghQQAAFBCghQACAFABAUEMiEKAYlKAQpCkBQQFIUgKAAAAAAAQpCgAAgBQQFAIUgMiAEMiAEBSmJQUhAUAAhSApACgAxMiAAAoIAUgKQFIAAAClIAAQoICghQAQFAIZEAAAIUgABSFAAIUAAEKCAoAIUEKQApCgAgBSFBAUhSFIACgAAgKQoAICkKCFICkKQoAICggABSApAUgKAQApAAUEKACFIUAEMiAhSAApAUgAABQCApCgEKQApAUAAgBSFBCkKQAAoABCggBSFBACgEBQAACAFBAUgKCFAAAIUAhQAQpCggKQAFBCggBSFIUApiUEKCAFICkKCFBACkBQAQAAoIUAEBQQAoBCghQQFBAAUEKACFICkBkYgoAIUAhQCAoAAIAUAhSFBACgAAEKAAQoIAUgKQAoIUhQAAAAQFBAUAEKQAAoAICkBSAoIUgKQoIQyICkKCAAAoIUxKUAgBSAoAAIUEKACFIUEAKAQoICkKQpCgAhSAFBCgAgABQAAAQAFICkABSFABAUhQQpCkKAQoAIUhQQpCgEKCAoBSAAAhSFAAIUAEKQAFIUpACFIUAhSAoABCggBSAoICkKQAoIUhQQoAAABACkAAKAAAQoABACghQAAQoBAAUEKAACEKAUgKQFBCkAKCAApCkABQQFAICkKAACAoBCgEKQoAIUgMiAAApiUgBQAAAAQFAAAAAIAUEKAQAAFAAIUAhQQpCghQAAQpCkKQhQUAgKQpAUhSAoIUAhSApCkBSkICgEKQGRACAoBCggABQAACFIUAhSFIUAgBSAAoAAAAIUAhSkAAAIUEAKUxBSFABCgAAhQAACAoBDIxBSFBAAUAgKUhACghSFAIUhSFIAUFIQFIUFIQoABAUgAKQoAICkKAQAApCgAhQQApACgEAKQAFAICkKQoAAIUAhQQFBAUEKYmRCkKAQoBCgEAKQFIUhSFIAUAAgKQoIQyABCgEKCApCkBSFAIAAAAUxKUgKAAAAAQpACgEAKQoIUgKCFBCghQQAApACkKCApAClMSghSAFIUgAKQoABSAAEAAKQpTEFABCgAEKQpCkBSFAAIUEAKQoAIAUgKACFIACghQAAAAUgBCkKQoICgEBSAFAIAUEKQpAAUEBSFIUAAAAAhQCFABAAUEBSApCkBSFAAICgpAAQpCghQQpAUAEAKCFBCkABQQoIAUAEBSAoBACgAAEKCAFABCkBSFAIAACgAgBQCAAFBAUhQCFBCgFICFAIUhSFBiZEKQoBACkBSFICkBQAQpCgAAAhQCFIUEBQCFAIUEKQpAACghCgApCghSAFAIUAgKAQpAAUhSFBAUhQQApAUAAxKCkKAQAoIUAAhQAAAQoICkKAQFABAUhQAUhCkKQApCgAAgIZAEBQCAAAoABCkKACFIUhSAoAIUEBQQFAAABSAAEKQpACkBQQFIUAAhQAAAAQAFIUpCFBCgpAAUgIAUApACAoIAAUhSFBAUAhQCAoIUgKQoIUhQACFAAKYlAAABCkKAQoAICgEKQAoAIUAhQCAoIUAhSFBAUhQQAAoIAQpSFBAAQyIUAhSFAAIUAgKQpCkAKQFIAUAAEBQQFIUAEKACFICkKAQoBDIgICkBSmJSApAUAgBQCAoIUhkYlICgAEABSAFIUgKQoAAICgAAAhCgpCgAEBQQFAABACkKQpACkBSFIAUEKQFBCghQCFBCkKQoAAIAUgABSFAICggBQCApCkAKQAFAIUAFIDEyIUgBQQFBCkKQAFIAUEKCFIAUAAAEKQAoAAKQAhQAAQFIAUGJkAQoIDIxBSAAAoABCggBSFICkKQFIUgAKQpAUGJkQoIAUEKAAAQpAUgKCFBTEAFABCgAEBSApCkAKCAoIUgKQpCkAAKCFABCgAgAKQpAZGIKQoBCgEKCFBACgEKQAFIQyAIUgAKQpCkKAAAQFABAUEKCAAhSkAKQoIUhSAFIUhQAACFICggAKUxAABSFBAUAEKCEKUhSFIUAhQYlKQpACggMjEpACkKQFAAIUAhQAQFBAUgIZAApAAACAFAAABCkBDIEABSAoIUhSFBCghSFAIUgBSApSFBACFBDIhCkKAQpTEApAUEKCFAAIUEMiAAgKQAAFAIClBiUEAKAQpAUhQQoBCgAhSFIUgKQpClIAQAFIAUAAgKQpCgEBQCAFBCgAhQQFBAUhSkIUAgKCFIUAEBQAQpCgEAKAQFIACkAKQFAABAUgKAAACAoIQyBAUAAhSFIUhQACFABSAgKACFBAZGJQQoICkBSAFBCkKQoBCghSFIUEBQQoICkABQQFIACggABSAFABAQyIUEKAQFIAAUEBQCFBCkKQoICkKQoBCkBQQpAUhQACFIAAUEKUgIAUAhSFIACggBSAoBCkKQoIUAhQCApACgAAgAAKAACAFICkBSAFBAAUEAAKYlBQAQyIQoICgEBSkAIUEABSFABDIgAIAUhQQAoBAUhQCFABACgEAABSFKQgKCFICkKACFAICgEKCApCgAAEKQFBCkBSApAAUAAEBQACAFBAUAhQCAAFAAAABCkABSAFIAUAAhQACFBAUgKQFIAUgAKQAEMiAFB9CnzMSggBSFBCkKAACFAIUgBSAoICggBTEoKQoIAUEKQoBCkKAQpAUAEKCFIUAgBSFAIUgAKAQFICghSAGRDEoAKQoBCgAgKAQoIDZOmAa5zCAFBCghkdI6BtGQB8TSOWa5AAAAUAhQdooMTkGJCmJSggKCFICgEBSFBCkKQpClMSkBSAoABCgAhQACFIAAAUAEKQFAIAUAAAgKQpAUAAgAKAAAACFB6U2gDzZqEAKQFB9z0BsAAAAHIOOAAQoIUgKdc7AByTjkIUhQQpAUgAKACFIUEKQoAIAUhQAAACFIUhQCApCgEKCFIUEKQoAAIAUAgBSFIUAEKAAAACFAIAAdQ7gBzThEAKCAp9j0p9AAAAADlHFAIACggPueoKD4nmDAFBCggBkQAAhQQoIUgBQAQpAUAgBSAFBACgEBSFIAUAAFMQUgKAUhAUEAKQFKYlICggBQQoAABCkAPqeoMwYHlz5FIUhSAHpTbANc45qmJ9jonUKAedNIEKAQpiZHojdAPPGiUgBAAUgKACApCkKAQpCgAAEKQAoIZEKQgBQAQoIUgKAUgICgpiUAAgAKCFAIUEKQoIUEBQCAAoIUEB3zogHCOYCkBQQpvnoADUPOEAIU3z0ABrnmTEoKYgA6B6AA0TzwBAUAgKAQpCgAgBQUgABTEoICkKAQApAUhSAAoIUhQAQpCghQQFAAICgAAgKCFIUgKAQFABCggBQDcPRgGqebMQCghSFPRm4CHlz4FBAUh3jpAHnDSKCFAMz059QYnmD4ApAAAUEKCkMTIFIACAFBCkAKCAAoAICghClBCFKQpACgEKQoIAUAhQAQoIUEKQAoIUpCFAAICgEKAAeoPuCHmjVBQAUxKZnqyg55wCAoAIbJ6cA5ZwwAAU7R1QDjnIBCggAKACAoIUAgAAKQpADIgAIUhQCAoABCgEAAKACApCgApACFBAACghQCAFBAUEBSFBAAUAhQdc7AByziEKAQpAU3j0IBwDnAFIUEKepPsDWPMkBSA2j0pQfA8wQAgBQUxKCFICgAAhQACFBAUgBQCFIUAhQAQoBAAAUhQQpCgAhQQFABAAAUAhSAFIUAAAAEBQAQ2D0xkD5nlzAgBSApAdY7QB5Y+ABQCAHoTfBieSAIUHpTaAPOmiCgEBClAAICkAKQAoIUgKAAQoIUEKQFAICkBSAFICkMjAyIUEBQAQpCkBQCAoIUhSAAoIUpAAQAFAAIU9CbwBwDng6x9gaxzCFIDuHUAPIAhQQFAO0dUA8ofIoB0zuAHPOADeN4EOIAAAQoABCkKAACAAApAUAAAhSFIUgAAKACAAFIAAUEBQQAAAoIAAAAAUhQCAFABAUAG+egANM86QHpjZBoHnwADvHRBgeTAABAUh2DsAHlzXAPqeoMwYnlz4lOudgEPJGIKAAAAQpAUhSAFAAABCgAAgKUgICgAEBQCFIUgBSAoBAUAxMiAAFBAUEKCAFBAUhQAQAAGZ6g+oIeYPgQp6Y2QaB54AA750QfM8mAUhQQpDrnZAPLmuUHeOiAcU5RAdg7AIeSICFICkKQoIAAACkKQFBCgAAhSFAAABAUAEKAQFIUhQQoBAAUEAKACAFBCggKCFIUEBQUhAAds6oByTjEAPTmyDRPPAgB3Tpgh5EAEBQAdg64B5U+QNs9IAa55gAHXOwCHkjEpAUEKCFBACggKCFBACkMiEKAUhAUAAgKAAQAyIACFIUgBSApCkABSFIUAhSAoIUEBSAFKQpAAfU9SUA5xiADfPoD4mkDlmsDsnXAPKHyKCFBAU7p0gDyJiU9KbQBqGuADZNoA5pDVOaQoBCgAhSFIUgKACFBCgEKCFAIUAAEKAQoAAICkKAAQoIUAhQQAoAICghQQAoABSEKYlKAbB6cAAAAAAA88aIOid4A84aRQQoBAemNoHxPLAHqD7gAAAAAA5pwgQAyIQFAAABCgEKAQoBAACghSFAAIUAEKAAAQoIUAEKAQpCkKCAyIQFAKYgFAIAACgAhTYPTgAAAAAAHnjQKfc9QAck4wBAUAzPVlBzzgAHqD7gAAAAAA5pwgCAoBAACGQIUEKAACFABCggKAQoAAAIAAUhSAoAICgAAgBSFIUgKQAoIUAhSAoBCkKAD7HdAAAANoyB8zXBxzTBT1J9gfI8sQhQAQ6p2wDhHNAO8fUAAAH2PsAahDSOSCkIUAEBQQpCFKQpAAUhQQpAUEKAQAApAUAgBQCAoIUAgKAQAoAAAIACghSApCkIUoBCghQQpCggBT0xsg0DzwBSA7B2ADjnIAIAfU9OfQGJ5QxAIUhSApAdg7AIeRIAUEBSFAIUEKAACFABAUhSAApQYgpCgEKQApCggABQQoABAUApAACFBSEBSApACggBQACAFAAAIAenNkGgeeAKAZnqTMA45xwAbJ3jZAOQcYoBCgEKCFOudgEPIgFICAyIQpCkBkDEpAUhQAQoAICghSFIAACkBQAAQoIACkABQQAoIUEBQQoBCkAAKQpCkBSApAUhSFIUAgPTmyDRPOgFAIdE74AMDVMT7GyADWPNEBiZEKCAoIU652AQ8kQAAEABQQAoIUhQAQoBAACggKQFAICgEKQAhkQFIUAgBQAQoIUEKQoICkMjEAAApCkKCAFIUFMQUEKAAemNkGiedKQpCgHVO0AAAAD4HnD4gpAUgAKADsHXBDyRAUxBQCFIUAAAEKUhAACggKQFBCkBSGRAAQpCkBSFAICkBQACAoAIUEKQFAIUEAABQQpAAUAAEKQpCkKemNkGieeAIUhQDcOybQAAMDmHIMQQFAAICgA652AQ8mYAApCkKQFIUAgKAQoIACmJQUgKQpAUEKAQFAAIACgAAgAKCAoICgEAKQoBACggMjEFBAAUhQCFICgEBtGRT5HwBCgEABT7G0fYGJrmoQEKYlKQoAKQAH1PsQpqEAKQoAIUApiAAUgBQCFAIAUEKQFIUEBQQoICghQQpCgAgBQCAoIUAEKCFIUhQACFIUEBQQpAUpiUgBQAQoIUEKCAFAAIUhsnxMTYNYoPufAh9DdIaBAUEKQFIbhrmBCkKCAyMQUEKAACFBAUAEKCFIUAhQACFIUEAKQoAICkKAACFIUEBSFICmJQUEAKCAoIAUEAKCFIUAAAhQCFABCkBQQoB2D7HDOwc06BonSNQ5huG2aZ8zpmmDVNw+ZtGJzzqGwcY+QIAUhQQoBAUEAKQAFAABCkBQQAoIACkKAQoBAUpiAUAAAgKQpCgEKAQoAIUgKAQhkQFIACghQQFABAUEKCFBCgAEKDsGqbRkU4h2j5HNMDaOsaZ9TjHbPkcw6x8DXOifA0zfOcfAAAoAAAIUEBSFAIQpSFABACkAKQFIUAgKAAUgABAACghQQAApCgAEBSghCkBQQApCkBQUgBAUEAKQApCgAhQCkKQHXOUdM+h8jMh8T7nHNs+hoHSPsZGobh9jQNY6BonRPscc+poGRCFAIUEBQAQpCkMjEFBSAhQQFIUAEBSAAFAAIUEKYmQIZEKYgFBACggKQoBCggKQpAUAgKQAFAAAAIUgMiEKAQpAACgEBQCApClMSggKQpTEoAAIZGJQQAoIUAEKQpAUgBQQFIUhQCFAIUAgKCAoBCggABSAoBCghSAAApACggAKCAoAAIUhQAAAQpCggKAQpAAUhSAyIQFAICgEBQQFIAACgEAKQpAUgKQoBACgEBQCAAoIACkKQpAUhQAQpAUAAgKQoABCgEKQoIAUEABSmIKUgAIUAEAMiAhSFIUEKQpCgAAAgABQAQoIAUhQCFICgAhSFAIUhQAAAQAAFIUAgBSFIAZEMSlAKYgyIQpTEpAAUEAKQFABTEoAICgAEAKAQApCgEKQFIUAEAIUFIUgKACAFAIUEABQQAoBAUAAgKQFAIUAhSFAAIUhSFBCFBSFICggBDIEBkQhQACFIAUhQQpCgEAKDEpQACAoAIUgAKUgICkKQAoIAUAhSFIUAgKAQoIZGIKQoAIAUEKAQoIUAhQQpCgAAEAKCFBCgEKQFBACghSAoAIUEKQoBiUpAUAhSFBACgAhQQAFBCgEAKQAAFIUhQCkAICgAhQCFBACgEKQpCgAhQAACAFAIZGIKAAQAFIUgAABQCFIUgBQAAQpCkAKQpCgAEKAAAAQFAIUEKCAFBACkBSFABAUhClBCggKQAoBSAhSmIKAQoBAUgBSAoBTEAFIAUEKAQoKQAEBQQpCggKQoIUgKQpSEKQApCggAKCAApACgAEKQpCkAKQFBACkKQFAICgAAhQACAhSggKCFAIUEBQQoABCgAAEAKAACAoAIZEAICkMiEBSAoICgEKCFAAIAUAEBSFICkBQACFAIUAAEKQoBCkBQQFIACgEKAQFIAUEAKQAFIAUEKCGRiUEKCAoABCkKQoBCkBQAAQAoIUAEBSkAICkBSAAAoICkKACFABCgAAhSApCggKCFIUhQCFABAUAGJkCFIUAEKQoIAUgBSAAoAABAUAhQAQpAUEKCAApCgAAAEAKAQpAAUhQAAQAoBAAUAEKAACAAoIUAAgBSFIUgKCAoBCggKCAFBAUhSFICkKCAFIAUhQQoICkKUhAUhQAQAFBCFBQCAoAIAUhQQAFIUpCFIUAAAAEKQFBAUEBQQpAUEKAAQoBCgAgBQQoBAUgBQCApACkKQoKQAEAAKQpCghkYgFAIUEKAAAQoIAQyAAICgEKQpCkKAAQFIQoKCFBACgEKQoIUEKQpAUEAKAQFABAUAAhQQFIUgBQQApACggKAQoBCkBSFBCgEKCFIUAAhQAAQoBCggKCFIUEBSAFIUEBQQEKUgBQCFIUEBQCAFIUAhSAAoIACgEBSFABCkKQFAIAUEABQCAFIAUAhSApDIhAUEKQpAAUhQCFABCkKCAoBCgAhSApAAAClMSkKAACApCkKQFIUgBSFIUAEBQQoICghQCFIUhQQFBCgAEBQCApCkBQAAAQpCkAABSFAAICghSFBAUgKACAoIACkKQpCgEKQApCghQQyMSkBSGRAQoBCgEKQApAAUEKQFIUAEKCFIUgBSFIUpiAAUEKACAFBCgEBSApCgAAAhQCApCgEKCFAAABAAUEKQFAKQEKAQoABAUAhSAFIUhSFIUAgABQQpCgAEAKYgoIZAgBQCAAoBCkKCApAUEBQQAoAIUpACAoICkKQFBAClIAQoIUhSAAAoAAAIACgEAKQoICgEKQApAUxMgUxBQCFABSEKQFBCkAKAQFAABACkBQAQpAACgAAAhQACAFKQpACFAIUgBQCFBiUoMSgFBAUEKCAoABCghQAACFAIUgKQFIAUAAhSFIUgKAQyIACFBCgAEAAKCFBCkBSAFICgAAAAhQAQFBAAUgBQQpCgAhQAQFAAAIUEBQCFIUhSmJSAoAAIUAEABQCFIUgBSAhQUAhQACFIUEBSApACghSApCghCgoABCgEBQCAoBiZAhSAFIACgEKACFIUEKQoIAUAAgAAAKQApCgEKUhCggKAAQAoABCggKQFAAIUAAgKQApTEpCkBQQAGRiACkBSApCkKCFIUEAMiAhQCApACgApCAAoAIUAgKQFBCgEKQAFBCkKCAFBCkAKCFAICggKQFICkBQQAoMSgGRAAQoBSAgKCApCgAEBQQoA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ACQQSCQCSSQCQCCASCSQASSSASQQCCQSCCAQCASACQSQAQCCASSQCCSSSAACCQAACCQAQSSQAASSCAACCSSQQASCCQAQQCQCAQAASACQCQCSQSCSACQSQAAAAAAQSCAAAASASQCQQCCACCSQSAQCSCCQCCSAQASQSQAAACQAACCQACSSCQASAQACAQASAQQASQCCCQSCAQAASQSAQAAQAAQCACAACSAACSACACQSCAAQAQAASQSQSSCSQACSCSCCACQAQQSSCCSQAACQQQQACCCAAACASCASSAQCQQCQCCCQASCSCQASACAQQQQCSCQSSCAACASSCQCCASASAAAAQCACQAQQSQQCCSACQAAAAQCCACSQSQCQQSAAQSAQACAQAQSCSCCQSSAAQQQCSCSCQASQCASACQAQAAAQACQASCAASAAAQSQQCASQQQCCSCASSSSQQASCSAACQQCCCQSAQQSQSSASAACSSSSASSCSCCQSCQCCQSSSQQQCCSCSCQASSQQCCCSSSCCASQQCSCAQAQSSQAQSQQAQAQCSQCCQSASQCASQSQQCCACCCAQSSSQACQCCQQAQSQCQQQCASAQSCQQSCSSAQSCCQQAQQQCQQASQCCCACQCAACSASCQSCAAAAASQSSQSSSSACQSCAAAQCCSSCASQQCQQASQCQAAQCCACCASAACCQAQQCCSSASACCSCASCSSCASSCQASSAQQQASQCAQQQASCQAAQSCSAAAACQQCCAASAACASASQCSASCQSSQCCAQAAAQSQSSAACAQCAQACQSSQQSSAASCQSSCQSAQSSSQQQSSSQACQQASCQAQCQSACCASCQCCQCAAQCSCSSCASCAAQQSCQASCCASSQACQQQASCACSQQCCSASCCQQQQSAACSAQSACSASQASASSQSSQASASSACAAAQQQASCAQCSQQAAAQACSCCACQCQSQASCCCQCSQQAACSCACACSCCCAAAQCQSACCQSQCSQCASSSSSQASQSAQCQSQAAAACASAAQAQCQQQACASQCCCSACAAQQQSSACAAQSSQQQACSQSQSAQAAASAQCSASSASSQAACCASSQAQQCSSSCCQSQSCSSACAAACASCACCQQAAQCQCCCAACQQQQCSACACSQQCAACQACACQQCAQCSSACSQAQSSAQCSAAQAASACQQQSSSCQASAAACQQQQAQSCQCAACQAACQAAACCSQCCAQACQAAQCSQAASSASSSQCASACCSASCQSCQQASACACASSQCCQCSCSSQQQQAAACAQCQQCCACCQQCSQCQAQSCCSACASQQQQAACASAASQSAQSQSAQSAAAQQAAQSQSASAQQCQSAACACQSCQACQCCQCSQQCACQQCACCQASASQCAAASAAAQASACASCAQACAAAAQCCQACQAQCACCSQQCSAASCCAACCACQCAQQSSQSSASQSQAAQSCCCASSCCAAAQCQASSQQSQCQQCSSQSCQQCSSCASCAQCACAQQQQCCQAAACASAAAAQACQQCSSQQQCQCSQSSCCACQSCAQQAAAQCCCAQQSQCQACACSSQAASCSAAQSQQQSQSAASSACAQSQAAQQQAQCQCSQCSCQSSACQQSQACACAAACCCCQSAQACSCSSSACSQQAASCQACAASCAASCSSQSQSQSSSSQAAQSSCSQQSASAQQSCQQCSAQAACQCCQSAAAACCSACQSCCSASAQCCAACCQAACCASSACQCCAAQCAQCAACCCSCAAAQQQQQAAQSAASQQACSQCSQSCCSSCACSSCQCSSCSQQSAQACASQQQQAQCQQSASQQSCQSQAAQCASSACSCAAACSASSSSACCCSSQCCCSCCAACQCASSQAACAAQSCACACCSAQCAASAQACCCCCQASSCCCQQASQASCQQQQCCQQSAACSSQSCCCQQSSCASASACSSASQAAACCQCAAQCASSQCAAQASQCQAAQQQCSAASCQCQCQAAQSQAAAQAQQSCAQQQQSQQSQSQSCCAAASQQCQCAQCSQCSCQCSQQSQCSSAQQAQCSCASACQQSSCQQQQCSQQQCQAAQSSSQACSAACCSSSSCQAAQSCCCACSSQCACCSSAASCCSSQCASCQSSQSQQCAQQQCSAAQASSACAQAACQACQSSAQASQSSASSQQQASACQSQSQCAACASQCAAACSSCSSASQAACSAQQQCQASACSSASAQSASQSSSQQASCAQCQSAQQQSQCCCSCSASASQQCCQAQSQQQQSAAASASSSASAQSCAAAQSQASQSCCCCCSCSCAQCASAQQQQSCAQACQQQCCSCCCAAQASSQASSSCAQQQAQSCSSACQSCSAQSQQQCASSASSCQQAASSSSACCCCQCQQQQSCCQCAQCCACAAQCSAAQCCCSSSSQSACACCQSSASASQSSSQASQAQQACQQAAACCCSASQQAQCCAQQCACSQCSCCACSAQCQCQASSSSAQAAQASSSSSSCCSQCQCSSASASQAASCQCCSQAQCQCSACAQQQQCCSAQSCQSAQASCASQCCSASQSCAAQCSSQCCCCSCSCQASSQSCQCQSSQCCCASSAQSCQCCAQACAQSQASQAASCCQQAAQQSSCCSASQQSCACCSCASCQCSSSSCQCASSSCQASAQACSSSQAQACACSAACSAASACASCASCCAQSQAQQCCSAQCSAACAAASAQSCCAQQCASQCQSASQSACSSQCSSSSQCCQSSCSASASQQCAAQCQSASQCQSACACSASQQSQAQSCSQQAASCAQSQAACASAQSQCSCSAQAAQSSSQASSSQSSSCSSAQQAAASQCASSSCASQASQQASQCCCSSCCQQQQCAQCASSCQASQCACAQCSQAQQSSAQCSQCSSSCASSQCASCSSCAAAACACSSQQQQCQQAQAQSQQSCACSSCCCCAQSCSASSCQASCQQACCQCAACCSACCSQQCSSSQSCSSQCACSCQACSSQCASSAQCAQCQQSAQCACQCCSCCQQQAQCCSASASSQSSSCSCQSSQAQQSSQCAQQSCQQQSQQCSCCASSASAQACCCACAAAASCSCAAQCAASSSSAASSSSQQCASCSSQSQCQQQQQSSACQSASSACSQACSQAAACCCSASASAQSSCQACQQQSSCSAQAAQAQSSCCQSASASACSQQASQCCSSASAQCSCSAAASACASSSCSQQSSSCQQCCCSSQCSAQSSQCAAAQCSSCAQSQQQCCCCQAASAAQSSCCAQQQSSSQACSCQCCCSAQAAASSSQSCSAASSQQASQQSSSCCQSQSSSAQCAQSSAQAAASCCQSCSAACQAACQAAQASAACQSQQSACSAQCSQQACQASSCSSSQQQCSSASCQSQSASQASSQCASAQCCSCSQACAQCQCCQAAASCQAACCAAAQCACSSSACAAACSAQAQSQSSSSSSSSQASSCAQAQSQAASSSSSSSAQSCSACCSQQAQQASSQCCQCCQAQCCSQCQAQCQQSSQSQSCSACSSAAAASSSSSSSSSSSAASACSSSASSSSSSSQQCACSCQSCCAQCCCQSAQQCAACQCACQSSQQAASCCCSSSCASCQAQCAASSSSQSSQASSCACCSSQCCSSSSSQCAACAQSSCSQQCCCCQSASASSQSSCSCSQCACQCSQACCCSQQCQQSSAACAQQCSCSAQSASSACSASAACCSSSCSSSACCAAAQASCAAQCAQQASCQCCSQASSQAAQCQCCCAQASQACAASQQACQAAQSCSSSACCQCSCSSCACASSQSSQQQSASQSAASSCCQCQACSCSSSSCACCCSSSSASQAASQCACCSQCSQCCSCCCCCCSAQQCCSQAQSSACCAACQSSAACCSQCAQAQASCCSQASCAACQCCCSCCCCSCCSSQQQCAQCQSQQQAQCAAACAACSCCCACCSSSSASSQASCQCSAASAACAQACAASSSCQSSASCAAASCAAASSQCAQQSASACCSCCSCCSSQCAASSACSAAASAASSSQACQCACQCCSASAQQSSSCSAQCASQAQCCQSASQQASCAASSSCCQSACSAQCSCSCQSSQQQQQQSQQQSACSSSCCAACQQQAQAASAACACQCCSSSSQSCCQQAQCASQQCACCQQQCQASSCQAQCSAAACSQCSQSQCAAASASSAQQCCSSSSSCSCCQCQSQAQQCQQAAAQACAAQQCCACSAAAASQQASQQAQCACSCSQSQCQASCSQCCACQAAASQQACCQCQAQCCCQQQSCCSSQCCSCQASASQSCCQAACACQCSQSAQAQASQQCCACCQSAAACCQACSSASACASAAAAQSAQAQQAQACACASSSSQCCSQCQAASCQQASCQQCCCQAQACCACAACQCSAQASSCCCCAACCQCSCCQCACQCSQSSSSQAQAASCAAQSCCASSCQQSCAQQACSQQSAAAAQSQCCASAASCAAQQCCSSASSAAAACQQQASSCAASCCCCQCAACCSACSSSCAAACQAAQCQSASQQACCAASQCASQSQAQASCCCCAASASQCCSSCSCQCSAAAAAAQQSCQSCCSASCSAQQACACQQSCCCCSQCSQSSCSQAQSASASCQCQQQQCAAASCCQCQQSCQSQSSCSSSAQASQCSACASSSCQQQACACSSAAQASCACAQASCAAAAAACSSQCQASSSCAQAASAAASSACSCQQAAQAQSACSQQQQAQSCSAACSCCAACSACASCCSQASAAAQCQSQCCQASCAQCSCCAASQCQSAACCQCCQQAAQCAACSCSCSSACSCSCASQCQQQQCAQQACCACSQCACQQASCACCACQCQQAACQCCAQCQQQCAACCSQCSCSQASASCACQQQSSSACCQACSACCCAQQAQSQQCAAACSCCCSSSQSSCSASQCCCSCACAQCSSAAAQCQAACACAASSQSQSCAQCCSASCQSQAACASCQACQSQSSQSSSSCSAAAQASCQQCQQCSQAAQCQQCSACSSQCACQQCQASASQASQAQQACQASCQAQCACCSQCAASAASSQASCQSCCASCCSCCCQCQCQACCACQCSSCSCAACQQQCQCCCAQCQQQQCSSSASQSCSQAACCAQAQCAQAQCQSCAAASCCSSQACASCCSSSQQACAAACACSSSSQQACQCSQSQCQSASCCSCSSQCSSAAACACAAAACQASQAQQAQQQSSQSCQQCQQQQSCAQQAQSSCQASSCACQSQASCACQQQASSQCSQSSSCQCQSASACQSSCSQSCQCCCCCCQAAACQACASSCQSASCSAAQQASAQSCQAACSCSQCQCAQQAAASQSQQCCSACAQAACQCSAQASASCCCAAAQCSQQCCASCQQSQCQCCSAQCCQQCSSASCACSCCACQCQSCQSCCCAQQQCSCQCQCASASSCSSQQCQCCSSSAQSCQQQCQCASCQSAACQQACCSQQSSASQCQQAAQQQSCCAQSCSSQCASQCCQASQCCSCASQCCAAQQCCCSASAQASASCQSASAQSQCCCCACQCSAASACSACCSCQSSSSSQQCQASAQQQQCSSACACACQCCCSQQQAQQAQQQSQQSCAQQACSQCCAQSQSSCSQSQCQSAQCQCSQQAACASQSCCQQCCQACCACCCCSAQSASQQQQASSCCCQSCCQSCSSASSQCSQCASCSCSSCSAQQASCCACSAASAQQCCSCCACSCSASCASSCCSCQSQQASSAAQCCQQQASCACSSSACQSSQAACCQACSAQACQCCSCAAQAQSCSASSQAAQCQCAAAACQQCSSCCCCCSQQQQASCCCSQAQQCASQQAAASSQAAQACQSQCCAAQCSSAAAACQQQAQCCSCQSSAQSAQASCACQQCASCAQCSSSCAAAACSSAAACSQCQSQSCSCSQCQQACAQAQCAACCSQQSQQAQAQCSQQSCAQQCAACSCACAQSQCSCQCSQCAASCCCSSQCCACSAQSQAQACSACACASAQQQQSASSCSAQSQCQSQCSCCSSSSQCQQQAQQCCAASSQSSCQQSASAASAAAAAQSCCSQCSSQCQQQQQASCAASAASCQCCACQAQAQAASQCCASASQQQCQASQACQAACAAQCSQCACCAQCCSQCASQQQCAQAQSCAASQCASASSSQSAACSCASQCQSAQASCQASSSQAQASCCSSSSSQASSQSQCQCCAAQCSCQACQSSSCQASQSQSCQQCCSCSCQQCCSCCQSSACASQSQCQCCASQACSSCQCAASQQCQAACQQAQQSASACCSQQAACQSAAQCSQQQSCQQQASCQQQQAQACSCASQQQSQSASSQSCCCCCSCCCAQAQSCCSSCSSSSQASSSSQSCCCQCSSSSCSSSAACCQCCCQSASSQQCAQCSAAQASSCCCQQCSSCCACCSAAAAQCCAASAAQACCAQSQQSQQQCQSQASSACQSQQCQQQSASAAACAQSAQCSCSSQSSASQSCCCQSACCSASCAASSSQACAAQQQSSSSSSQAASAQQACCCACCCCAQCACACCQAACQSACCQCSSCACASCCCCQSACSSACQACQSASQSCQQASACSSCAACCQCSCQCAAQCQQQCSSSASASSQCASCCAQCCSAQAQQSCCQQSSSSCCSCCASCCCASSAASQQSSQCAAASASQCAQSASAASCCSCQASQCQASQCAACSCQACSQSQSAAAQCSSAQQSSSAQAQCQCQAQASASQAASQSSCQCACAQQAQCQQCQAQQQSQCQQASCAACQASQAAQSAAQASQAASSQAQCCACCCAACCD/xAAUEQEAAAAAAAAAAAAAAAAAAADQ/9oACAEDAQE/EGED/8QAFBEBAAAAAAAAAAAAAAAAAAAA0P/aAAgBAgEBPxBhA//EACkQAAMBAQEAAgICAgIDAQEBAAABESExQVFhEHGBkaHwINGxweEw8UD/2gAIAQEAAT8QcEq6xp3BLIRaJKJ0c6JsUrE63BphLXR8G4oOwRpUZpYjWj3Tuw2Je0TfRpSvgau0+glOnUNo0xqlZqCUxjRNIRdTNOQkOYVJQrfBuFa8Gp0aqTO4akS9I0vou4in7O8En0a2sbmHHfkWLgnVWJmqL4dbwhIWHjwVg7kYlHo41iPBaoL6EZ9GItC14TLT34KlkH1fiyRirQu9FhUSlElRzwx4J+Mbv6E68ONOcElr6L0+gmnj6JRjSpuiO5xkNahfFJYpY2hhKxBxCT4L6KnqHuiXCMPSxvCOsZ9HR16N5wb3SK1CWqxqqj2RC5r6IuvSr7+G00huMbRo4OuDTQoU2aTNG2lhVjK6S4xJrnB8qGU0XcGtpOhqa2L/ACOYY1mCX2TWJ8EbeCTU0JVE9wfOjXwNBtWs0jeizw6sZtg20oNh9wbPFh+x8E/6J6Nt8RiXyLHjG+fI2npswjQtRE+WJxwdEPvBpNn0Fb4Nf2TeHseuCdPg+Cn3ENLp80Tr4NOCbbJXg2gldHWulv0NJayNpCQsW6Juj14M9eDcW6L6F+j4ClUXRMwWay/HpJ7SJrRRIx4NEhaqN8I7WNoYujQ1NOweYJqU1eF8DUWkTXRqcLm4eYKv9DTT+vwR40ZrBPTPE0htNYYWC59j52GHg1P2ZCLgqmLtKrw+h9idRMZGnUdFzYJW0abwqX2GjGnW6V/wftGiJXR7wS8HHemws6JXDFg14WEGp0vxw8w+h6JP1k35H+sE/RCzGJ4NUa9Gm3go8L2FqRD018JEoNNISae8Fwr0L8A886Pl8GQ/BchzWcQdiQ3OlXBSYjrF+BJpJjOjeiXjZ4+CE8G8SRrUEyMWdJp1pxj0rS+WMxrN6XbRlSQv2fJrokcQhdG9OINtdFStFFZsY22KJg02KM86VpwiasPA+4NW8La/Cac4aCvaNxDzSNKC/wAj3hsI94JXTBc3TGsEnYjC/Am0qhI1vTTJ54Mk8HvCmhrdPPs38hzwtG3foWfyJR07rGppZEONJiFoWo0vsWNJWQ10aciYoVEv8mITTWmxMf20aOvsec6MbjEGe4OpQTcjI0uizWZPoSSUWYJ6dWCaIJlg7p4P6JEEnYiF+zoY30Kr8YevCLpTDR5hJtEo0eFdwcfoZPptIY44KXC5gm3+hxYNHwFPDjCvwbbf0S7cHX+iIbnROqnCpVCtv6Ob4TrwYX8yGKnFB8qZG3jHi+yzKNtOQWiCfiHFRMrHHgnWb8mLRVpj5uQZIjTwrKXxi9QuDhWj2pjId1EMdTzg1UEouiSL5KbUISzon/Am29NMUvDAXNNTzhImy5pVMJlImnUXBB8Ezp3PR916Lv7/AALsnDLwpjt3glo2XCr+S3GKLCksFi0VOIWOjTlQnyCfYneCUZlh9Eq4YaOPo3A1Wk9Ot04K3pEG+UnwJUSvuGXGJx6yP5Ek3Ba4NpuChmUb9TKlYkn6NO/X4Y6TRewZkdG4oNrCqitEdwTmG3ODTlQ1ehqIj7TUPwJRYMk4aXS5CVEmJjbmia9G9wnyFTombsE/A9enOIqCZI6cTwT/AIKv7Poe7xDkEvBE0T+BqIIaaIm9KsGFhL0+phximuCd4VM4oKXpE/R5wjQsemMVPBOip9wnwanGZBYJGJO9HihX6GpvCMJRpjbovtEi/AifCNRDSjDEf+ZzRPpoXoaojQutCXok1cJdQ1fCU60huhM39DKYhpiWax9iOETXStYXBPRKusbiThXaNaOjqjaokYSsTdxDS0yh70+qGYlnBP4DSbDDq0TYlWYE3MO6E6JRcMJ1HBr9GkuoWaU2aiRYOv8AZ7zo0JGXBNm+s+xFKVcE2VOB80bRPR35G3UT6Ngm5rFvDmUbfBb6aC1mistJpXhDFfCVoeHemptIXY0VyMmdEqd6OsIdMTp1BahxrwibE9cQ12mwWOtD+R/Am0fwiNH3DATVR/o2Cqka1RptaNJKIwtE6y46KB0pA8eET0cwwdQscLOmSI+Am1i+RIyVVn0c4TjZwpwT4YkQnkG8OBryjfpPUS/QsfRNXURNU0hNzCzRVwrMG9Q2tcE288J4M2RaYtcGqiS6xY4hpp/I9Fi0voqzzBVrRqYLFrF9GJaNVdL/AGGtrNKeGOEb0eIWhJpm3GJLo2YhJr+Sl0rw+j0TRwgROUqTLGPHwT1liwbZD0cbwTJCdw6IlzSxUvyJtn7ZDwS9RUEp0Rrjp+xPwaTdR1pOwbcnwNZUJ2j7DbBLhkh0bjFCXS1U3qJ0ywWCq4N0wV6SdGksQvnwxq4dVo4oraJtiXwfNKT+h66VHhV3SZo/ILNLXR6+CW7waCZMXpq0poTXolpr/UehUQlBKPo216PwXd4JJPDrIfYZLBxrBUHeEXzosjpoZKzUqJn2Jv5GnKxPDWiIaeDf16XeDY+4igm5p8oR30pD59/hVPDiQ2qLTiOspJ6f5Cx/AhL7G3K+mHYJTrL9j12jahh8G60aE5+xtiT9Fb8omQT9DLwbeBTGJX8l4kO/wTKN1EwKajzPDo694cJl6LeD6h9QV9G9HjFhjKyO6JqRkTolCmqJfsSmHB4MhWucGvUPtYnEd6dcQ1A1RNJYip8GmkN+s6uiSmnWCWd0SbLBo4GZ59iPocLROq0whGEmlEI6GvGjeGSCDUInh8xVfsfBK6exsr+BVrWOPMPgVpGcfRt2DbvDGjfpfhFqprStucQkkWJ1mtDTzT1JGoN1kaOsGzStMdf7MBUdYPsYkkn6RyHGcFE8IvNNahRwnsN+otEk9MsGk1GZf4fKa1ohu4JZ3RJLS0xwVkYtdHUxNvuC17waelwlXRrM6JVaLuDdQk19LfgfsJgxZqIGlTHuCS80mKlTFUyL0xB0WMm1CTlfRuopcG3aNCL08Y3hSff5IqLF3BL0aScTMsREs9PsfKiiVQr/AAK0xRAvkPMMDqlyntEk8Y49J6JN9E9/Y+g+Ut4VPDGt8EqJwIPh6TG0khOMdyL8J6xxrCfPRVUV8Da6F3PxKpYL5DvBM044uDWqlfJ/kKLq0TaHKPih1YNM6x5o3UJ5WafBCqJ64VJ/Ja4XxcIejvIIk6NndFLotahwRtMSiwibow5dE688K10TSZYsL6h6Gk1g01odbE91aN6aEG93gmlwaUfwJJvwN8j2ka6LVNS4Kpn2MtpFMsg/oTuDVQwxPUJVpp4eGwjaHg3hwhfsuHw9Gt6LRG2anpBoJbXwSWsgsRXprWiUcQ25gq8Y6mJ1wafI1Ecbgk4SaQtG+htn8nKxPCbnCaeaSDWyZpFMF9nF+xIqa7YzWhxBJ/wNRYyJok6WQxx9Pkh18Em4Z1SC14Nb0bqGnBKK+lqHVEOCx/itLBNylUyZrEqfY0z9H6GWLVondZCZ0S4Yk1si3SrzoqujkcFiN/kJNPB6H37/AB+yGhb0csK+IaVGH+zh1/Rc4JCr+g1XB2xFXWOImN5X6TTqjE4h/R+xXGVKjJ94fC8NY2fYW84SODaUbII08HSm6PBr0b0pYqWK/JGxJ8HaR9o3XfROpo601FdLg3hyVjJNYcUxPCu4OJaKpjX2d/QtXS+09KFUjQsFeCM2jcaZMX4uMtFTKksHHo6cG09ETCiyjkcFfBr0qdFP5JB9p8kKIeMtdONEjGyVYJv6EjxkUgpBu8xFIN+sYbf7L/IbNG6s4Y0kPsOqeHkT0rsY+CXaVRtLGLlTHH2X5XRr7E7HBKYhnmi5aQWYEm2ddE28gxGFEi7w7rQnaM1M1c4MKPgnoktH4QyakG4GqUGIOzBvOVGkRaScQ1io0nw+Qn1ah16mV0N3qHIhttlaeFU/ZWUS0SFmtHVfBeiVwXZSqz8Dfp1cG4ohV9GaQq9FqEdo1NRnUJrUZRxn2IqJcpSYj96JtWjVdEK2sWqyVMTfJicg+6OvcL5BPr8DEy9G9SSw9G2MbFyi2v0r0Sj9DIbqwSpzwTbfiDWYZw1Nzh8h80xPOD5wTidKho4xKOCcT0aqzopNOcFv6Gigs1j+YOz4EFuHoaqEJEb0PXvCE4NR6z9j7Ua3o8E9wW4iMNL+TuDSdEqG5g04YZ6J68Pt6Lwzrw0i4deHDiC+SGSGtQm4jWl2M0Lipl6T40TXTvBFPsdejlHDwTx0T3g17RoTU+xKsaTQr/AujSQ3xwSL0cXB46NJeDiSHrnhw4LX0VTBKOlr+Bu4UdPkaXPkkQ9YNeBfJjfxo/0NdCl0psj9Y4hNN4PHB06RkJovn8E0quDf4H4kT5/FS4tE4m/WKJDalRU1RJraU2NNYY71su0bTxEJmiN+jQ00s4N3g970SoSno21fgrng+U80xrp6VJidKOiaKOLDXp+mKP3R/wBjU4I2y1Olc4daRfJCXCVaJobdhKp6Td4OLUN1fDEkZMHSw+HhKqhP5L5BuNRrdOuDdwPHgoPX9DfB/Io/0PoSTWinB+Dah0JqFdxFfyNtLR6j4PMwTWxtiV9NEbdKllHrFbg7INRYLlhCaEPeCXvRziHVwu/sjh/5OhJzSKudIQ01+j1fQ0k7SNv4GkhpZB61DGhJwa0QNR4ImW3DT/Iav00bwSbekcFfUNnwkQ0qIpgtp/I34hp0avCNJU2r4/CjeYxtzppkSc6RtCeR+GNjTfDyLVvCeMXg20x3Jw4NkSEyrNm9E019iz7N+yElWzHdLRDf4q4OcY39CvA1FrTH6R8iRxaY/Y2/kRlzgrDD09+EWKHhSfBRlXVhDhYjJ9nlQ16h+RD1+yJcWnk9EktMrvB48M6RMbigo/seNoWIeK+lSSvSN4Z1ERjbXDSGmdD3OEa7wWdE1KN2CXyx9Hw9Fi0m0WvDBjonqEmWPTvOHQ38DJMfofc8E6yJmrhzujaY02h+NnuMdWE9E27BQOPOCKfYkkKdQ7pGvQm5BfIfBOYhH6K/odYLHpPk6hqs4PRcLUEmlBJjHakNOqjT7RPokoT5Cd9K04PKzisb3REjzBNtj4IGXAm0uiNi5p4N1VE9MtG6NVYUnemqcfYogutiWQSUwTyPo25BppX0dSFmjVXwzpk0XrCrpDht6VpZ0ub0SaVRznTWCarTLIuEUGaahdEqPfsUXStvBupRKqLwyZ0Sqjbg2cEnWKpcMHhiDSerhiUE9MfB4yE/yKWMaXycUG4lRNI8Fbp3glWSPSX9Cl6ReET6PnwXM4VMckE1+MT3okPHBxdL8CTojtR5pVgj9WCc8g8dZU1TBiDczwkQ2RjfGh6XEHGxIa8HiOPBpabaZWJaLH3Rt+nRcjHGg+4YtfRtXwKHiG3pieHOj5UQlGPOGFYywq/Y9OKlcovWJZfRt2juhs0r9LXg02xY4h1PRu9o0ThdEsrFjg8eDSb0aSWCQk9Q2nwVarQ1nwU8TEyeMZG9G0fMdP8AGuDo7wjGtwSCyixl9G2TPsr9G8E6/wBHWdxDaheCRC8D40JaWMsQk26NRpid/RR4Kq/A80gEVom3wqfhpH3o9dJKQ0tZE0Z4Idaa9Q6xaY4VRVjq0TbmDYaoZWQacJHfBIOsHSMahNPo98E3Rt8EscGTx9G5g+/S66JmokbB6FH2xPgSqel2Is0KQSTFQsco1dICNOI2Dbn6GqkM8WmrrFBieocmGNYJtfbNa0rYwbeQST0n7D1qDhCFvGh9iKLunwGoztGJ6ZOnVMe+EaWcHVqEq6N+GNPjUPwJaPwR1Cg5o2+E0SSNbiQk2tMfMNsI2fRixaO+cJn2JK8GaeC+bownwhPo8Nf8HSb9FX8kirBOOQSzRLcLo61gpBPw4dFfD6dJOsXgZJfYnhwJx8Ghfgv9ik70kZjbKjEWsu4PN4Mn0aGcE2U9HhwRNV9EiXR1MXLC0pveHsWmrg7G44Y0MUG3lI19IuFfwKIcuFyEQUQus1cD1aYR58icE10dB/ASx1iFVlJq+R6GcjM4KnR40/B7GYM2/wBDdJjvfCvIT+x6/sr2CTes5w8YrBLODQJV30SQaRBqc6VohLSjjGVcXTi0TBZ1jjHGi+hujZqGmsR9HusT5P2NWQuaSjbg41pIoNNqoSjommzGo6qy3weuCUcOYOpUvNHCFzBWDqY3Vp1CdcKUYnHRN6QRK2PFTFAnFrO8OtKXBJj5GhpEyjbhvpjhojTr4OyiMOoVwkWk2obnBJ3Svng20yKX0XBPB/AiRmdQnrH6Y8aY1XhvwJu6Mx1KJCNvBL58E1RxMTai7pj9jSSHolOFT8IbEtUcmD8FNEhwNJcE4deDcU9FiEV0+AYqn2Jt94VwPGDT4xFKLo8cG1ME/RJtPRRJp9E3WKIWv6E3SOqP/B6YmViSHyojfpmUibxixykqjEkusk+xZ/JFNHzonA6wn2Rr9Delj4f1RzDUyaeqNpLgieiap7UnPSrjwWxIesU68H/g+xFcOo/8fgu0/oHG6OTGI0FVpkeNFig06Yk0NUdbg00YQ1ErgpI2KSCdcOqi0XorNKhM1GX9hMGzecMbbp39C+h04hL+hqBBPhEfyVfAvodGnwSqsWnBtZS/I3cCrcY5z0bXGhODZDJEohxaX48jIl6RpjSe0+BtJfYtHBCrfTyd/BqF8o+jFrEzDjR/TEk4yqvRAkOej+RbpDJZ6e0Qs6N5m074T+xI/kU2nFo3EhpCaaZ4dK0xirg3dYmk+xLovgS64RL+TX0hcaWmGPWSBPijSWlTQ0nAqno0j3CQf0EywjFIh0ZvgxxgnHwtw4RFKJesaYyqn3Rs9EZcIl0xEo25EQlRJt0bTEkg3RNrERJV9OvTmdIOPTj6Gk1rEcG8oo1GSDTTrET4N78Crzwx4h+EyvkEm/gMXDheETfRSxGvTWFiQ6nUzotZMR3o2oa5CNvVwcTEt+hdwf0EIvaNQ8J5RYWrgsxdE3IZ6LODgJtuEc6JtYPBpfsxtQSWnmC+whfycHuwSYXNH6EtRPgJ6xevTi3p1ppYNfJF4WPRlcHKhpVNj1/BwdUJPsdX8iVcF8EkJVGiomvBPwqbIm/gkcREmNtKQouHyY3jIYzW/o1sS2i2lqg+CfyH8Qm4Y+idwfCZPSNKC1RMfghaJtY9FbiG2hK6xYaEoJlF8sTSejceCrejgkLUN7BToco2f6EjwTNw5gndY3XRM2sbzC78ibo5CZRNPpr0nQ2YPC05ENNiWVjbwJ0qcE1+hKax93g2rgntRreiqWjCbgncZ9Dnow5J6JMjdbHzWJEPgm+ITSekdGXwVlqGbQjtH1Uxnz+A1VFSqit+ipMHGtEmlRvRL0NtuIZ8g66TyF2FTR1ilFn0Fy8K1WkJ4NPwwhwVLguaNODVUGsDStRfkbJUSf8AA3Vo4tI3wtcZUzhQvkN4VCU/kq4O6WFNwkQsVOKxp1F8g5n4hOeHYRYvR6qxiKD0Kt18LUR+HVZEn+EjHjXyNuFiE6tw0hqpMswr4LFomkhP5EtGmh6j4QaTCXyPMJtKFjOiaasEm0Kr9/iGujwUlKeFLo3VRNPGhBJodQoius+COkXOEdow+4XYjotQpuIV3wnqOtFIKpQf2JKIrngph6QuiSSHdQ3jIb6J4QOqobq0a/Y3GKMs1wlXR7Eh/RkzpIpdOvkSabY2rpjGlI6qy+BKoV0T50WwsNTg4cGnSei/sbPHgqe9EVok+NYRJU69xDx5wlf0O3nBORDuxGAgm9Dr2lciJvNHkG2wqnCrEIlzp82x6HbPCMMjfcHqhM+xOcLLSZ6JafsJuQjaPBPKhrx0VYNJEN9E1NHromJDqTVNL7GqpSZ+hP5GPPsSq6JZCTotfIJq+BuIwEmsGxEyCeDvRP0ujTZHBJ6Q+kUhI94JVPCL+huvDr3h/galiEvlmHp14N/yK6mDIa9Q76JInBpqLosTp8YPo5CzwZVCXSXyCVKCw9NIto1KM86JNrorTgmrg2Gt7wSe/A1NGstEyMTcYlFH0fYh8GRtiafZjXyH2I3hZrRY06oh1izzSbpieDVI1hPBHwk/Z4Qx96LGRtYLKmKNDx0SdRb0nhwTyM9nghRCYtVFaVX9FOpgkfhVj0woy1g51G9PBM2kcpIc16dVN6Y8ME1SQ9jOIjTqJP5NSidZKxqUwuloT1+ErZSQmvBOvhUkESY/hkpfjWkTPsabZFrLp+CGsELFgkv2PsTeDWotMPOFlHrN9GyG+iYoKpfJf6HwCUG2uDTT0S+Bttxm8ZDGhOvSzo3lRdEkvR4I5UxGytM0vsTdY9Kk9G3TDLcfCR4J+haJ7GNHg/kX2E5UKFGPUceDTH0b54J3ArmCO9MTwqwSS701M1ivRqPBJoQWmXBOkeFvhEkSqR76JvS7Bzp1CJsGq43wbJ9EX0foVfGNcnTTGv8ABxowkG7kG36a+wlUoSMZBC5UxVKjfyYKnqE71HfpDZushIlXDjxEjrNYMX2ZBN7hvHw638DWCdxjwVSnglpFSoKek/oaiw1i0fRtSkb4cKYlQ6eFerg49Y1OCZHbMHgk26OHjNTj0a9ETXRGxN4I+lE7CFzor50bxlNj2JkSxkC+hUJEJJwbTxGO8Gl4xLadYMQV7C/YmoacYpYRjig0eIaBPPsVYxu9R5BVEei2MarKcGqtEovolcQi9LUOqUV0uDjDa4ium8E/s6F4J0avBLNEuU+jNDXqEsNKJBhOonwOiee/gm78obTXCaSOjVY5weL7H6PuM0bpXRNvCF9htoyo10h1D1nRxkSWCVd/BXwLHUfvo2vQkT0WrPw7wRd0cSIfg6+cOhrPsVOCy/AnsL4EwyXDScTYlu8Epzg3OajrPoSi4V+cJmPTvWNtatPOQk96RLD1GuCeaJK8PpFYos6RNvg648I4I5pG8CZK3TWuwleMZcwVotE2G1aP5Q+r4H2mVs4w8rFtcF5tO6LE2xxwbYXwNNLGNYq9P8l2QnwjE9K3+EU1inmlXiLv0Nz9EbWM1MSPDELRCW/oeqJ1TwSTBqEyiUbE21gxqMQsX2dRWlB9OGN1xeD5o080UGrWO39ESdQ4ixVIqZJ+h/Ag02jY7npqwiRcwrn0KseMd7TiEsG4tGg3cRNxwWi14zDEmJOYxYhL0T+Ue6NJP6HW0lSmDXyY9FgbjglUaGkO8NondYt6I70Roq4J7mCVfLFiSRRIVGjULg1v0N7IJbgsM/kl1kiaPATSekuoiToyQoglD11m2CcY1FE6ZIOljMX7E1GJJNG03ESycOcLmiSY+kwvCxnX9CPwT4JXRVvToOODD3oklxj7PR8jFxjXz0SytmJg6lg9Ep4cR8qIoSDrWiecITEX44xrTpYNxaJJ6e6zuCR4NRFTeDSo2yUJC/BxROI+RlqZjEg3UKJijTEi9FioSbUZ1QUCdZqpHFF9mGmiJrR8wjglvRLwNVS1aNN/bES70bv0G09g5/IxqLEL9D0WDqWC+2bVD3fPwiOicxGrvBNP6InVRVYMrhKhITR+inRr6GtFWxV/Qn4LU0iuwu9FEm2K+DbQqP4FiiZK9GvsT+Amr9itUaTFmE+xtOiOvTjBvRuse5z8U9MMTrJHvCKGyipiO0WLSCfnB7hs1CvYd6PXhZgk3RfDKo1JpWuuCVxjewkdNYaiFGDTRjQy+R18J/Y/BosGfWJrWa4Ov6GIatdE7A2/kWJOjTvRp3olhY9EYr4JPjYtGvWY+cOQm4aQ1yirw3UhL5Yk7PBOip6dHoSTqXRVvkZ/sca7DqEN4TcYj5TiahxCTKPqvBqc4RNIYw0JX6GpzRb0XDUa1STou/Q1uM8PgxvBJ+jqUkXR1wSpdSRv06JJPGaxtiLkXTUFFrpwe0u76f4D8DVkLmowLBFUl+Gn9fgtYzdfhlIE4PZomwTa6NQ38IWqa3fBqxC1BMm4JO1jwPZOEapKwTYxk4olt8Kpgk2hVf8AQ9VhI6/R4hJSibhVyiSbg0aIbz7F1aOWmN2jgm8Osqi9Cd+BM0dfDxBumA9UunVNb+hwx6z0dODUEk2Sjlg1qG3xHQ46ccKsDRotWi2iZJtEejcYl8jPw1BLSFp+jKX4cZVRUNOmLDgsDWaJ44KvWYh6/o4j+waaEmw4xkhtrHDBs00hcnp9MzhIhPQjQ2oN/ImrEYrwt4Lei9PKdemaSd4KJUi+vTUNOD7jHTSIn2M0huI0OcHaJR9JpxCXGJywUevpKQWiRireGiRokZXhBMNTRsPGEdLdE2xtPo1mcHEbHioSTSaeCpPBQcZRQkjOuDlhHo0upFFffw68KEdJSVknGNtoSfyP/JP7FmMTriQ43RFR8h5pUx5gbjD/ACPDET0+EIf7O4ceHUJJPsgrT1lE4Nv5EkWYGh9FI2sYzXUNQuGhwoLKo1/kRpi6xL56cfyNJqiflHyCfgltZH9mD9YR/JXUoKYmlo3lQmHjTQ+G0Xy2KdIipeGLh16NdFiQUSG/kZvHB4sE11inhKnfBknTWhLWmPoZfg7YbA8Jkd+jRrIcf0Vql/kJNCSdMeuiVUSOkmD5Ma8LkIbhjKnngln0JejU/o79CKjPPx9G2C/oVRwZddGnahLOng3sQo3o0sQ18cLFH6JkCV4RpGY2Np4NqD5g0cKhIv2RIR/wLFQ7kESnP0NrNwSyD1or0TX6HF6NqOufh3iGv5IQguxDUYvmjWoq8E3ajfUWdK8WC1lmFHhBNNx+FxsSTVZvRO/RnpGYeziLPoejrwUShYysJ12F3RqdHEulVQ2mpBK8wS2ISjlOx+HtFbvBNLBd4dR9FoZKZ10VVp8qIWodCba+Ch4uEvER2voscIytdMmrSNM8H7i1fR1FwajwaFEMcv0P4FEPWaHiE8E0d1CrwbdjFwMlZasRiG4oLFg4/oinWJXjO4xuKLpsZVhqg1wtWibs8GrwduDbS+xaYjvuDWieHamIm8Y1GzenfoiEnBN2Qb2HwGsjNSxaKw+0aY4lEL0a3hzH1j0dsHF9sU+BvRtuE+dHU4lgluERtibm/wBFbfBLpaPXo9WmMXBvNFHvwKtjx/RVwOtYbR2nQnOmbWKS+Df7Hxhb9DWmCd1jLIeyDcYn2Q1cGwlQmTE62cVGuM5hgam3BVswJV9Cdw/QxreikE0kPSNpD4fRm1fBPhiU80autCROM9Y2eNCS0a0ScEm2NNMi6YnfD4Ia2UpDSi8HhVp3DKRfTkYnQnGOWo+10SvcJXKNvTyi+SKbBpCBrSkFbXwtpiRYKNohtsSTD3CTvByfYiY2Ka+jEUTE5RVkmkWDRnA3eGmiWwejjMXCrwNLg2xp4Ntqikr6J+HGLn2NO6MpgkgaUiESX2PQ0SolNYxV4NtiamDrWCp9G/EVpUjcYwk4NtnOmGxYJNjC0WBxV6iW1kaVYn4Ex8nmGcY3cGWI4hR0v0POFUXyPueHXwfJBtZCx4a89HSK4Nbg8Q26SdxIdkhKjzeCrS3h8htSCiGqNZojaNJkVcOoJFg/oShjQlbTqLw7sEeCLQ/SPr0ecE1wc/kjbglOio4ioSDxI25pXdGl8CbXeH26PiMgvrp9mP8AY7YKO8FnBW0beDXuCfjGkuhJSobbGlF+MN0i6xL1HyJV3RKK+m4zuMGqoLODfyLn2J1fY+Gv9CUGs1x/gdRjqeDWGbSE22oVGlBVKGpaxOOjf0XiCfzw+X4V9G49F0dXBN3RhiYpIRXg1MOOFfBo8xaaJtsarglhwTJYd6InQ3grBMlDi+zHRPG6OzBNJCoT6KmqJ634TKO2jXouwwvsc3o8R4Jokf7HJGx5wccYmk+D39ixCTomw0k89F6bEyijRA+34K0MglR4J4fLR5pv0QlnRP5F3MNL7G8DrWCS/YTzSm5RteFrqH9MTfJl4JO5wrRGxpNJ5TIXxElXSRX0WBLRrN4KLh1qfsRJ9o5aV04Vp4jW5xClkGh3pp4PkFWM8aYknpUkJ0S6xWtEH29G3/BxYcY/ljTEp0lRno1aTdKnkE0WuInAkk6jE6etIWDXpImJJwbQ2mJEXwu9F8j1YSQcHdGJfZXODT+RRK00JfyHVESdY/RRqvsnz0+Bx4QVaeUbivp3S7GNnsGvExrT5MlSGsGlKJjuGHGeF4R60dUYg0XB4h7ot1kqPjRciGl1pDyeHMI33g+QSSL3CJyiTiw2VCV+xF505haJ5PRH1id1wjxi5WyFq6VN8HwfdE22J8Dsgln2Les6JMCZo0XEujrZgaZ7hY2PUJKZp/JSY+DpH8mLo16jYLVD7HH5o7PsrXRHcOc6NtwafyKBSYPOCXrGphVdG76JJfsSsw2ZHOirWjdURpaRo6wsZ0zzRdESWDdhj3DPS8IiS+yRCfwLnyanRpvhSUaGoxPdLpaK3iEvkaM7wk0P5M86RRPcJOo9wcbXyMWIxhEwTuMayIud0reIUN6LgponRLSG9EqqV0Z1YNrnBt+cEo+jZ9idGwSTWnGOdpjQk5BJN0lMPBKkysd6YXCt+aUp8iLXoq+8H4QrPoSMpqfol708EmRt1EjpZzg21CfrgiT/AAOej0JO5wYs/kxWvSNqjqymht4kh94VNFaUZz+RJac4cHWdI2tM5BpPgi4SWHAuMSSxixtoSmjh/Jd1CXYxX3hEwVfOFSEaSaGqqL7FWj9I4Z8D6Cfoe8JgpSKlzEcRhVlerBbo0pRNv9G9TE0FusatUSz6I0poJTPSGmVIkaQmueiXdK+Ibw+xM1gnVvRy50jY8guM+0haPOErFh1aJO4zj+Rz0RNUamEY5gY5WsUQloquMG6wXy/TXMHP2GiCGzdWE+SrhW+8GS4aZ+2LHadHLhi+Rf2cadUZIpRO+DwamijRi06PoknRqIlz0SbOucNKR0Svo1XhF0xEmoJblFV0UEzo0kX00r6KpsawanB3Al68EjRhYcV9H88OIVsnTG6ONii+Qj0hd0aVHEY8WjRfslXdNOfA9aSM6rQm06+GuYQU8EyDUfRvRNPwSejTvp0JendXg3tZ8DEknoyjwZ4hrUQj9Q3kEWLR6sE3wX9lgr9FWuD5Uf2FefI4ujWYyr2D/ZU1DjGtUG5/IuDZU+GMaE18MbXh1uLBJOoXGfyVjqjLHV6N18JF3S/CF8nWIf8AkaYtvglR3GVcRiXyW8GndOoJ5EI24WM9HG8NY20M6jwbbUQ7NNYqn9HX9DUdXBnTEqGk4NJtbg0hNPBJcEqHAzZxWmN6OOjx4LV9/hb0nR80qYh1j0kYz1ouCdel/gN15+BEFn6Ek/THjEsGkpRsP5fRJLT7Q1WPsYm9wR1fA5xDUQnRNWFqD7UJ3wVT+itrRhYh0rXTej0aa1jfROmLSZMG9SQ1GOt4VSiZsTd8RvJvpho7L9/+h1f3gjDwawxuItWmlBU6zprwaqqKIvkziFNE49Gm+PBJo2SwYiFjaE9p1QbSXBMJNBuox9j8DJvT/AdVOIjSQtzwpcEr1kfwTmnyLAhJedHj+xOm4ErTQ3BhCjVaa3omro2QqNx9kGFhG+HEODKM0xNhVBvUxen+Fb9CfDHEhIkJpKMTxtGtESicXBPBJcJdDRLCbvC59CdX0NzgngnuDbfSR8i7pYYzFhwamLovvg0vS6L9lMSacJfWJfBYJ/ZZwal9CecJC5qG/gV6GImh5wbzgq9G+BIK5BwhNt8hDo0k8OBtPgkl7+PRsv0NvxDVCwnR6hpkLo0qJbgw4ySNoVa4jOf4RhP8IX/yQ3iXiWjlND4h1mTejrInBvEJmj5PBqOpj6rRIrbIizvGhLv3mv8AjhBG+FL89KFR+4f9oSN/7oPRvWtuaf8AwZgSrwg2mKN6a+HmjSbwlCVmJE+DosqGvRw5zC9ZTITwko3f9I//AIIQlptmliEXStdNEhtD37CUS+R/ITuCT4Eqt6Rjbbg2pB5gUm9N54fAfAa4IanpEGqJVhE3pYyJaN6qF3EKPongh6Xwa/sTrE2uoSSd/AVpD/yVZg8VR+xkm0bXSRCafUZfoW74fXRHqKVRWmPVo74NupkqpUg0p2lXxgkmHuLCzhVo20iFv2PtDfwepro90SzTwbXhfC3YJpvg5Uh5wf8AYl/Yk26Polo0VBWQaJ/Y0efAl/ASwNRYKyiqGosIL4JeC6RJtsburg2zvRiO4VYyI8FfRX+BhJ+DdZCXWxIukT1DdhFPtiGq24kvWJkHqL5+P4/LaRtuJa2NYbmfXr/ksc4Jt07j6JRw0sE9boqh1mtEqQ7LEFtNssGv+v8A8WJJmNNVMS00a1Hv+vCMadTXUx1q6fIsjQ0/oJRxj5CJI/Q279Fgp1kzp1T8of8An/0/4S+AavjxfgKF3o9Y9K5BK9KlgtcwesKabGrBfszpjok0jwifGJ7KNxzodlYyVdE5aJbRNGUSZimH2YdZXX8C6NadQomUG2RtidXDTFW+DZ/QlcYljRLCF4elz9CouMjXBY+FesOjT0foTTG1INsTXR8ErGkn0bSiQ2uoTUcXCyi/Bc4LGSVmtF0aTVF2tGRwxomno7rwcFCUayiRwSvsI7r/AATa2P6R8A0VRgk+k8P/ACKxfgemMJGx/wCCRdEvTEk9GsMVTPs4xppjTK79HiHVJw+S6V+jjWCMa3Bqws6CI/fl/H/CM7La/wBNKhxwTX8nBMK+j9URQrsEFxPfJPk9sCfrfy//ANMX7V+Pn9jU9Fw8hWhrjY3uCbT1GUV/AlWNKFafT/2MTuTSF4vzGNtJ/QI0oIDTbhGmkWPUSoWN0mUYb8h2/DQmCiZdZxgpwRdEjxDRremGJqsThZqCwNfI9+iCSGwpvg9FJD0xWLXo2xDLAmuDROjoN0baUJ+Sqg06J5CNE+emHBqPBVsaQhL9iUf0SoTn2NtCTaMSN6KvCXTDSJIaU0xqIWGnokmqdWGpwJXhq+zPeiUK1iEnGK8Y0mG0w94cCDY1JR6hJv7FmHXwJT7MeDrTLonfMGvWK9eDL0T0bNKmIk0XMNtYiRlzmicLA1GWd/C1DM4xJtgqzRTtbr+F6zMgiX5cxFV/f0Mdr7+l4jE1TFa4aVGvKJfGDTmsa3BqqIwIq3wUZup8fC/j/haVFdDf9D8vg0lf9j/U/cSaSP041UxePH+R2lmfOf8AK8FlZCpp1P8AL1RmVz+QeofChUx684JIPuDQ7xj+HDjLXFpw5P6V4v8AgnUPinPRmlBpr9DcXRJxjWxC+TGmlE6hB9j6LFEqJCZueDbSw+ASPTThXBLdGWfZ1wSij/AkX2Kjb9OdFLo3lQvpClG1c0Ta6i1jT4IlY+Y4R1GvpClwSr0tueCXouaLvDjmizoujDqDVfZ7BK4JTpvnGQutFOMZ1086KoWKTTERpIlecMa/CNo208GfRukxITJiHGiLw/Q1n2RpaJUXYfQTemUyP1ieNfj1b+FViESxdJ8vRtqUTrq4Ssx4zHhHqFgS+C/2Vo9tG90b+ht4KwTuCl1DaQldQ0kzG9LOCrdEa9MaxxP/AE3/AIQnVlde/wDwalSVUSCx4Kpl1wSfTn7MC9wivt+f79f8MRWD4Pt/Q3q9W2+iVGtwVI5QlVjGdGY/v8oZIYmmqmvfyqNUVPhBxb1dEt+hNUTi38V0aNSMctNwn2Pngv8A3/w07N/Q9ZD1lzMMP6MbZtwThVRsPnB6xKsvgml4VfoeJMVb3hPEJeie+iPrR/wHuDq02GtY2e2lb6hzQkmE4hF03p50SdFcgyCic8OMa4YklCriNbG5wRWlo36L5DJwTj02KxQj6N1502xs8hx0STok2K2JCT1mXRqqwkUYsWsvwh/BlvDTNSh0TNY6y3o9YsXyO05+2Op1jdGnfomQXCeuDzCp6Iuljzor1mp/QknwWCVGqqI14S+mBqCko2G0jf2NTEcNYZo4wT+A00xEkzTkGk6KpDV+hQi/Q1uYRWxuq+P4QkkosX5W5LkP5+f4KVlN1t+jVeGpCddQ64I5RKaJ60hN0WPBbLU0P3z/AB+WopBs34kN8dOL8eB07DEJR5wicIXo3WMo3u6//j/gqVMn89/yXwLGkaZoJdg1XXwa2CEaIkcl11/L1/lE5NsfwXJjc/qEcXC3wa4FXCzENXper8Gk+MXGjabw68/Cf2cRDeDfo7KjXTF+hqujSf7K/wBlyEb4xs/yE80fwFUxpS+lawjZGnvD9DSgk6VQV9RB5H0X5Os4Z0mWirJkY9LcHQjwjT0bjBN9fD5LBJszL0Yk0xtwrrhxm9aEzxcJO6W8K7UW8PHBQZQdTxCrdHTFi09wf+RJut9E6hKhPyYJ1vwm9KkoKhKPlIZfRpgn6E/Ru80bix6JP+CnwhvS+smacwXWFU6yq0x+jk6VSIiovHg6+D8Yo3RW/Q8WcMXRI+MxzRpxtIXrFoj7+b1+XNpCtvxD0TfE+vn+RKhJres1IeI56a8PgYHKOWriFpUSRfmc6UP01/8AoxvBxZ6RzT+Rpp7wSnhiekU3afwN/wDCVN/hH/8AwWouD1Ex18YpxrRVe4WM+VLWCifHy/n/AIKc5tV/hDeFNHceDkFHgRL0tWdEmjbpIjw4ohEujX3BL+xPkT9GtOumpDbo9Qk7o6JNKLteEd6J+Sj+mjVxmFgqNUqwmCXrFiG8aG0nhME1NIdVmXGOpEg9SMVejVIvFBsuMfRKPSB4h8jE/n8He+Fd0y1EHTGal8lTxDqZaJJC8BfZNfwJ1laR1Cc/HVhtKh+kcE8Yp/I3sHV0UfhX1DbfD7Geji/QtVRFKNVpXWJ6JtQm+UlcZDsTtY1mj5goGppW8H4hvEcgo3gsMsX0X54JofgLd8WD+fX/AOv+EN2NZefD+TW+EacQy+R/sXyxxPBYqa6OOsjtKWZ/gZ/7/wCEhHhX8vf+hqsZPUa3XwS9K2yg02KYNWD5eTf37+c6rUv40S+CuuCxsUd+TU6On0OUn1Pr4/kWWkIkuJfmXD4X58FjDbbfrFnlG/GSLTXzg3Fgme+CJOmHaR0e6RBxrD0ba/Ym23Br1cPsTbR61DjrI6NXB4i4jieiW6JLo20/w4s6Le+C9+DlRVwdcF2FbwURmUSVZTrEc0RXSQsR5o06Lou6N14cVZXb4Nr+TrH6KoLoNuafUOHeCcU9OPoiSvoljompBcE0meZpQnMGa39HMHkwZ9hVMIX0ZCf0NfB8l0aqseNNcGrqL9FVRFt04IjdpHQpflCgaUSTQvhCSWsp+DRqPFEKfsJn0474P+hU3CLDHF0Sj3UOHjGpvTg6hJUQ1rf7hipSaQvj8tPxxfL8Q6C2Mbdxj+Tf4Fj1mNIno20uidRKsME//Wxt/wDr/g3zrX9Z/wChz0+nB11CgzqF9Gu6fyRraNaOv/2H/v8AKmvHN/KG7LjWNDez0Y6hbSg5SG23El6LQ12F8/H8fnnTZT9C36xCuGEbIxJwa0lA6nnDQ66TRI+b+H9DT0UxJ+CbXRNonrpVgmCfgl4mSvk9NwPVjEm9TPa+i+AtbbLu8HP4F6cYkqT5HW5BB5xDznpc1HVgn8iiHXhTUbIqK/sSIY39Hq+BtDhUTHqsHng2oioEXPCR/Q0lKeiJnsbES4fRVNg6iNIZcHj0TbxjLeYNUc4VwO9N1ktHOEY1ehOMhOsf0e1jkcEowtxF4ImiRMTiYnWJV7wRcCY3BJ98KoNMG5+jrWCrK0oaXSxMTfQvkNbgknvpNXFr6Hi/4Sam61z0/rg07fB9iLu4EpENn/yP9BDeuEUiaL4aItG1M6O6mJGfM6V/S/8Av5ZMbiVOzjNtmlok/GJVE+B303r4Ir9GJ8ESYMZeD/tf/P8Ah4fCv7ZDZs9w4yO7wW6xsv3/AOP+Hgzn/kf/AKPsIw95NMbT/QQ3d/wDQWSvg1G0vHBrfobUiG/sT0eUiuaIQbZ4JNPOCq6xHp1nB6rHv0J4hKQNfRxDVb0XXooesXQl1CcCb6Oo+ytVEphHTrFV6NYL5DJkpElOiTo0JEjMuaI/YUCtiPYUvMENcG/gyETwaGvU8E0ujrPgUbGo4hy/JZwpppyi7KNRQVkY1HUM2xk0beDumwRJfJfjBN00aJfofQV9Q+Z06Bp9QqkWBP8Asd0V0cXdZSqi14NJc6JtfYub0WvD5DbqGejS8H8dKuCTax4XI0L/AAZdHwbUzRP5G6Rlj54L/hetL+N+WRvX6P4SwbR6v9X8vKf6MdCwaXRemnp+wN/4X5kHjv8AAnc/DEtEsqIM6G6mOqoo0fo/iD/8CP8ARaJpUfyKrTrI/wBL1iEIqL7+/wA3DIzHpa+Ph4iNaN/eDV/6e/n/AAGfE9ZfPBoP5WCZo+BXBRLejwONIbSUOjWac/RW3vDGy/2JFcIYlK8KrfDHg0sIn9EIbsg0kP4Q0ecG4qV/BfhHej16VJ/I/wAExDTuGCmi3wb+zqjNBzqFFvyNLvpfDr6G03YaGoxQqWESQjEnpSLpLCwOp3YVLYN3gXYyVVMprgkvkro330pLEahJ40rjTEzGhKpwVv6/BKqiXo3MZ+xrmHHwvIPCj0S2sxvCUk1MfF9iS/Y/lHFnRfI3/Avg1PRpgiTbP0RPrHwRQjXeHME5gINso/Y9f5QgSrb8Q97cfoCVoTbEz7P9T7/P+u+TVOZ8lbbSGxoRrwb+1/4X5Sp+f/Extp8H1MRMsUH0T0Q2U3Br58KrRaz/AF3/AIah8yDR3GVpQyzHD/03/h2ybPr8X8DcaHX+hKoav6f9vz/gMbsvWZSkyV9MYLNZv8DQZvvBFxMS0kcPsNGoitrREn0acwTPsar7+HGmYkN6osUbY3iFGibCrfw80xqMq4hZg3sG9wwixfJ9iTXolQ14FBDauoibIliHmFLvBq6Supk3RR0jqY1Vo2lSJFRqwq50vj6RITgSiQ80d9KmiOwiX0aaUXPw0lpVp1g8hVw+0KyiG0wmNElBVIp6VtaNfJdHp1H8lJfZIvspOmtGq/pHuDkiHiwnyJcGsFfRJWsUbhJ+hxYPWacLWJUUcopmBi/F6/8AhJ9wrxeIxo16zRVn+z9/n/bfJC4Ich7RjZJES/P/AEX5+0xGsZiQiU7+hfBmfyUmJHjPTw/c2v8AV/7/AOCLH/8AUyRj/sPoHqfPwv5EkkklEvzipto9DUTVbfrEnWcxcJFp1H+t/P8AgM8HKxKsa+Rvg0m9winRv55+M4PVE2+GGhNMgn4LsYnwVp4JNsbrhIhucG70ngTzT7LeIvyN5UNi1aL4ZHngrpHpmLomhpLiFQ22bI2qWqMSqEsZeF0TdZPWNHtFmiq18G09IkmxO4Rv6E6hKrWJpsIemMQuk2+F0b36Gk0MuCytdLf2IPtDfokg2m8RU1zfwOBt/GELpDyaLsY1HDeeCx0judPm9K30RNYNuSGDj5GreFvDVL0WtjfgnFPSVaa8G9gl4JUyYKdG02qImGlqIJ8FUo1HwLLSESXi/wCDAoVqv+jP/o/6P91f9Db/APL/AKM5/wCH/oQMCJ9P8tDqad6w/wD7S/6P9Ff9CkiR3rT5EVNwhV6r/Kf/AK/4eNzL9UrdGWmzeFXET9BVcEu+ik4L5M+3V/0kvy2km24l0e867+zFeD6RRqmfLf8AwX+GRxffD/8AtL/obf8AuX/RnP8Awf8ARnP9n8HlZXOT9flKL5UG1tvX9f8AQk8/xf8ARgzymcKfhEw1EItNEbQhVfs9HA3EQ8V9Ft+i16Yh84Voz0iXUV+Dan2YQa1QYTwZ36FoYlOjJJ0q6mPp7jwb89MafJwWLNGkXyXcKuj9cGsE/rBzYR/sba6a3EaImp6N50jeDqo+IRPEJNDdDeC+ERMd4uC2iJdGq8QonH0Tlp8kJOdFieDSCjfBDdxl8Kfgk002Ws4bkOMNp0XME4sGi/Z7+xLcG7UIN/JbfQieo+wXqFPCLrJUdG18CeQ904hsJucGt+z/ABn/APgdT9DONiSbPhVq/qP/AIcnkL/K/wDhaRaQo0LGyG0NBNH0P6GoEdP87+dCjUv21CunSg4f6T4//dL+j/4YuBubB1vgbignBNMapxDe0avOiq1iSZ8Lg41EfAXVEnB2DeRnNGiFZwS+QkqJRD/Ylem3BtLGKNaI80S9fBaoOGl0TwLdZiZE0EpxiVf2TSLj6NNKI+mOLELUKzPCzWL/ACI96V34I/WN5EySiG/o+BxfQievBLfo6w4J1EcQ9VYnUJXUOvHiGsU4JtMbxwVaYn9nvRucG9h9irbwaSwy6Vd/Ca2nRREvsJNosRc4XMQ07wX2VahpwbaT5OPsS+jaYJv9DbeGkh/DwT+Sb0rtG60L/V//AMCJ1CbBpLgpq4ip/p5/wUka1vrq/wDY1QkWUyCXplwUmil0of2yQlCiEl+bqPD/AAWsqSJUY1h/pPj/APff6v8A4Y3Pga00Ln2aof4KXBrcN6OSmiyEbdEmqNMq4fA96RxieNIr4xqhqqG8ZiTRHjF014Q6/ZnPTBYgmk4yzB+ylYbRJ+iSvR1M8qOuwfyJr0m1DTlWFJfZs+yNPSJq+kbVGm10j/gTuMiSPn0bbD5rE28Qquoyw3A3FOsXNEyuxHA3B1MFzUPFU4LtYo9Y38KoVSqLVo1lQnejjQg6+jkQ3NNhtfoU4U+YhOYy4VysUe+jxmtWjsFIx+GNXA0kvseIt+BgNpoXAbnRurOkTa7b4R/s/wCo/wBn/UJvP9X6P9X/AFH+7/qP9f8A1H+r/qP9X/Uf6/8AqJHjWkv5f5ZpWNn+r/qP9X/UXxSrGjrDVnonSnTba039rH+c+eT+H4/7EnR5H2h0d4T7EoVX7HPgaVwcgf8AlHX/AF/5/wCDma0v9v8A+Q1vwaHKiENJF45+jX/V/g/2f9R/q/6hN5/q/R/q/wCo/wBX/Uf7P+o/2f8AUOF5vRT+/wAtpJt8Q1d/1fot/q/8EmFTVLIyJuticpko50bO4VI3v4GlOn06a2VJwfxCeuiS4j7BNP2w5xkui+EWMu01uootUfTYT99Hykoqx0KmNqCG2scOhAsoapMbWIrf6JnRJsdL0aimVpY+yJjbkRKp6NMZ1fjdGsiPZ4NeOlYddmi1pdo49gtQ6xKhPiKlhjvyNw+SE5EfQ08Fj+hvc4cemLGIqPFF0kWn1BWCbaJOela0eaILVH0SlG/kWZR25wSbhx0XyGkhx4icSGkngllIa3o2liOR6KoyNcMeMnwYY+aK0a0/2Pv8/wC2+RPOfg01gXBttFJaNrY//ov+DOqvCDei7pGxqLGZPseIix53fEvlikse/L9f5bVGGGH1xjUE4oPFgsxi7g2294JaPuGmkVwbnS39Hf8Ap7+f8BidPlkaOBHdHEzzeD1CcUhiVaG4wT0SKk6LCpR+jbbwb2lzBh5i9EsjGohJ2j7gippg0lA0WjbiOdE1Psr0484N78C+RJukDZSXUXxj9QkMaovoyQYmZ01N0d+jl/CbpFHprcQln2N3ENNb0pDUd+BK9wnFJGNTRUhOfoVOzo1tKXo9cXRLdLHYN/A9TVE+0TTeFfI1ip8NeDf2ayEJdfI1tTP5E/kWujVXNI2hN0sY3u9LB7o0sZNng4J8itp3+BTjD2CLpY4PPwOOIqdJwb3h1DkFzhSVZf4Cz7L8n+x9/lL/AK2jzgy+BPadI2ha9ZBhQvv6HMJqv6+vy0kaaTTxpiSWp6/S/wBeDwmupIypRxpUaSeaLC+VxT/s+9+u/wDx/wAJLYfH/C/9jVZeDlpHpTguhaJtoWahP6PBOsaqwSf6fP5/wGI/5GO8go8wTb3whof9BrUL5mXeEKpESNDUQSa+xIhor9iSWMaSYnqP4NZ6a+l8Yjv0KJ/A0/Q1eCH0HFKtF2MasIungEzRvIYG/OIbSSI6Wd1nVUYRLS0OPF08Co1LRaxslrFGqJr01YQTUfyMk1UaRCYnA1ej6fJM3KNhc7CNaVp2EmjL0bSwh1wVaE+04qaTGjG0uemTRMwSzeibY0a6fRqUHITPs7LdOPpGxS1m2SdE+OFbiOejbZtaNx4N7gmoXr9N6Rt094NVYIkVel/kaWlmJG94Jh6mnwshaJNKslP9T7/P+2+SutI3UzU4hNLfRJRq/Qsz5Ft3XW/5v0d5/wAIAv0Metqj5xIer6GW9f8Alt/kSSJIkl4v+Einl8r/AOhuRms/WO2op6xtsWwbmOG8GohmhPBxrCCEeibOv9Pfz/gMtW+WJ/I7fopfoY8RFZBhaRT8VxjzROvRqPeCtw30RwTaxG/yYu9FzR9GSOEP9k2MYqucLHR0zrqRW3hYM7hI/wBjSbIR8Bx4vDDHrpx4tFieaKvGNxuUa1Qeocip23YMsDaEmljF8umuiVfY9z0XNHHw7gvgWrPxf5G0or6OhrBZo2JadEMSq6ScOeFhXpG1vBNIb+OF3R14J0JbWJFg86dWC1R1MxLRtP8AQjg0/GfINdE4NtPF+OOdJGRdpkK/GJJ9/gxrelL3BNJHXnStpsgs0Sqoj9E0j/Y+/wA/7b5P4ML7N9G8pIr6N5GaLmH0Em/4P6EIYmmqmvf/AMtfnWT0Pbr4jifCN6LB3vgtpI3Yc0mpou7w8EhT4E0vB4sYnENrzp23+u/n/AY0R9sbyMyQ6jjGKF9/h1IerfB7BfATcJOiBdQsNdEmkYlP2XSNusW/oqg38DNaN6ITmiab0dLCC7eFHExUejwuZ04vsaSVZMwTmsnTobo19ljwXyQm6P5GRD04Hj0d/Q1xl2wibvp4O+CqdFqcEosKE3KONfbHmISehxrempZ+GqJESGttn2x6gxOMaqE8iE9kKbgl8jVQXwbB7jO8KsRatJTgUCtPBvoapntXCvpYI5SzCKoSoifMEVFFp9j6HUTdM1rpWKwejqQm1h9j/Z+/z/qvkZfwJJ9DWdH2dIvRMpmiLtLEMVfyM5+n4J0ku+r/ACd5/wAmRXetB2DlPF+l6OTQ6w9pdwSe0T8HPgnotwWXBucHVUh75DqzSMf3HCwSP/T38/4DJbftjL38Gjnpocf7E37wZNRDqSSIdKlwT/kjeuiqW9EqtZj9Cc/kfcE6xjCiHzgn0whOPRtp7wuYitIXFM5RlsX44j6NlwbdLEH9oST9OixmjaSelaWIT9Q/A0rg16yNojREFCQl+kKTBxo6lBKdIGncGFiI4NvwLPsbqOGhItY4n+zoUT+RxpnX4CSSNtZXvwV3mDSqaHrp9eDSYS+mGVGJu6MtUQlFqE6NtQu6PGYxshbrKlg1oz0SnSpKia1mtF3gvkXwYhv2aPlF6Huj1g+noY3YiRtsvyO3IxLRf0J7lf6fQ/N/9PodHGOyH/hHGjS4JmGH2hMKKMWoWLBatIWoTHJHyqv6eC1L71w/8Enb9OW4v+/0SaX22xXEqeqH+ejS4PWrE3Y0daLHo5MKOoiNODGQlp8zhM+Rp4JH0aLEYt9LDiDG76R3+0a9f6fR01/p9FdtH/twbrr9NdFiG6ZKxNS3GhokJpIbENcg9KDbbiYm09HHiPGcD+A1v2Vxi0auIQmmxhtSihU6oNHIL9g0kx4hNQVbI/kc4cWDJseNwTdKkNpeDeYYQqiLKG0g0sNCes/kHcFglUKE2a3ou74VeM62JJaesFXhDxEQ7MNLR8Qm70aSEqoqpHdHUaesceOIdZMOiZjLkKkG3foduH7Oqn2jCIdvBtRbpgbu+ETSaHZWMrqITKtF9k0PWYn8lrkGmIVrG9Gj/ZWJaOrTqGwSHeseNNEujxRCW/Ik05iPcwTr0a8DfyVNfQteDjCQc6NoyfY3ihDyE+BRrdIbOsQ/rpt0QfA8XSuxxoRM63EZ8GaW3C0ew85TfqibuDtLU0+UN3uGrRiqIzn+/wDQ3zOUr3/0PHPRraP+yNaPXGdEJJPsTW/JLSgtHkYgCTNLdSEqHU1G/YyNpZmkEP6xV5g0oYnqGo84fQbb6OgluG3eDx4JZnRNN70wSa9JlLAngaVwlQ14I0N4Xm6NPrE9UScJ4xqTSBw6KdZaoiRRss8H44SRDjGRfuD3opQmb8CtPeCjVExoJNKo0oX4/A43wTriG3wawp6nELe6I/sRzoq0UFJfYlWlmCaHq/gb+BolzRNGkFSEhveEo2yfs+B26KFrwk1DbaE1xrRKK/JxwbXENtKiwJOMryoa+xST0bn2zg4i8FA1GV4PVR1rGNOYJJsecZPsyIs/gTcIu2ndRX0U0eTRpQSUwa+S5ILFfSboooN+QaSVY0nBLKjpweCW4Zejf0Vhj/R6WKndL5jrfYuDTTSqP9n+4+EOEfpT/wCiF216/wDDon4wIf4a8YjBnTVls20/NK9feUYWfvf+GaDQindINVW8FtC9ZxPliRZ+Cpf0mRRY5Kj/AGQqYFlFtv8A0Iarav0xpuKUo4KeGpK+jhQ9Y4k/Ol8FaFs+VOjPTMSQsJfCaT9b0g4Kn5qxmv8Aa04NrKPBp58GDWYIvjFSg2WBpSxjcdE9/Z+hb+xxFbGnEYZYSrqHil0T37G4xvmGN4NFjZNbFKx7+jWvoxLo9LkEtEzppyjjEUh3R+DHuUjSgikYmueETh5gtTpzwo4+CV0rTgrtJNIxacQ9YfXRvDUwaHum2nzRYfwNC7RpONjxj2hm30NGRYYvaL7I6G44hMr6NNpbg0kuipVphgke9G5o7ZXBNl2EXR1ITdODgauifyN3BkkKWjxlKXo+4Y4cY94NN4xZ4Jvwb9/FTDfjMWr0jS08vv4dCrK0JXpKJxnWCWiRCXpdpSei0JF/p6LKm8vg3qGEKaF/bj/2f7D4Q3uk2na3KNDszZ23RttIJu+l/wBD3/e1k3/7US2i/wBj/wAMtHC9WfGjE0aFGOls1q/pYPZv1s62MzdaPWNcP6C/82L+z/2Ff6PDf7f/AJRfxxfiSGrVkk/hrgwKqaX1Xv8A4H7N1R8E+DzInV6s/wA3/A2P+1KCXwOE2Nglf0NNCvo0mVXCR2jZSqDaahR6NYakaxjzgjcnBwxJoJtUgz9huvTHBYoJDJ9CSSMkPRr0StNYx6g1ekXHRraSjceGWjpUYm/SLvpn0G5ng8QfCRqUQuaTc9PpE+WKNRm48HVo51CjQ59BI2hpsa+QmdJ4ZsI2jpJF8HZEXNFG1TWDfCFnSJ7woc4Ylwe86eV9I00Sc1Euo+XT4QdEmuIraHcG38YR0e/s1DXwYWd4NWtKLUNPRJftDWRCRBJLhfEcbop1ejG8ZwotplNzwaodWCjWY9GThcFreEIc8E14TpMx62NKDRwf1+C2T8CgsVOvT9MWRL7OfJr+0/kRP8Qify+iy6cn9IbXFZckfUyJ6/U3P3YODStRTqS699bEJ1CTcTQsLCbi3sbvBOhaY4lWv9MXV012TvyK+j+FcG4nzfplnzsihfTomgo00dl6338IRO3jia5/7G3Wg0ml8x0Uha+29ea/7Hm6S+ueodNidTbgs0rmsJQptGXUvn+Bl6JGj+e4M+Pi8WJfXeFLyJL8pddy61PscTQ43GZ4Y4MKPRrg4KJC/oexD+R9hLN/gxjPaL0PAmm8NM1IrCaQca+jWSEirQnWMl0SbrfBK+jdchiKdH9jrwsG2uGDoaTILv0QPwhGLBx4P4DJdPt+E69HgTc3gnsQnx6TXommtJr0+mjhdRjWVbPwlRtPIKTBvxEq6JkxpAiDCbTh3TGXEJmnG+B6w+D6O2HxBEFEKFGJpWH3P5K0KiRpYhYK28Hi0b38SYxJQycPLwX4CbsI07Rt2j1Z0yR9JBbvpmGRIb2/B3pV4NfY+JCRpDliHeJDPhFYTwVwz/yN+DTpcg6E9aSN/Yn9QgbnlPkJt6mXbTjCn1sbrQ0KVPiljvg/Bzhs18US+CkV2sPdL4MSoSfwyTQ1X9CgVPinwrFsjkIb0VmmkdxFcMr8M4tg209dLdbbfyyN7RNUkFj0sZtxEpUcOoV+R8wpaFvhcOnkEo8Y/wCwzqYqno7BqPs+mOFUEjxj10v9FSL8RKi66hPDtFEGq4iYHPoJKYzDzUY+GIXHBVro0/gbNEn8iW/Y27REnrHP5NI+jE/sk3o1tKrRfBFTOhU+SEvRsdmFi6RdGswb6PsaWp4b8ErWEXyJ1RD8CczrGnahxHBtrQlWjnwQ9JdSgl8nX9DsxHNhr+xPRPkSSdo1WnT0a0vycVOJViLILvwhoSS9GNxHFRxwbUjMM6qkVDIw8XRdNo1owJCS35EuhKsfeDxCTF0bqq6iutDJlPumEW7DpCUn4Xfo1rKpBR9Yse8H+hwpCt8RX6TwNf4G039EvHBEl9mRuiezpXYb+yJd6T+htNQjTSXCYLbUPmDii+ISzpway0VkEyCsK7BN3UIw9FijLgn9EXgnHWe8G46VtDsw19DaSwz6DxobQfBLBL9BYOvg8SG1KMcU4NK4sH3BpejzIJ1/A/ogHj4PUthUhejtFEfbFr6TBqDJLSZjI4xpp8wm5wldXgj6KkNKIW98KqNaSdISMY16W6N00hpr7i/yaF9CcejWVejTok1+jRLolNpPjhVR9RRnXcElopPRtMInqY8Y+RDUW6e0buQdqRKxPljxVC1jX9nHox76Q0olGOpwRYg1FCxIddRmhOMQlbSULeFXGOUWt7gmoNTUVvuDJI1iWOnko0RfoheCresvhiZDGoVa2bCr8GWjUWCbpEjXGf8Aol0RQSc9Emhy19Gu+DjdSN8GxfIvloS1/BB7PRMkPSOah4/wyVo10nhUfsMr9lC44X+wpfwaEk1o2rEMgvgSNI3+htTp+jSNSE9NHI9Gn8Crp9BIRuCQVtwd0LmiV0dv0JODFd1C7qNcwuwaVEqHrBv9hvxE8KSEU+ziISaWliQbaDUWDwhLfxK1Bp+FyMhlqDdZYsQnvCdCq0aS4bcFWmbj0TjR4wtxDwLS+MqQRfyNmzwTf4Fj+Rd0lRDnRKcGFwno1hqDw3+BVDdX2aVJxjatFbPBvYjRpN38J4WQxNNYcG+JdI+FYfTGRNwaXg38lbCVcZJg4kfomlnRt0Z8hat6J/2N6Yw7Rba8HyIScHTiRKiR4NtFrHvODUSgqX2WYXg5cFvovaQlgnwKwcejT0JEh7qE60NtuI+mfrwpmF9l1/A/hwWNPsJpMNjCjchihlmDwj+SKfg8eDdCcOt0SSg208GrtFn2NpDeHwEuiUHtRCbZXStt4etj5gm3YfAfEU3hz7Gr0bSY+CWk9ExXo/tCPgthpOjb6hOvRN10eRo+xkOCdRxBHLRIcL8ixFKLRjwkdbwm9P2YE9olWV+xN3mGt4ibeETfRd1H1MhrR9tiHPQm4Vqjd4bUhT4Kg6DtgkxCcQ3wXtE/An5D6De6LmCWqkjUMvCXF6SYJunnT07MGklgk+MWOvotbF3RJIUbY1F8C+OmOGHWWsqsZTjFj0TjzR46xOvhHcEpaNemOJRenEN2oUCT0UvR7wXYiJVS16OkvRPXDrkEncw3onYVNT0rjRtdO5SbhwJWphz9jvWfANtFTZV+h4oKv6EnWJekRtT+Bp4RJj0V09r0le4R8cNmMyatPk4NKjR4G5paiIk+xR9G2JMbxiSwdMrghocLODKserBpmnPgT7HfkTq0S/sSmlMIOsRodKFTwwSa8NQiZQa/s0J7vByD6NK2iVo6L6CesVcU6ghum6OFo2s0TSHGTMHon4hH8jUguUajRRYTMZvGhEujnnBv0JJ8HdOKNOL5E8hF/Ig/l8E3WJCFgW9KuIbmDamdEs+yk+D101hSZ8gu4I26x4sE6fQmkG0+IVZPk+kTPsWKv0mEkFRpPDi1aKo7+xxPTHvIYxJedJej+hU1bGVm4YkxH7D0ccZrqIS0ajOeHuorT+hjrgmv5RqNDTTpi01g8dQ2pgs4JjjUOmh5+G8WFTB7oUXRPT2fI7+hQ037gs6OuOiMY4lnRNjRQcWsTo2hYjXBci6bxnEGovk9qG8pjXTwZDWlUkX2dQ2N6xm/0NTiP2Fo3USwWhp0w9KhsUFO+ie6hsV8Df8AAgk/R1Po9SZ+iX03jEf8Cbaw6g4pWeC5gmq6iq4LVvTjvhbqHX0kCT94NIT8Q1eCS76fYWoaPBq0kJBuLDxGAq3g0EpEiLDR7GTRL09o9JVDaNZfS5glNY9Y1BJPaPo9EUfyVvTHTGo8GjHqTQjWjE7MHSpULo7cEXnS0dfeCx9OvS7hi6Rfker4En8imlTQ0o3cG9GNRCIbnB0mWhxPoqjTo9QeqjyF+BvigjGp3BLIJNXRr/AvkaT50XT5Qm/RO/AmjfTDL/ItsI24xtWE+xqhq+wcS3WOeDcQb5RJQbgbrvgobFHw71EK0SXeDSn0L7QvrpJ046Jv1ii6G16JZUexinaMJ1dGyMhoaUdCbSQ38IcaztIT+WJO6y1w8FgcEk3RTwNLp4NqYJJP7H/RMxkSelj06rZh1lwWJiT6htnG9HolEJohEXg99w4+jfBbBOdG/ohqpnn2V/AkhSWC1P8ABUiu+l8+BuNQmokWPWdKDXvpahoujCaNn6dEdtP2GWenTJduCkwUpFnhreDVuj+3Rq/osXCV9HE5RInp2psTuNDe/Q1VvC+eDwrWCSQ1AkvRdzgolRV94PGJmi+Mad4WOQbVD0md/BqETUpxEJ8DWxDmCv4EVKS6TE2ShpidG64xo84U9RGh/ov0Ipo68IWMlHeGbwqa+xNDqoST2kT/AGexHGV+oawOMfMRk+yXIWCS/kekGvoVhvwYMa+xOYxPfoqeoSrIk9McFnhRURpWHvB/ZPrBNLwuDj1CblHj7P2KE4kOcNlZxFSQvgh1/Qkusx6XxI3jJ/QnbwWP7K3jIr0TSeD3fT4Mxt0reeCreD7g10PXRTo1CDdj0T7RcG3JBJIR9+lrguwrCOJw09ErhExIJ+uDNOeCjQlH6K4Oj4IZ2Ck0bFbOr7NS1ik+yveDSuCTQ69KV+BtwTSoyZI8EqVMjR1fgR1kMLpjwuaX+hkmyJul8HeldHGnIRxaJVHkEmibfSb0aT30m0bqNIIKtwxYdx8Oc4U2x7kE7g02LGnRJIip4REi0xsfjwTv6NLBvacdE5/JrRcPtdG79HfRONoxMxNITST+RUa+BhPKVImVMkE6jE6N5o250W0eRD3oq6JSsST1jx4QRjwijsE3Qm+eCSfB6zpflDbUJUJN/ocXDiHFhhrNOmWleh6wk/CNr4JFFPRtdFr4ZaWJDkExV8aacGlahppjqJtNcQ4E0htpDfropB94Rt2HuMdT70jK6zXCN0US0W6dCTCqbY/kXB4C1pi6KMie/glHENP16JzpoxqvB3omV6fL8Iu9HrhNHyFL9it2k2Ij4jizp1iFIJbdHfDinom+MtGjyCbRfkOtxEwf2ZJ8jiWESnjEl1jl6N1YMu/Q/wCjL8DbTGmsuPwbXGQ3wbCZhVEi1ia9GSUEM7OiU1nwRVn4iWesXh9G2nvDSOHHSzBKKoSo0S+m+6WfsTnTGKHh9nEInnpEmLRuMnwPe4VPBKD3olfR3g9iGvkKDZNfB+ivBYuiGcRHA0/RXjwfyGEK9Qu0qdCJlJ6xvMExNdG9sIoKNOoTS/Q9Sgk6YmfaZb031DSpEsF9hqk+Rx+/goqx+kxOuDWUS+WJzUPlEqPR4eZ0S/gscK19B6xXr08Eq9eFQu/sr4LPBJqE0EtHG/w6Jv38V2GpCdYgYrw8zolqHtRlBbUhrk6LV9Fj0bXhpmlYscY/h0af8iUFr0bfnC04yq0S2lXCL1ixVEdOB+Bt3Rklwb1kLgra0jVvBdrE17g0/Ymvger4b1cHxTC0a4NIan4KrBvMHSkIV+CNl3ENNqkdxkelTc8G00Jx/InT4PhJ/IsxDRYwdlG6jUH8jG6h76JzzhWxKaFXglW6KN0X0N/yRHoWtongtWdRT1jdG0lUNXp0LweI0qNtBKtPBL0m/A410WkadHRaTWvCr4HjsNdPDQ2yJKtjdwSaY9ZpQkYPBFo68P20/bgsdZesafRRpNjnCKqyV4zW4L9i9JjUXRk3pF4OPRYLayxpdI8DU9pk3C/JfnhU8QmNPgvhDS4hVLgsVlVRoSjSDpF0ab1cFjOUJeixsbZQxovoub08L9CnyNK9L42LwdGfh5SBHb4NQbdwqS3p7UXXT1EtPU0VfCP0WrByieogWByYVUL5GDZDCImNuBY0Woaq3omlXqPorbi4axUnR8P8j/ITy0qazpxKlrqH8l9Y0Y0Sgza3ok2n8iXoUanCJN0bjws8HhDabX0e5wSbd8LeCbgl35E3fwJpD3TD6CRLRdTStaQ0rhPgQRp6IN9ghMnBptnCfRUoNXgmETWiWCIKyCzDj+hrdYpSO0aspgTiMOiBx6cFIyL0an6PBpt1kmodjwp4doXCNj0hIhVpm0wpBKujdcHEJDJ/RExNJQ4dCrfThP0sYm05+J0KbRKrR/Qax9DxiWEz5Gn6QSTcF8DmIZr+TyCxFwXJRVUaqoTvwOYG6RhRGGNbUJ/AsETEPgnoraj0NlkFYJ9Gt+DyoejjhrDOFxzv4vBO6yNHFq0eoNR9FrhQNsdN+Tzgt8F9hYJ7vBtNm84Lv0e4JVaxIMujSTpI74X4Nmsl8Y15Bd4U3olFBng7NKaJe+EbYlFCq/YkejzB416Np96J5BOv4Gm3B4tF8ofMJ8HGZykUjGTQ1cCQZLCxxGnfTZozT/Cr4f5CXofURab4N8ODekPR44PVB5hUkYVXSm9I49Hq+WKkqxt6QtdZg1WNJaSrSHg2X2RvOEfTFsMU4fMNSISd1nNpeoIewUbJNE4d76Opx6KOD7BrwyGJ/saGvCrkwxO+DUYJYfTPsFl9G1L6J0NFcElKuir5hRCeCbeI8j6eOCUU4rIgw6YNQZEYmEaGl1jewlXwilHr+BcIOsJOif2auisqGix6qP6zoJdP6Dl+xPYyNaiVkSeFuoS2sbR/gbwpOjbf6FU/o/bGHTtG/fDJg0no8iH8I49OBQgtG1Z6Khqg03qEvRtUaqOOFZS14Rjo2HyDamHFF8hpKiZjEvRZBUqe/SH8+FM26Y9OLgnjaNJ0eahLNEvH4awJ7qG/gVQ3RNbRzzoquEqg/ilWOiabHjFEyKWFv7E6VbO6Ssdf8EbXTmGJfBc08+hJPTHSp4h502n6G3RpSkrTuDiZhsqYJxZ0VbRoa4qJFwTiw10S/Qu/I64ZX6FXpdOuCx/JrdE1Bw2RDPk50YUT7Gwq9McFiqVLmibT+jaTdHUNFzRvKJ4R1pcK4Jxx/ix7pYxtyoWrWJPT7KPV2MtSVFbBwxqQl6NV5woumNQnXpphiq6qNQucEouiVWksGmshYoI+jrY84xiJtISDreIpKNCVYISr+iJcG6/As6YbhwjExtJBKDQ8pjdPOij70bjL4J8FLRJLSEhOof8AQw+neDpQkao2qaeDr54LGiJUS95+Hc8E1qR7B6IbtMalkiotbQ79kSv4Q6sQ2mhYpnno4nhj70S35IKJ6yVuPBXxiSX006hpjQmiJhqJCXpfA3EY1PcE0hWLMXphIP5GNwbSU/Cdo61wSv2EsP8ADEvDvyEoGmtY816erR5wW6alF8sbf6DTC3uFpVDvejUyn6Z/I+1CeU5jQ3Hh0hqei+mQOJPBPg/ghYxotQm0jLo7xcGmY05puInvpGVfoTNj5hZfBBrQrPo9H58Df9DSbEtzpfX0byotVE6miIN8BR0bUsGyQvljfBEKv4VKIctiZo73phwavBJ+mpCF+x3GMNro02sYkN/A2stqffwPsGo9OaJkhK9YvaVZ4fQSdlHhKTEjqIZUaFvRrRUd6LO6NpLXo6XwxNsxvRqSMbfFwiYxojP6EN14Y3g1NEjq3Gb/AAME02fT8PpxE+GSnOcImvkVahOMEvRPRYMaPgPrSNmiViUdG/kTgeUiGKhJ2vgpuFT50ZNqjTnwFiNCc+xN/pClGSf0eZgnDekyJjQsUQ4m9GnGJU5KMnMFA3onHaJenxRjRN4KNsSTY3uI+ZJ0WDVaInwSh2Hw6wSb1j3BL0VQTQ2uCdhC3o0oujLUONpLv4TNdKuFSRXR0x48G5iI/CVHwcCaV+CGzg/9mSChCLTCw8pvfwJv38POkLEvweIT+UStnFJot+xItK0/orRriG0nom2y7COnpJtL8IVQtY1g3XiNFvUVPPTU9O1BfLH36G8iEotFuFL0+3Bv4FEenbG5RayIST1mGJ8MWdJdEeC5BvcEo6Y1CrQsXRItGt7g2Y9X4bFrE9xFXSk4nhV6Yw6gkktOBOoXwYum08HfQ0qWfaK284Nj8QjuGsY5MIpROr6FwSS4P2+mB7kJOFqhpVOCgbrFGtQ7YNJZ6NRadcGXCej3ULE6ytrSO6Sv7FOh4wWrTSDP8DTOFqE21p2JCWCwT0vkqH2orDOCuv09OohSc0YapKVTFIJOiXyP66QfdZV2GJRKqix6N6KWmrBbrMbwgxMs0XydaxVYJpJxjgWa/CMd8G4UQ0WmtgkrWJZODfxjzwXpjazqEjZBBo5wXBXhUvyKejr9FbUKQsbGn1waXjFGpREmtMXwOseDSglfRrPkSfpPKZ6xuqmt6JYxm0JJpUmW+H28Qkl6R2mhcwTyem0STxl0PpG3RNJjjfTq+BvxouaSIWoSvHBOUxsFUz3BI1o68RX3pkr6XR6KvhhjXvp8H4YGrpV0kOPPR1bCv0bXU9E2hik6ZD6Hm4JP1ievSha4cfMMfovh/ic0kb0ib+xvhcJOHFzSXpFHCOwkXaxvelS0TtTEtwSYkqN8YNtxDCFqIGTHE0NNJQT0ctMISTHZhxfYl9ijp/BMGknTF6XYvSJKexDOG2j9MxqiTfSRwckR9lMOLhb0/Y84ab+B2IlbGp1lnekCQfFuENwfZ4KeMscLQTSwT0Wt4Jm8Gq9PYOYkcMGl4NZbom1ie6MWIjfRNJDb6i1lWHyKKCacMPBqv7GvPTGh9G1olFRL0aoTWh4sPkx44jExu/oRDHBtyMWQfcHaawclFrQ26P6Fm+kSbhz0eCZUjuemlH+CwXKju8HbrElKhn/kv0N+OjwqNvCEyCtngnBvR48FsGknBQNeDUhU+hOveDgNKPucHAvkLEV8GjGkuDRqiaX2K0NBL1aN5RcEqxRmxr08zorNLfoVUbjsFrYu/Y2JUbSYXV9iW3p1MUXGKnoqnESHOCXyUJNjXyJ+DaQlVTEl70x/THf4H8DvSqtPhK94OEy9EjMxaRa2OawjSw8YN7o5701yEdLVOCP7IrpG0TM6Ln2PPoTvGPHSphqDpHRNqNbMTgkmqaGmvSYNfL0WLOli0SiollMG2PGJfJDEfs8QkYNZPSpEdISzo233hj9FYT3RlaumBD7T7jnCE+idWDuFU+x6sGnPliXGh4Y9SFRpOVDWfZxqHj3UNtiFHujXyfYNfD6eDE8FzhbwiYgPMKmuCaHDr4bxCVZ0UX7PRmuEmCk0ZeCdWGLS0g3Hgq6yP0fsdX0h7gWcLVfg1iryDx6VjRWHX7GvgREWL9jTenGPosWdI3jMTzh1/AfZ8CahMc6avB/Im3grsY0kqiejTFYNp40LHp9CqjmQaaWC/el6hXoSqsRTSlw8GitNJ8HrwkQryDUZsYykZ8Alm9E7gwnwRpdPCg1P0LA2vOlBr0bT2DergnFGmn9FnNG9RZiHbgk5EzqMkdHbWISn7Qnn2aI6zgjWLps0TaE4t6XNGTI/TT+hr+ixaX4EvTbQsrHX7HelrGq4YqYmkHHpFwJGYRItEzc8GwbTcFKJKj1EcF0q40JpU+w1DvD+BL1ibZxOHGeVsWjqCtNMWYz0Tv8AB1DUhwsE02abJNF3o1/Z9t0bXgqxiGLoumuD6Z4POm+H1dF+xtTDHyClPMKm4V6PXCXCpNpie8JHfB2OFIbb4JVahrRjyCbWDbaMbRrVpgSIa0fhHwHC+yO1ljWHW8GUzGVzOjdEvozsKmNwfwcBfTHRRqt8G/AkoXbOGjps+zzUN9EzRKDT6x8HimCgz4zZUJuKkyofw6NUU6e1FKyfIq4NEJK0+RyUSqFx0TgT4FeMiRwWhY4NZ9mNDb+D7XTWhF6PsTEy2lb4Q1Gc4fBjpYcWDuDbQ6JzB+hZwbzTJhjGovsk6OqGenwDd4OoZsNInyJOihD+sEXaZ+DXgkOD9UXx6O3RYp8j+BJjMCN0XdJeiXpazLSu1mJRmsHzCSmXxwulakGdGqsPIJNWkWsTg2hfARLRSOiicGCWfZzaRUXS5vhr3DJBJoTfJAbMEvWMmxpDnBqP0fRiQp6ISwce+lYaP0OwW/s1p4WLhHg/TZotZ3nRquMaSwI2ViWaNbg27p2PVTNFPkSVgkoUbN58jVT5GkmPMQ22oIm4yOQs+xaxz9jT04JcUeonRiQ/wE1XgnorfYX6FtRxFjhE2g1vBOHFMKyJrCRGtENbMupn2R0j4KLGJiwxhNJaVRwR6pU3T3DnaJ+CSTdKl+RNOh9HSpno/kyJ8FC+x/LHjBV4JBc6XLNHusbvgtUhxZ0/ujtFVYJvBTRvyOvEcQibqGor6VuYJbuHW9wnguxmlO6x9xicfDG4sKms6JmoyVidpZFFPBFGNU0KMI79Ib+hGwhq6hrjHrp8EW9EsFyi3z8RT4Em/aixqEuoUtO5Bpwe+ISYlmofh4JpINzENVEyphXovY3OdOu8FJaX5GquiUUTIk4huPhg/wBCako9cTHgm0uYQ+UTtUwVT7DFrHXOCjTm0NamNu+HAog1tYs9GuD4i0baPsGkiGyHCRSenGOlMOp0YSjKOLAnEXdOBhS/ZWspWhKdYNoHeODz0SJWiT8KBpSp6deix5w6nBJx/I1VnRJmsG2hvgO+MTa1nf2fYUSg/BGQS2EVg1WPv2VT8EkyNwQ1XDT/AEdZILUNP0VvRRbSUjTjHiHWl8EzOjzj0uCTmj4KkLtLsGuC7Bq+ljG7onUYrbI0iGt/Btg+JHGJQchJp+hOaNYL59EmsSz6FXxCT9DCv+BooL01NHomo6LFH3D+C5BMWjK8GZnHTWtHU09GlDo1H2idOr7G9gmkPWoPEQuDbfWYQwyfUfPwS+4e4VbRRPRJH/gTRjGyCWEQ/Q4KfCoonWcHF/B1UbNqCTbEVa9EvQ9JE2fMe+aLOiiG/CXfBv8AwNpoTfRhw4dEn2iZ19wSymGnRN9D6SPBfoRt1neiWMiS02YNuvpXxj3aPdshahKCKfYvWU8PINLwXR9Ra4L38PgHMZb0RJRe/hoLrI2zDo38EdrQ1uFJ6PHBRZ6JXo27BLaxuX5E31+nVuIcfGJJ/sRWM9iNej9NnVBt4L+CcfS7waTemN8G64hdE9sN14ONZ0achq6LsHGMX9lYuHNDV0rbwjqGyLpHobq0RJVEbsHwmL4FQZC35HH6cR1aYShL6TgZIT8CX8T0c6mRo9IeojjNPpHejbCCeltOaM2JwT3R/K6TKLByDYRVahzhDcUG3wkwWH8i2mx3hCQZLB4I7olesuwbW0b4h0bbkXCros4h63png2qocUatoSrMMmNIb+Y1GsrE0nv4LI9PsZwXwzSECeipLBpKfASrp3pK4cT0Tqr4NMCxU6jz4KDWPsG4otIZ+g1FheeHrG9xCa9FrOGPg6ng1Wrhug/kb5eCn8H+AvoVtYfZDcpFbVRQ8FMTIa+CTpqdLeHDGTG5BEW4JJ44ZuaIw2+ypUJR1M5bwTK+DfgXGJxDbbxnQkq6dYN9CVIqbOj1zwcaQmw1TolOFcptRIdeNYNRiJNR0JzmsT5E+SZAlo0oJRGzY60OsPgyFwQbSFe8M9Qsf0ccEtfBPB1ROdR5fkibHz7HqSEp0Ik1BdEyfcHrSFwLgi/Y0FRjW9Gku6KJBLjp1CcMqZrwxGhpekPoJ1Fa6enw/EbEuMwmLVkPKzgVb6NaY20cSg1X+EXyL4Q/0XkNVg/7Fb6JXwm6S4Km4PGHHBJ8FmMRp4eVFrh1tCbwhIrZEka4NJCN48FGI7/BZqOtO4Z9IgVxsT3pdG222NumVtrCJLBLgobGomo30JpqNCag23hPg/R+xrah/CNo1dJDo3Fgx4xgu0eskdROjGsHmELHRqhOPRu9ISEyFWx95+Org2O9Yilg23iLKNpsh4hqMfog22kJJD4RWLeCR6h6NdE0aCWYJQa2jRvxGmkJGdEmusePRJ6Q3D5pyIaTcPdEdwaaWnyNVDbWjWKDVaJNIy7qE9RYNVsSmH7CcoVNG1IKNjwhb7TrRIxq9El4NpIauoU6JG2Ozh10ao8dEP5C/wACGtE8Enb4Xd4JuYQlWNGwk0qxKodXBaowTSHhEiOIqVj0kPkFdeDfrTijSVDs0XR5pH0TMP4gt14S+nGfBlng4/RdbXGSh8EqKrCRjdfhzUOQaJGzBLfsoT+OEbTNalFUL8KXrH8D4j3CQNRdOLEJ+wbUfofjQ3FhwOr7OonyhLekdK+Dfg7Bp9hLRD30Slo0WFpoZODaxrwvweVMUeCba1DRjFC+x/eDJIqSqRWNkFXkE0/4K0xL7MkXRvwJt6xgoun/AIFrofwhNJxmfJpwjSiL4K39Ujv0NHpY1EOCW/ROrhauEdQiHCHiEvng3WMVbY/Xok2HUNH8guxjzDwadY7IcfQvAgSi00xsG0+I2yiVUQseicxCU6K8XCkoIhaz2noaUwVpRPwdfmCURWsPPsScwtX6NciG96J/ZKjDbE0+kJ9LrIpS/JgVrEJXWNWOrFwT8F4GdjG3xieYN8nEEtwbc/yNPw49OvCjrGrlPgxyJCTXowuaNRU4GsEkvRpRMerBYqypdR1R8qEsgmv5/BPPspjj90WjT5RYxNtu8GsG3S6h14NN+h3w60a+xuKFSRRIJzgvRJFxjaNx4V8E6oxKIheCe1H6HMEvkqSxHUbB1qGyikwTFr0RPgjRJCbiwbdG21UJxaN3Bpjz7LfSNfobSY1uaKoSXUcfZj6NfIsOCxaOp/RRvILOjY22hQoXN4N+IhKxdNGp+hCxmtRCtg3cMtH2lus6vgmuDeyEyHFvTGsrolW0zE8R+kNfCEfI6sEaQlR8BSKLX0NejGJv3g6f0M5ENRt0Te0WIaz9iRw0xFRo4ixQRdJueCVY1sE9jG/BcG21B3ExiSDV/Rqf4JxM/ZkJeCi6f//Z'; diff --git a/netlify/functions/videoWrapper/Providers/Vimeo.test.js b/netlify/functions/videoWrapper/Providers/Vimeo.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Vimeo.test.js rename to netlify/functions/videoWrapper/Providers/Vimeo.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Vimeo.js b/netlify/functions/videoWrapper/Providers/Vimeo.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Vimeo.js rename to netlify/functions/videoWrapper/Providers/Vimeo.ts diff --git a/netlify/functions/videoWrapper/Providers/Wistia.test.js b/netlify/functions/videoWrapper/Providers/Wistia.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Wistia.test.js rename to netlify/functions/videoWrapper/Providers/Wistia.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Wistia.js b/netlify/functions/videoWrapper/Providers/Wistia.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Wistia.js rename to netlify/functions/videoWrapper/Providers/Wistia.ts diff --git a/netlify/functions/videoWrapper/Providers/Youtube.test.js b/netlify/functions/videoWrapper/Providers/Youtube.test.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Youtube.test.js rename to netlify/functions/videoWrapper/Providers/Youtube.test.ts diff --git a/netlify/functions/videoWrapper/Providers/Youtube.js b/netlify/functions/videoWrapper/Providers/Youtube.ts similarity index 100% rename from netlify/functions/videoWrapper/Providers/Youtube.js rename to netlify/functions/videoWrapper/Providers/Youtube.ts diff --git a/netlify/functions/videoWrapper/VideoProvider.js b/netlify/functions/videoWrapper/VideoProvider.ts similarity index 59% rename from netlify/functions/videoWrapper/VideoProvider.js rename to netlify/functions/videoWrapper/VideoProvider.ts index 554ce1a..30cad38 100644 --- a/netlify/functions/videoWrapper/VideoProvider.js +++ b/netlify/functions/videoWrapper/VideoProvider.ts @@ -1,9 +1,14 @@ +import type { Options } from '../types'; + export default class VideoProvider { - static get regex() { + url: string; + options: Options; + + static get regex(): RegExp[] { return []; } - get providerName() { + get providerName(): string | undefined { return undefined; } @@ -11,7 +16,7 @@ export default class VideoProvider { return !!this.getVideoId(url); } - static getVideoId(url = '') { + static getVideoId(url = ''): string | undefined { const id = this.regex .map((rx) => { const [, id] = url.match(rx) || []; @@ -38,23 +43,29 @@ export default class VideoProvider { return this.constructor.getVideoId(this.url); } - getThumbnail_asVideoUrl() { - return new Promise(); + getThumbnail_asVideoUrl(): Promise { + return new Promise(() => {}); } - getThumbnail_asUrl() { + getThumbnail_asUrl(): Promise { return this.getThumbnail_asVideoUrl().then((videoUrl) => { + if (videoUrl == null) { + return null; + } + if (!this.needsCloudinary()) { return videoUrl; } - return this.options.ImageService.create(videoUrl, this, { - showPlayIcon: this.options.showPlayIcon, - }).then((response) => response.secure_url); + return ( + this.options.ImageService?.create(videoUrl, this, { + showPlayIcon: this.options.showPlayIcon, + }).then((response) => response.secure_url) ?? null + ); }); } - constructor(url, options = {}) { + constructor(url: string, options: Options = {}) { if (!this.constructor.check(url)) { throw new Error(`Invalid url for ${this.providerName} provider.`); } diff --git a/netlify/functions/videoWrapper/index.test.js b/netlify/functions/videoWrapper/index.test.ts similarity index 99% rename from netlify/functions/videoWrapper/index.test.js rename to netlify/functions/videoWrapper/index.test.ts index f88842b..86efd06 100644 --- a/netlify/functions/videoWrapper/index.test.js +++ b/netlify/functions/videoWrapper/index.test.ts @@ -1,5 +1,3 @@ -// @ts-check - import { suite } from 'uvu'; import { equal } from 'uvu/assert'; diff --git a/netlify/functions/videoWrapper/index.js b/netlify/functions/videoWrapper/index.ts similarity index 91% rename from netlify/functions/videoWrapper/index.js rename to netlify/functions/videoWrapper/index.ts index 39d87c9..9efb4a7 100644 --- a/netlify/functions/videoWrapper/index.js +++ b/netlify/functions/videoWrapper/index.ts @@ -1,4 +1,4 @@ -// @ts-check +import type { Options } from '../types.js'; function getVideoProviders() { return Promise.all([ @@ -20,7 +20,7 @@ function getVideoProviders() { ]); } -export async function create(url, options) { +export async function create(url: string, options?: Options) { const videoProviders = await getVideoProviders(); const videoProvider = videoProviders.filter((vp) => { return vp.default.check(url); diff --git a/package.json b/package.json index e6f7ebf..f917dec 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "@biomejs/biome": "^1.8.1", "sass": "^1.77.1", "sinon": "^18.0.0", + "tsm": "^2.3.0", "uvu": "^0.5.6" }, "dependencies": { @@ -72,7 +73,7 @@ "predev": "pnpm build-db", "prebuild:client": "pnpm build-db", "prepare": "husky install", - "test": "uvu netlify .test.js", + "test": "uvu -r tsm netlify .test.*s", "format": "pnpm biome format src scripts netlify --write", "lint": "pnpm biome check src scripts netlify", "dep:major": "pnpm dlx npm-check-updates --packageFile '**/package.json' -u", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d3bdb8..5b71eb0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,13 +35,13 @@ importers: version: 1.8.1 '@parcel/packager-raw-url': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/transformer-sass': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/transformer-webmanifest': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -69,6 +69,9 @@ importers: sinon: specifier: ^18.0.0 version: 18.0.0 + tsm: + specifier: ^2.3.0 + version: 2.3.0 uvu: specifier: ^0.5.6 version: 0.5.6 @@ -210,6 +213,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm@0.15.18': + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.19.11': resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} engines: {node: '>=12'} @@ -318,6 +327,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.15.18': + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.19.11': resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} engines: {node: '>=12'} @@ -2424,6 +2439,131 @@ packages: es6-promisify@6.1.1: resolution: {integrity: sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==} + esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.19.11: resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} engines: {node: '>=12'} @@ -5072,6 +5212,11 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tsm@2.3.0: + resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==} + engines: {node: '>=12'} + hasBin: true + tsutils@3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -5556,6 +5701,9 @@ snapshots: '@esbuild/android-arm64@0.21.2': optional: true + '@esbuild/android-arm@0.15.18': + optional: true + '@esbuild/android-arm@0.19.11': optional: true @@ -5610,6 +5758,9 @@ snapshots: '@esbuild/linux-ia32@0.21.2': optional: true + '@esbuild/linux-loong64@0.15.18': + optional: true + '@esbuild/linux-loong64@0.19.11': optional: true @@ -6278,17 +6429,16 @@ snapshots: '@opentelemetry/semantic-conventions@1.24.1': {} - '@parcel/bundler-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/bundler-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/graph': 3.2.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' '@parcel/cache@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': dependencies: @@ -6304,47 +6454,46 @@ snapshots: dependencies: chalk: 4.1.2 - '@parcel/compressor-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/compressor-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)(postcss@8.4.38)(typescript@5.4.5)': dependencies: - '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/core': 2.12.0(@swc/helpers@0.5.11) - '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)(postcss@8.4.38)(typescript@5.4.5) - '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(postcss@8.4.38)(typescript@5.4.5) + '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) - '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) transitivePeerDependencies: - '@swc/helpers' - cssnano @@ -6366,13 +6515,13 @@ snapshots: '@parcel/graph': 3.2.0 '@parcel/logger': 2.12.0 '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/profiler': 2.12.0 '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) abortcontroller-polyfill: 1.7.5 base-x: 3.0.9 browserslist: 4.23.0 @@ -6400,7 +6549,7 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) transitivePeerDependencies: - '@swc/helpers' @@ -6417,14 +6566,13 @@ snapshots: dependencies: chalk: 4.1.2 - '@parcel/namer-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/namer-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' '@parcel/node-resolver-core@3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: @@ -6438,10 +6586,10 @@ snapshots: transitivePeerDependencies: - '@parcel/core' - '@parcel/optimizer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/optimizer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 browserslist: 4.23.0 @@ -6449,18 +6597,16 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)(postcss@8.4.38)(typescript@5.4.5)': + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(postcss@8.4.38)(typescript@5.4.5)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) htmlnano: 2.1.1(postcss@8.4.38)(svgo@2.8.0)(typescript@5.4.5) nullthrows: 1.1.1 posthtml: 0.16.6 svgo: 2.8.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - cssnano - postcss - purgecss @@ -6470,31 +6616,28 @@ snapshots: - typescript - uncss - '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.11) '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - transitivePeerDependencies: - - '@swc/helpers' + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) - '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 svgo: 2.8.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' '@parcel/optimizer-swc@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 '@swc/core': 1.5.7(@swc/helpers@0.5.11) @@ -6512,39 +6655,37 @@ snapshots: '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@swc/core': 1.5.7(@swc/helpers@0.5.11) semver: 7.6.2 transitivePeerDependencies: - '@swc/helpers' - '@parcel/packager-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/packager-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 lightningcss: 1.24.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/packager-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/packager-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/packager-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/packager-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) @@ -6553,46 +6694,40 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/packager-raw-url@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/packager-raw-url@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/packager-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/packager-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/packager-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/packager-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/packager-wasm@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/packager-wasm@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/plugin@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/plugin@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' '@parcel/profiler@2.12.0': dependencies: @@ -6600,79 +6735,71 @@ snapshots: '@parcel/events': 2.12.0 chrome-trace-event: 1.0.3 - '@parcel/reporter-cli@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/reporter-cli@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 chalk: 4.1.2 term-size: 2.2.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/reporter-dev-server@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/reporter-dev-server@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/reporter-tracer@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/reporter-tracer@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 chrome-trace-event: 1.0.3 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/resolver-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/resolver-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/runtime-browser-hmr@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/runtime-browser-hmr@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/runtime-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/runtime-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/runtime-react-refresh@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/runtime-react-refresh@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 react-error-overlay: 6.0.9 react-refresh: 0.9.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/runtime-service-worker@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/runtime-service-worker@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' '@parcel/rust@2.12.0': {} @@ -6680,10 +6807,10 @@ snapshots: dependencies: detect-libc: 1.0.3 - '@parcel/transformer-babel@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-babel@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 browserslist: 4.23.0 @@ -6692,12 +6819,11 @@ snapshots: semver: 7.6.2 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 browserslist: 4.23.0 @@ -6705,12 +6831,11 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/rust': 2.12.0 nullthrows: 1.1.1 posthtml: 0.16.6 @@ -6720,45 +6845,41 @@ snapshots: srcset: 4.0.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.11) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' '@parcel/transformer-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.11) '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@swc/helpers': 0.5.11 browserslist: 4.23.0 nullthrows: 1.1.1 regenerator-runtime: 0.13.11 semver: 7.6.2 - '@parcel/transformer-json@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-json@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) json5: 2.2.3 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-postcss@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-postcss@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 clone: 2.1.2 @@ -6767,11 +6888,10 @@ snapshots: semver: 7.6.2 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-posthtml@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-posthtml@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 posthtml: 0.16.6 @@ -6780,37 +6900,33 @@ snapshots: semver: 7.6.2 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-react-refresh-wrap@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-react-refresh-wrap@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 react-refresh: 0.9.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-sass@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-sass@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/source-map': 2.1.1 sass: 1.77.1 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/rust': 2.12.0 nullthrows: 1.1.1 posthtml: 0.16.6 @@ -6819,17 +6935,15 @@ snapshots: semver: 7.6.2 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-webmanifest@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/transformer-webmanifest@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@mischnic/json-sourcemap': 0.1.1 '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' '@parcel/types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': dependencies: @@ -6838,7 +6952,7 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -6916,7 +7030,7 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)': + '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.11) '@parcel/diagnostic': 2.12.0 @@ -6925,8 +7039,6 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' '@pkgjs/parseargs@0.11.0': optional: true @@ -8199,6 +8311,91 @@ snapshots: es6-promisify@6.1.1: {} + esbuild-android-64@0.15.18: + optional: true + + esbuild-android-arm64@0.15.18: + optional: true + + esbuild-darwin-64@0.15.18: + optional: true + + esbuild-darwin-arm64@0.15.18: + optional: true + + esbuild-freebsd-64@0.15.18: + optional: true + + esbuild-freebsd-arm64@0.15.18: + optional: true + + esbuild-linux-32@0.15.18: + optional: true + + esbuild-linux-64@0.15.18: + optional: true + + esbuild-linux-arm64@0.15.18: + optional: true + + esbuild-linux-arm@0.15.18: + optional: true + + esbuild-linux-mips64le@0.15.18: + optional: true + + esbuild-linux-ppc64le@0.15.18: + optional: true + + esbuild-linux-riscv64@0.15.18: + optional: true + + esbuild-linux-s390x@0.15.18: + optional: true + + esbuild-netbsd-64@0.15.18: + optional: true + + esbuild-openbsd-64@0.15.18: + optional: true + + esbuild-sunos-64@0.15.18: + optional: true + + esbuild-windows-32@0.15.18: + optional: true + + esbuild-windows-64@0.15.18: + optional: true + + esbuild-windows-arm64@0.15.18: + optional: true + + esbuild@0.15.18: + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + esbuild@0.19.11: optionalDependencies: '@esbuild/aix-ppc64': 0.19.11 @@ -10209,9 +10406,9 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) '@parcel/logger': 2.12.0 '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) - '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11))(@swc/helpers@0.5.11) + '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) + '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.11)) '@parcel/utils': 2.12.0 chalk: 4.1.2 commander: 7.2.0 @@ -11199,6 +11396,10 @@ snapshots: tslib@2.6.2: {} + tsm@2.3.0: + dependencies: + esbuild: 0.15.18 + tsutils@3.21.0(typescript@5.4.5): dependencies: tslib: 1.14.1