diff --git a/.gitignore b/.gitignore index d95d313f..0f22d037 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ # production /build +/dist # misc .DS_Store diff --git a/electron-builder.json b/electron-builder.json new file mode 100644 index 00000000..d53fbf5f --- /dev/null +++ b/electron-builder.json @@ -0,0 +1,52 @@ +{ + "publish": { + "provider": "generic", + "url": "https://myappserver.com/updates/" + }, + "productName": "LedFx-Client", + "appId": "com.ledfx.app", + "directories": { + "buildResources": "buildResources", + "output": "release" + }, + "files": [ + "src/", + "node_modules/", + "package.json" + ], + "mac": { + "target": [ + "dmg", + "zip" + ], + "artifactName": "${productName}-${version}-${os}.${ext}" + }, + "win": { + "target": [ + "nsis", + "zip" + ], + "artifactName": "${productName}-${version}-${os}.${ext}" + }, + "linux": { + "target": [ + "AppImage" + ], + "artifactName": "${productName}-${version}-${os}.${ext}" + }, + "dmg": { + "title": "${productName}-${version}", + "contents": [ + { + "x": 300, + "y": 360 + }, + { + "x": 490, + "y": 360, + "type": "link", + "path": "/Applications" + } + ] + } +} \ No newline at end of file diff --git a/package.json b/package.json index adfce892..b28f68f9 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,14 @@ { "name": "ledfx", - "version": "2.0.0-beta27", + "version": "0.1.0", "description": "LedFx - BladeMOD", "author": "YeonV aka Blade", "private": true, + "main": "public/electron.js", + "homepage": "./", "dependencies": { "@babel/runtime": "^7.14.0", + "@electron/remote": "^2.0.1", "@material-ui/core": "^4.11.4", "@material-ui/icons": "^4.11.2", "@material-ui/lab": "^4.0.0-alpha.58", @@ -16,6 +19,9 @@ "@types/reactour": "^1.18.1", "axios": "^0.21.1", "clsx": "^1.1.1", + "custom-electron-titlebar": "^3.2.7", + "electron-is-dev": "^2.0.0", + "electron-squirrel-startup": "^1.0.0", "moment": "^2.29.1", "prop-types": "^15.7.2", "react": "^17.0.2", @@ -42,7 +48,13 @@ "eject": "react-scripts eject", "predeploy": "yarn buildgh", "deploy": "gh-pages -d build", - "lint": "eslint . --ext .js,.jsx,.ts,.tsx" + "lint": "eslint . --ext .js,.jsx,.ts,.tsx", + "pack": "electron-builder --dir", + "dist": "react-scripts build && electron-builder", + "dist-multi": "react-scripts build && electron-builder -mwl", + "dev": "concurrently \"cross-env BROWSER=none yarn start\" \"wait-on http://localhost:3000 && electron .\"", + "electron": "wait-on tcp:3000 && electron .", + "postinstall": "electron-builder install-app-deps" }, "eslintConfig": { "extends": [ @@ -63,10 +75,19 @@ ] }, "devDependencies": { + "@electron-forge/maker-deb": "^6.0.0-beta.61", + "@electron-forge/maker-rpm": "^6.0.0-beta.61", + "@electron-forge/maker-squirrel": "^6.0.0-beta.61", + "@electron-forge/maker-zip": "^6.0.0-beta.61", "@types/react-router-dom": "^5.1.7", "@typescript-eslint/eslint-plugin": "^4.25.0", "@typescript-eslint/parser": "^4.25.0", "babel-eslint": "^10.1.0", + "concurrently": "^6.2.1", + "cross-env": "^7.0.3", + "electron": "^14.0.1", + "electron-builder": "^22.11.7", + "electron-devtools-installer": "^3.2.0", "eslint": "^7.27.0", "eslint-config-airbnb": "^18.2.1", "eslint-config-airbnb-typescript": "^12.3.1", @@ -83,6 +104,43 @@ "eslint-plugin-react-hooks": "^4.0.8", "gh-pages": "^3.2.0", "prettier": "^2.3.0", - "react-is": "^17.0.2" + "react-is": "^17.0.2", + "wait-on": "^6.0.0" + }, + "config": { + "forge": { + "packagerConfig": { + "icon": "src/icons/mac/icon.icns", + "name": "LedFx Client by Blade", + "title": "LedFx Client by Blade" + }, + "makers": [ + { + "name": "@electron-forge/maker-squirrel", + "config": { + "name": "ledfx" + } + }, + { + "name": "@electron-forge/maker-zip", + "platforms": [ + "darwin" + ] + }, + { + "name": "@electron-forge/maker-deb", + "config": {} + }, + { + "name": "@electron-forge/maker-rpm", + "config": {} + } + ] + } + }, + "build": { + "win": { + "icon": "build/icon.ico" + } } } diff --git a/public/electron.js b/public/electron.js new file mode 100644 index 00000000..bb3017cd --- /dev/null +++ b/public/electron.js @@ -0,0 +1,112 @@ +const path = require('path'); + +const { app, BrowserWindow, Menu, Tray, nativeImage, Notification, Remote, nativeTheme } = require('electron'); +const isDev = require('electron-is-dev'); + +// Conditionally include the dev tools installer to load React Dev Tools +let installExtension, REACT_DEVELOPER_TOOLS; // NEW! + +if (isDev) { + const devTools = require("electron-devtools-installer"); + installExtension = devTools.default; + REACT_DEVELOPER_TOOLS = devTools.REACT_DEVELOPER_TOOLS; +} + +// Handle creating/removing shortcuts on Windows when installing/uninstalling +if (require("electron-squirrel-startup")) { + app.quit(); +} + +let win + +function createWindow() { + require('@electron/remote/main').initialize() + // Create the browser window. + win = new BrowserWindow({ + width: 480, + height: 768, + autoHideMenuBar: true, + // frame: false, + webPreferences: { + // preload: path.join(__dirname, 'preload.js'), + enableRemoteModule: true, + nodeIntegration: true, + contextIsolation: false, + } + }); + // and load the index.html of the app. + // win.loadFile("index.html"); + win.loadURL( + isDev + ? 'http://localhost:3000' + : `file://${path.join(__dirname, '../build/index.html')}` + ); + + // win.removeMenu() + + // Open the DevTools. + // if (isDev) { + // win.webContents.openDevTools({ mode: 'detach' }); + // } + return win +} + + + +const NOTIFICATION_TITLE = 'LedFx Client - by Blade' +const NOTIFICATION_BODY = 'Testing Notification from the Main process' + +function showNotification() { + new Notification({ title: NOTIFICATION_TITLE, body: NOTIFICATION_BODY }).show() +} + + + + +let tray = null + +// This method will be called when Electron has finished +// initialization and is ready to create browser windows. +// Some APIs can only be used after this event occurs. + +app.whenReady().then(() => { + const wind = createWindow(); + + + if (isDev) { + installExtension(REACT_DEVELOPER_TOOLS) + .then(name => console.log(`Added Extension: ${name}`)) + .catch(error => console.log(`An error occurred: , ${error}`)); + } + + const icon = nativeImage.createFromDataURL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+QCGBUrJ2f79r0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAAIABJREFUeNrsnXecFPX9/18zO1uuF9ohRTyQIoigfqPRxB41iYUYY5oxJt/k+9NYYqFaUJSmiL2gsTcQkWBXxIJGBalBei8H3HHHHddvd2dnfn8cJ3t7M7szuzN7uzuv5+ORyM7O7tzMZ3Zer8/7/f58PgIIISnNG6WqpAo4ThExQBBwNET0UkX0EER0CblQJIjIE0TkQIQPIryKCLcgQhJEuAQRoiBCkEUIAITD/w8Brf+VAUAF1MP/bf0H1KACVW39n6IoCKkKZFVBUFHgVxW0yAoaFQX1agg1ioKDqoIKVcFeRcUuKNiqqFh/53ZBZusRkroIvASEdB7/LlV7wYVTBBeGh1wYKLjQV5DQQ3SjKCQhx+WBR/RAbNs/UlG1FDaosU02uC3ad5j5PADIAShyAAFFRmMoiBpZRoUcwm4lhM1KCGuUEJZO3S7s5V1ACA0AIRnJ+/3VYXDhTEHCSZAwWPWgt+hGscuHLCVM3INxiHY8nzEi9Ea67ma690EAbo3jhQJQgi1oloOoDgVQpsjYGJKxQglh8f3bhLW8ewihASAk5VnYXz0JEi4Q3DhFcWOw4EOJlIU8xX3kd2ZWwK0SfKNRATPibkWUIBqhIFR/M+rlFpTLQWwMBbE0JOPjh7cJK3i3EUIDQEin8PkAdRTcuBAenAwfjpGyUSh6IAY1hC+aiNsh+GbEXo5D3OMVdasKAuQAFH8TDgVbsEMOYHkoiI8e2yos4F1JCA0AIZby1QD1bMGNyxQvThN96C/loCAkRRd0Oc5efqIRgUSjAkaF2qyYB21uI0UGmhtRG2zBNtmPb0JBzJ+1Vficdy8hNACEGGbJQPUaxYOLRB9GqrnoIXrhiibUZkU/2REBo58z874ZQZcBSBZGAIyi+hFqbkBFsAWr5ADem7VZmMW7mxAaAEIAAMtLVY8i4QbBh4uVLAx35aFIcOkLdjCK6EcTcyvMgRGDYFbs40kBxBMB6IzxgFJklCAENNejpqUZa4IteDck47EXtwsB/goIDQAhDmHlQPVvqhdXIBsnSfkolkVjgm1E0M3uY8YcGBF8M7n+RPP8RkU92Ent7I7xvqIATXWo9jdhRdCPuS9tFp7lr4PQABCSQazpr56ieHGtkI2zkYfewuGhd9GE3UyIP9GefmekABKJDsQr6smOAkhmH4YBKI31KGtpwueyH0+9uk1Yyl8PoQEgJM34fqB6jeDDlWouRrjykGNW2GOZAiPGQG+fZEYE4okMGBH4eMQ8FdIAZvZtqkdjcwNWB1rw6mzWDxAaAEJSkw2lqhTy4B4xC5eJBRigRBTuRRN+K3v78RT7JVIUaEdUwIhYWzEJUDJwm9g3mlkI+BHy12JrSzPmBwOYOI/THBMaAEI6j0391WJ4MEnMwSVKAfoKkjlxN/teIsbA6D5mIwJ2RAVivRevkKd6BCCWYWj7rpAMNNRid0sj3gkGcNf8bUI1f42EBoAQm9laquYqXkxDDkZJRegdWcAnG+iRR4qyGcG22xjEigjEih6YFfxkpAA6s6ssWbx/pEFQFKC+BmWBRiwI+jFhwXahgb9SQgNAiIVsG6xOVXPwe7EI/QSX/nA8I8JvNvcfK1pgVvRjCbEd0wObiQwYEW0r5wlIFkbSAVIc77d9bygE1NVgZ3MjZi/YKNzGXy2hASAkTnYMVK9BNq51FWFYSKdyPx5xj6foz85ogJURATNCn4wUQGdNAhRP79+IUZAMbg8GoDTUYG2gCU+9wwJCQgNASGx291dPEbIwSSnAmWIufLEEPh7hNyrsyYgGmDUH8RgEq6ICZiIAie7fGUbA6H5uk8agqQEtDbVY7G/GXR9xaCGhASCkPWWD1RnIw5VqMUqMCHw8oX6rhgCm2kiAePP9ieT5zY4C6CysGgVg5H0jxqChGuWN9Xj1g43CGP7qCQ0AcSz7B6jnhrIxSSzCqSGf9rC9eATeqpEAZqIBVk4GlGhEwIzYm50fIB5RT6ciQCvC/9G+r21ffwtCdTVY0tKEuxZtFT7l04DQABBHUD5YnSzk4X+ViN5+ogJvp/DbPfzPTC/f7hRAotGBhBTYLuTE/1S3RcbArREVaKjHc59sFO7g04HQAJCMo6pU7RXKxlNiIc6Xc+BNReG3KhpghegnIwUQT2TA8m61nQTDjm1BYYNk8vQkk9/R1Ah//SEsDDTh2i+2C3v51CA0ACStOThAHYVcTFK6Ynjb8L10En6rC/7SJQUQd3c4FSMAVq1aJJs7TaPFgpHbxBBQXYU1zQ24a/FWYQGfIoQGgKQV1YPUccjDjUoXHGVUzO0UfrPV/lbm/q1eIdDKqIDpbm08op5OJiDe4gfZOlMQ/vrQQexrqsejX24S7uNThdAAkJSmdoj6mFKAq4QC5IeLqZW9fjND/eKt9k/2vAB632OVQTClSEaE24youzv5prSqYtHs5AgGTIHbYISgvhZ1dbV4+asNwg18yhAaAJJS1A1VXxeKcFkoB14jYp6I8FvV47disqBEogHRRD9hwU8kJh1L4K0cW5dqEYB4V0iKc/YlyWQTNTXC31CD+V+uE/7Apw6hASCdRnOpKgWz8ZZQjF+EslqfU/GKvNV1AWY+k0ikINZnjRqDaPu17dvcUg2/vxqB4CH45UOQQ4egKHVQ1HqoqAfQCKAJQCMEoQVACwTBD0EItP4PMiDIEKAAUACoYY8BESpEABJUVYIKz+H/eQHBB1XwAcgBxGxAyIEg5UF05UGU8iF5CiG5C+HxFcLrK4Yvqzh9DUA8UyAmMstSjCiBXoSgpRnyoWp8EGjCr7/jyoSEBoAkUfiz1WzMU7riAnghxsrfxyPmVs74p/eZRITdilkCw99raKpAffN+tAT2IxAsR1CpgIoDUIVKiGIlXNJBCIKaFveHqgoICV0QErsBYjcI7u4QvT3g9pXAk90TWXk9kZPbI7l/lNE0QDwpADPGwGSxRqwIgeKHcrAKHzc34fKV24UmPp0IDQCx5xlaqnrkbCxAN1wQ8rQKvxnhtjvcb0WUwGikIJ73G5srUd+4C/X+nQgEd0PGHqhiGVxSGQQx6Kh7SYEbstgbqrs3BG8fSNl94cvth5yCo5Gd263zIgDxpAASWZLRZJRAzxAEAlBqK/FxUxNGrdouBPi0IjQAxDJahqlvoysukr2ti/IYFXQj4mz1MECrRwKYjQb4A/WorN+CxuataJG3QsZ2wL0doquON5IBQkI+ZHcp4CuFO3cAsvIHIL/LsfD48uwVfyP7Wr3QQgJLQ2qZAb8fSnUV3lu6VriUdxKhASCJ9fqHqq+HuuA3QhakYBwin0ivv7OF30jRX4u/FlV1G1DbvAEtyibI4kaInjLeOHbci67eULIGw5U7CFnFQ1DQbQi8WQWJ9erNGIBkpAASmBIy3BDIzZCrD+LNZSwWJDQAxHQvbIj6mFqMv4Vy4TPaa7cqEhDre+PdHs0sGH2v8tBGVDWuRUNwLYLiWgienbxZOpGAux/UnGFwFw5DbrdhKOoxOLFIQGenAOIdDqJjBhob0FJXjWdXcvggoQEgsVAHhcYpheJ4uRCF0Xroifbk7Qz3J9rjD99n98FVqG5chQblvwi5/wvB1cCbJJWNq5gLOecEuApPQE73kejaZ2R6pQCsWgQiIlVQewiH6g5h+hpOKERoAEgH4R8gj1IKxUfRRegTS6itSAPYHe6Pt8dfUbMW5Q3L0RBaDtmzCoLo582RxiiCF8HckXAVnYy8niejuOew6OIvwbqVkxIs+DNlCAzUDUgADh7EnrpDuHE9pxgmNABELW3phTz320qJeFLbsyKRkH+iuf7I55vd+f+6pnKU1SxBTfA7+KXvAOkQb4oMRnYVIlTwI3i6/whFfU9FTkGJMTFPtKevt58dKQAD+1SVY0VDPS7dxEWHaACIQ8V/aHAuuou/VjyiGEvUrejhWxHW1xvLb2Y43+7q1aio/wZ1+BYh7wbeCA7Gnz0EYrcfI6/3aejSd0R0oTfT2zci7tGEO5bIW2AGAgEolQfw1tp1whW8E2gAiFOEf1DLBBRLtyFfyFUgwqqQfzKHAZqdEGh7xWJUNH+FBtd/oLqreBOQjlrs7opQl58gu/dPUXLsmcYjAEZ7/ImmAIxOHWnSDNRVo6G6GlM3bRKm8S6gASCZKvz9609CgXsOurkHAEA08bcqDRBPr9+KPH9IkbH5wBc40PIFGtyLAVczbwBiGEXMQrDrmcjqexZ6DDwLoktKfgogyWagshxbaw/hd9u2CSt4B9AAkEwS/6HNC1AiXArJDaV1Lh9D4h8rlG/HvACJCP+W8s+wr+UzNHg+B1jAR6wwA4IXwR5nI6vfOeh57DnGIwNm8/vxinwcvX694hhZBsrL8fa6/wqj2PI0ACTdhX9g3Q3o4pmMfCEfkNqJf6KiHmubVZP/xBrnv61yKcoaP0GtexFUDtMjNhJy5ULueR5y+/8M3fufYl1vP1aP36jImzUDOkagrg51B6txx+Z1wmNsdRoAkm7CX1qbi3zxS/TwjGybFsSs+Fsd8rey119etx3baj5CpbAQIc68RzqBYFZvoM/5KBp4IQq6l0YXdyMCb4XIa/1YzO4Ttm/FXqyqq8MZ2zcJdNY0ACQtxH9w7QPo7roRWW53uPjHK/SdMQeA1rZQKIi15e9jX/AjNPmWs6FJyuAvPhme0gvRc/gv4ZLcyZ0EyIrwf5SoQHMzggfK8ejG/wqj2dI0ACRle/1VA1Hk+QBdxf6tS4MkV/zNCrrRWfx21qzF1tr3cND9PlQW85EURnFlQT76lygYfBGKew8zLvCJGAKrzYBOVKCqCttqDuIX2zcIm9nSNAAklcR/SPUslHj+Dg9EM+Ifj6hbPQeAnnFYve8d7A68gybfajYwScOowAh4B16CXideYl7gowl4Enr9ep8PNEEpP4B/bVguXMMWpgEgnd7rLx+MIs+H6Orp17qlVfytKPYzIurx5vX1th1sKMP6gwtQ7lqAEGflIxmA7CmEMmAUuh4/Cnldehvr8SfDDMTz/uFtVQexs+Ygfr59jbCRLUwDQDql11/xGEq8/4BHEhMR/3iH/RkVfyP7ba1ajs0N81HtW8iGJZkbFeh7PvKOvwzdBpxs/bS/NvX69T4bCEApr8CTG5ZypUEaAJI84e+/vxj57m/QXRrUGup3H37HOvHXE2uzofxY5mLt/o+w1T8PDQzzEycZga4j4Bt6OY4acaH5Xn8ixYEJ9Pr1jMKBcmyqq8Vp21YJ1WxZGgBip/gPKr8D3V0Tkd1W4W9e/OPt5Vs5V8CKsrnYrsyF37OTjUocSyCvH6Tjr0CfH1+ReAog3n3iLAoMf6+pCcEDFbhn01JhMluVBoDYIf7Dy79GT99pbYJvVPytGPNvxVwBAbkFy/bNxg7xDcgS5+Mn5Add9XUFhv0WvX78e0geX3JHAFiRHjj83v4KfLPmc+F0tigNALFK+I/dczGKvS+j0FOoJ/6J9OCtNgiR2+oC9VhW/jp2umZD4Ux9hOgScudCOf73OOqUP8CTnWet0Fsl9oB+YQ+AQwdxqLoaV21ZIrzLFqUBIImI/3F7nsdRvr/AdUTwo/X8ExnmZzZVEMs0NAXqsaT8VeyQXoMitrAxCTGI4vIhNPyPOOonV8LjyYsIF9jU649D7PXeC/mBfeV4Yf2Xwl/ZmjQAJB7xH1m2Dt19x7WN6Tfb8zcr/lZNANQkt+CbfS9jm+sVKJy4h5D4jYCUhdDIP6H3T65qTQ0k0uuPJypgNmIQ8bkD5Vi/6hNhKFuSBoAYFf5jd/wB3TzPIM+bY4X4JzMN8M2el7BRfAkhVx0bkhCLCHnyoZ78Zxx9zp9tne0vLrGPYQTqG9BYeQD/t+Vr4XW2JA0AiSb+x+14Eb18f4Z4ZDa/ZIt/PPn+JXvnYb3yIvzucjYiITYRzC2B63+uRp/TL4+/V2+12Ec+GDQ+pwSBvfvx0vpPhavZijQAREv8R+xcjR7eE8Kn8k1l8ZcBrC1fhFX+59Hg5fTghCSLQJeB8J3+V/Qcfp55oY/V69d63yIjUFGO/67+UBjBFqQBIG3CP2DrGejifru1yj+82M8e8TcyrW+sGoCt1auxrO5ZVPmWsAEJ6ST8fU5FwVl/Q5f+IxIb1x/rfTPvxUgpHKrDoYOVuHTrl8KXbEEaAGeL/+Atd6On90543GIs8Y8m9vGIfzzRgpqmCnx14F/Y5VvAxiMkVYzA0FHocd7fkVPUw7pagHhHBxjYHghC2b8f9278VLibrUcD4EzxH7blHfTyXRwp9lb2/K2cEXDx7hfwvfQ0VFFm4xGSas8TUULo9P+Ho8/9i7bo2zTuPxEjsLcC7679QLiErUcD4Kwf68gt69HdN8SI+NvR8zeTBlhd/jm+889Cg3cbG46QFCdQ3B++s69Bz5Fn27cGgBWpgcPbDxzAhlVvC8ex5WgAMl/4+68bia7eT1HoLUq1nn/k6wMNe/BF1ZMo833ChiMkzfAP+hm6nf8P5PXok1gtgBkjEGdE4FAdaqoqce62z4RVbDkagMwU/4HrrkGJ7zFkeaQjVf7uMPE/8jqRnr8VNQBf7HkRK6UnAEFlwxGSrs8cCAidfR2OPvdq63r9ZiICep/R2N5cD7m8Cjds/lCYxZajAcisH+KQdY+jT9Z1ENxIZfHfWLUcXzU+hhrvOjYaIZkSDSgZirwLb0C3IScnvOBPQkYgxnY1AOwpxxMb3hOuZ6vRAGSG+A9b9wF6Zf+849j+1BH/llAQH5Q9go3eOWwwQjKUwP/8Dn0v/Sdcbnfiw/0sEHy97Xv34cO1C4RfsMVoANJb/EesW40e2Sdoi3/717GW9LVD/GUAa8o/x1eBR9DoKWODEZLhBAt7w/uLf6LnCWfbI/YWGYGKKvx39VxOGkQDkI7CX7pSQrF3B7pk9z4i9PriD+CHoj+z4h9N7KPN7tciN+HdsgexhWP6CXEc/pGj0OfyW+CWsmOLfSKibvYzYdsOHkJZ9UEcs/1jgWOPaQDSRPz7rxyObllfosBXEFv8gfCK/1jiH0vsjYr/yvLP8GXwQTRx7n5CnBsNyC+B96Jb0POkc5LauzezvbYGtZXVOGPb+8IathgNQGqL/4CVo1CSPQc5ord9nt/ccD+rX7f9npoVGe/sfgAbffPYWIQQAEDgR5fj6MtHQ3RJKWkEGuvhL6/C77a+KzBcSQOQouI/cOUN6JX9MDyiqFfklyzx1/pNfV+5BIuaH0CdZycbixDS3gR07YecX41G98GnHtlo4wRAhrZHTB+8dz9u2rxAeIytRQOQWuI/eOVk9PHe3rqMbzTxP/LaSMW/VT3/93Y/hRWe59hQhJCoBM/+X/Qbda214/71PhO5f4zvVwLAnv2YsvEt4Q62FA1Aaoj/ccueQp+ca6IX+SU23C9e8d9TtwPvVN+Hct9yNhQhxBD+Y05G1yvGIf+oYxLrxRsUdrPRgD3lmLV+rnAtW4oGoHPFf+iy19E75/f6ef7YFf9GxN+sOQCAr/a9g0WYBkUMsqEIIaZQXG6Il09Ar9Muia93b9V2nX3L9mH2ujnCH9hSNACdI/7Dlr2NXjmXxMrzJzLcL97Xc3ZOxTrffDYSISSxaMApl6H0z7clNd9v9Dv2luOdta8Ll7KVaACSK/7HL1uIo3J+1rF3H1/Fv5GJfoy8v+vQRiyonYIq7wY2EiHEGhPQawiK/nA7io4ZbN3IAIuiAfsq8cn3rwjns5VoAJIj/sOXfYGe3jM79u5jF/3FK/5GzMDivQvwkTiFC/gQQqx/7gkC8Nvb0fuMUdb1+o1uj2Ek9h/E4jUvCWexlWgAbBb/Jf9Bz+zTjeT5o03zG89wvmiv39j1AFZzHn9CiM0Efvo7HPOn0Z0q+Fqf31+Or9e8JPyELUQDYJP4f/MNeub+2Mj4frNFf/GKf1XjfsypnIS9rPInhCQJ/4CT0f0vdyG3W0/7BR+IWgwY/vn9Ffh2zYvCaWwhGoC0Ef9Yr/XMwfcHvsG/A5PQLB1kAxFCkoqc1wVZV9+F7sefZo/gG+n5a2zbfxDfrnmWJoAGwDLx//o/6Jl3urbAG5vpL96Kfz3x/7RsNhZJM9k4hJBOJXT5reh7/u/DnAHsHwYYw1zsP4iv1zzLdAANQOI9/8MFf8Z6+/Hk/c2agdd23o9VvrlsHEJIShA44wocc/VY+4cBmvj8/gosXvMsCwNpAOIV/+O/PDzUz1hvP17xNxoZOOSvxUv7J2KH72s2DiEkpfAPPR29/u8eePMKLJnox7A5iLJtXwU++f5ZDhGkATAr/sMWv41euZcYndrX7qK/bYc24rW6O1Ht2cHGIYSkZiSg5BgUXnMvivoOjq+Hn2g0QGPb3nK8s/Y5ThZEA2BU/Icufh29c38fTeCjTf5jNu8fywx8V7EYb8p3IOhqZuMQQlIaxZsF998no+TEM40LvhFxj2YOYmwrq8Tsdc9w2uBIXLwEEeJ/3GdPoU/2XwBRo7fvQuv2SDMgHn6v/WQ/CoyF9hUNM9D22UV75+EtYSIUUWbjEEJSv1cZkqF+txC1ecUoGHjckUdk23+FMOURwx54rsP/1dtXMbhNDOveHt6Wn4XjvYPvLqlcOel9thANgLb4D/5kMvrm3aIt8LHNQFveX0/QFZNmYP7up/GJ+1E2DCEk/YzAmv+gOqSi8PiTExN8JYphiPWdYfsV5OFk98C73VUrJ33G1qEBaC/+AxfegL750yC4DfT2tUL/IlQIhnv34WYAGubglZ3TscT7KhuGEJK+ArNpJaoOVaNo5E9iC340cW/bVzG4LVzZwvbLz8EZ0sC7qw+unPQdW4c1AK3iP+CjUehT8BY8omhsYZ/E5vmPVfT3xM7x2OBbxIYhhGQE/pPPQ+mt062t9AeMFQNGfDbQDGVPOX699TlhAQ2A08W///vD0TPvO+R4vWYK/YwM+TM7vr8mUI9Z+8Zip28ZnxiEkMwyAcf9D3rffD88uXnWiXuc2xrr4d9fhR9te05YQwPgVPEvfVdC99wqFGQXxBrWp20GjA/5izUiYF9TOZ6pHIP9XMaXEJKpJqDfEPS4eQZyupfYMu5fd5uGCag9hNoDh9B1+7OCYyusRUffjcU5O1DgKTiyQau3ryX+R4gc8qfXu4eGGWjbtqNuOx6r+gfFnxCS0Xh3bkDl1H+gdt927cBq+OM2sv8V+YiO3IYo29wdP1tQiILiAjh6YhXHGgB1xMer0cXbW7u3Hy78kWbgyN0VnvfX690jhhnYWLMeT9Reh2rPbj4dCCEZj7tiNw5Nvg4129dHFeiogo+I7WY+G2YMuhSh94ib1NU0AE4S/2EffoAeuSdo9eiNmYH272kJPDR6+5H7bji4Gk81XY96dyWfCoQQxyDVVKJ+6vWo2rS6o5Bribsb+vvB4H46xqBHV5ww7Gb1AxoAJ4j/kPcfR6/8n2v16KObgdih/0iBj5b3X1u1HE+03IAWVx2fBoQQx+FqrEPztBtQuW55fOH/WFEDxDAVYdt6dcHPh/xTfZwGIJPFf+CCa9An+7qOllDPDCQW+ge08/4rK5fgycANnNqXEOJoRH8zWibfgANrlrQXaK2wvkExj2kWdIxBn664buAN6jVOuv6OGQWg9p8/Er0KvkOWT2p/txgd869f9W9m/P+KyiWYJd8EReDUvoQQAgCqS4LntofR/aRTran019pmYL6A5gDkvRX40bYnhFWMAGQSXX2fIssVRfyB2O8ZC/1HRgDa3ltJ8SeEkI490ZCMwNSbcGDlkrgL+oz08mNFDLI8kLoW41PHRGAc4S5HvrcehdlF+rl+wGjoP1LcY1X9txmF76uWY1bwZoo/IYTomAD/1JtR+f1yY8IdLU1gMvwfLgGFOSgaOUFdTwOQCeI/7O130N03JLrga6FtBmSDvf1wvj+4Gk/6b0ZIDPJXTggheoIkB9Ey5WZUbVitL9zRxNyAwGt+V4R56F6AIcPGqu/QAKSz+A+edzd65Vysn+vX6/13HA0Qb+h/Y816PNFyCwIs+COEkNii1NKMpim3oGbb+o6P5wSK/GLOF4D2+/TqjosHj1bvzuioS8aK/4C5Z6BP4efweER9kTc23a/Zuf7b/r27bjtm1F6HOo7zJ4QQU8jF3VB47xMoOLrUWJGf1jYTUwNr7ROQoeypwNlbHxK+ZAQgnejie7t1dT8jPXwt8dfu0ccK/be9V9lUjkcOjab4E0JIHEjVlaiZMhqNFeX2hP8N7OORIHYpwtsZG23JyN7/iPmrUZhdmIjg6435R4RZ1HqvJlCPhyvHoIrT+xJCSNy49+1GxbQxCDTXmw//uxF3DUD4PoXZKBwxMTOnC844A6AeN+9F9Mg/IbrgQ1fw9d7XC/1rmYFH9o1FGRf2IYSQhPFu3YCyyWPNT/6DKAJvoAYg/DM9uuCE425TX6QBSGXxP/a1P6BXzp9jC7653r9e7b6WGZixczw2+5bxV0sIIVaZgP8uw/bJ4xOb+x+J7dOrO/587Dj1DzQAqUq3vGcgCgYE3+wogOjT/ba9P2vndKzyLeKvlRBCrDYB/1mE7Y9NNz/3v14kwED4P/x7RAHoVoxnaABSsfc/cu465HlyYs3k194U6Au+md6/DGD27qfxpW8ef6WEEGKXCXh/Hna++rSxHny80YEoJiDPh5yR96rraABSSfyPm/08uucfZyy/745iCIzN+BdpDD7aOw/vev7FXychhNiM+9V/Yc8H8+LP7xs1ATrGoXs+jjtuovo8DUAqiP+xL12Mo3L+oiXk+oIfO0qgNbRPa/jf1xWL8bJrOn+VhBCSLOF6dDrK/7PYsvy+7j46nzmqCH859nb1YhqAzqY452W4PEgk3B9+B0Qb9hdpDLYe2oin5Dv4aySEkCQTnHYHajZvNDe8T68GwGQkwOUBivPwMg1AZ/b+h7/2NQq9hVpCbjTcr7dftGF/AFDvr8WjdXdyil9CCOkM8WppxqHpd8JfVxt/+B8xL48TAAAgAElEQVQwVQgYbhwK81A4/B71axqAzhD/QS/dgZ75p5kv9tPfz0zh38P7J6Lcs4O/QkII6SQ8u3Zg7/SJ8Yf/3TBdCBguLT274LRBE9W0DQOnpQFQ+/+rGN2zJ3Z8x8iUv8aiBNF6/0/vvB/f+77mr48QQjoZ79KvseOh+2MvABRN0M2agLDX3Yswsf8dajENQLLIz/4G2T537F494ur9y1F6//PLZuNT31z+6gghJFUiAQvmYvebs2P36uOpAYhhArKz4c7PxTc0AMno/Q95/jF0zx4UT6/ezH5aowCWHfgGr0oz+WsjhJAUw/X4TBz47pv4awASMAHdizBoyL3qY+l2zdJqOWC19JnBOLp4HTxeUd++RVvuN0uj9bR7/5EGoKxxP8bVXI066SB/aYQQkoLIxV3Q5ZkXkdutp/GlgI0uHxzjOwIylF2VGLr9bmEjIwB2UOT7EB6XGLtXrzf/P+Lu/T9aOYniTwghKYxUfRAHpk2KPQ1wpBQkMCQwfOngojx8mE7XK20MgDrkuVnomtcvdoEfdFpNe5/I3r/WpD+P73oAG3zL+esihJAUx7tiOXY8/EBs0Qf0jYKeCYDG67Dv7JqLfkOmq7NoAKwU/9InBqIk5+/xibyZKEEr4dGd9/YuwMfeOfxVEUJImuB5cw7K3l9guJLflAmIYQpK8vH30nvUgTQAVlGU+0Fr3t9sgV90Y6DX+29j86GNeEacwl8TIYSkG9OmoGbrxuSYgLDXHh/Eolx8QANgRe9/8KwH0DW7f8eev5E5//WMAaL2/tvMwOO1U6AKKn9IhBCSZgiqiprpU8xNBmTEBBgwBV0L0X/wfeoDNACJiH/p47nonn+jsRC/nq3T3i/WuP9Hdk7FDu8G/ooIISRN8W7YgO3TpiY2JDBOU9C9EDeWTlFzaQDiJd/7JbLcbv2efKwpgI33/sPNwHv73sEi33z+egghJN1NwL/nY++775ia3c+0CdAoL8vKgjs/F1/SAMTT+x/45A3okTPS2N7GC/xi9f531u3A05jGXw0hhGQIyvRpqNu9Iz4TYNQUaEQCeuRh5MAZ6g00AGbpkjXZbFFfxwiA+d7/49X3QRaD/MUQQkiGIAaDqJp+n+l5/g2bgigmoUsOJtMAmOn9D31qAfK9+db0+KP3/sMjAM/vfgrrON6fEEIyDu/y5dj55FPWmAAjhYSH38/PRf7Qh9UFNABGxL//wyehJO9S8yKvNwVwbHMQBLCkcgne9DzHXwkhhGQo7mefw4ElSwyP6U8oMhD2fkkhLu0/Qz2JBiAWBb45kEQTIm+o2dv1/iORFRmzmh/gr4MQQjKcxhkPQAnK0cf0JxIJ0HgteYCCXKTcjHIpZQDUQY9MQLf8Aeby/fH1+MPXgXh09wPY69nJXwYhhGQ4nh07sWvmjI6iH2/PXy9yEPG6Ww4GDHpYnUADoEdx9m16vXdz+f6On1F0TnVx+Wf40DePvwpCCHGKCZj7FvZ/vqijZMCcqEc1ERqvi3NwGw2AVu9/6KNzke81OGmCFJcxiCz+q5Ob8HTwQf4aCCHEYfgfeAjBlgZtGbH69WGTkZ+D3KGPq3NpAMLFv/S+Xuie92v9HH8iQ//0P/tk2YOodJfzl0AIIQ7Dvb8Cex54EBAV7UgAjIm6oddhwwO7F+DXpQ+pvWgA2sjLehsel6gv6kD8Q/+gOfHPF+Wf4yPfAv4KCCHEoXjnv4P9ny5qNQEGZvfTE3Uzrz0uiHk5eJsGAIA6YMYolBSeFI+wx5sKaA4FMSvwCO9+QghxOP6HHkco2KxtAuIVfSDq8MCSXJw04FF1FCMAhVmPWiXsWp8P7/238UTZIyj3lPHOJ4QQh+Mu24fdDz0GQNaPBMQh8pqvw+SpMAePOtoAqIPuH4cu2X0S6/HDsDmQASytWo4F3jm86wkhhAAAPK/PQ+V3y2ObAJMiryldh+mSjz6DnlTHOTcCUJgzPv65/hEh/saG/j3d+BjvdkIIIe2of/TJMGVU4hd9I0WDh7cVZmO8Iw2AOuS+x1CYVaj9rt6Uvm7Txwkv/ntxz4vY7F3HO50QQkg7vGs3YtfzL+CHUvE2E5DIHAAxogiFOSgcMkvttF5p50UAivP/Ft8H44sY7GnYg+ekJ3iXE0II0cT12LOo370D7ZaJi3PMv279QEQUoTgPf+us8+0UA6AOve915Hp9+r18s2kA7fB/eO//6aonoQoq73BCCCGaCKqKysefOaIcbXMEJNjT1+y/HibXA9/Q59TXnRMB6JLzG2M9/USNQStflH+OL3yf8O4mhBASFe/Cxdj/6eKOJgCJ9fR1UwcS0CUbv+mMc026AVCH3fc2srKlI1fBLNGW/dWuEXjWP4t3NSGEEEO0PNm2NHyYCUhkOGCMqEGWD9Kw59WkTw6UVAOglt7lQdfci9qLv56Yx0v78P9zu1/ATu823tGEEEIM4dm2C7ueezFsi2zNyIAoBqJrPi4qfVr1ZG4EINu7AF7J4DETHwlQ0VSBF6SneTcTQggxheupV9BYsQ9HppGTO44MSFD0wz/rdUHM9iCp89MnzQCopXdlo1vBBdZ8m37xYPjY/38d+BdkUeadTAghxBSCLKNi1ktA5Fyy0YYHmhT9yM92y8MFpf9SszMvApDtmQePJEbv2Sca/v/Bp2FZ9Wq8x8V+CCGExIn33x/h4Ko1QIfl5KwT/fDPerwQs32Yl1EGQC29XULXXBO9/8TD/8/XPcu7lxBCSELUPvNy2KsoIwMSKAIM39Y1CxeUPq9KyTi35EQAsrPegtdn0bH0jUFb8d8n5YvwnW8J71xCCCGJRQG+XYX9n3zavvcfbWRAPKmBsH29XojZbryVOQagOPcXsXv2iRqeI59/zv8871pCCCGW0PLs7MMGQKceQK9/CuhnuCV9g1Cci19khAFQh979OrLcBtXdSF1A9K96c+88bPFu5h1LCCHEEjybdmDPm+8c6f3r1QNAo6cPHdGHvkHIkiANnW3/7ID2RwCKsi+z5ovCr6Z+9f+Lyou8WwkhhFhK6Pk3wkQ/zARoTRccKzVgwCAUeXGZ3edkqwFQh0x8DDk5XitW9TPCs3teQrm7nHcqIYQQS3Hvr8KuF15r3/PXKgoEoub4jRYM5mTDO2S2vSsF2hsBKMi+Sv/NWEMBzZmEZrkFL4kv8S4lhBBiC8IL8yE31+NIPUC4msYxP0CMqECBB1elpQFQB00Yh4Ks/MS+xdh8AQpEvLDvZdS56niHEkIIsQVXXQPKXnrz8KvwosA45gcwEBUoyEH+oNfVcekXAcjLvVHX1lhG6/fWBerxsusV3p2EEELsNQEvLUCgrjpsi0Y9AGC68l8vKpCXhRvTygCoA8aNQpfco7TP3pqQfzgvl7+KZlcz70xCCCG2Ijb7se+VeR17/lorBwKxw/0xogJdsnDUgNfVUekTAcj1Torvg0ZC/u2vVl2gHq9Ir/GuJIQQkpwowCvvIVBXH2YCTNYDGIkKhL2X68MkO87D8ri8WnpzL3TNHW7PZXd3uJKvlM9Bi6clpW6OwYMGQRQF/koI0WHnrt1oamrihbCZ/Lw89O7dy1HnvGHjJqiqam8UoMWPfa+9hX7XXn14i6wtreEKK+sob1BD4iLe65qL4aVz1F7bfyfsTWkDgOzsp+Dywu4hf0Br5f+rrtkpdwOec85ZuPb//Z1PH0J0WPzlf3D9jTfxQtjZS3W58OgjD+KkE0c65pxnz5mL9RvuT8qxxNfeh3z1byBl5YTpXJjKixKgiNFFP1KBdUyCSway3XgKwCWWnoPlV6Uw+3xtnxEr/29+JcBX981Bg6sh5W7Cp2Y9g2+XLOUTiBAdzjzjJ7jqyj/yQtjI9ddd6yjx37R5C2Y+9EjyDFZDM/a+vgCaIwF+UFiDQwO1ZDLivcIcnG+5ibHyy9TBoycjx+tN7FuMmITWq/m6ODclb0RVVTHhtjtRWVnFpxAhOtz0zxtwwgnDeSFs4Cenn4a/Xn2VY863qakJo8eMh9/vT3LI4QONLrzBoYGAsQLBw+/lSPAOfkudnLoRgLys/03adS+bjyopdQX2YHU1xt12B0KhEJ9GhGhZfbeEB+6bioKCAl4MC+nRvTumTr4Hoig65pwn3TsVO3ftSvpxpapa7JkTHgUINwIxZgk0Oiog7L08HyzVWMvuEHXATeeiuKBEe2if9aUGs5V5KX9TLlu2HM88y5UJCdGjpKQEU+6dxAthES6XC/dNn4KiokLHnPPsOXPxwYcfddrx5Tc+7ij6kVEBM6MCorxX7EXJgPnquakXAcj26fyK9Rfw0Z8LIHrx4Af7F2KHZ2da3JysByAkOqwHsA7m/ZOPZ8d+7PtwUdiW8KGBGksHx5H/D38v223dkEDrDEBRzqkWBVWiXJXWf7/h/3fa3KCsByAkNqwHSBzm/TuPlrkfQ3M+gHaGIIqwhxNjrYCibJxq1d9tiQFQB980Az63KxkXelnVCqz0/TetblTWAxASHdYDJAbz/p2Ld9UWVC5r0yUZ2hME6aQCIkUf0d/zueAa/LY6I3UiAHnZV+pP+WstcxsWpOXNynoAQqLDeoD4YN4/Naif9zE08/8dCgRjiH6skfFuIM+HK1PCAKj9rzsFxfkl7c8o2tlEFgYaNwl7GvbiI9+naXvTsh6AkOiwHsA8zPunBt6Pv0P9nt06oh8xKsDoVMA6hqDYi5L+C9RTOj8CkBXPvP/hhYF6JqHjv986+H5a37isByAkNqwHMA7z/qlF1fxF2qIfGRXQSwXEMgRh72V5Ey8GTNwAFGSfmayLO9/1XtrfwKwHICQ6rAcwBvP+qYe44Et90ddKBcRaFDfKewVuJKy9Cd056sB/XINcny8ZF/bf+95HjVSbETcx6wEIiQ7rAaLDvH9qItU0YO+CRdAdCghAd4IgLUMA/QhBbhZ8A99Xr+m8CEB29rX64/wj/+IEDUDgg4y6mVkPQEh0WA+gD/P+qYt/wRcavX8DywYbyf9HSGu2B9d2ngEoyh2mL/B6k/uYXxjo+5oNWOVbm1E3NOsBCIkN6wE6wrx/auNdvQ3V32+A7vj/aIsHmSwILPJhWKcYAHXwP6bCI9mcfGo907drF2bkjc16AEJiPAFYD9AO5v3Tg9p3Fx/+V2QqwOCKgXqiH4HHA3HwQnVq8iMAOd7fJ+NCBkNBvONemLE3N+sBCIkO6wFaYd4/fZDe/RahYIuWokU3BG6YmhYYAHIkxK3FcRkAtfSvuSjK7ZeMC/lu+UI0u1oy+iZnPQAh0WE9APP+6YTYHMD+975A1Px/uCGInBtAzxBoUJSNfqUfqbnJiwB4fdPgEqE/6Y91vBf8NONvdNYDEBIbJ9cDMO+ffgQ++CZiixzbEJgYBdC2n0sAvC5MS54ByPGN0i7u04tTGF0BsP1V2FZXhmVpNu9/vLAegJDoOLUegHn/9MS7bAtqt+2A7lTAP5gCE8MCdSYOyvFiVFIMgNr/6mIU5fS29lJFDiVs5f2aRY76obMegJDoOK0egHn/9Kbmw6/DXsUqCJRjDwuEtiEo8qB3/4Vqsf0RAI97EpLkRD8UvnDcA471AIREx0n1AMz7pzkfLYd+/h+IuliQXhRAS8jdgMdjfmpg80qe47skGdft28oVKPPsd9zDjfUAhMTGCfUAzPunP+6ygziw5L9RogAwHwXQSQvkSDCtzaYMgFp6pYSCnL7JuHAfNy527MON9QCExHiwZng9APP+mUPDwiWJRQFiTQ6E1vcKfOhb+qlqatpdc3eXx3MPJK/OXxj152r6oi10/8fRDzjWAxASnUytB2DeP7OQPlkdIfYG1wmItlog0CEtIAmAx4V77DMAWVmXdTyykal+gdgjAI5sX1T+LepdjY5/wLEegJDoZGI9APP+GWbo6luw/9OvEXtaYFm//xxt0Fy4RHtwmX0GoCBngA3+qMOWT1qc3ftvg/UAhMQmk+oBmPfPTJoXrQgT/CjTAmtFAfRkU6M/XeCGKY02bADUgVddA6/bZfeFCioyPvV8y6faYVgPQEh0MqUegHn/DL5HP/seSrBZ510DUQAg5oyAAOD1wjXwK+NLBBu/03zeK5NxoT478A38YoBPtTBYD0BIdNK9HoB5/8xG9Muo+Hw5DC0OpBUFcBuMAgDwuWBYq40bgFzfiKQYgBb2/rVgPQAh0UnnegDm/TOf5s9X6gi9tVGAXAmGtdqQAVD7/+4U5GXnJOMife5exieZVhuwHoCQmKRjPQDz/s7A/cX69r37H4Q+RnFgrOWC0T4KkOdDTv+v1FOsiwB43dcmRfwrlmT8yn+JwHoAQmI8ZNOsHoB5f+cgNgdQ/sVSnSiAkbQAog+0C5dsFwxptrG7LjvnbN3Bh5qzFMS3z+Lm5XyCxYD1AIREJ13qAZj3dx5NX67RiQLAWBRAjwhDkO3F2dYZgLy2xX8kDTui9ZfEt8+XrhV8ehmA9QCERCcd6gGY93cerq826Ii+iSiAXp86XLIlGFqwL6YBUAf+7m/wSLbHp1ZVr0Wlu4ZPLgOwHoCQ2KRyPQDz/s5EqmzAwVUbYbjoLzwaYKIWwOOGOHCp+rfEIwBezxXJuDBf1a/kE8sErAcgJDqpWg/AvL+zqf96jc47WlEAE2sEREQCvC7E1O7Yd2C276RkXJRvsJp3hklYD0BIdFKtHoB5f6J8s+lIr95wLYCJKMBhc5DtQkztjmoA1NJfeZCfXWz3BSlvqsQ673beGXHAegBCopNK9QDM+xPv+v1oLC+PEgWINAfQjwK0obFeQL4HxaVLVE/8EQBJugFJCFN9U7OKd0WcsB6AkNikQj0A8/6kjZpv10WIfqx5AaAdBdAZBggAogBILtwQvwHweS5OxsX4NriGd0QCsB6AkBgdpE6uB2Den4QTWLIRpoYBRqsFaNdpRztz4HPj4li765PlTYplXiqt4x2RIMuWLcdPzjwXoiDwYhDD3HnHBFx4wfmOONeSkhLcO2kibrzp1qQe1+Vy4f77pjoq7z/njTeZ9492T3wXmfIOmpZnzbcjviZLxPD4DUBedpG5v0CKsV/HSYC+r9mOGqmed4QFNDQ08CIQU0y8+14MGjQQx/Tr54jzPfusM3HVlX/Ey6++lrRjXn/dtThx5AjH3FObNm/BAw8+zB9XNOWsaUb195tQfPwgY2IfGSkQJUCJEU1yA3kqomq47jeoA0ddA5eIjrP3Rf6x0Wb4i/VZYGkDw/+EdBbNzc0YPWY8WlqcMwV3MusBmPcnetQv26TRfTcxDDCyj61RF+ASgIEr9ZcH1rcQHt9F7WMKWr34xFkWYvifkM5k85atjuqxJasegHl/Eo3Qsm0wNxkQYHqRIAAeFy4ybwB83pHGBhwmxgrPJt4JhHQyb8ydh48+XuiY822rB7ALJ+b9Od7fpBFduTvGHianB4ZGFMAN+CSMNG8AcrN62H0BVhxcB78Y5J1ASAow8e57sWPnTsecb1s9gB04Me/P8f7mEP0hVK3cBP3Qv5EvUaKuCQAAuRJ6mDIA6oCLzobX47L7Aqxs3MC7gJAUgfUA1sC8PzFK48otcUQBzEUEvB64BqxRzzYeAXC7L0vGya9SNvMOICSFYD1AYjDvT8wQWr0zYkscUYAfbmborhLoFnGZcQPgdZ+WFAPg3so7gJAU44258/De+x865nytWi+A8/wTs0ir95rr0WtFAdrSAFHwijjNuAHwefvbfeIbDm1Hg6uZdwAhKcg9k6c6qh7AivUCOM8/MW0aGwKo2agXPYmzLkAjIuDzoL9xA5CTZft8mWsat7D1CUlRWA9gDub9Sbw0rNmGuMb+h0cEYqwPkCOiwJABUAdcOAqSZPtJrwluY8sTksKwHsAYzPuTRAh+v8e40McZEZAEYMB6dVTsCIDbfWEyTvp7cQdbnpAUh/UA0WHenySKsHb/4X/JCQu91jwAbf92u3BhbAPgcZ9s9wnX+uuxw1POlickDWA9gD7M+5NE8eyogb/2kNm4ATSLAaMdR8TJsQ2Az3OM3Se8rm47W52QNIH1ANow708s6xSv00qnWBARAH6YzNfnxjGxDUC2z/ZY1rpmhv8JSSdYD9Ae5v2JpSZ7w26YnuRHD61iQAnIFlEY1QCo/c89CR637Xf0RmU3W5yQNIP1AK0w70+sJrTRaEo8xsyAUdIAHgFi/03qSfoRAMl1QTJOdoO4hy1OSBrCegDm/Yn1iBsPaGxNMPQfzuGIgCThAn0D4JZOsftE6wKN2OOpYosTkoY4vR6AeX9iB+49dQjU1cL8PAAapiHKnABuAadEMQDuwXaf6OZ6hv8JSWecWg8wcOCxzPsT+zrHW/YaE/ioaYAY97KIdhrffsYfn6fE7pPc0lwWc95iknx+cvppuOpPf0zLv93r9cLr9TrzoVFXh1tGj0NDQ0NSj/vG3Hk4+aQTceEF5zviOpeUlOCtubMddW/NeeNN5v2TSPOWfcBJx4UJvRYJiKcb8IVQov9tWb482w2AvJcGIAX5+ptv8acr/4DTfnwqL0aaMW3KPbjhn7ck/bgT774XgwYNxDH9+rERMoxNm7c4KsqTCgS3VoT14hMRSRkQJUASO2zOEtFO43/YQ+3/02FwS4LdJ7kV+9nSKYiqqphw252orGR9Rrpx1pln4G//+5fk91gcWA/gBJj37yS2HjQm7gmkAdwChP7b1WEdDABcrjOTcY7b3JwBMFWprqnB2Am3IxQK8WKkGTdcdy1OP+3HST+u0+oBnADz/p2DtL0mQsTjXSAomgMAXCLO7GgAJNdJdp/ggeZq1HEJ4JRm+fIVeObZ53kh0gxRFHHftMnoddRRST+20+YHyGQ43r/zcNUF0HTgUJj4xyIYZbv+aADJhZM0DID9IwB2NrL3nw48NesZfLtkKS9EmlFQUICHH5zRKQWRTpsfIBPheP/Op3HnAQOiHz4ngPm5AiThyEiAIwbAI/W2++R2+GkA0oG2eoCqKtYDpBuDBw/CuDG3Jv24rAdIb5j3Tw1adlXAsjUAdPAI6N3RALjdxXaf3K5gBVs4TThYXY2xE+5gPUAa8pvLL8OvRl2a9OOyHiB9Yd4/NZB3VVv0TYfTAxppALcbxR0NgM+bZffJ7QZ7lOnEsmXL8fyLL/NCpCG3TxiLoccNSfpxWQ+QfjDvnzqou2vM2IUYkQLtiIFPQFY7A6CWntIrGYsA7REPsoXTjMefeApLv1vGC5FmeL1ePDRzBgoLk79gDesB0gfm/VMLoawOxob6xZ8O8AgQS/eovY5EAFziKck4uT0SDUC6oSgKbr/jLtTUHOLFSDN69izB/dOnJH3qWtYDpAcNDQ24+dYxzPunENIem2b0DFsWGBLgklrXBDhsAFzD7T6x8qZqBEXmk9ORigMHcNsdE6GqKi9GmvHjU0/BNf/v70k/LusBUp97p0zHnj1lvBAphBhU0FhRY/JTBpcIdh/5hEvA8HADMNDuE9vXXMnWTWP+8/U3ePGlV3gh0pBr/u9vOPecs5J+XNYDpC7M+6cuzfuq0bHq39qRAS4BA8MNQF/bDUCA4f9055HHnsCqVat5IdIMQRBwz913oXfv3kk/NusBUg/m/VObwL6DGr17a3EJ6HvEAEiuHnaf1P5gNVs2zQmFQhgz/nYcOsR6gHQjPz8PDz84Az6fL7m9GdYDpBQc75/6BMtrE/2GjgYiYjig5EKPIwbALRXZfVIVSi1bNgOoqKjA7XfezXqANGTQwGNx98Q7kn7czVu2YsZM1gOkAnfedQ/H+6c4SkVbIaBeiD9ybQC9IYD6kQO3iKKwCICUY7twgL3GTOHLr/6DV159nRciDfnlLy7Eb6+4POnHnfsm6wE6m9lz5mLhJ4t4IVIctaJBuxevuSBQfOkBCcg5YgA8bo/dJ1Up1LFlM4iHHnkMq/+7hhciDRk3ZjRGjhiR9OOyHqDzYN4/jahstP0QHgEeABDV0hESPPYPFD4g1rNhMwhZljFm3G2orWVqJ91wuyXMnDEdXbt2TepxWQ/QOTDvn164KuNdMTda1KB9HYBHglhapUoiBOG49h/WWmUIiL0ecfRQRJXUwJbNMMrLy1kPkKZ069YV902dDJfLldTjsh4g+XCe/zQzAFX+CF01Miugsdx/OIKA40SI6oCOIh5L6GUNwyDpfFbGwZY6qAIbNhNZ/OVXmD1nLi9EGvKjH52MG6//R9KPy3qA5MHx/umHoAIt1TUxdDhxRAEDRAji0bF3lWNsD3ch7ojtEqr9NWzVDOaBBx/GuvUbeCHSkL9cfRXO/9l5ST8u6wHsh3n/9MVfbX/EXBBxtAhR7GXt13ZMJdQEmf/PZILBIEaPnYD6eqZ50q63IQi4d9JElJYek9Tjsh7AXpj3T28C1Y0GO+GR+xivAxAF9BIhCrZPAlQjN7JFM5yysjLcfc9kXog0JDs7Gw8/OAM5OTlJPS7XC7AP5v3TG/lQk4b46437j5wt0FgdgCighwhR7GL3yRwK0QA4gYWfLMIbb87jhUhDjunXD1PunZT043K9AOth3j8DDEBtI6wc969pAIAuIlyi7bMA1oWa2KIO4b77Z2LDxo28EGnIueechauu/GPSj8t6AOtg3j8zUGrtT425RBSJEMU82w2A2swWdQjBYBC3jhmPhgbWA6QjN990A04+6cSkHpP1ANbAvH8GGYB6rTY02vvXihp0rAMQXcgTIQq2J/7qaQAcxZ49rAdIVyRJwoz7p6F7925JPS7rARKHef/MQe1gAIzWAejN49MRUUCOCFG0fXmwBtCROo2PFy7C/H8v4IVIQ7p26YIHH7gfkiQl9bisB4gf5v0zjIYArJ7/v4MBAHwiRNHb3lFYTxMNgCOZMu1+bNq0mRciDTlh+PG49Zabkn5c1gOYh3n/DKQpaPshRMArQlTcHd1FrKkHoRN2iNzeSiMCbFAHEggEcOuY8Whs5CiQdOTKP/wOl1x8UVKPyXoAkzrBvH9m0ijbfggRcIsQRTmSd6UAACAASURBVMl8SEFr/6DG9lYz0CzQADiVXbt3Y9K9U3kh0pQ7bx+PwYMGJfWYrAcwDvP+mYnQLOvorqyhw1rbYqwdICoQJUgiRMH21UBaBJkt6mA+/OhjvP3Oe7wQaYjP58PMGdORl5eb1OOyHiA2zPtnMP4QtCPvkZ1trcX6jOmtKMAlQrR/KWA/DYDjmTJ1OnO7aUrfvn06ZZKgyVOnY/fuPWwADdZv2IgZMx/ihcjUCIA/ZPsxREAUIYq2r9PnF0JsUYeTX1CAosJCXog05eyzzsTf//bXpB6zsbERN986hvUAETQ1NWHc+NsRDAZ5MTLWACjJMABCUgxAkAbA0UiShAfum4pCGoC05vp/XIPTT/txUo/JeoCOMO/vAAMQSJYBAOw3AKABcDK33HQjRow4gRcizRFFEfdNm4xeRx2V1OOyHuAIzPs7xADIqs47egv9RBuNJ3dQ5MOFgIIIQYB28UC0woPwfYPQrjw88kfJgsIWdShn/PQnuPKPv+eFyBAKCgrw8IMz4PV6k3pczg/A8f6OQlahPwQfMFYgCJ39D5sMACJ+CM/LUYRezxhoGYLwA7aiCCob1IGUlJRgyr13QxAEXowMYvDgQRg/dnRSj9k2P4BT4Xh/h0UAFPs1s9UAJAEFNABOQ5IkzGDeP2O5/Ne/wq9GXZrUY27eshUPPvyoI6838/4OI0lBcwlJ6J1R/p3HrTf/EyNOGO6Y891TVobnX3jJUW0sy8kf3vva63Nwy003Ouo6L/r0c+b9nUYSRFMAIPFKE6s584yf4o9/+J1jzjcYlDF+wh1Y8/1aNr7NXHvN/znunM8792z8+U9X4qVXXuUNQHAk3e428nSKKvMi1OTkGogzcGLef8bMByn+SeAnp5+Gv159lSPP/aZ/Xs+RNE5CCBf6WDP8mVmj58i/VQTN1ADEOrj+YkEiLYAjaMv7FxQUOOacF36yCLPnzGXj20yP7t0xdfI9yZi4NHV/W9OnOOq35WjESN2NNAOA/si8aNotRxzGpTfcIPLfiLI9ulkQVRoAJ3DrLTc5K++/pwx3TZrMhrcZl8uF+6ZPQVGRswtKW6Nrk3hDOABVTE5tXlJSAJIqskUznDPP+Cn++PvfOuZ8A4EARo8dj4aGBja+zVx/3bU46cSRvBAAzjzjJ/jzn67khch0pGQZgCTUG7pBA5DJ9OzpvLz/fTMexPoNG9n4NuPkvL8erAdwQARASsqzVBWh2D/jgJsRgMw1qpKEGfdNc1Ru8uOFizD3zXlsfJtxet4/6m+O9QCZbQA8RgyA0WG42otGKYkbgKChP9CrutiiGcqYW2/GCcOPd8z57t69B3ffw7y/3TDvHx3WA2S4AfDGMr1GxV9/PwWqKkJVFO1hgrGKAtvP9x+tcNCrcrqBTOSsM8/A7393hWPO1+/3Y/TYCcz7JwHm/WPDeoBMNgBCDA02qtOI0Okj/1YQUkSISujIRr3VgxLDxwhAxtG7d29MnXyPw/L+M7FhI/P+dsO8v3FYD5CheO1KewXDIwAhEYpi+3yeWYwAZBRutxsP3D8NeXm5jjnnjz7+BG/Om8/Gtxnm/c3BeoAMjQBk2X//K4AsQlGCdh8ox9CUhSRdGHPrzRh63BDHnO+uXbuZ908CzPvHB+sBMpAc+zvNChAUoSoWrS+pXyuQTQOQMfzsvHMdmfdvbGxk49sM8/7xw3qADCPb/rS5AtUvAkoLgIj1AmIV/xmdEbCVXBqAjKB3796YdNedjjrnqdNnYOOmTWx8m2HeP3FYD5BB5CYlAtAiAkrjEX2OrDC0hjzBywZNc9xuN2bOmO6wvP9CzP/3Aja+zTDvbw2sB8gchDyjBiD+Ej4FaBShKPV2n0w+DUDaM3b0LThuyGDHnG9r3n8KG95mmPe3FtYDZAZiBwMQOew+MfFvNQBqvQglVGP9n99+8aB8Fw1AOnP+z87D7377G8ecr9/vx61jxzPvnwSY97ce1gNkgAEo8EB7MT4AHSbuCUYxBlpzB7QSglojQlUORhfy6Ev9Rt+nlUKXjy2apvTp0xt3T7zDUec8Zep92LRpMxvfZpj3tw/WA6Q3UoEPsXVZi2CUfdrrtQLloAgoFZAAuNuMhbmlfo1QJGWzRdOQ1vH+zsr7f/DhR/j32++w8W2GeX+bBYT1AOndfoX2R80VoEKEoOy1+0BFbhqAdGTcmFsdlfffuWsXJt07lQ1vM8z7JwfWA6QvnuKsJBgAda8IRd1l72GCKPbmskXTjAvOPw+/veJyx5yv3+/HrWPGo6mpiY1vM8z7Jw/WA6Qn3mL7O80qsEuEqmw1tnv7wj7j8wQAXXxZEFQ2arrgxLz/vVOmYfPmLWx8m2HeP/mwHiC9UAXAV5yThAgAtopQ1fWQcKSwsEMdgHZhn1m6yiwETAfa8v65uc6J2vx7wTt4+5332Pg2w7x/58B6gPQi1DU5i+epwHpRWLpdRiCgtD797TtYd4UGIB0YP3a0o/L+W7duw9Tp97PhbYZ5/86F9QBpZAC62T8LYACqsl3oIrda8WAgYO3XR05aEEQ3NYstm+JceMH5uOI3v3bM+TY1N+OWMePQ0tLCxrcZ5v07H9YDpAnd7J86PwA1AACtBiAkG5jxxOy6AO3HIPYARwKkMn369MZdd97mqHOePGU6duzYyca3Geb9UwfWA6Q+Qg/7hwDKUBuPGAA1WPNDHYDmfABywgfsIeawZVMUj8eDmTOclfd/a/4CvPve+2x8m2HeP7VgPUDqI/bwwtyaPOb1OQi1JjwCUGH3SfV057FlU5TxY0djyGDn5P23bN2K6fc/wIa3Geb9UxPWA6Q27pIsE8IeX+dcBiqOGAAltDuxPzl2euAoD+cCSEUuOP88/Obyyxxzvk3Nzbh1zHjm/ZMA8/6pC+sBUhfPUXlR9DVRnW4lBHV3uAHYnIi4G+GoLPYCUo2j+/bFpLvudNQ5T7pnCvP+SYB5/9Tnnzdej+HHD+OFSDGyjsqJ0sPX092gKYMQgrr5iAFAaM0Puf8OdQDWUJJdALcisHVTxWV6PJhx/1Tk5DinNuPNefPxwYcfsfFthnn/9MDtljBzxnTWA6QQihvI6WE0XR5eJ9Am2nIU83BkWwhYEx4BWGr9qXSMFPSRORIgVZgwboyj8v6bt2zFfTNmsuFthnn/9IL1AKmF3CfeOQD0IgCR26XDBkBZ+oMBEL7YvhfBw5MBGT6QkSWB29NH4UiAVOCC83+Gy3/9K8ecb1NTE0aPGQ+/38/Gtxnm/dMP1gOkDmpvK+YACBf9yMiAjACCynah994jEQAACLQ0tzMJNgwH7AuOBOhs+vbtg7sn3u6oc753yjTs2LmTjW8zzPunL5wfIDUQ+lo9B0DHyEAL8IPWHzEASrD6iOhbeeAjBuJodz5buBPxeDyY6bB5/t+YOw/vvf8hG99mmPdPbzg/QIq0w9H2R8mDUKo7GgA5UGbuayKLDWJHCo7xMi/Ymdw2fiwGDx7kmPPdtHkLZsx8iA1vM8z7ZwasB+h8fEfbHyUPQC3TMADyxg576qYBwlcHND5jUb+cLmzhTuLCC87Hry8b5ZjzZd4/eTDvnzmwHqBzyelnv4mWoW7saAAEeUW73L/lCxIF0T0rG/khia2cZJyY959071Ts3LWLjW8zzPtnHqwH6BxC+UB2d/vTszKwoqMBCIUWx/11JiYL6h/kSIBk0pb3d9J4/9lz5nK8fxJg3j8zYT1A5yCXupNynBCwuIMBEBZuWws5qGrfEdGE3hwDwELAZHL7beOclffftBkzH3qEDW8zTsz779q12zHnynqATmCA/asABqGq24TStR0jAAAgN9d3SAO4Ez9kuGk4VqKrTBYXXnA+Lht1qWPOt7GxEbcy758UnJb337R5C/509V8dNZyU9QDJxT3A/ihtM5T68NftDUCgpTzO4AWMrhNwbBYLAZPB0X37Oi7vf8fESdi1ezcb32aclvdvbGzE6DHjUVNzCKMdtpAU6wGSR9ax9kfHW6CW6xsAObhR25rEEnrjDMzrzpa2GY/Hg5kznJX3f/X1OVj06WdsfJtxYt7/nsnTfigo3bxlKx548GHHnDvrAZJH/rH2d46DYSMAOhoANbi0w4JAbUX7kvlDaZmGfI+EPgEfW9vOnvBt4zFo0EDHnO/adevxIPP+tuPEvP/rs9/oUFDqtMmlWA9gP8E+Ajz5SakBWKpvAELyx/F8pX7oXzs6METhlMB28fMLL8CvRl3imPOtq6vHmLETEAwG2fg248S8/4MPP6oTFZjKegBiGcpgT1KOIwMf6xoA4f1tKzQXBbJ0bQAZg0WGk+zg6L59cdedtznmfFVVxcS770HZ3r1sfJtxat5fr6C0ubmZ9QDEMlyDs2w/RgCqsk0YtEI/AgAActOhDmmARD1HRL3AUBYCWo7X63Ve3v+12fj0s8/Z+Dbj9Ly/HqwHIFaRNcT+a9oE5VDkto6/6EDLDvMCb25Z4KH5JWxxi3Fc3n/tOt3wLLGwZ8K8f1RYD0CsoGBoV9uP0QJ1R2wDIAeWt3vdNgJANw1ghtbPFHg9OIaFgJbx8wsvwKhLL3bM+dbV1WP02AmQZZmNbzPM+xuJFrAegMRP4BjAW2C1Hnas4A9AXR7bAKjBj6wZARB9ToDjFc4IaAX9jj7agXn/Sdi7bx8b32aY9zcG6wFIQs+0YXZU/0dqroQg1I9iGgDh31sXwHDPytjkP1oMd7MOIFGyfD48/OAMR+X9X3rlNXz62RdsfJth3t8crAcg8eI+Pt7ntzvGv6UwOxDEVmHYgtgRAABobqzVjSi0SwPEHxEYntONLZ8gt982Hv37lzrmfL//fi0eefRxNrzNMO8fH6wHIPGQO7wozk8GdUQ6GCb+rWagEUKt1jdoGwClZVt86wEYjwgMKeyB3BBXEYuXUZdejEsvucgx51tbV4fR45j3TwbM+ycSRWA9ADFOKFdF0WAjBYCSTm88HFkjGtBKC5Rtxg2A7P8m5t8R95wARz4zMsgJgeKhf/9S3DZ+nGPOV1VV3DlxEvbt28/Gtxnm/ROD9QDEDPIIV9grt4bISjomIJZJaI8f6jcmDEBwfoe/wd0hqhBD5PUiAkcYKRbxDjBJls+HmfdPR1aWc0ZRvPjSK/j8i8VsfJtxYt5/4t33xp3312Pzlq2YMZP1ACQ2rhFZ6Bi6j+xM6+X6tUyCNkGo8w0bAOGtrZ8j4A8ZC/2HT/sbPvY/dkTgRNYBmMZpef8136/Fo48/yYa3+0Hk0Lz/wk8W2fLdc99kPQCJTc6JRVEiAGb0F1F6/0poqzD8c+MRAABoaajQjTJ0mCUwaPAPbR8ROKlLb3gVgXeBQX516SXOy/uPHc+8fxJg3t96WA9AoqF4VXQ9UW91XKOFd7HNQgNCFXrv6RsAuWVVh1UBDUcEjC8ZfFIgl3eCAfr3L8WE8WMdc75tef/9+8vZ+DbDvL89sB6ARCN4omhC6OOnBcqqOAxA4L2YxsP0zIAd0wX/4yrmnRADJ+b9n3vhJeb9kwDH+9sL5wcgerj+JzspxwlAfc+0ARDmbJ4FJXQkGmF6gaCgRkQgfHsrp+RyXYBY3HG7s/L+/13zPZ54chYb3u4HkMuF+++b6qi8/+w5cxMe728Wzg9AtMj7H/s7vyGo2CycOMt8BAAAAvU1hsRed0igHMUctO53fFE3FMku3g06XParUbjkYgfl/WtrMYbj/ZPC9dddixNHjnDM+W7avAUzH3qkk6IOrAcgR5CLVBQfb38RfD3kmmjvRzcA/uY1mmKfcF1Ae06ROR+AFgP698f4saMdc76KomDchDuY908CzPsnF9YDkHY98x8lp9PbDHVN/AZAaXk3vtC/sQLAtvd+zHUBOpDl82HmDGfl/Z997gV8/c23bHybYd6/c2A9AGnDc2pyit9boLybgAGQH4OiaL+nWRdgJGzbcb6A04p68Y6I4M47JqC09BjHnO/yFSvx5Kxn2PA2w3n+OxfWAxAAKPpxV9uPoUCFDPWxuA2A8Nr2APx11R2EPmYkQG9NAO35AkqyszHU7+VdcZhfXzYKF1/0S8ec78HqaoybcDtCoRAb32Y43j8VohGsB3Ay/uMU5JTYHwGoA6q3C6cE4o8AAECgaUXU9xOOArTufxo4LTDQmvcfN8ZZef8Jt0/EgQOVbHybYd4/NWA9gLMRT/PFENTw/2rNwR9ZfKcVjpfQBGVFzL8l5l8b9M9t99pUAaDxKMBP87o7/sbIyspyXN7/mWefx7ffLuFTwWaY908tWA/gXPJOLwCiLrYTaQa0jEH4Z3UiDVDmJmwAhJc3PwshoMQM/WtODGTcHIwsPgrdgs4eDnjn7eMdlfdftnwFnmLe33aY909NWA/gPORuCrqM7BljL6OzA+pH2wNQlM3Cqc8mHgEAgMb6sqhRAMnIHxo7CnBGKN+xN8blv/6VI/P+il6RKbEM5v1TOUrBegAnEfqpKw6hj9br1qYecpmRbzBmAEJNnxsuADQ1PXD7KMCZWc5MAxw7YADGjr7VMeerKAom3HYnKiurqM42w7x/asN6AGeRfUZyOrlNUD63zgDI/qd0DYjh0QGxowBn9zgGWSFnrQ6YlZWFBxyW95/1zLP4dslSqrPNMO+fHrAewCEdnywFJWclZ8i7H8pTlhkA4YVtS9Fc32i4ADCBKMDZQWetDnjn7RNQekw/x5zvsmXL8fQzz4LYC/P+6QXrATKf4FnJOU495MZtwk8N9bCMdw2CDasTiwIYGxFwjq+bY26I31x+GS6+6BeOOd+qgwcxdsIdzPsnAeb90zF6wXqATCbr7OR0bhsQWm10XxMGoOXVdr17I8MADY0IaG8Izul+NLwO0IfWvP8tjrn52/L+VVXM+9sN8/7pCesBMvj551XQ4+y+Ou/qDQHUmgMAGsLbfp8WqK9abgCEZzfPguoPRRV7Q+Yg+sJAbtGFcwOZnQZoy/v7fM7J+z/51DNYsvQ7qrPNMO+f3rAeIDMJnqNCdItoHyaPDJlrjfVHlP3DzUDrdj/E0GbhTMNrqZt7SjTVbjU0f0EHAxOrFqB9FOBnvsweDeC0vP933y3Hv557nupsM8z7ZwasB8jATt95eTrCDYPbtQS2o/DWIrjVzN9lzgCEmudH/RsNzQsgx4wCnFfSB3kZOhrgit9c7sC8P8f7JwPm/TMpqsF6gEwhlKeg57nJqf5vRmi+jQYgMBEh+YhRMRIFAAzUAnQ0BOcH8zLuRjh2wACMufUmx/yoFUXB+Al34ODBg1Rnm2HeP7NgPUDmIP9MTc5xoCAAdaJtBkB4ZrsMf+1u3R6+liHoEC3QWimw46lckJNZowGcmPd/7ImnsPS7ZVRnm2HePzNhPUBmkHt+cib/qUVw93bhHNnMZ8w/MQKN7/zwbyNFf4ZWCuxoCH7crTd6BzLngTbxjtsclfdf+t0yPP/CS1Rnm2HeP7NhPUB6E+wto/upR+kIo7U0IvSO2c+YV1g1cBdEBaaiAB3EPva6AICMn6uZ4QR/e8XluOiXP3fMj7iqqgrjON4/KTDv74RoB+sB0pYLBY3eslbvONr2WJPsSFAgIQDxLtsNgPDktmo01ZTFHwXQ9EmaUYBfFvVO+/YfeOwAjL7FOXl/WZZx65jxzPsnAeb9/397Zx4fVXnv/89zZktCEpIQEhISlgCyVkGLCyhqUVSuC26IWrto69Xei6331rqhqLVW29tapSrX5ba2Vmv7q8WlWms3UVGrGAw7JHFhCyH7MuuZc35/JGgymbPOmclM5vN+vXiRs8wkM8855/N5vs/3+T7ZAfMBMpfis+INZevNADC72M5gUW1HaG+DWNyW/AgAAER612kaElMrBerPAjh8bEphIeYHPRnb+Nk47v/zh9big9pNIMmF4/7ZBfMBMo/Q/DBGT0nN39+L6Do7r7P39IiGboYS1Y9iOGQIzvaUZuwFsPq2WzF50qSsuWnfePMt/N8vOe6fbDjun50wHyCz8C71peT3RKEiBOXmlBkA8VBjD4LtHxsWANLLE9CcBTB4KOCccRORG828xl9xycX4t6VnZs3N2nTwIG5ZtRqqqoIkF477Zy/MB8gMlFwFFWdXpOR3tSP8caM4syd1EQAACPc+E1f0oSP6mnkC2gmBHpeKcyOjMqrxj5g2Ff99/bez5iaVZRnfu/FWdHR08AmdZDjun90wHyBDnonnROHyuKBd6ldLDE2trDf4HkH0Gbt/p20DIB7YcQtEWDEVBYj9nENKBA9k6AyB80ZXZkzD5+XlZd24/wNrHkLtJo77JxuO+xOA+QCZwOhzijC4GI5WYRyj8XEtIe3bH4ak7BBLb0m5AeizHu1bTH0GXVNjnBD4heISzAu6M6Lhb191S1aN+69/40388slf86mcZDjuTwbCfID0JTQ3hJIvlCTLDg0S0XaEtiTybokZANn/iGYUw/RCQeYMwfnekrRv+EtXLM+ucf+mJtx62x18GqcAjvuTodER5gOkI75lqZu55kf0kWEzAOL+XWsR7Aka1gKwNAsg/rHzKyejWE7fRj/iiGlZN+5/w00c908FHPcn8WA+QBo+F4tljF82MSW/qweR4C5x9tpE3iPxwcRI5+tD9tk2BPrrBFwQTc9kwLy8PPzkx/fC5/NlzY34swd+jk2bPuRTOMlw3J/owXyA9EJZFtUQOa0EwNj9A/fpRxI6EXk90b/XAQMQWK07xm8pIVArKtD384VjqtOy0e++azUmTZyYNTfh6+vfxJO/fopP3yTDcX9iBuYDpA+lF4zRORovATB2v5YxGJoAGABWJ/r3JmwAxE8b3kVPW5Om6MPAEAx1FNAaCqjOz8OZQW9aNfjll67A6actzpqbr2/cfzVI8uG4PzEfNWE+wHATOiOAgur8ZMY/PhPNNoSaGsS57w5/BAAA5O6nbCX9DRkKkGMiAEOHApbnl6dNg8+eNRP/df11WXPTRSIyvnvjLejs7OQTN8lw3J9YgfkAw0/BRakbou5GxJEQrCMGQNy74wZEglFtYdcQfQyJakB7hcA+QzC/dCyODg7/eGhBQT5+/KMfwuv1Zs0N99OfPYAPP6zj0zbJcNyf2IH5AMNHeF4AY+eXYXAIX2v8PzGCiEZ3iGU3pI0B6It/tL+jK+xGx4b2NxG/QqCMS3zFw97gd66+DdVVVVlzs72+/g089ZtnQJILx/1JIjAfYHjwLffE9HIRR+y0RNHo58G0I/SOU3+3cwYg4l+taXzMiL6FoYClFRMxOTx8jX35Zdk17n/gAOf7pwqO+5NEYT5AaolMDqHyrHFJ/A2DjYEfqmNJWI4ZAHFf/d8QjJMMqGUIjIYJDMoEXyoVDktjz541E//1newa97/hxps57p8COO5PnID5AKnFc4lI2e9qQ7CpXlz4t/SLAABApPsJ0/P/oRMRGdT7j1cmWMalVZNQKqd25blsHPf/yU9/hg/rNvOpmmQ47k+chPkAqSFaGsH4FZUwDuE7U8q+G5EnnPz7HX3aiB/sWIVQb8hQ2M0OEwxhcFTgMiU/pY191x23Z9W4/z9fX4/fPPNbPk2TDMf9STJgPkDyEZeaWateKzFQ7+eh9EIO7RAXr3L073f6C1FXz3kBBePPGTJ0f7gDHy+3L965A4/FdQweBGTgSwe3oscleLcTQghJGUp+FFWvjYHItZLQZ+dnAMjBPoRe3CIuOjdtIwB9Au+/FkpUv6dveSgAiDcUkOsGrojm8EokhBCS2t7/5ZF+8QeMyvYmhhtRqPAjeq3T7+y4ARD3NO5DsKVukODbmQpoalYA8OVxk5CrqLwaCSGEpKb3nxNF5eVlA8QKMFf/314tgBYE6xrFJfvS3gAAAMI9qxOfChizP049ACCCQq8LV8iMAhBCCEkN0hUReAvNJIN7dPabzwXogZyU+utJMQDi7vp16GndH1fYrUwF1J0VcJgIvjquCrlRRgEIIYQkufefG0X1FWUp+m1utCK4v15cti5jDECfVnc/OETYzQ4FeIwMwuB8gEKvD19jLgAhhJAk4/pqBFKht199zFTwS2wKYDfUpFXKSmr6vHrv8Z3IHV04JLtfjtOhN5oVMFD3h7gCNwIycNrBXejijABCCCHJ6P0Xypj8aimQ6zZhAPSMQS4GLwecE7cn3Ilo1ztiRdKKGyS36kik81cx0Qx7CwQNMVNDnUSuG7hK8fEKJYQQkhS8X4/Ck5toUZ946wIA8cLgnYj8KpmfJ+ndZfWnJwbhGuUz1dO3EhWI676AJXt24oBH4pVKCCHEMaIVYUx/pXKABMWOV+fG6dHa/7kXauhNsTypY9vJV8pA+3Ma5sZ6VMBEPsBVUh6vVEIIIY6Sd6XWEa0lf7WS2MxFENoRfC7ZnyklA+bqzxb1VUzQ6+kjTs/fzLlxsgYv+mQndvoYBSCEEJI4yvQgZj1bFSNNyav+F4AsrxeXepL9uVKjksG2l+MaIbP1AHSTK4fWB7jal88rlhBCiCMUfsOjIf6xPztDGyIvp+JzpcYAyP4LIYcUy/UAzAwNxEkKXDKuHAuCUV61hBBCEkI9IYCq08s1juoJ2RChMkUIUcUP+cIRYwDEqkYZoZZXdYXcqKevde6Anv9AE3BN4RheuYQQQhKi/OpEI8paWf7xp7+1IPBqo7hSHjkRgL4owEVAWDGV2GclYVAjKXBeSTEuCCq8egkhhNgTyPP9KJlXrBP+d4o+wQtDUvxQL0rZ50vVLxK3NPrhP/SqppAD1ocG4uYDfB4RuLasAm4uFEQIIcQiqlvBhGtKDUVbf/EfaxyC/9VGcaV/xBkAAEDUvwwIKaZ7+tARfc1hls+TAsflefEtmbMBCCGEWCPn2jByyvNgLRbvMWES4gtf/9j/spRGOFL5y8RNjWGEWl6ynflvNj9ggAn45oRJmBqSeTUTQggx1/ufEsK0q6o+205F+L8FkZcaxdXhEWsAAED815bzEAnIccP7VsL9hvkBn4/a/AenBRJCZaYuCwAAIABJREFUCDFJ6beMsvbN9uzNZf8HEJG3iCvPS/XnHJ74eLj199rCbVL0zRoIRHDauLE4I8goACGEEANRXOJHxeLy+NXnLffsAePVAoFWBH8/HJ912JbOUx9ZGICUn6NbCRAwrgwYux23UiDwaU8IZ3e3QRVcLZAQQkgcXRIqpjyfi7wJ+XGkZ2APNEenN2rt5x4owbfE13KHxewM2zcdaHvcfngflmcGTMjPx3UyZwQQQgiJT/7KMPImGA0Zmyn+Y77wTxsCjw/X5x3W7rD68HHtcBUVmerpx4sSmIkaAIPWDLj0k0Zs8Xl4pRNCCPlcDOcEMfepKo0lacwU87H+cweCHe+Kq4uH6zMP7xy5cMe9looCxZouraiBzvTA60cV8EonhBAyiMrrjKLwxmP5VumAfO9wfuZhNQDiOzvvQ6h1j6Hoe0yKvN52fyjg2NIiXB6K8GonhBACAMi5LICyY8cMCTCbQ88YaBuEVvj37BTfui9rDUB/FOA6Q9GHjqgbiX6c6YH/XVWJqjBNACGEZD1VYcy6vnLIbu1lf60Yg3ivPxz+D1033B992A2A+Hb9OgSbNpoWfb3pf1qiH7Ptcan4b6+PFz4hhGQ55de7oHpcMN8lNLeojx5N6N5YL769LusNAAAg2n0eRFgx3dM3IfJGMwdOG1eCC4MhXv2EEJKl5Fzgx4TFny/1qz/1zwxaawJ8LkRhRJVuhM9Lh8+fFgZArGzch2DzH5wW+bhRhQHHv1c1HhURDgUQQkjWURHG7O9WDpowZizsZocCPBrv4UEzgn9oFNfvowEYaAKu3bocoa4eR0XeYDvPDXzPwymBhBCSdfr/XRekPLdO798I68l/XQj2bBUrl6fLd5BeS+VF2u4xFH23s9unjSvFJcEA7wZCCMkScpcHMGlA6F+7129njF8r+Q9oQ/CedPoe0q4urvr40bvhHTvVVOGf2G29QkA6r4+EFVy4twkfeb28MwghZAQjTQ7hi7+rgOqR4taaC+gaAKOFf7TPO4RQ/Qfiumlp9V2kXetEO1dAks1NB0Sc711vWyMS4PFKuCmX4k8IISOdqu/54PLEl77IEPEHzE39058VIENBJ0Ir0s4MpdsfJP69YSN6m563LfI2TcCCilJcHQ7y7iCEkBHK6G8GMf6EUgvj/XolgM3Q95omBJ5vEDdsTDu9TdeGUn9xQid8hYWmw/vx1hAwOn/gdr/9u7J+D97LyeWdQgghIwjP/ABOeKw6bq1//VX/tAxAvOS/3JgIghtdkLveFt8enY7fiZS2rSW3rorbkwfM1wSId75BZGBVWRE8isK7hRBCRoz6K5h+c5GG4Fvp/ev+kjiC5EYrwqvS9WtJWwMgvrlrDUIHaw1F3uq2gQmoGVOA26QobxhCCBkhVNwaRUlN/IXg4q/6pyfy5msCHER37S5xwxoaADsoXYuAQCRh0bdoAs6fXIGLw5waSAghmU7BRQFMW1YRd8KYeZE3DDEMeU0ASqQL4UXp/N2ktQEQVzX2INj8oKXCQA6ZgNunV2M2kwIJISRjcc8KYv6qas2ev/myv9ZrAjSj98FGcUtPWmtsJjSi+uQx9cgrnWKpJgBgPTEw5j22tXVgRUcEqhC8kwghJJMQKuY87UHJzCLDcjGypsi7dQyA9tS/FgQbNoobp6b7VyRlRENG25ciGlYsVfuzkxgY8x6zSopwh1vmjUQIIRnG+NtllMwsMtn7140jwMqwQBhQ2hFZmgnfUUYYAHFl4y6Emh4zFH3A/PCAyToBF9RU4PIo8wEIISRTKLo0gOnnVwCAybF/ayKv/RqgCd2PNYpVuzJCWzOpUdWnj/kIntJJQ1rVyjZgrm5AzGuu2rYH//KwPgAhhKQzOfMDWPBY9ZBHvf68f8D8XH/t81oQ/HijuHFypnxXUka1rNx+FkRYGWTAtEoE60UGtIYHdF7z/QklGBPl0sGEEJK2gjYmgqPuLNEV//iYTfDTXvUvDFlpR+CsjPq+MumPFV9p3IFA08O2Sv4a5XQYGInK/FG4ezSXDiaEkHRl2l0ejKocpTuub74IkNFc/8GFf5rgf7hR3LGDBiCZJuCK7SsRaN6paQLs5ATovceAa+DE6lLc6A7xLiOEkDSj6oYQJi4s/WzbXO/fyvQ+7d5/M7p3bhe3rcy4iElGtrTatQCyP6LZ87cTCQCMhwwAfHnaeFyqMimQEELShZIVAcy6fLxhsp+5qn9uE8bgc9HwQ4l0IbIgE7+3jDQA4vKGNkSa7zLdi9cSdJsm4JZZ1TiJMwMIIWTYGXViACfcVB1X7GPzAPR79UaZ/5q9/7saxJ1tGamlmdzw6rNHvgVvxYJB1g5wrjjQUMv42f+d3SF8pb4FjS4f70BCCBkGPDUhnPiLUnhG+3QXhtWv+meuuE+8YwfQu6FOrF6Yqd+flMmNLy6pWwilo8NUL96gVx83egBoJguOLvDh3spRyFW4cBAhhKT8+Z8bxVH3jIJndPxOmHHvHzZ7/310wN+RyeKf8QYAABBt+wpcUZg2AQmG/weeM7O8CPcVsUwwIYSkmlk/FCifUfSZ2Btl9ztT87/vWBQS2hD8SqZ/hxlvAMTy3S8ivP8XlgTdpMAbnuMGTp1UhlU5Yd6NhBCSImpuDWPSKWWaPfzk9P4/NwP70fmL3eKeFzNeP0fKBaE+N28rPGWzrFT30xrfj5s3YPA+D2/bi0fkHN6ZhBCSRCr/PYh511YNeVRbW/AnngEwN/bfDP+2WnHX7JHwXUoj5aIQF9TOhtrda6tX74bxkIHB+3xrVhWWS37enYQQkiTGXuzH/DjiHw/9YQEzhX5iH/pudCPYO1LEf0QZgL4WP3Q13Ioj4/uWzun/d9ucCVgCTg8khBCnKTo9gAW3Tog7z99e0Z9Y9Mf+Fag4hMDVI+k7HVEGQFyw+2mE9j1ptc6/peRBg+jAT46uxnEsFEQIIY6Rf2wAJ/+42kIP30zRH7O9/77z9qH9yd3ivqdHlGaOxItFfWHuJnjLj9Kd42+mLgAsvG7Avq5QGFdvacZWwZwAQghJhNxZQZy6tgyeQm/c5D6tPAAg3ti/8dz+eL3Dg+j9cJP44dyR9t2O2Dls6svHtUMqKtJN8rMi8BaNwYFuP765swOfSF7ewYQQYgPfhDBO/N8i5FfkGQp+4ol/8Y1CB0Id74rvF4/E71casVdOuPU8SGFFN8lP69owOsfE6yqK8/DAlHyUqVxCmBBCrOIui+C4+/NRVJH32T6jsX5riX/xjg8+FoastKLnvJH6HY9YAyCW1a9H8MD3tebvm5njr5sDABjmBUwZW4gHJuaiUJV5NxNCiElchTIW3J+LsVMKDWv6m0v8QxzR1yv607d9AN3frxf3rx+xOjnSLyT1T3NegG/8OYnM8dc8x+S+Dw604ZpPIwgIF+9sQgjR65XmRnH8wx5UzCuxPNYfP/FPa56//rF96H1xi/ifc0fyd50VdWzVP8/bBnfZTEcE3kpewIB9/9rfimv2RBEREu9wQgiJJ0geBcc95ML4Y8cMevyaGesf+vi1n/jXDP/2WvHjWSPebGXFRXVm7SwoHe2WcwAA47wAk7kCx1aOwc+rJLhVlXc5IYTE4lZx/IMSJmmI/0BiBT/2mHa9f+M8gA7427NB/LPGAPT13lsWQwRk3RwAKxUAzdYLGPD+CyaV4qEqQRNACCEx4n/CgwITTyi1XN8/sYp/g48FEJZbEFicLV971hgA8W8NtYg0rYRLHdruMNnL1zIGZs2Cu98EVAt4VIU3PSEk6xEeBQvWCExcUDpExPXK/Wofs1Lx73NUqGhCz8oG8fNaGoCReKGduWstQnsesrwWgJExMDILMectmFiKtZNdyFWjvPsJIVmLlBvFwodcmHBCqWZvP57ga5UC1lvC18gM7EHrQ7vEmrVZpYnZeNGpr815GZ7xZ9kuEBRvX7z3MnjtBwfasLIxjC7dpSgJIWTk4SqUsfABLyb0Z/ubK+oTP/FP1uz9GyX+9R3bh65Xtog1S7Mu+pKtF5/617mb4C4/ylDMLWT629m3ZX8Hvr07gOa4CSuEEDLy8JZFcPL9uSifXWRJ4M2X+9UyA0OPHUTPh5vEA3OzsR1ENl+E6t+/uAfSmCrTPXqn9/VvN7R24dtbe/CJyrLBhJCRTe6EME69Px8l/UV+9Kb1waQZMO7tI64ZaIV/7/vi/upsbYvsnpSutk2G2tk56JqxkxdgdV/MtTplTCEem1uE2VKQTwdCyIilYFYQZ/xv0WfijzjiPxDr1f+0l/ONPdaJ3s429EzO5vbIagMgFjfKUA8tgugNfXbtDDSTdrL/9fbpJA1WlOTh0fllOM7NpYQJISOPkmMDWLq2DPkatf3tmgHtcr/ac/57IYcOwb+oUTyW1XXas74snfhSQx2UphVwWVg4yO6MAINoQGG+F48vrMaSHJoAQsjIYdzpAZz7aDVyC72aPXizSYBAvHK/0HjIDjUKYahKEzpXNIhH67K9XViXFoA4tX4d5H3fgUsxtygQLO6zGA34ycJqLM/3s2EIIRnPxIv9OOfH1Zq9ezMFfuKdqz22P5DBxxQo2IfW79SLx9exZWgABpiAXWsQ3PMD00v/Jhr+N4gG3HbcBFxbwpwAQkjmMvPfg1hy64SEQ/3apX+thf73oP0Hu8QTa9gy/brHr2Aw6vpZj8BXfY3mND7A9rz/IfugYXEHnPvs9v24ez9nBxBCMotjbg3j6IsrdbP6Y7etT/mLJ/jxIwN70Lp2m3j8WrYMDYC+CXhr9tNwV12aUPGfWHG3aiIG/P+P3c24sUFFAFxOmBCS3rhyozjxhwJHnFJmeYofYHbK31CB157/D+xF5zNbxROXsXVoAEyagDnPwz3+XF0hdzJCYGAEth/swE11vWiM+tg4hJC0JL8mhC/dMwrlM4osVfOzYgbMzvE/fO4+dL6wRTxxHluHBsCaCdjwhb/AVXm6KXFPNBpg4tzOQAg3v9uMN4K5bBxCSFpRfmIAZ/ygDL7RPlOCbjYyANgP/e9H52ubxRNL2Do0ADZNwJH/hK/iZEtrBCTZHNzzzh4800ETQAhJD6auCOD0m6pNj/ObiQwM3dYT/6GRgQPofL1OPHEKW4cGIDET8M6Rb8JTsdDRsX0r0YA4+5+q3Yf79nE4gBAyvBxzQwjHXj5edzkVq5GA+OIPmFvoBziArrfqxC9PZOvQADhjAt47cgOkihNM9fydFvzYff3732xowaqdEbQqXEiIEJJafGMiOOUuD2oWlhr23hONDJgb98fhnv/bdeLJBWwhGoDkmgCnogF2zu3f3t/Zi9vea8O/mBdACEkRZfMDWHJnCQoqRxmKf6JmwMq4P8WfBiC5JuD9I9+Et2Kh5rLBZiIERj18G0bg3rf34DetNAGEkOQy49IATr8xfmW/RMf5rSX9DY4MHEDHW3XiVwz70wAk3QT8E96Kk5OSDJjA/ufqDuCORjdUNishxHG1UHHS7TLmnl9hWfzNmIH44g+YGfc/gNbX68RvTmEj0QCkxgTU9k8RTHYPP7YepsH525o6cFdtD7aGcthIhBBHKJkVxGm35aN8ZlHcx5rTZsCc+Pcd34/21zaLZzjVjwYg1SZgzvNw9RcLslsoyMy5ZvbHHLvrjT34PYcECCEJMv2iAP5tVbVuQVQzZsCMWYif9Be7/bn470PbC1vEb1nkhwZguEzA7Kfh6y8bnGChH9tRAg0j8McPD+D7u1yIcM0nQohFJI+CRbdGcfSyCkOxt7qtFxkwO+6/F63PbBXPsrwvDcAwm4BNsx6Bt38BIcDxBD9L+2OONR7qxt3vdeC9XkYDCCHmGDc/gNNvLsLYmgLHxV9vW1v8B2/vQcvabeJ3XNiHBiBNTMDmGXdDqr4VQrLfwzcaFkjAIKx5ey8e3cu8AEKIPkd/M4jT/qPKATF3KuP/820FKvag9Qc7xB9XsaVoANLMBByxEtL4n0F4JUvL/2oJvkHv3pIRALBhdwvurQvhozArCBJCBjN6cgiLv+fD1BNKExZ369vxkv4Gb4cRUfah/Tu7xPNr2Fo0AGlqAqYug3vcb6GO8mkKstPhfwuviUQV3Pf6Pjx7kEMChJA+5iwPYOkN4wGPNAziP7D3Hz/prxeBUBM6V9SLF9extWgA0tsEbJtyJDB2PTB6dELCngwj0L/vrzsP4kebozgQ8bLBCMlS8ivCOPm7Lhy1uNyRsL6VbSA29B9f/DvR03kI3YsaxEt1bDEagMwwAdtr3FBLPoJ7TJWlWQFa4m0lD8DkMX+vjB9t2I8/NOWxwQjJMmZd4MdZ362EL8+dsNgD9ub+G2X8t6Jnbxt6JzeKl2W2GA1A5hmBXXM3AeVHaQq+1fH+JBiBv247iJ9sjmJvmNEAQkY6hVVhnHq9C7MXlw8SZrs9f6viP7TnHyv+fdsH0fnhJvHcXLYYDUCGm4A5L8Mz/qyklAN2yAhE5Ch+sn4/frOPuQGEjFTmXRbA0usroXpcaS3++9D2yhbx/FK2GA3AyDABO2f+HJ7q/4AsEhN8O0bAwrF/fdyK+z8IYEsvpwwSMlIonxPEadflYuqxYyxV9LMr/rHvaSz+AOCBChf2oOWh7eKl/2Sr0QCMLBNQf8Q1EOPWQMp1p6ISoKljGlGBx9/chwd3ebmwECEZ/YRXcdLKMJZcOd6UUMMBsdd/T+3pfgHIchM6Vu4Sr6xlw9EAjFATMGUeUPo3uIqKNZcQjr0LY+/EZBuB/p8/be3Bg2+34dVmJgkSkmlMX+LHkv8sQdmE/Li9+HQS/w7421vQtbhBvFbLlqMBGPlG4KN524CymaZ69/HuuESMgEavX+u1f91+EA99KKPezwJChKQ7Y6aE8KVvuXFk/9Q+M8KudY5TZgCfGYCh4t+Mzu214oVZbDkagOwyAY1zXoBn/DlO1//XjSJYMQIxxx/bsBcP7/RCVrm4ECHphuRWcPK1YSy5qspSrz614g8MTPrbh5YXt4hXzmXr0QBkpwn4dMYdQMVthuWD7RoBnRC/nahAU4cfj2xowXN7OSxASLpw1Pl+LLmmFIXleXFF24z42zEMdsU/DFU5gLbv7xCv3cHWowHIchMwdRGkMc9DLSpKKMxvM8RvxyjUftKOte/3YEMrpw0SMlxMPiGA06/Ox+R5xbplQ6z24pPZ8+9AoKMVHefVi9fXswVpAMhhI7B37iaoMUWDnIoImDEQsHgcwF8+PIhHP4xgZw+nDRKSKsqmB3HqNzyYf3q57RD/cIj/QXR8uEn8mcV9aABIfBMw65dwjf8qZMm8aCdhBoCp4wPOefZf+/HEFuBAkNUECUkWhRVhnHIlsOjiSseE3clogZb4K5CwDy1PbhN//xpbkQaA6JmAA9MugzL2UUgFoxzL8new1693zv+9tQ9PbHWhS3azIQlxiJxCGYu+HsXSr483LciJiH8ieQOx4t+NYO8hdF29W6x/mi1JA0DMGoGmeVuhls3SFXQnjhkZBYtmIBCS8Ys3m/DL7R4Eoi42JCE28eRGseirESz56ji4ct1DblGryX5WhNwJ8W9Gx7Za8dfZbEkaAGLLBMz6P7gqvw7Z5YzY2wjvax43eJ+uQBhPvtWMX++gESDEkvDnRHHSFRGcdkUZ8gq9pgTaai8/kXOMxD8Kgf1o/cU2sf5KtiYNAEnEBByadg7Ukl9BKipKqCaAUa/f7nEDM9DVHcZTbzfj19s96JFpBAjRwpcfxUmXR3Da5WXIKfTa7tE7YRCsvGag+HfA39GG7q/sFm+/yBalASCOGYEj34KoWBBX0K2KfYJJf3bMQCAs46m3mvD0VhdaQh42KCH9FJRGcNKlUSy+bBx8ue6UCj0cFP8DaN1QJ95YyBalASDJMAGt01dBKbsdIs/jiBFIhhnQO6//2DMb9uOZLSo+6mZ5YZK9lE0O4aRLBJasqLScxOdkdMDuOYfF349ApBkdd+0U797NVqUBIMk0AW1TSqAWboBaNt222CdhBoApMxBz7svvN+HZugg+OMSCQiR7mDwvgEXLPVhw1jhDAU9U6JMt/s1o2dkF/4IG8UEbW5YGgKTMCMxcAzHuW4h6JV0hTmQNAK3XO2wG3tvdit994MefP6YRICOXo88I4OSL8jBj/hhdsbYj6naFfuA+s3/D4XK+TWh+eLt4fyVblgaADIcJ6KyZAaX4FYjSSQmLvd3jZs2ACUOw50AP/rCxHc9t96A9xFoCJPMZVSxj4bIIFl1QjLHV+Zo9fCMBt3qeUzkAg1/Xd0+2oPPjdvSe1Shqd7CFaQDIcBuBrplrIcZ987NogFO5AFqvtxMZMIoOxOz74zsH8Me6KGqbWWaYZB41c4M4cZkLJy+rMCXoMNkLN7vP6WGAvl5/WGlC+2PbxfvXsIVpAEg6mYDumiOgFr8MqXSKY2P9ieQCOGQINn/cjudre/DCTi8CnEZI0hhfbhTHnxPGiefko+YLxYYin0iv30mhNyP+LWhpaEfv0kaxZRdbmgaApKsR8M/4H0TLroPI9Tja63doBoDuts75ETmKF//VjJc2y3jvAHMFSPowfX4AJyx146Szy+D2uAwT+sz05vUMQbJmAwzcd3g7gEikGS0P7hB132VL0wCQTDABgZp8oHA9ouXzTPXqnZoBkEh0wIIhaNjfhT9t6sQr213Y280FiEjqGVsVxnFnRnHiWaNRMaXQUOTN9NzNCrgdobcTHTiI1touBBY1iq09bHEaAJJxRuCIlRBj7oZcWJi0Xr+VsL5VQ2DCFLy9pQWvbvbjL7t96A5ziIAkj9yCKI49PYTjluRh7vGlQy71ZPb67Yi63ehAF7q6WtG1apfYuoatTgNAMt0IBGevA8adB+FO7rz/BJL+bBuCAa//a+1BvLYlhL/V5yAUldjwJGE8PgVf/FIQx57mw8LF5baF26lIgFmhN9vLH3hOEDKa0Pz8VrF5GVueBoCMJBMQmXIMMPq3UMZOdVTobRYBsnW+ngEYlC+g4O+1h/D3rSH8Y7ePyYPEEr7cKI45JYRjT/Xh2FPHwu2RLPXu7Qi62R6+Ue/d6nmHz2nCofoO9K5oEDs38gqgASAj1QjI028GSm5BtDBfV8QtrPxnS+CdyAkwMgX9/OP9Zry+LYj19R4c6uU6BGQoxWMjOPqkCI5ZlIPjTymzJfBOGoJk7hv4e7vQ1dOMtnt2ip0/5FVAA0CyxQhEZ/8OKLsQ8EqGMwTiPcGMzIDV6IAZA2H2dTrn1+5qxxvberBht8DWJtYYyGamzApi7gIVX1yYj+nzinUFO1Y8tcTcTG/cbg8/EaGP3edHWGlC8x/qxNblvBJoAEgWElVrxgul4HmBccfo9tDtmIFEogNWogR2TEE/TS1+bNjcibd3y3i30YP2AKsPjmQKi2UceWwEc493Y94Jo1E2Ls/0CttWDYEVkdcTdL3X2x0a2Iumje3oPq9BNO7jVUEDQLIcWZ26TKDoQUkZU20o3mZ7/Imc64QpMDoW5302N7Tj3R1+vNegYOMnPoRkJhJmMl6fgjlHhzBnvoS58/Mw8wvFhj1yIyFPdH+qcwUG7juI1j0d6Lhuu6hfx6uD0ACQGCMw/UaBopuAoiJJMdGTT2YRICumQK/HLxt9aO1DG7e34YNdftR+pKL2Ey96QkwmTGfy8qOYPTeMWXMF5hydhzlHlwxpZrM9fjOvsdK7d9oQWFk5sBMdHYfQce8WsfM+XiWEBoDoElRnrvGg5BtAfg4AJGwG7BgCq719q8bArEEYwPaPOlC324+6j2Rs/tSFjw75eLEMIxMmhzBjThQzvuDGjCPzMG1GkW1xT0T4rYh5IobAasi/Ez3BNrQ9vlFs54p9hAaAWDUCs58GxlzsQe5ng+OmzIAThsAJU2BG4CM2vxwZ6OwJYWtjN7Z+HMSOPSq273VhTysrEyaD8dVhTJsRxbQZAlNn5mDG7AKMHu2zvNaVE8KvJdpG+1M1QyCAgNyM1t+/J7ZexiuH0ACQhAioc54XKD1bwCcNTJMbZAacNgSJmgIrPXzZxpcSAeAZ+vu7esPY9UkPdu8JYvfeKOoPCDQccKOLCYamKCyUMalGxuSpKmqmulAzLQdTp+Ujt9Abt7n1hN+uKUh2XkCyZgj4EVIOouWld8WW83glERoA4hhdao3Xhbx1Low9Q6Bv2WHTZsApQ6An1rLNXr7swJdj4j2aWwP4eL8fH+0P4ZOmKD5tVrGn2YU9LR5EsizZ0ONRUFUdQVVVFFUTBKonujBhog8TJ+VhbFmuY2tYmV3s0oxhSGZdgESHBgIIKy049GoX/Ms2i8Ywn1aEBoAkhU61Jk8g7/9JKD3DA99nyhXbv03YEFjt7dsxBmYMQjKNQ/+X1nTIj/0Hg9h/KIwDh2QcbFNxsA041C7Q3OFCS6cbqpoZt6sQKkrHyCgbG8XYMhXl5UBZucC4cW6UV3pRWZmD8vI826JupUdvV9xTJfxWRD7euWGElGa0vNoL/0W1otHPpxOhASApoU2tcbuR9wcJJUuBXLcnvrbFNwROz/m3YwwGHnfD/jAA0DcUYNVEWCxI2NoeRFtHGO2dEbR3yejojaKrW0FXr4ruXhU9AcDvF+gNAoGgQDAsEAoLhCICkYhAJCogywKKIqCogKoeFmxAEoDkUuF2qfC4VXg8KnxeFT6fihyfitxcFaPygLw8Ffn5QEGBQGGBQOFoCUXFLhQXuVFc4kFJiRfFpTmaX7+dhSPtRAOsmgIrwn94n9FMACdEXuu9uxGQ29H2chf8F9aKRplPI0IDQIbRDMx+2oPiCwRG+bS0LeEIgR1TYLaHn8gj1I6BcCIdwOg9PBZf6zb5PjHnKZL5ZjQ7a9SKMbBz3GlTkKpefxd6Qx1of+51JvcRGgCSbrSqM9dIGP0VD0YXGmmRZUNgJOTDOQRg1gAMPC9RE+Ax8busHjPRUFYE367o2+3tm+m52xV3p4XfiiHoRmdXGzp/tZ7T+QgNAEl3DqnTb3S6TAY4AAAGoUlEQVSh4DoJYyq19MbSkIGRmDuR5JdIFMCsgYgdKkhkXSJ3Asc95l9jJPhGop9oRCDRaIDVhEE7swSStf8QWvd3ovvBN1jAh9AAkEyjSZ26TEL+nV6UHgm4NHXGTITAljEwK85OjqLKKYoAODwEoEjmPo7VRRzNRgTsVJtOF+HX6sVrvUbv/aOI4hBa6nrQs/oNluwlNAAk09mv1ox3Ie8RCUVLBEb53Ca0LGFT4KRBMCP6bgtmItnhf4PfYVbs7Qi+nV6+GUE3e47dugBWjjkVJRj4Pl3oDXWi4y/d8F/7FhfpITQAZCSyV51xtwcFV7lQMk5Pq6wMUyfNHFjBjJE4PATgceD3GZgIRbL+kSMmz0vGuL9ZE5FIbz8ZpiDR/S1oa+pF9xN/ETtW8elAaABIVvCpOnWxhLw7JRQf70WOy6y+mY0WWOlsG5oEK1GAgSH+2HC/DGdmABgIvBlf42ThRaPXJSsikKkzAUIIRtvR/o4f/tV/E/V/49OA0ACQLDYDM34soeDLA6MCVnr6dvLd7BgFM0ZioDAfNhaKNNhkKAkW/jMbtHCiZpIdo2B3jSi7dQHM9tqTKfyHf9Y7vxNtTd3ofuoVseMG3vWEBoCQATSoU46TkHunC6NP9vSvRJhoT9+ssDsVlY8NALiRWK0hK8JuxSg4WYspkSrPiYi+WfFOhvCb7fX70RNsR+frQQRWvyoa3uVdTmgACDGgXj3iGhfyrnWheE68tQesiLcZE+BEXl7s+kCemP8Be0UD7UQB7OQ9JmPM3+h8J0TfqWiAUwsFBRBWutC+pRv+R14Wu9bybiY0AITYZKc64x4Joy71oXiSgMuygDthEKxEALSG/J2KACRa28jpIQCrUwWdSgp0qi6AEwsFRRFFO9o/9qP3mXVixy28awkNACEOsl2tyZfg+6GEUctcKK4SkBKqh2PWIFg1ALFmIBnF2p2obuzUisxWBN9J0XcqGmD3WBgKutC+twe960II3fwn0djDu5TQABCSZDarU0oEvHdKGHWuG6MneDSk3mzv3p3Ev9WpsL/VSIIT6ybZiQrYHQLQEl6t3noyowFax6KQ0YHOT4PofcGP8OoXRUMb70ZCA0DIMPGhWuOW4L1LQu4FboyeKuBzme3dJ0v4k9XzN2sC0mkIwOz5Ti0W5MRMgIE/+xGK9qCzvheB58II376OK/ARGgBC0pMP1COukZDzZRfy5/pQMMpsL92uyFsxEfEqAVtRk2TNALASGTAyClaGDdJ1hUA/unu70bMpiOBTv2UiH6EBICTzeE+dcpwbvmsl5J3qRkHV4RkFqYgCDDQWqR4CsFv92Ikxf6PXJEP0jXr7RseDCCu96N4bhP8fQYQe+S2n7BEaAEJGFu+qR3xDgm+5hLxj3CgsEZCSbgKcxKlogWzhva2G9K0IvlOib7W3r0CBH11tvfBvDCP0u1+JXY/z7iA0AIRkCW+qNV4B90o3cs5xI/dINwqKtaYZ2iEZeQBWIwmJCL0VwTcr0nYF3UjUjXr7CqLoRnd7CIG6MIIvhiCveUo0hnkXEBoAQki/KTjiGgHv2S7kzHMhv1wakFCYKZEApxME7awHIDtwbiLFgPwIRYPoORhGsDaI8EuPcxyfEBoAQqzwd3XqqRI8F0jwLZCQM8WNUaNFnAEDswmBTtQGSGUhIK33cqr6n5VztcxBCDKC6O0MIdgQQmhDBJHnHhX1/+DVSwgNACGO8hd16jIJnjMleL8okDPZjbwiKU5yYTJwYhaA0XGrq/2lMiIgI6yE4O8IIPiRjPD7MiJ//rmoX8erkhAaAEKGhT+pU44RcJ8h4DlOgmeGhJxxLuQWSPA4ep/JDp0bsXC+07MAzEQEooioIQS6gwg2yYjskBF5NwL51TWiYSOvNkJoAAhJe9apU+YIuE4WcB8j4J4hwVslwVPiQk6unaiBE7MAhnsI4PB2FGElgmAggkhbCOG9MuQdCuSNYURfv180bOHVQwgNACEjkt+pNeMFXMcJuI4UcB0h4JogwV0uwVMs4B7lgterZxLsjPNbFXozYh/vtSGEFRnhcBRybxSRdhnyQRnRTxVEd0URrYsg+u6PROM+XgWE0AAQQuLwa7XGLSBmAdJUATFRhTRehVQuII0BXMUCUoGANEpAyhGQfIDkEZDcgORSIUmAJAQk0Xe/9/0nD7r9Vaj9/wMqZEBVoRz+pyhQohEosgolokIJKVCCKpTeCJRuFdF2BUqrCuWgDGWfAvUTBUq9CnXbnSyXS0ha8/8B427xoZ1W67IAAAAASUVORK5CYII=') + + tray = new Tray(icon) + const contextMenu = Menu.buildFromTemplate([ + { label: 'Show', click: () => wind.show() }, + { label: 'Minimize', click: () => wind.minimize() }, + { label: 'Minimize to tray', click: () => wind.hide() }, + { label: 'Test Notifiation', click: () => showNotification() }, + { label: 'seperator', type: 'separator' }, + { label: 'Dev', click: () => wind.webContents.openDevTools() }, + { label: 'seperator', type: 'separator' }, + { label: 'Exit', click: () => app.quit() } + ]) + tray.setToolTip('LedFx Client') + tray.setContextMenu(contextMenu) +}); + +// Quit when all windows are closed, except on macOS. There, it's common +// for applications and their menu bar to stay active until the user quits +// explicitly with Cmd + Q. +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit(); + } +}); + +app.on('activate', () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow(); + } +}); \ No newline at end of file diff --git a/public/icon.ico b/public/icon.ico new file mode 100644 index 00000000..7a6c5ba9 Binary files /dev/null and b/public/icon.ico differ diff --git a/public/icon.png b/public/icon.png new file mode 100644 index 00000000..9fd3eb23 Binary files /dev/null and b/public/icon.png differ diff --git a/public/index.html b/public/index.html index 7472d4d2..300c684d 100644 --- a/public/index.html +++ b/public/index.html @@ -1,37 +1,35 @@ -
- - - - - - - - - - - - - - - - - - - - - - - - - -