From 6046d7443fd9922a6b1fa6b24c3fba9f35cee391 Mon Sep 17 00:00:00 2001 From: Mohammed Ali <146048575+Phantom0110@users.noreply.github.com> Date: Wed, 6 Mar 2024 19:36:43 -0500 Subject: [PATCH 1/3] Add this to workflows to test new pull request (#198) --- .github/workflows/main.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d20bb00ec..01bd7236f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -51,3 +51,19 @@ jobs: - name: Run tests run: npm test working-directory: server/ + + file_existence: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Check for private.json and .env files + run: | + if [ -e ".env" ] || [ -e "firebase-secret.json" ]; then + echo "Error: Found .env or firebase-secret.json in the pull request. Please remove them before merging."; + exit 1; + fi + + + From 3d4903682ae8b18a420ca99c02cf6e5bb9990369 Mon Sep 17 00:00:00 2001 From: Aadit Kamat Date: Wed, 6 Mar 2024 19:38:25 -0500 Subject: [PATCH 2/3] Send verification email using Mailgun (#195) * Add mailgun dependency * Add REST API to send verification email through Mailgun --- server/package-lock.json | 429 +++++++++++++++++++------------------ server/package.json | 1 + server/src/index.ts | 443 ++++++++++++++++++++++----------------- 3 files changed, 463 insertions(+), 410 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index 564e301cd..a085f31ee 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -15,6 +15,7 @@ "express": "^4.18.2", "firebase-admin": "^12.0.0", "geofire-common": "^6.0.0", + "mailgun.js": "^3.7.2", "socket.io": "^4.7.4", "uuid": "^9.0.1" }, @@ -1966,97 +1967,6 @@ "node": ">=10.0.0" } }, - "node_modules/@firebase/webchannel-wrapper": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.5.tgz", - "integrity": "sha512-eSkJsnhBWv5kCTSU1tSUVl9mpFu+5NXXunZc83le8GMjMlsWwQArSc7cJJ4yl+aDFY0NGLi0AjZWMn1axOrkRg==" - }, - "node_modules/@google-cloud/firestore": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.3.0.tgz", - "integrity": "sha512-2IftQLAbCuVp0nTd3neeu+d3OYIegJpV/V9R4USQj51LzJcXPe8h8jZ7j3+svSNhJVGy6JsN0T1QqlJdMDhTwg==", - "optional": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "functional-red-black-tree": "^1.0.1", - "google-gax": "^4.0.4", - "protobufjs": "^7.2.5" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/paginator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.0.tgz", - "integrity": "sha512-87aeg6QQcEPxGCOthnpUjvw4xAZ57G7pL8FS0C4e/81fr3FjkpUpibf1s2v5XGyGhUVGF4Jfg7yEcxqn2iUw1w==", - "optional": true, - "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/projectify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", - "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", - "optional": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/promisify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", - "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@google-cloud/storage": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.7.0.tgz", - "integrity": "sha512-EMCEY+6JiIkx7Dt8NXVGGjy1vRdSGdHkoqZoqjJw7cEBkT7ZkX0c7puedfn1MamnzW5SX4xoa2jVq5u7OWBmkQ==", - "optional": true, - "dependencies": { - "@google-cloud/paginator": "^5.0.0", - "@google-cloud/projectify": "^4.0.0", - "@google-cloud/promisify": "^4.0.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "compressible": "^2.0.12", - "duplexify": "^4.0.0", - "ent": "^2.2.0", - "fast-xml-parser": "^4.3.0", - "gaxios": "^6.0.2", - "google-auth-library": "^9.0.0", - "mime": "^3.0.0", - "mime-types": "^2.0.8", - "p-limit": "^3.0.1", - "retry-request": "^7.0.0", - "teeny-request": "^9.0.0", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@google-cloud/storage/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/@google-cloud/storage/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -2066,18 +1976,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/@grpc/grpc-js": { - "version": "1.9.14", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.14.tgz", - "integrity": "sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw==", - "dependencies": { - "@grpc/proto-loader": "^0.7.8", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, "node_modules/@grpc/proto-loader": { "version": "0.7.10", "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", @@ -3189,7 +3087,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "optional": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -3566,6 +3463,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -3612,6 +3514,11 @@ "node": ">=8" } }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -3868,6 +3775,19 @@ "node": ">=12" } }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4102,6 +4022,14 @@ "node": ">= 8" } }, + "node_modules/data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "engines": { + "node": ">= 6" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -4426,7 +4354,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "optional": true, "engines": { "node": ">=6" } @@ -4593,6 +4520,19 @@ "bser": "2.1.1" } }, + "node_modules/fetch-blob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-2.1.2.tgz", + "integrity": "sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==", + "engines": { + "node": "^10.17.0 || >=12.3.0" + }, + "peerDependenciesMeta": { + "domexception": { + "optional": true + } + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -4681,37 +4621,12 @@ "node": ">=14" } }, - "node_modules/firebase-admin": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.0.0.tgz", - "integrity": "sha512-wBrrSSsKV++/+O8E7O/C7/wL0nbG/x4Xv4yatz/+sohaZ+LsnWtYUcrd3gZutO86hLpDex7xgyrkKbgulmtVyQ==", - "dependencies": { - "@fastify/busboy": "^1.2.1", - "@firebase/database-compat": "^1.0.2", - "@firebase/database-types": "^1.0.0", - "@types/node": "^20.10.3", - "jsonwebtoken": "^9.0.0", - "jwks-rsa": "^3.0.1", - "node-forge": "^1.3.1", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=14" - }, - "optionalDependencies": { - "@google-cloud/firestore": "^7.1.0", - "@google-cloud/storage": "^7.7.0" - } - }, - "node_modules/firebase-admin/node_modules/@fastify/busboy": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-1.2.1.tgz", - "integrity": "sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==", - "dependencies": { - "text-decoding": "^1.0.0" - }, - "engines": { - "node": ">=14" + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" } }, "node_modules/follow-redirects": { @@ -5001,80 +4916,6 @@ "node": "^8.13.0 || >=10.10.0" } }, - "node_modules/google-auth-library": { - "version": "9.6.3", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.6.3.tgz", - "integrity": "sha512-4CacM29MLC2eT9Cey5GDVK4Q8t+MMp8+OEdOaqD9MG6b0dOyLORaaeJMPQ7EESVgm/+z5EKYyFLxgzBJlJgyHQ==", - "optional": true, - "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^6.1.1", - "gcp-metadata": "^6.1.0", - "gtoken": "^7.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/google-auth-library/node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "optional": true, - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/google-auth-library/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "optional": true, - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/google-gax": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.1.tgz", - "integrity": "sha512-qpSfslpwqToIgQ+Tf3MjWIDjYK4UFIZ0uz6nLtttlW9N1NQA4PhGf9tlGo6KDYJ4rgL2w4CjXVd0z5yeNpN/Iw==", - "optional": true, - "dependencies": { - "@grpc/grpc-js": "~1.10.0", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "google-auth-library": "^9.3.0", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^2.0.0", - "protobufjs": "7.2.6", - "retry-request": "^7.0.0", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/google-gax/node_modules/@grpc/grpc-js": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.1.tgz", - "integrity": "sha512-55ONqFytZExfOIjF1RjXPcVmT/jJqFzbbDqxK9jmRV4nxiYWtL9hENSW1Jfx0SdZfrvoqd44YJ/GJTqfRrawSQ==", - "optional": true, - "dependencies": { - "@grpc/proto-loader": "^0.7.8", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -5399,6 +5240,17 @@ "node": ">=0.12.0" } }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -5417,6 +5269,14 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -7266,6 +7126,14 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -7275,6 +7143,57 @@ "node": ">=6" } }, + "node_modules/ky": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.25.1.tgz", + "integrity": "sha512-PjpCEWlIU7VpiMVrTwssahkYXX1by6NCT0fhTUX34F3DTinARlgMpriuroolugFPcMgpPWrOW4mTb984Qm1RXA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/ky-universal": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.8.2.tgz", + "integrity": "sha512-xe0JaOH9QeYxdyGLnzUOVGK4Z6FGvDVzcXFTdrYA1f33MZdEa45sUDaMBy98xQMcsd2XIBrTXRrRYnegcSdgVQ==", + "dependencies": { + "abort-controller": "^3.0.0", + "node-fetch": "3.0.0-beta.9" + }, + "engines": { + "node": ">=10.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky-universal?sponsor=1" + }, + "peerDependencies": { + "ky": ">=0.17.0", + "web-streams-polyfill": ">=2.0.0" + }, + "peerDependenciesMeta": { + "web-streams-polyfill": { + "optional": true + } + } + }, + "node_modules/ky-universal/node_modules/node-fetch": { + "version": "3.0.0-beta.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0-beta.9.tgz", + "integrity": "sha512-RdbZCEynH2tH46+tj0ua9caUHVWrd/RHnRfvly2EVdqGmI3ndS1Vn/xjm5KuGejDt2RNDQsVRLPNd2QPwcewVg==", + "dependencies": { + "data-uri-to-buffer": "^3.0.1", + "fetch-blob": "^2.1.1" + }, + "engines": { + "node": "^10.17 || >=12.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -7318,11 +7237,6 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -7402,6 +7316,21 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" }, + "node_modules/mailgun.js": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/mailgun.js/-/mailgun.js-3.7.2.tgz", + "integrity": "sha512-vPU6iz32/j7vZ8LN+hN5cim8lBke71Qm83rbPN2Gh+JPJ6ClqdxUMKFrAW36mOodnHVZKpTWrSATNXGxT3cHVQ==", + "dependencies": { + "base-64": "^1.0.0", + "bluebird": "^3.7.2", + "ky": "^0.25.1", + "ky-universal": "^0.8.2", + "url": "^0.11.0", + "url-join": "0.0.1", + "web-streams-polyfill": "^3.0.1", + "webpack-merge": "^5.4.0" + } + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -8029,6 +7958,11 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, "node_modules/pure-rand": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", @@ -8372,6 +8306,17 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -9007,6 +8952,34 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, + "node_modules/url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==" + }, + "node_modules/url/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -9070,12 +9043,33 @@ "makeerror": "1.0.12" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "engines": { + "node": ">= 8" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "optional": true }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -9122,6 +9116,11 @@ "node": ">= 8" } }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/server/package.json b/server/package.json index 9af60ca12..093c72eb6 100644 --- a/server/package.json +++ b/server/package.json @@ -30,6 +30,7 @@ "express": "^4.18.2", "firebase-admin": "^12.0.0", "geofire-common": "^6.0.0", + "mailgun.js": "^3.7.2", "socket.io": "^4.7.4", "uuid": "^9.0.1" }, diff --git a/server/src/index.ts b/server/src/index.ts index c2e4932b2..bb247896e 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -1,270 +1,324 @@ -import express from 'express' -import 'dotenv/config' -import 'geofire-common' -import { Message } from './types/Message'; -import { createMessage } from './actions/createMessage' -import { createUser } from './actions/createConnectedUser' -import { toggleUserConnectionStatus, updateUserLocation } from './actions/updateConnectedUser' -import { deleteConnectedUserByUID } from './actions/deleteConnectedUser' -import {geohashForLocation} from 'geofire-common'; -import { findNearbyUsers } from './actions/getConnectedUsers' -import { ConnectedUser } from './types/User'; -import { getAuth } from 'firebase-admin/auth'; - - -const { createServer } = require('http') -const { Server } = require('socket.io') -const socket_port = process.env.socket_port -const express_port = process.env.express_port -const app = express() +import express from "express"; +import "dotenv/config"; +import "geofire-common"; +import { Message } from "./types/Message"; +import { createMessage } from "./actions/createMessage"; +import { createUser } from "./actions/createConnectedUser"; +import { + toggleUserConnectionStatus, + updateUserLocation, +} from "./actions/updateConnectedUser"; +import { deleteConnectedUserByUID } from "./actions/deleteConnectedUser"; +import { geohashForLocation } from "geofire-common"; +import { findNearbyUsers } from "./actions/getConnectedUsers"; +import { ConnectedUser } from "./types/User"; +import { getAuth } from "firebase-admin/auth"; +import Mailgun from "mailgun.js"; + +const { createServer } = require("http"); +const { Server } = require("socket.io"); +const socket_port = process.env.socket_port; +const express_port = process.env.express_port; +const app = express(); // Middleware -app.use(express.json()) -app.use(express.urlencoded({ extended: true })) - - +app.use(express.json()); +app.use(express.urlencoded({ extended: true })); // === SOCKET API === -const socketServer = createServer() +const socketServer = createServer(); const io = new Server(socketServer, { cors: { - origin: '*', - methods: ['GET', 'POST'], + origin: "*", + methods: ["GET", "POST"], }, }); // Firebase JWT Authorization Custom Middleware io.use(async (socket, next) => { const token = socket.handshake.auth.token; - console.log(`[WS] Recieved token: ${token}`) + console.log(`[WS] Recieved token: ${token}`); if (token) { const decodedToken = await getAuth().verifyIdToken(token); const userId = decodedToken.uid; console.log(`[WS] User <${userId}> authenticated.`); - console.log(decodedToken) + console.log(decodedToken); next(); } else { - console.error("[WS] User not authenticated.") - next(new Error('User not authenticated.')); + console.error("[WS] User not authenticated."); + next(new Error("User not authenticated.")); } -}) - +}); -io.on('connection', async (socket: any) => { +io.on("connection", async (socket: any) => { console.log(`[WS] User <${socket.id}> connected.`); const defaultConnectedUser: ConnectedUser = { - uid: "UID", - socketId: socket.id, - displayName: "DISPLAY NAME", - userIcon: { - foregroundImage: "FOREGROUND IMG", - backgroundImage: "BACKGROUND IMG" - }, - location: { - lat: 9999, - lon: 9999, - geohash: "F" - } - } // TODO: Send this info from client on connection - await createUser(defaultConnectedUser) - await toggleUserConnectionStatus(socket.id) - - socket.on('disconnect', () => { - console.log(`[WS] User <${socket.id}> exited.`); - deleteConnectedUserByUID(socket.id) - }) - socket.on('ping', (ack) => { - // The (ack) parameter stands for "acknowledgement." This function sends a message back to the originating socket. - console.log(`[WS] Recieved ping from user <${socket.id}>.`) - if (ack) ack('pong') - }) - socket.on('message', async (message: Message, ack) => { + uid: "UID", + socketId: socket.id, + displayName: "DISPLAY NAME", + userIcon: { + foregroundImage: "FOREGROUND IMG", + backgroundImage: "BACKGROUND IMG", + }, + location: { + lat: 9999, + lon: 9999, + geohash: "F", + }, + }; // TODO: Send this info from client on connection + await createUser(defaultConnectedUser); + await toggleUserConnectionStatus(socket.id); + + socket.on("disconnect", () => { + console.log(`[WS] User <${socket.id}> exited.`); + deleteConnectedUserByUID(socket.id); + }); + socket.on("ping", (ack) => { + // The (ack) parameter stands for "acknowledgement." This function sends a message back to the originating socket. + console.log(`[WS] Recieved ping from user <${socket.id}>.`); + if (ack) ack("pong"); + }); + socket.on("message", async (message: Message, ack) => { // message post - when someone sends a message - - console.log(`[WS] Recieved message from user <${socket.id}>.`) - console.log(message) - try { - if(isNaN(message.timeSent)) throw new Error("The timeSent parameter must be a valid number.") - if(isNaN(message.location.lat)) throw new Error("The lat parameter must be a valid number.") - if(isNaN(message.location.lon)) throw new Error("The lon parameter must be a valid number.") - if (message.location.geohash == undefined || message.location.geohash === "") { - message.location.geohash = geohashForLocation([Number(message.location.lat), Number(message.location.lon)]) - console.log(`New geohash generated: ${message.location.geohash}`) + console.log(`[WS] Recieved message from user <${socket.id}>.`); + console.log(message); + try { + if (isNaN(message.timeSent)) + throw new Error("The timeSent parameter must be a valid number."); + if (isNaN(message.location.lat)) + throw new Error("The lat parameter must be a valid number."); + if (isNaN(message.location.lon)) + throw new Error("The lon parameter must be a valid number."); + + if ( + message.location.geohash == undefined || + message.location.geohash === "" + ) { + message.location.geohash = geohashForLocation([ + Number(message.location.lat), + Number(message.location.lon), + ]); + console.log(`New geohash generated: ${message.location.geohash}`); } - const status = await createMessage(message); - if(status === false) throw new Error("Error creating message: ") + const status = await createMessage(message); + if (status === false) throw new Error("Error creating message: "); // Get nearby users and push the message to them. - const nearbyUserSockets = await findNearbyUsers(Number(message.location.lat), Number(message.location.lon), Number(process.env.message_outreach_radius)) + const nearbyUserSockets = await findNearbyUsers( + Number(message.location.lat), + Number(message.location.lon), + Number(process.env.message_outreach_radius) + ); for (const recievingSocket of nearbyUserSockets) { // Don't send the message to the sender (who will be included in list of nearby users). if (recievingSocket === socket.id) { - continue + continue; } else { - console.log(`Sending new message to socket ${recievingSocket}`) - socket.broadcast.to(recievingSocket).emit("message", message) + console.log(`Sending new message to socket ${recievingSocket}`); + socket.broadcast.to(recievingSocket).emit("message", message); } } - if (ack) ack("message recieved") - - } catch(error) { - console.error("[WS] Error sending message:", error.message) + if (ack) ack("message recieved"); + } catch (error) { + console.error("[WS] Error sending message:", error.message); } - }) - socket.on('updateLocation', async (location, ack) => { - console.log(`[WS] Recieved new location from user <${socket.id}>.`) + }); + socket.on("updateLocation", async (location, ack) => { + console.log(`[WS] Recieved new location from user <${socket.id}>.`); try { - const lat = Number(location.lat) - const lon = Number(location.lon) - const success = await updateUserLocation(socket.id, lat, lon) + const lat = Number(location.lat); + const lon = Number(location.lon); + const success = await updateUserLocation(socket.id, lat, lon); if (success) { - console.log("[WS] Location updated in database successfully.") - if (ack) ack("location updated") + console.log("[WS] Location updated in database successfully."); + if (ack) ack("location updated"); } else { - throw new Error("updateUserLocation() failed.") + throw new Error("updateUserLocation() failed."); } } catch (error) { - console.error("[WS] Error calling updateLocation:", error.message) + console.error("[WS] Error calling updateLocation:", error.message); } - }) -}) + }); +}); socketServer.listen(socket_port, () => { - console.log(`[WS] Listening for new connections on port ${socket_port}.`) -}) + console.log(`[WS] Listening for new connections on port ${socket_port}.`); +}); // === REST APIs === -app.get('/', (req, res) => { - res.send("Echologator API") -}) +app.get("/", (req, res) => { + res.send("Echologator API"); +}); -app.get('/users', async (req, res) => { - let query = '' +app.get("/users", async (req, res) => { + let query = ""; try { if (req.query.lat && req.query.lon && req.query.radius) { // Looks up all users close to a geographic location extended by a radius (in meters). - query = "?lat&lon&radius" - - const lat = Number(req.query.lat) - const lon = Number(req.query.lon) - const radius = Number(req.query.radius) - - const userIds = await findNearbyUsers(lat, lon, radius) - console.log(userIds) - res.json(userIds) + query = "?lat&lon&radius"; + + const lat = Number(req.query.lat); + const lon = Number(req.query.lon); + const radius = Number(req.query.radius); + + const userIds = await findNearbyUsers(lat, lon, radius); + console.log(userIds); + res.json(userIds); } - } catch(error) { - console.error(`[EXP] Error returning request :\n`, error.message) - res.json(`Operation failed.`) + } catch (error) { + console.error( + `[EXP] Error returning request :\n`, + error.message + ); + res.json(`Operation failed.`); } -}) +}); -app.post('/users', async (req, res) => { - try { - const status = await createUser({ - uid: req.body.uid, - socketId: req.body.socketId, - displayName: req.body.displayName, - userIcon: { - foregroundImage: req.body.userIcon.foregroundImage, - backgroundImage: req.body.userIcon.backgroundImage, - }, - location: { - lat: Number(req.body.location.lat), - lon: Number(req.body.location.lon), - geohash: req.body.location.geohash, - } - }) - if (status === false) throw new Error("Error creating user: ") - res.json("Operation was handled successfully.") - console.log("[EXP] Request returned successfully.") - } catch (error) { - console.error("[EXP] Error returning request :\n", error.message) - res.json(`Operation failed.`) - } -}) +app.post("/users", async (req, res) => { + try { + const status = await createUser({ + uid: req.body.uid, + socketId: req.body.socketId, + displayName: req.body.displayName, + userIcon: { + foregroundImage: req.body.userIcon.foregroundImage, + backgroundImage: req.body.userIcon.backgroundImage, + }, + location: { + lat: Number(req.body.location.lat), + lon: Number(req.body.location.lon), + geohash: req.body.location.geohash, + }, + }); + if (status === false) throw new Error("Error creating user: "); + res.json("Operation was handled successfully."); + console.log("[EXP] Request returned successfully."); + } catch (error) { + console.error( + "[EXP] Error returning request :\n", + error.message + ); + res.json(`Operation failed.`); + } +}); -app.put('/users', async (req, res) => { - let query = "" +app.put("/users", async (req, res) => { + let query = ""; try { if (req.query.userId && req.query.toggleConnection) { // Note: toggleConnection should be assigned 'true', but it at least needs to contain any value. We don't perform a check on this parameter for this reason. - query = "?userId&toggleConnection" - const userId = req.query.userId - if (typeof userId != "string") throw Error(" [userId] is not a string.") - - const success = await toggleUserConnectionStatus(userId) - if (!success) throw Error(" toggleUserConnectionStatus() failed.") - } - else if(req.query.userId && req.query.lat && req.query.lon) { - query = "?userId&lat&lon" - const userId = req.query.userId - const lat = Number(req.query.lat) - const lon = Number(req.query.lon) - if (typeof userId != "string") throw Error(" [userId] is not a string.") - if (typeof lat != "number") throw Error(" [lat] is not a number.") - if (typeof lon != "number") throw Error(" [lon] is not a number.") - - const success = await updateUserLocation(userId, lat, lon) - if (!success) throw Error(" toggleUserConnectionStatus() failed.") + query = "?userId&toggleConnection"; + const userId = req.query.userId; + if (typeof userId != "string") throw Error(" [userId] is not a string."); + + const success = await toggleUserConnectionStatus(userId); + if (!success) throw Error(" toggleUserConnectionStatus() failed."); + } else if (req.query.userId && req.query.lat && req.query.lon) { + query = "?userId&lat&lon"; + const userId = req.query.userId; + const lat = Number(req.query.lat); + const lon = Number(req.query.lon); + if (typeof userId != "string") throw Error(" [userId] is not a string."); + if (typeof lat != "number") throw Error(" [lat] is not a number."); + if (typeof lon != "number") throw Error(" [lon] is not a number."); + + const success = await updateUserLocation(userId, lat, lon); + if (!success) throw Error(" toggleUserConnectionStatus() failed."); } - console.log(`[EXP] Request returned successfully.`) - res.json(`Operation was handled successfully.`) - + console.log(`[EXP] Request returned successfully.`); + res.json(`Operation was handled successfully.`); } catch (error) { - console.error(`[EXP] Error returning request :\n`, error.message) - res.json(`Operation failed.`) + console.error( + `[EXP] Error returning request :\n`, + error.message + ); + res.json(`Operation failed.`); } -}) +}); -app.delete('/users', async (req, res) => { - let query = "" +app.delete("/users", async (req, res) => { + let query = ""; try { - query = "?userId" - const userId = req.query.userId - if (typeof userId != "string") throw Error(" [userId] is not a string.") + query = "?userId"; + const userId = req.query.userId; + if (typeof userId != "string") throw Error(" [userId] is not a string."); + + const success = await deleteConnectedUserByUID(userId); + if (!success) throw Error(" deleteUserById() failed."); - const success = await deleteConnectedUserByUID(userId) - if (!success) throw Error(" deleteUserById() failed.") + console.log(`[EXP] Request returned successfully.`); + res.json(`Operation was handled successfully.`); + } catch (error) { + console.error( + `[EXP] Error returning request :\n`, + error.message + ); + res.json(`Operation failed.`); + } +}); - console.log(`[EXP] Request returned successfully.`) - res.json(`Operation was handled successfully.`) +app.post("/verify", async (req, res) => { + let query = ""; + try { + if (req.query.email) { + query = "?email"; + const email = req.query.email; + const mailgun = new Mailgun(FormData); + const mg = mailgun.client({ + username: "api", + key: process.env.MAILGUN_API_KEY || "key-yourkeyhere", + }); + const data = { + from: "Mailgun Sandbox ", + to: email, + subject: "Verify your email for echologator", + template: "app email verification" + }; + const verifyEmailResponse = await mg.messages.create("sandboxf8629624c26849cf8546cd0bc01ee862.mailgun.org", data) + console.log(`[EXP] Request returned successfully.`); + res.json(verifyEmailResponse); + } } catch (error) { - console.error(`[EXP] Error returning request :\n`, error.message) - res.json(`Operation failed.`) + console.error( + `[EXP] Error returning request :\n`, + error + ); + res.json(`Operation failed.`); } -}) +}); // Error handling -app.get('*', (req, res) => { - res.json("404: Path could not be found! COULD NOT {GET}") - res.status(404) -}) - -app.post('*', (req, res) => { - res.json("404: Path could not be found! COULD NOT {POST}") - res.status(404) -}) - -app.put('*', (req, res) => { - res.json("404: Path could not be found! COULD NOT {PUT}") - res.status(404) -}) - -app.delete('*', (req, res) => { - res.json("404: Path could not be found! COULD NOT {DELETE}") - res.status(404) -}) +app.get("*", (req, res) => { + res.json("404: Path could not be found! COULD NOT {GET}"); + res.status(404); +}); + +app.post("*", (req, res) => { + res.json("404: Path could not be found! COULD NOT {POST}"); + res.status(404); +}); + +app.put("*", (req, res) => { + res.json("404: Path could not be found! COULD NOT {PUT}"); + res.status(404); +}); + +app.delete("*", (req, res) => { + res.json("404: Path could not be found! COULD NOT {DELETE}"); + res.status(404); +}); app.listen(express_port, () => { - return console.log(`[EXP] Listening for requests at http://localhost:${express_port}.`) -}) + return console.log( + `[EXP] Listening for requests at http://localhost:${express_port}.` + ); +}); // Some old API routes are commented out for now due to breaking type changes. @@ -347,4 +401,3 @@ app.listen(express_port, () => { // res.json(false) // } // }) - From 3618154409d2f29ec3ba9b7863a902c9e8292eb3 Mon Sep 17 00:00:00 2001 From: Dylan Coben <59846502+dyland88@users.noreply.github.com> Date: Wed, 6 Mar 2024 19:47:26 -0500 Subject: [PATCH 3/3] Login screen (#197) * Changed font for heading and subheading and tweaked rounding on email inputs. * Added Forgot Password and alternate login divider * Added logos for external logins * Fixed external login button behavior * More visual tweaks, added link to sign up page * Fixed external login buttons * Changed margins and renamed css * Changed sign up text * Added back button and border around external login buttons * Changed margin for footer text * Adjusted border thickness for external login and changed header text * Changed Login button for consistency * Changed login text for consistency --- client/assets/apple_logo.png | Bin 0 -> 14845 bytes client/assets/facebook_logo.png | Bin 0 -> 54771 bytes client/assets/fonts/Quicksand-Bold.ttf | Bin 0 -> 78596 bytes client/assets/fonts/Quicksand-Medium.ttf | Bin 0 -> 78948 bytes client/assets/github_logo.png | Bin 0 -> 6393 bytes client/assets/google_logo.png | Bin 0 -> 16590 bytes client/src/components/Auth/LoginScreen.tsx | 215 ++++++++++--- client/src/components/Common/AuthButtons.tsx | 104 ++++++- client/src/components/Common/CustomInputs.tsx | 294 ++++++++++-------- 9 files changed, 434 insertions(+), 179 deletions(-) create mode 100644 client/assets/apple_logo.png create mode 100644 client/assets/facebook_logo.png create mode 100644 client/assets/fonts/Quicksand-Bold.ttf create mode 100644 client/assets/fonts/Quicksand-Medium.ttf create mode 100644 client/assets/github_logo.png create mode 100644 client/assets/google_logo.png diff --git a/client/assets/apple_logo.png b/client/assets/apple_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b74350d6a53db7cf0565668918659f5f9da4d4dd GIT binary patch literal 14845 zcmZ|0cT`i&7cPt^(%k)P7D)!Ae0yL_`f%SA!A}UB?m; z5yNlZ0G@zo@A?2=Hyl*7REUTw6DcpONPzM^8+E7_5z*_1L_}}i5fPmMkKU{k5&4P` z5&gC#B9coZB4UDNHNH{+UR<|^JXa&Sj7l78BO;Pz2CJ#)2Fz~H`#0-NWFPO1w4^3T zs1!fC86FcJ9?roK#MCYHuxC9jS~Q903ph)2fP2Iinxi(%UD@Nl6>audly90uSNC<& zLQu=GQrLTqHKfjw@#ew8w?Hjxf}+FDp~>3jPI)zi98u#fxUOL^JC-1|)#EPlnO6(_ zR#{de!l3v5hZ?QnnbdN&dZ8NZ>c}6jG%9y+cO50!Sd`KqD^3mnvvEa^3hPInH@RPF z2q!FC(v(9@!|Xs>MX(d@q7RKQ$wZOd0ao`Qxpxt3(CFlXd6`JO>|0E2aJFLFs-*@r zbbFY(`RUX6psnHhLH3vO?%>mL__!>b%j+y7NT!su9);!q%t_3mo~qF7_dIF}hfFr% zKqvEWWYkZ2tlVP5BE0gI9K_Oe9u00b)xbVcyMr5kM0J=}WtVUOzXy^Znhy5L%Gsd! z=IEnL5zg+yp(A70BmF=r0zT8ABKw5p+mlQ(HT*@k4XVQ63BBBoINm3=VXbAAL*8?BQT% zm{vN!7x4gAq&A@OErel*jA>5f*Vv3F#Oe2t8T*~(oF-lCUO~{TOV}+(S2nC47K&&& z%4TQV{Rfauw^`dZ9HVLRqxGPy%q}@OL7%0K5*AH>=P@W_ zj)k^H_X&2s9df%%O0zNzXo+GL#>u1RB|uuwQJ?$<&%&Vv^gvpl+-`wxvr^Yxv(l{n z+MTYBp!fo!6~9+yli_Ma?api7aw4CdC(kEO$OBOGy;F&MFH+}F-8IIFg~n;1-$psH zFMbTM^o;Gyr{itQfC)Q1f9*Y2pLZ#t|}O9~qkh!p6V@*^CM=+PD*Z6o-xMI=0dIKP1$$ z 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 Th=Ex+n{n-yk8(H$-dHhLs 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 literal 0 HcmV?d00001 diff --git a/client/assets/fonts/Quicksand-Bold.ttf b/client/assets/fonts/Quicksand-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..07d5127c04b17a9a62121d12aeb00b701e920500 GIT binary patch literal 78596 zcmc${31C!3)<0TRx6_?{Upq;svqJ(Q>Fn%TSp_6)f+7I|34{bgSVd$I6_-KB!DSQ` z71wb<9Y+yyM+Z@HLq)~~5D^h~L`6xz-#K^b4xr=rfA9OhbgJ&Tr%s(Zb?Vf9Z(SjU z5Rvd~LJX;`tFL~!>TMxZ7O+Q#j2Yc9?bq<*LJaFKMCD^c8pcM&bk?!dBU^-6bxeqd!ke2KXC}?F6(js=gqJk~5jZB`LEIyKk<~n}bIDbkF9QFJ zF+zmi*4jR!G4#28o4~452>aN1jZ5Zh11Uo?1)jUDabD9+x4d$d5E{}9m^r_FLFbNn zAx{cX@Qo18Ve>nh<~Q4~z7+JKpm%JM-b){{{Ta7Hdc7h7SE2O~?ZP3h5rK5)_h%<6 zgdg_W!Mnj*+La$rcnXcsa+ykx8_S_7LM@)%+{w(8PA>!0Hs(x7O*d4n|0!RG|E3BSQiZ4}$PuUF0H>)m z`1h#$;6I=qfd3D*8U8=jNJ}0s9gqZ6DjHu0}c>Qb&~yADT2i&16Cp&rOR=p2AXvSY(t5yHsAnXUZh>P#4H2v5E-J@ zfCGhFWEpS}AS3TGnDceESSVV=3^7+M5RIZu%oM#vgJ=@-fUQRDX$9s?G-rWkCTJFd z@=W1l5k4ECt>D^mMv9S$JzF%xW=>7dpLcgYzBm)X-;7T@I>mhCps(nI-vZ>P1EKSQ zT>v{@0Js&`c3@{Ce6*++BgHtR-GVST?%I*_PCyNSW&v8vQa1skQ?%kb11YwFp7QNR z&PZ2H;OGW@Ga!mR41C?-Kc8v+Ig{i*4!uA%fn$?wl)76KK|*qFKgqhMYf9577C}DB zQ=^y;pVD58dy>Nq9HmC|M8b{q%U0*AB#;gYX&9zZ;rZ$Yn$JNA}j^ zwDOp3l-@#=r>Va_tW8scz0auYK4(b39`UI5wnFv-ln&WNPeB&vvk|IQWXT<{B;B5U zbzl_7r@UpHfqMqpk5aT2i_yyeRoo^1DP9n7i;u+@;ujf$);?eMlS5>KJYUY0i{&M9 zt^8CCRwLCUwC0bf6WRc6m^NN()Gp92(yq{+)Lzlv)edN1X+PTnY*DsUTW{M8Tf6N- z+vT$IXs=91lC5a_n%t?Kt50((zNE78nue49pHZFR(fA zhQK=mHw7LJJQfrelpfS8s3NE)Xmrq&pxHr-gH{DS8FV7p9^5y$K6q^K)ZjV6i-K1L zuMOT6{88|c;Nv0XA@f3(hFlu*mylaS{t@z2$ZH`VhI|?Fb7(+lTxfP^QRslsVWHzg zn?e_cUK)CR=-r_Yhdveha_IY^pNG|l-57RP*ygZj!d?&iIJ{^0)bPKC{~R$YVsgZ+ zh>nOA5m!ds5OHV3&yfLywqQj$|(K*qc=z-D0qbEeqie40bS@aFj_e4Ju{dDxs=)EyTF#}?T z#hep!S} z$6XtDOWXr-PsHtrdoS)#+;?$Z@nP|)@x9{v#gB-e5Z@R-FMetKrSaFs-;!WUh)i%N zg3es)CH+4Qm;r|pL%cVx2eCn z9Ikv|j2B(cko02vw?Qdzv+``?@J;XiMJ=NXfUg-Xl z`_Jy(?t|{H-6zrqrC*SKQTm$nb?F<@H>W?7zAOEs^smx?&ah>~WMpRa$>^6cB%>i? zM#h4SOEUhNac9P+j3+X-XS|(pAhU1g>db31Z^?Wh^NGwInY*)6vu0&&&f1rCH0#G~ zEjv6rDLX5>PxhtRf62Zh`@!rdvtP=7GyB8r&$EBX3CLNLvpHvL&PzFO=6sNIIOkZ7 zH#a!9ICoI)@Z9ma({ktLF3Me%yEgac+tH%dgBInm;jrdj7op<@s0T-<*Gc{+9d~@^|I$&Hpt2oBUsT*?V2t>-t_B zdu{HW)H|zppWc0Y*Y!TT_qn~BdoS;OQ}6qFKim6_-X9b=3+fA&7i=on-6x?>Tc6wd zd|lYTaAx7tMZrb!MO8(!ita8t=1KRodhYYQS?n%8x45aet$1@?vC5O4gLzRC0gG z){>ni|0y|I^6RO;()iM<()Q9#rB9b0DN87uQ}$HZdu893Pbq)6{H^jI%1>4VRD@N; zRiswrR1B=Bub5h~sA5IMWff~H?y1;R@mR&v6-O(bm93S}RUYme**CGTyKj%ag?%gf z4(>a&@3_9x`nLAHvG4PJclF)dPxQ;}H@e@fejWW*^t-Iz+J5i$pWc7>fP?{e42&AM zdf>i6p@U)v^%^vB(5gZE2d55h9sKd&&#H!0-C6CdzP0-Pn%J6UHJ8@>rRI~`3v2&V zmsU5w?(zEU`X%)ThBOa(V`$#c!9yE|UOn{gp?il#4;wJ-Ps1J_c3^ns@R`H!7@HSBHpwBgH!9~w@M3mBI?ZsfQ{*|bnCLW|atwJfcNR-hGWrP{NuAXkJd!IkPtcV(kh z=;JDP4RAHMrnp*M7q~7&`*4lxudW+ix4C|Hhqxo%ac-yE<<4;DxC`CI?!N9?_k8zK z_Z99t+#B8Zy6<=Y!~KZ+U+%5$r_y86Y%p@NL2j1YWX%yxZJKRSDvc?EnHt$wQI6#s;kwt#I@43)^#1{WP{s*oJ6}5-6?Lj zk&{Z!NvC@ya&njZ9^~Zj?uU_+C*0foaxw)u2|!Mwkdq`UCo_=~%&=7rW>}vhKf>Eb zs;>P6>3?1Q^s6_c>tnCPILPnM`?2>U@4MdDy}P_Sy*s=wc8&83{7vwaj00&DcwmM} za-i(My$9wTXgFZozYD(y4#0{IgdM<2fe`z@WqcF#E0PyUL_DOf&PFrYiqQ%#Et&6tF^V-wc2{^9&MA3 z@%Od+vB5m)})4sB6>`wN%YePoY-K!|1C? zO;%IXcJ-WkL7lIzM;%MWd@&ofs$LAiIJp61b$zV32qU|D#r@&|@rZav{2ODted1Gb zNPMG~t6AzI^@{3LC&dpkN=C~hnU1-AUs)yVI#`#mlcriP(l3xDIpV z%f+2yt$Idm5U-;hc}2V?J`?xJN2Eg>7hN)32FOquA>(AB%#b;(=8l_TU?(kU0o z%jHtJT;3=zQO{znV!M1wJ}aM>AE4#=NW^3Atcf2*f(#L9GDc*|1d$~Zg&QklJ!G=T zlc}Og7KEhkG1mjlF5*-wm=gTx3qP@FAm#b{YAX2^-6QH~cAM0g~v|LSU3hjN47NCAbTN$i5lvjPC4q|oa3w2a|t`4aE>PvM*eX0(N z3>h!-rAzdZX`(0A8f#>!sFo$7SZ0f}B)Mof{T#C(Z4lAJB($?0MtT8QQH z0&x*mu~y23Vwr3gcgdT?M)@~!8`iXLmDh>Qa-(=y-Xpfk&EiSu{b6_7tvVBiIss^UGs`CtO$im zB_e1A2;HJh{Dj`{1lBZv!J6i;ST+1v43K@qAXy~pu+mm4b49uADJo>1sFeAlO!g4x z%dz4-IY#_NUMBu3*N8RpB5|d>SX?DnimTM@V*Ycn`TQ#T&YOI>5E>P`i zKKkJ`>I$`5U8XKqm#PiwPBk4Xcn_(+s|VF)^)IzaJ+2!)NiP_(9b=o-bP>d zBHA)!Qv}P8u=c2G>qm~0n_3$?+n|LNBB*L|om)<>sT${&Wi?~rM~|qQ>=s|0HF~65 z>>M?+)-CQCJNhiQScS!Gx0pI^>F!jCjg76H z(leuRL6ht?W5&Gs(#?M4%+{9KGI(ZN`#foz)zLUZoB*Ox9K$|AtN4oj!|Wem{{!~l zW&aKKce1~o{ioX&&g&3c+B;^piH8=nw9OI^ELc!jBsMNsIDLV*ZNb9%3&c&!nmXFi zPmo>YuurSu64pR|F8igN3c)(ArclvKJ7(F)LrtU*binu8@`6# zDh2&6g*n;Jf=@dESjR={Nsj8cc~5kiz$m8e;jr6>2HX~a=}LgGy@X$X?IUfc^?L}T zk4|ltHVG^Af$AIl4yfIzQ;)!(qt3<8C4WUvT!0q%CG_oM!JSeF1plET9ple0#WS*KQ0;mOqR7=!FA`qjRKZ|g6Jw{y7=z~5LG3b-N7K!RxbzG#Y zpRl8ni(KilO0-70Zft5Ja^QU*= zXs?IjrNdX^63|cx?aXu!k>UrY(^DSkJ!%EBSd0l zl}d+vfu2Ol^XZ;_!7`X}sfJU!k7LyJAjVz(ISb-AWZ5S5C{Xu8+SrdmI*}q+eE|FV zLj4E+mufHkPt^PH5BgE;V~UTN;v=T`kSU-C*xTpeXmWR<#w>?L&Bw@XCPvJY&<>2m z9AGf|Nou_?szXS-xPZrWZaGVKsz|PxsE1T1Wj*}4&@JjJ`$-rRDzS)Q@SO?2h2a*} zN-$%xnI>C&XXRaC*EartRO56DPcf`A3!E?yVtx+TB0*2XQQ7Nls^nckokF*lGLeY2 z>2v-^sVZT|+@>CECLvdn>oDo`YvJHJ9LaTl^r@mJ|sN+OOd!S60fiPVI#8p{b zzd;WJTcBB*K}q)P##+QfVxz#QT3iOJ=)k_jRP1aF$L>gfk_s&Y?fX)_gWbdOL(tka z!Ag`Gs#>u7Ived?E2Qs<^_Kx^2%sLyqxvh@v&vOPs-LO@l!G;mzN!{bw(6rQRSlpl zRiG+VHK0ta-ju55nKqZ+dBN6H{>Cgm&-= z%n<%x_FZzcoUCHxCbn_y;JWWS>A_rM)ll3dX zmUHQ_R%hUricGB-a>1#Op+kp$CHQpb{Y?AL5C1*jACdO|ZTAV%BzH=>+P{ID0-4Bt z4|p@Kzvsq-=8w7~&`}`hJA~_Z-E&Cuf79I~T-s(4d8$L1_g3RX)E{zdM5a2`bs}&7 zo335wuiYkkkV9HkiuCzgj$|1Qx1DLb$!41b+^GLuhcz#kT7fiv%MFM8!@XZZM!J4Z zS8-I7!}Zmjcb7Qo{SxjQxXa+)(H+x(&ig*-B(ASvm4xnJfg}1SP^XXjJ5>prG8|g` z5$w*UtJe$IiPadw4MiVExDVitYB!52aJ=LjF=qfjM`Z(-1zZJSqPqlf z2jkj`_3{~5JAVxDg(&~?fj>|5#u~7P;s2lL@Qh!qHWKYzKe!RXqvhZ_9oGwR9SYg7 zf~0aVuA7BHJ7#orPYyc|`rpr3_m06@c$BD@IikP10QVtSeTKs-MlxKg_y{Z0=V3i& zuE=OjTMaUbm(tRUV zn@#*Rz+VIW3gA}&PqIFOIR6Ij-+<|!+#%e53w*4IVYdmh_ubeFG4a6&4@UTBB1WTj z{zcfu60`+_Ac~wE|mFtTvv)7*!>#8@o8+RA^rmB zq6W`bqHmYfek}0*tUTTmJTAM&`xV-n5VaI`NB#82-lJ-Y_Y2)&{?Zfl2&ev)`cmlJ zqsk#yHSlwxryp>StL4G~hlwQgrvup$T`h1aa1X%EfxA%TXs}Dnaw627pnVH#I{R=9 z6S?Xsgik}9sbY*)h&pmB(wc>*D@8Zw!M(rh;df7Kj3sbIaP&+x(a}BeAlRgJ118#D zaKFF}hckJa@v;n@8P|hd3XeE|d~4Wc2oNRMV=2O}0NW9l|h`G(Fzy; zdDnAV`i-BjQEFM($5K+0Htg@&r2{)D|CT{A7*D5#$}se%(`5v9#UgqCG6s8Zv3TP4 zS{Wy@k%yDmbD1gQWddq#E}mch9D9MuGDW6JmrRpxXuL_L%M6(*cE~K5ja|cB*#rA6 zJ7u2C7q7@(*hMUmeXyfgBt2Ne$`e1yVp$?fWf^v7@?{0@mi9vp?~fg>0oVh4O%B3N z%V2RrR*BbTwXBh~vJUGFy|Gd;6gzCgL?1aEyOJZZFF6Xc)G^ql9E)-*#GYA^94E)i z334K4hv&%2atd}}&%>@Eo*c){&G~W~_URh&)b$KGQ#N6jZnm5)n`H}jaOTLlvQ^H* z&SATpFE5ZCasi&pUMLq~muN9|v6f)>a~akKip7_(f>L=Q_Chbhvlkc3mDn*VldI5D zA4F^Xi@a1`hP~1?@(Ot+_KeEq)$-4H=IyIFmbYM!_*UK}-hgL0?v!`Qjo9_8M0~{VKyTBjHkL1U4pWKfT$uQXS&+-#_P=1Q1I6lKj?XdiuR@1Sr_MYgZ zHFd0xeI*v_>+0A?^jlfSjw7$Fi&3*4M=+VvGt9XZu#!Rfq~zVJaMb#S*NQ zj}=Q*6xKm5#F}s{R%+r^f=U$2Rg!Y5WU)-8;OznzucD-PU)2zIphdh0Yb*Jxmv~q- zh_A5nGahR(1z4jg#M+HV6^jX2Unmuysxt8_)@UlQcGFk&6IY0dSmPO>24Y`+u&Pqk zXp<+26{;5P;7Y9h{0U=*i?Kp9Oby3={YZ6|8l^_7G1w&>i+#dz*#Dm(&JmNbTR2Ib zgXig|h;s$nYOxi26z8d_cs^ko)|$@4n#N~p2A*iZ3cIy}kM$-s56=nEF5?BNLoLA5 z2>O~nJ@2p#&lfDmGYbCe`>U}7N&AqrBYCBGRy-$e6}O37{PzA5(aJb!ZwAj8T&@0$ zrzozmb_Ld9#pDJ&g>Vy|QMg&%f@c$M#ZwHoV^8xA>}uYnHmbYvWb3`^K0M9v0Pk=9 z1G}4>vDZoaoBzam`!TGc9aoQH*Yh##dTyb&7u1tj_t=JKGoHpC5%u{l@pr8H+=W%} zJMld2Ra1gmjV#WXwv zF&KNPuc=+?b?m6Vi8l>i6pxC3iO0m_{4B@Qc$OmoBd@ox&$?T^BksY@Qjl1Kb-$~` zmEvk~iF#L@FAj@U>OJwi+Jm<%_F~0(HP)V=!b<0d>Lc-^`dID5%FzMdS^rcW!uru+ zaVb`pZ@|v_7g+WDT6}{y8Qgf^CLL|}^>}09uXvKAQEbF0`>421tjGHGS6FTQo48xt zgq6-f>_a_)eJXt|^BAvY{;02K;+c?N)k!=7;>8ZX#O}U^{rv#!?K`wUEeJdO-S%q4 zTJeFX5r4+BDtl<(M(o#O#ec+y;(f6f{l~uF+Qq>$1Q}W;o+8M`vje$!O01`rr{!zC z@QhV~)<-MUitJU>JDL_XITp6H6xCJL>DTHq<63B3J;t?!u7yQ4wfcP(-y>d)ac{({ zsxa=WnBG%p@ToGd%&*W>=y6odYn;*1-sY%kpWWWpG&i`aqor+j*N%QYD(<2Ga88zQx|z~+tJ?0p+$9thJ1yb zzrvz=J^iAZQhOa|-(Ke**`TgAv{7T^s>YDM#?VHMt_@FNNpM{^af<4y4Fy!23Mg~b z85z~(GguatIO_C_>vC7u*oUwrAwztb)pO|a1P?hS6;GjU==8=8J*uZFWN7y|MRlGM zHEg(jm{r0kxq9a2DKrH1n0aJDi|T3^kCLf!3^N2CrVD5v*4ffJvnhlOps=K>u(+@& zWO(-k3yX?5Ur46hK9UR1KGILI#jIFRRog})E4tiP6hoq7Ly{7+jH>LTbXKGMSe59C zEh;J1xs-5O6xEd&0#vevLXc`Byh5vMn{6NMr;6GlJ*d_w)>=b=TBCSt4VJY!OOI|u zg&vPlrp2Z?80Jz_7cjcHy~D7;S|b~ECO3ns)=+p|Vc6*Ag)sGwh4We)7qT*-_BzLC ze>*8PVwZASg{WyEqZhO`E@<|v86^hi65Y5xo*MgDU14J_g%uW+8o4Mkq%JjbQDml2 zXK(OhT4rRvtSqGAltT6t8Hy@1Sd|$p$_#v^E=W;Dy=@%K(>~5m43oB8&yc6cP*a(a ziLyHTc>gjgrZOt@pq_BOsWY!-0poqTt}_y@Hw3CPb#E}Os|y={x~_}L9OM0UU0&rF zubXquZH3aiye)Ik{XQ`y3yA{H#Yg1Okrin3}5zxXIL4r z&$JAnsIJHmw9pW!P;ZcmYRc?QoKJg`Kea(sZDhN~5WmI{v&P_7qi5SwSQ^}9rE6%& z$Z55i({e|Xf3X)CEQ?AVP2HMey#?`-;mN%AJkGnPx#=;E?s`J1*>5SP*$s!IgS=13oS^^tz}aldDzzq5 zz;=H{88yXfwGAO^4GX9>Sk@XWb^AhVZ4`U4X)%UH)zk;H`&y7%BP(?#H-oCyu)DgV zu=dki5ZG?JzbTa(u}e8EwAR%j?WeWY2Imsp?meDbJDvr@aL3+ZDGaT(k&7Zj>QW;Y zX6-4hw=eLkdSyoD%gRF*oKo7JB12JS2CFhd$g)aXC$-LX14VBeb+Ltl= z;AN*&`^sW_V*x#Y7t+WC2FyBQIF!4us(Qbh>T>^^BLACW|C>_lhMIN0iEQ-czzRj@ z;3LINt$&DrT2+<)A=TCm^#Xho-e_vf3IjhqEToYYrPlafIX@Jl8NWZq25u{&gkohLU*D70qXnFMvXtU0r6##dB zi=F*BeA8+JVone}F0na}PF2te+gc2UWP2Eh^PmM+t`@j*Lx(FH9j;utaOFycD-RuTW#hz^2S2!0 z>N3-Vp)4~4Br^eq%mnH(>k!GzbR;v==`u5@%glrZ4|-);OU zF{xk1v)RdKMl%Nz213*Z&uW>y5UF9PuFI#lji_OTA4bqX0C zFP;rrLl!1ul#k55plL>X+f2@BQBiSF(}GS6P&%7TOqrum&xo#z>e8?o?XB%?^HBJm zjU7vEGuzu{+v*l}v>V|@6{xDUwYGFL8c3s{t9guo32K>re$xWPH-e4oQ_Z~zMoC8b z>jPbn(GB8S8rU>%e& z{_FGvoAd;m^aOLg#+B;;uH`}8qRwcaH$8|u4}wTGgjE~-Y6|dBxq;K`TCp)5g=_}C zDu|m;zt|;V&F$@T8>hD~Lh)EU^?^sRKC~z-)+d0tR)?Zfo8HvgzSu|X;fh>XtSbpu zy+Sl}Z^A9@_=lD7O>{Rs`G?p0-4qr1-{_J=`RmLt*rPMnGwAUb$D`-g z2=Uj0r_PT-v7Q*0tw*={LXSCzG1^^^J}m-XSHDLeKSRwGv}Z)m-vwhwXPn^oOhmZ; zo(a}r@rU;quyGF>CA7Is9c?0KUSr2x;hHyh-dsV?`(s%WlmUR~$xhmrB7XMV3fpA$ z0oLXFV?ET4r+4W@7otePkDkrMvy(Z?a+XnyoKAL#&8P2})btGTqj)Pz;vJ<>k&Rs| zJ6NBv4#IzcX;x_$0$#=N1==Nm z-_}+^vdLO6!0%vHSBj6Zk}JjKnhpMk3a9#DzhFQ7JF(MCG}pp^N*#g!4Ev8V{VMh^ zz|(TzsdmBNuU>_})u1GvUgp1t{dcfFP29f5KAp(k0`~~qgK+o2Z7|%;xUPd+3%3St z72I;TMR4=s=D^K_n+i7xZY0^91Gg>W}w8PBu}spV0)7ETtRN|-huuyPJ|_BA+M#@NfS^N$*YeJ^^S27Anz zTj3ss+XQzX+?|G7kLwL^W}a39UIDiRt^=+WZWi1$xXEzi;6}j>g(G~mkeOw0g>ZRr zS#UVpDico~XNDpi$!DB^I|la^++nx_a3ARLGu{RK2HZ~EgKx%mI6RYX^32#GWX2-~ zze426;eXl|>pg+b*hg5C-4_o8-06n) z+yxfY!-6s_2sn2N)5Tl3NDB(KAlvCs8tQ|Q210c%X{aAME)BKBfKXQq2sOrl_L&e# zYQ)`Z;?j0o&@KzwVM4yVr9E%r(zaR9V?v}ogaQ$14_MGfK({gOCP3FQbhQP+nhYF; zuCzjR$QQcIqU!|I2G>lq^q1D0X5rGNo1u(5_mohgn_%I_5Tx_y4y6speQnx6_!Sle z8#i#hEQoM9Oy|S7tx&=_IW*S7g8`axue6}mfL6dQadp6Ng`4Ff z+%(2bhOdVbZXDxA!5`|XhTk8q%vA_K&%$L{kn0RkqJ@jLpim34TM(roD2>z;CNA}u z1$|{fhfT<3NtJrQ#HD_K`0rBAQ{S+lohFpF5jwq%LJ3OU&U8P=ZqLAv%UOn2;WqaW|jBg<`B@y0!4vFmHlZF|-`eB8KK$&>Rb*(3uw9RE8#X z3mwb2k-*hkbb}e{YtfaY7Nqt_%}7m2jklmk3kp61Wb?Dm+r65M~agJeyGVU9~B_HWVchJNo>(ED_ z*aP=gvJZN-8}215^jQnqYC(@$&?biNOTIICeew-}ueG2nEok)_pcNKwi3Jgt4(8Ho z;bvLTwB$QoD>!tr1rcr>R?0Lpv#MrX}rsjGNHs@E$FxfePcmKEa;#G zeT0L4_rSfC*d2P6aW8cXeU@=s;Xj(V3I2U>cQUlzf^M*&Yc1$X3tDYKD=cV<1rcYR zA3+_=xz)nWvY=@uM7ak{vP?E{eo~FIaH9YXW!h>B>Tf}17E}l*kLd`?V#sBVK@t-a zqZ31cwT_lSifx(BTo_b{}fTj|Q_9iS(Sd=i|g63GzObeQ7 zL6a;9xP-AB*N5}P7-`YfThL$&>T5wICPcCr{0dB5LJt#4bS11xt>@G-Oo(s^DU6FZ zaX4|(qzkqnpL{lxUwoGZ{bWJknb4W^5`WYTjXz{Tmj2@RTDaW_tKxS-*Nc+&LBo4V z&+$9po+ro|No_3SwgLATLl0Td0~SP~8#(m0Zn&EmhnB{OOLSK=?lM3t8CqsRofgz) zLCqFKF{X2jbGzXtFm6mY+;9u0L$&b(<10YniT^FAmlc|0L2ibe-Qvbtq2UY##;dqr zp!F7Xg9TlS+1*ysY21~ljVMn*t1W1S1)-fZLOU#| z6|}P`MtmTkX#~Z6V?iHT&|4NX*@QU8IF9j>iHm#If;L&udJ7r_Xeh@(D{4UfEvU?b zh^~<7@-X&pi_5~j%YqUu2S?-|AP})tV9mFoj{UQqS;b;b=&zW4$>K5j|!r~iyry{OCQ}>(a zb&~XO%|4u!?tI@!-#2c@y8mjNPbQ_JvwLKoIuCvs-p7;DhByDne};SwtJpF`?PZMa zuLK+n?g*9N!;hpL0$Ht5Xe8|u0E3+aiBsH!6o+YV02ta8_>SRl+8dAwv^M~}?jJ?y zFT6K!lJ*8WN0? z@Vaz8<6&P2Jw~B&63eraWRsUOhewEmT*;wHIt|`2BMy|u9L`;iwwy7P#~hLwKIJiy z^V`L6j*%{L4rEMk=AUEul%q+UBVJ#ZIh?O0$RBZ|-0kPRf&HAvhqW<;;a!3Kyic&7 z_X%D^=>gAi7vViMDIQjr!vB_Ieao8pmSg=y=>ku?3*TyVYR$JSNv3uyQp{w%(Mg+x zr_`5m>hE)jEMsm@QZB?Y=Jr0v4dGbJIM(~DD_AhNIms&2OoG)+##d<90AHa!2!9Ui zvx4;*$*IrLE~ZennF`itFAjB)K4FKX+g_~Csa!gFjE`h|g?16e$~lDQ4x zTu7oeUf+PF6T16oan^~re8yQc(NCB zOXbx0)G?XLq1TZN*pnm6zlt&Ua@?!9^cPVs#3J6wTg0W=%vL&zbRsTh8Sc~8GY!>H zt`T^Xh|OMIWg?j7D}B77fCtBg4~ zm|Gu)8`%aN%%KlcRxn(_@Ou=hozJP<&G@?+U(EJ4OM3;Ji@BW{VBo2p$!41mVfl+W zcX13Caqfy4?#rnc8$Pv5{aHVC+@cO(4Gc0kP=1>@zaEx>&-s$YoMJ8Kx0ZH@Wi9O@ z%f+;FENhvv7T=+;tR7E#s1EWJwOGmnjwIQ%O6!vXVLUr=4BE z)Fwo;B~&t>O1!;E=hu-fRdTF+rq5^H7H}*Z)92er{(O!#)rP%GIhAFmH*kUHxRW@= zNu0+?%x4nIJcap8;<#6FtVvAIEwfz4a3u4IBpC0AQJarZ82KD}kl}+2FSiW@ez|Q5 z{LQTM<*d)UnR5qIb};2|+eoIt&Z=C_mav>pNXA+|K;pVwzayc01EtO>&B>`B{ytNmpV8*PY3vC2=*Sf>6{Q@rzHyir?^^d1s^_3Qzmg-50^zc!-6fO$wn69VV)kgkSw+h z!M5SyR6J}I9vx%DzP-${-41`9Ef2nna-kA5)IRYe*B1}V<6(K4SkL#fZD7_yX>sZU zx$FkA1_pAum#_{mprhI6sdRzfi6dLhYxcXd(X=rQS;l{jc85i-%&yAttK$0D5jw?wP}v{L*@T!?eY zwuy`QOJ0xDm%L;&-d~@F_uKI$FT8cW5SGzQU-H5m;P{dk-r&ZUyySCu3pq~yf_IM7 z58_ZZwm za1X$3gu4yyCOFuZg#F6P;8wz+4P$&Ka@mGcD}p>I-hps-2w zv=TjCRsqfj$r7sW6~Ca$JNwTl1)2vK9?kxv>|enC+w5<{`QmsQNaxA^R`O*C zr+5itu3-Od_Ag*xaBn@Cd~uTf>)HR1{ZHAyll^zte~SGr>_5u>7#i(VA0{bt+_kT|61b<`BjkksIO*Wyzr$KfVoJG&NguWEA0%u83-Sqpz z$x7Cr_YLpo-fz9%c&RM9{dwsO48eHJIdP387^g4^oNdZ~-e5^W#~tg#CzlVhX#6zhpEC;Y9@|e=zc?lzre|I2QhGo0anNZDZpbr- z7+UNuk$0c>J!s_}GcE5Slw|G4WRE~O~<_-nfy=#zW2VY z^D%K0k0{}+7LD`xBX}J5wJym0NowbOX%YvHYuT$GPi}(|pRLOKDbrf~bvin$%KSqO z|Js7P*+6%DFlqd+XQt@Z#-jd0mTs2i&*6Ur(~SH~e>6AxKl&r9B|YK~V-D-DKSn|x z{#hsnG?W01JJ6q?Opc=FuwKd6ZPGuVMq9#mqK9^8cKY3!>d@&_I_6Z4r^O98Jtk`N z5mQ1)Z}d%PpySdqDa~-R6j7c&tx=g}00F zzuEsD()DG=#nmS<+mt%@r%Tp0@*lUhrS3KjWg7WaN=m#&Z7AMDbtsfaGDanr$eWS9>qH% z-{3cZznL&l;(JPB627REBqn37m5lGtq~px6bLqq|oIO>A^T8JKSkAS0&BbShF_Ptc^8mW6j#2B^Pu)1iv8GR0wM) z2zt367}859>m`i!62N*1V7&yeUIJJz0j!q*)=L2N@-fP6AAS+g&Zj83L(q|fb>v_j zMX`<~bQC25F$;~x9E&uiSVwd!eI-sJ>nMjhr^)}{=yD=+u%6Fik-nyqJCeGWTAMw2frY;&;Yj30JhKow$K2!&;Yj30JhKoSZJLH!1-nM zuyiVea4v%gw$@0t)+nPq$XcU~Qh5M28^dK2%ViVCWn<^Ev2)qjxoqrQHg+x>JC}`} z%O;-7CV|T)k;^8K%O;S^CdnupDitS}N($R=2$v0gzoQbT2vXU&xNL&iiqp7+++0HG zTtXRKLLuEsh)N}sOC^g-C7Vknhf76qspN90^x#tI$))1pQpsbx4&w4iMp-PUK2%iV zt8ClxjkYz~3T=rtN-M!hQcE-&&boRP=W5-DlfF9DRBby>GV6g(WaX6Q698UD};MBifGDF6)3&x3m_;wfl@U<-RC0Z+LL+%y# zp*)@uAM=@l^wqRRKL73!oME?H?uEQ`b{n7DW}Mnar=uCCp{eO=2A_jAk54}9#F_5? z=bF(OWjIX?r-jj3VLNEeS;eCdv!VR3n&CZ8t14=CU zS=c6E6|kTAI8kh@nJ^F3JeJGgcz~&}HwdZmmKmiD$s9;~E2NFb>F7z6LluvJ6z>6? zcf3cPgPcg5&?!)>C|5(^E`hrrXMx7!EKbT}GShAa?E&U<6sOW63lyKYA=GJbH1tAu zps*92dJ67oxM$&Zz`cwRXWHflHznvTvTjkdPZqX zMuLnlD~&42l(E3(${c%Kk4*VUW@gu@%yNfKZcw&>u3-W4R)?*t5$lkD%gj7^WoD+j z(0=lMoEfSn1f0Ayz^*0&hOGxfqJ`>ttdF{csM75A%#57UlJc0cvII|jLQH&IEMamr ztvo$Jj@;u&jY@WEKL@7AM5j592V}-Yrv|>azFdaKsI)FyOq?q|C|FI1#bZG+Cm#z7 zNp{D_$RD~^FIYhDn{ry(CH5RxyATd7T+lqt#9wLQqj8Sq6DHo)-@xZ;j5p%x;q%l& z&5W0;ImMgIw|o4-r^OEwYyJ2yIxRdNr>AyU>7O1y7N9m|EsiRn2=Nx-t5(lr9D%j=Kr& z!i$DvRSZrJDElOpY}yrX`%$-PJX;YO*}Gp%aA;6ak^|rFF6~;D1@nHrq`YT&RzhH2 zsEV|cr6(nYg{TJI($@zD1;+=3Fv6^a2g60#gntH<-N|r1K&7IJ^zi1=TUX`G&Dt1IANNzN8$|drd z&T7w0FOSRBOCU27povBKl_sRWcrZGy>&fV(m`sJQmfjSS8Yv5$nVHV6UxI_)BVbQ( zunb_#i_XlXuD$r6olLiPxe`;7V&l}Xh>&z=Qd-a}F?5Oe(3zQ#`E ztmg%%%~BgX0>(5OGCMJLDMGpE){$B6ajCf2aFt07VN^+3aRP~p0}xP3nh(s8tEWvZ zm|Sg38#AIPzkW>i&m`TEN5VoMO)bbzek>^X>4LH>?72;z)MrR;@2LE<`d5!Dh{|-T zYG>x6$bSXpWaZ~}eHHk2a8Xh39<)Q*1AX3Poa@~Svc$*3ZgX>B7U2-arI37iS$smg z-2uTe3KZEql&MOcK`~)H;}T0#%f|Ol%N#haD7h>tu4i~`NRqR>B6aAWn);SDt{&BE zoVq!zA|cuq91@x_XhO+=$^BDL6TR?53p3W4DUnrmVt+=%ALTN=& ze^|w3gucowqZm&a%BKK@Rvwir7Z06(R&M>JjbBrdd^%`Mc3iL8KAVH>YFk<3#X}o! zpQ@L_$;Yea4(c<$DkrEb9-kuhQW^n;+DcmvEJ9!u_zg~7zI*Pb^o4euNVy=!y<8qVQ zX2^;ef!b-||E7+Zc>tdCpbl#g4pxSo;1uO;nE8tavkv}d&4l@{k)yfV9S#aSLcnJM zfii(H55rg6sKQ0P5J;E6ok4oNBNI3Dsbbj%`mkog#V4kWz*E1i8tx<|2Y=YcQTG^I!V?LU~W zfBaZmxD{^355qk0a--y9ZMUBm9*-~O-eQIKI4wLDCn4N{@B%6e?r-({CWwiC`l0?- z$A{qDVxK;#Zs_<>@tmO_8J zjG*sOdyM|zDm>3qK{~RU{DgRONKU;24{k8JDJyrBCh*9;te84kec&UnAGvyFW#!D( zBl}Fsj)-t41x5uXRivTS8#K4dH8de8s-1+`=*)--EtnTvF=N$;5vyiY#Ks0DhbQLP zY$2gl^Qx=bszQTZe~-v;Ix{kzyJMY!De2G$wbNH|9Uj7UCR%J}8`AMqr*wRjc$RJG zRD7g((P;1c;!N_FEcz4~>PJtuuJZ|%F@AWmMI9f9RR^;-r>AeiFwUYG6O<6eQy1#P z$)tRDGCeN+s>JM^q?C*-`Cdv!W-4yFrpTwe@W@D}^W@W{6l%l#;jRxCU^GYbvXe$C zJ?U!>4JdPr5e%En?v~E!sZNPcO^sLW2`MQFCy$<40(m4gJ`Uk=DR22F?+=qGWRc!F ztdLM|G>S_g4QG*?^>Q`0YC1j=HI91L5$Iw3>7Dq#yJ5jtBPGp=#g@j%h<31sQWCQV z_!NTi_Xw1{VETOIzgvtL%oJH4m^#LjS<*a}$KBAreV56vrgC~(Xl_hIYG`b35(cw` zAKWVYQ8KcY^}e_uKRPNYBRVuX0z+82k&s>I4rm^1}YDykc{%duIRxzDJfaOk-Z1RgoZ@MM$kmaoB|EXQ0H+WZKO$0PEvGqL^E9ZHZ2Ahv{;Cm-!(rC%`>a2RFM13~p>+rnr#I)$H z^8)19gswSgJ5o~8u@+N!Uf1@R_>@fbTyAV!bXWT|@~niDgZvv1F7>_&X`*aqvy3U? zd0h3;81)`8LNrn8cC7H|vkpo+SH8w}|D-cB3)L`wAx2s07Uxf+D3_>>wg?^vwh(8m zieaaY@Mx)mSu2D`9VxM}>Kn+x)asD=DOyZZ5bop)b9tOIYo{ME>?fgJ$QscC3Y!`}&eA!_xx4_xv2= zO3cYfNy*H8H7GeeEIH^IryH_ltEVDDyRKBSGdUyq*^ z?sCYBqVO=TJMrWb&di`d`F&(pR-)UTsD?N*LqfWoq4JGHw_XazZQHn17g6cJl0LRd zdmUR6<1uupuS5lA=Xm3=1NRUawf(G80v^mPfEn< z0ISL6>Q#{WqD)UnOK~_{J>u0YKdt!b?Bs#+Aw8mOx?KIW``MaFUb1HBiLKeJOU>Qn zc4Kty%je~$UbI+oCFKV-xB~k!+pycJuV$4|eo7N$g3rpV0_LpoBG!*7S?Nh}DdG06 ziz0P9jz|iYYof`}OU~Yrl9-q-Wq4ZBFqoX|8o_pkAx&s_S9+k_PPZrjIe5re6s6*p z@^y?fW2nwm(b|VK-gGHPNwugPzkk(*L7)4olniJ~yXpHM7oL;7Ys%=z#BoxO#jR#Ik1zE6B#1lw@Go23_9n8lCrkT(we zXq3VF;W;YB%hf`S{80G6IUM=r@wLvE^J~V_$QpHg820$B^mxpnxgCZ`s(j*GG}OuuB6Lhy3pXx5T(ZRZd`BaBN!W$-Ry^HRX2&O-qf7 zj!^dm2c_V8axxZvFZw+RS@)2T+msEkL26SneP!lnI!p<90{TCHA?X zNcmNC)}V2H2DRYJ@;n|ahD>oHgV(xgu!;54avF0QLr#4W6|Ft3a?93|DHRn{O11>k zNG8*HFeWQ8F)LFmqW_S6CAXnPfH|aWikJyYN@y5vU(1#OBp!4FwYf}kerC|;p>y1 zugokhEKX0(4v$I>{aw>d$xKM->5fiFO$ZCiiO&r?D}HEtoHH&uBrHxY`#mG3S@lWv z7nDx{?GgE{B(aVhJl#D#sfWokgc+CtW)K(=7?3C^U|iFpt_ekdy8c{O*~L{+46HfJnsHZ# z(HSHz21J?H|L>`~@4nYP4eR>z^XJ3de)rtEbx)l-byA(GS{QaKuJ+DIC?7UCx_u6l z$!IN1_jzIgoAT3ehFzE%N>@gb^E^RTH zLV=o|MqC0+Sm@BJ6LAVrIg=T?4RdylA2 z&y9M|Ma{RyRA`={{GHF}j`Md8;}k@SxruLCuo6mpi`zy5?$*6Ti_x`~kK%N@W_gNm zi1Kz=S^|FQiu%K?aBk^Sd5X8Ayo#5wg#Uo-o*(J9@*YE&Ky;ZFOX7XT=e}x6hh)k_ zcj|@s@`?E{-j6g#h9I%r=)zxS&sva~D;73~%*uQ^U6I=-GO4kAc6cte5UC7xXJ-eJ zQZ5$FN~NVM=4a1OO+?F~L~lG?4aY|M5>pphefg-A@GB*=CDiVU`4X9s)7d`R-8)|i z>PKCE8)I_ETvz=zl2dHY%$2*l{mxKNz-uy@UGbQl3R`|y0BV`(g%8Qa>~ zb#~cT_4@Vl@J(Bx1!@EPZ?u-TUbPs?<*vz3bYi>Hy`xim2gAX%%kAm&^%NS$Ib=1W z)_kp=StnB@1fhpscpZ9jwzZ%p8;oXe$^D79?Xz@+*qA+yU()(yIGmt=;3>5xLqYlz z#&KCPA`gssfx|gZ;U0bM(Oo6rm^a+crGkK4bbqJ92V3Fr9&b|N!>w?5kN={=FI@o- zt9EQ0^JcB}C+Wm$?rr^9x*9%yf@?wY6G>4tV=iDEE>X#w9t|hwuRrUo8|Jf7C0Cv= zmKQtX(&wOx@7#9t!otnlm{3f2_N*@!*Z0sJwRi(EYOdz;@vFSWPRtfH;pE{6xEE_u z$-@!lX#@+nr{OR1dYW)IPR6Aq{Vr?%%X}ujcwh&?`u5gthk1 zYvluC-d6OJK~doacwn#O{Y!Li%xMv4jdSTGBCY8cWG*#Gp$e-N`6-_k_Wk8nzm@Y| zG%0v5Er*kVuJ%+_UOAQ3KG~HtA7E=TBr$7Y&z6W>DXf~$;@tHOt(89b$<5X`xx$Y% zvKpM*%%T@KocFR9HZSAj{0{7n6B6UfZ=zHd=vaM2@A^!>0SQ9M_^c)6amUTi>ZOt| z@A-M=>mKR;RLJ2xeZSwwd|qkR=rG0-h0~{z3`m(`Zf;F~p65kymjgAMC?$<&%kWQd z&5mp}1ndSBJC*fYYcIa5oF_Q7hmyItARu+FHsJy#?IC5bcE5RYm`t4|-ZaQP|N_qUD9!K&}V* zf5Kd0B&IRvLiu`%$tabSl;i8Op9s{?jrrN9>_vafUte$(9CFh2&FO#jOP|a7eV+QW z=R6jZ!l(bu9f&5w(t5W)oH;$3@*`2tci?wXl93*0g?0EgWHe5{{rXl8)A&H86b~6y#sw z6#O+>40(ZkY~nNlCkhI<8yOEI_XM0MNN}UxwyRm1Y!Fe}uKTp8W%(u41`Qt8-H+Lc zMlD2dQQkpON)1j@PrzlI?n}}|e3hhu_-bHNvvi{tquxJDbVENOgPG5Ai2h=&LF&F5 zQz*I*%_?Q(va|jQJKIdesjm;`o$O{y{rhx>P;JELtNRTJ1p9Nc&&QrLsydd}&nfn_ zO0nN_+y$H{Cg2|3%`I@Ejey&A4+=Om0`Sz}VSOVj$Af0f5TSDxNx!E=~xd(a;CDevuk6evazdkV+GU~82uTTqNRwkozOjkwNVZD zcT~7hdh}fC6<%8Z1{Io@9z9~@?>wcuia*_t)-~QKNY6m8fsaFQv z@6c-gVDsrgKgIlXAK-Z$;=9*3pJL+GBs~UA@cPEP(r?tKCh3&QaiVQa_(@gL5`4Y> zuvXhiOb4Ll>>@tLQe381G~Q~o!h|@akkbN}n^wL32y76_@DxwCG@oAk2(^QaLAy1c z9#fwdQ0LWHcStQ+;`yZlHMsP+_RXi7JuQ7ggFe1f@NWTUxTlb7iP^71tJssvNt*p!o10aAtj&kE z#N(Djh2T+QB z!2vM!lQ$yVDYA-dB1Q=!ahsWEv7#2-rkbfJ12qISnLD>>s`#>OPaxBkcKgD8a}sY#|<-!S55csn`>v;;OWn0Gl*Gu ztD`wfzjJh(lyYUqs@IzKFDK{=ia@?Fmyj=P2d$aVO<@dfgtTc$ zLLPxETR7kgA?6GIicO@>Fg#iHDrzw6#gp1g?;nJXc zSm)4=&YO_r9yucU*Tr@MvhPW&i+2?mha9Y=9mmZlJD0{x_u-Yid+)M6V7^=y|%YOJcdXm(8}X z+g`3Mb(tsS%1l*>haxWb@VVWOQMbHPB(8$14D(B=MHbw^Eur@dxR>o38n_;(0t@J6~ z#f|aOQkura2TMQxrVA?A}#I(i9yrw?GQJXhZUXkRgbmsVym9aL{3SJIG!OOArQ$kBx^B!x^ z?#Y*fEAm}w9AgJpjY^MAt{QjnaGF|?j0FW#S~Sr@LCh641xzXC*?E0q+(}p*b7Q>z zCRv}=On_{)VFH{7z4-D?du~=0HU?g_lk4=_V!`1yS`t3e=_LE%owARkhk}@ABR^Hu ziQFA&c&mN1ijACQ)$wB6$+n>NGkEax7rh zdtIabyIKs(%Y+Lhbd%t3!ky&NFqc!0s%xx@$UYh45=p>M(d-H5_?7UJl&#W$>u0oj zo~Auf8gQpzn%m&uRUo>Ot+EQ#Vi;*R#C~8=^!l zcM0k-Lci#r%aZIElv3jtO)Tqpm+4ad$z*>@+(|q@`$xT}kPg84e?oi}xZwL3-G5rX zk0pTP)be)1Mui)tKa!kSew0eKHE+~(^kx8G3T2AC)XYs7c1n)foee`{VA=-lzBuSeH z=qa9+O1}Q{EzpzqQ`y^4ua(PXDr=IST)vk2hxXsXuG7R9qK=2})}Z>YsL;FwD3^wL z-9G`xHCjs0<^8(*wf5&FYQIr>#!2=4lv9BuxA@8<-vSiW(IG>YD_PQ-4ywSYK@P-1D&}11ae@1ihXJM ze7u$gt0oP4{7y{u$t%ofJq10)$cFGZ1fOqUDt?4I%pZ&STazxF>1ZOEiN-0r0u$io z68jJ8$ohrRgx4KbTJkLP1v%=A1^5M+ej1qebNMP-`PiEX|Hqd{b>HBv+=F%*rQ=}~ zf^4T8FlEq!gPRHko5ZnSGHkQftTl$i!Qs z_7fw-TlgmPaDEZclL!WhELjgmr~_HZDV;VW4QYz8$w;UoQ?`caW1&#v({8tm0hwl5 zB^|6k*!C-5G3@>HzJK+#Bc{d2Az9IqlJ^D!^~YZG3*YJA`2T(TzxzYs6!q_h`u8P# z54fGpdvuTPt;>5gJZSv<4e$`7tbV}@;Q@|BXZfM!OR>vn z^V`p1qF%z@1Ul?)d;)uQBpZ3WT5!b#GYJHt(1SW0W1(Q;$3~km6!bWMY_z|xL3JeW zI^(VjBz?~544N*`OCngx84DjEjiTQJ-HgAm1(X6t2NZK75frtr)-0>oz#KAXlYZlyo>0y>DT&`5#<%c@3#=GjkJqqh!oN0)Y|`OX8m4D2o_P51<=^VXUSW_N%YAx@_`rD zU$=4Nb?e3Tn)Y?2(zX6_pk9KP|j+TC~u_A|}=+l~iyukhA#`EjcDEbb~LtfyP7(IuF zJko3-*eB+OAkhwb{w@A|KWI!Nk?JH% z70(;*Q4C&%KcZ#|a4K_qOq72@2eVHtzh1&@ms%)S?;rPx8-9u_$ z?w6YHHJ?ADyRW6*1|H4lkKlZF?YkO2&F4?(-qw81Z79OG@f_o6zVY^g^o)k}ue2B> zaUMkl1f`#9;V`ls1@!TKS{*zpKu|;l_HjOfwb_UYEbyp6>r)io zW80d&^-~p^mjLD5cuMz$2G{F9y6Wk}xy{rX4z zrFnuu%o8+cOexj?YX%9L+Jw34M*MB&3F^;4_wpst=MXkgTgi2whCk-mp} zJ!@h_5r*Ct8ofx29$w8~7o%4Yqkku%@LWp_ga=C|Fsr<2MTnkTSL{6;qgKC0wH_#1 zltwfjvtIalgYarhwoIib6mL)aeF?uem+)cTm{6YQ&IEHIds<1woStld_6d;#1`Urd z5Z}I6<=a|;{lr?;3_&iLph|O$9rS(@xJ8f z-p-M$w>c|rtKJh!GE*olhrMQtoEfh4%;jCFh^yqW>+Nt?m5>tgn9Xu_sM5QTYo~Sz zT#1q&QYra9PDu{ezgvYDpmPAnXg{vINB14=J)$(d2TJqxkK(OQs?a<^`8zl3PV#pS z6J4}-et%gLgJw-9hd2~{)+|f*?8V%k75I`pEATz8S|maAT5I`dR=^wO$ribpx0AmI z2@{7Ua}7?xnW3y$kr%FdHjp%?0_Hq~Tt-k#?MQV#2_2^f321jAa5MaNu64u?0pRja zgwv_<-L={My{X=)zPz=6;M}pnS-0q0Ytoa*xl_ZrknD1V3i4n_s6FmZAEiNdZrJ5Q z7AX7lz^?IRbyHVnpx`h#2X~E69UM%_qNA-2tlRDw&05SMpFd)9#PY#x#+|6f>NChE zzdnUEn#oXztWC_kvX@A&fv;SEf5_F1*w_UgG7mR^IeUZ}!pMYZg{L_G1O;sAax0b% z_-uB+!>NpA0=?CEMsg&BN`n5~fI!TQ6RZ|iqFGa9u$z4;oIyXUUqm1M3+IhLS-z`6 z@6(T}P|S4cj_WoO9CMbyPb>X0_H`{^e9l0lmgc0bhyq2phfBf%^;ynyCv-m&Qi^|xY*B*42H)B&P2)g7PaR$h zdXkTs0bT=1E>ZSLK9m-_^5%B+pu1>10ypGFaf|Hd9c#D-v-*3LxeBQ89MZFC?n$H_nDu1rw(|q2rQpNjZ ztF(T4E|cx`AF(&9;(_C)x@q@5>+Q zzJRvIv5Lko1+k|W?Eu2_K*a*8Zqz-g2U_(?4vp32kM z6Yz)CY;RGXxLd#?dfe3;Cy6qUKszr&wGiV!=j}2~FOJwA0Owyn?jT zdmOotzuqR8kQ7W|d7$M} zyY8l)Y{{x7j)ihYERPfyi8?4W@FT1e2s)Zvb0RefI!+7Y3pj2`0LAQtkbmR|TA?MsV0@{ms%uA5r?ax;iNa3ktYu@Mj1P`+=esH2ZGT&GM{2 z%s#_ng%7Q0nIZ73vCM|RCayI3C5h9Ii~Leb@X?EjEiMkg4`2t>G>nMHSc+ZGNND<_nxQ0#3X`aOhwy zN|dJzR}RffkG6{p*NX=J#HToZxoDa{*ig`V6^y(_SwtQ9JY$Q;aCl3ue~WUl#6 zvjwg1Qr1fAyN}?kw?=NO$XZdK?i5kEuojgQSu5((Z6a%>%42d#&O>Cc&{M?Zd>XD? zW(w%Tw9gP)(8x|9C`HvkK3`#(sYW6N4xdQrlui)>3 zRObABU?qQR8Lb$p4QbfeSd`fPf8zIsns3qa4c7meNOSGz?o7IBQ}NoisyYxNv$=Xbzd6;2i|sDFXQg-D6sxkkk|JJO;kS4*$zN5++5U+afrj zU;$c2Xc#RHhZwgIAy756)TBU;NV5#7cvTI7%B1W`+mo1NPmUd)o<2M#uGdU-cTdp2 z>zu(h@7CA9bMtHV&0bgw$)U8{HJIt&)>YVf_3%EkY?ZO^soBi7j-Aurf6mw#ZKg5Z zJu=eWH8S!In`g1@{B6SrM$!W@egq$^@rJ_yu8}kyJ1(Fw? zPixShY0y*iYe7$L)S&uat?bhu(V(=Bg4av_^;>WvS>t=}(@H;H;82(jhxiQP5RDD& zjDIg58_3l$Bs6$Iz%gGkuRp@a&~g3cqTKRmoAiR^5aFhBG|yrf6z>_%((13C@t%pD zNA+`TNA;Upp3f6rkdVjOXGDF{t)f2Z-HrOBBWILH>#01|hk<#G_8i~g^BOJmr90nNp^eZ zQfFm-d187j;tB=bzxB$BCshg!mo``1OFiAG!Vvk<410BAT`6((i*hvEQd-|pT_}|n zsvYY~=VcP{bUL2MNV)2Kd;5H~W1(DL=tz~zsYH7_Yy>~rO6M%YI~VZ>zU!(m4M=Nd z(v657_9PcKuL(rju)HW5V4tL`yDb_3`vQG?q?}mD2d46yN_J*{(bx2f60-%_g&L}$MJUoq#l2dx;@ zp3wMoV&;N@soL$f%XlCo6!JY<+@9ze^Ckmsb4vCkJ)wM{|G;$Z_K`PQ2n)zS_PF$K zw9@_93eiN7J7LFRAB3hsM=qYJz=c*rtiiYjhaR;A9G=cZqLxkc#^hMUtAuQ}k4OH% zO}(B(!fE|P#8z;O?CPApW+}H2mR+gW8!ZlhVyKw!37aiR*(p2jQ-uBJ2wCq>x0%Nd z3@*N8*z2;#910vKMkj6|9?W;lJOIt*QB12=NeQQu(o9~3{VcxN#?I%&+7KwX*r++| z#%2-dj~}%?#REO*knCl*+8k=9Fx@0{xdGIGguonzXxNH%|0-4Tyu)GN5)-GeD_%3M z_TRbf5r+%yN9LiwYc8J|N+mk-zEsjIB@EaHKgAKM+aeBQu`e`pWNh|2t0LPnZcp52 zb!Wy)`GL4U5G%TW8;B4wEZ@vqy$&da4M)c?QhR`*5$o&tek$tTo_g*vQqMT`0u>S3 zJA>(C1G~mjuKeubjdq)oiv`m&L+#jftbL?d*ff!!I6Rf?jmLYF{A#UkKEE%$|H#3m zfIgU%QzmO+aK4>+3bE|Oj;_fgt7$2kEDsonrF92`N86hz;L?j zWT+CwlKonHsdk`C-6MUPU7&adCeuUb4dMTenGRRfnj0<*?i(1`H&`A{zbaA+g-VfP ze}8?)NC^qCk&aktgk+HDov&jxAIvYY(=@uIF^({2*J5j(k<}Sl)jJ)#Cc!1xcxU>+ zz{HVB^h&fh&HG0BdUf-G{`C2mUUXJKA4(`mlXL2v8gmz8Lx<-kj!ayZs-<(axagpU z{R7zujT_*)>Ht<*Q?3yr#Ox4uW8!ijy{1_)U?y5!p!q{z>R7Cl7Q4FFw^!D8#8XMg z{gkzD_dsoTU*GQ9!0x_1qt)st{Ue!zZ#>P8Hl$=fq@*ALMhz)449^FAVN<)wW0vL6 zexFs2hQj{Gg3&f($`x|f%u%KO-~KRaLZ${zg2A2uLf*pn(xhXf&Za1WT%y`BBKP~l zR?CJ+!SAsvW|P}2E2Ys$$52?#24;*e^(u-t?8DyW>%x5@Ka!x#Z6UXkmve)0rCRb2 zTNRH7Ow4qnpw0;P?rKN_p@)U}CMdI7K=SXekdObI=yJ-6w+)7Fz$51pK~K=X#h>m)Y00WKg^wIqa9Mo9&W5*&8bj z#|S%68D|XNKpwIx3v0bS0l%tYxquS1W>#Ogbi3he?d?y=i8kX0ZDBJfI5T_RrWA`& z+3Yoa!D#}~Pk`vCxoi1ZHqS1n7z&qyXSSQVlYc=aI1UeK(FyMfbbA!9--NATkXM+A zMLi*}HR_Z+davUHK1K2Uea4Y>_oQOIsg6w+yTcptcnn5^H4^m3E!LFd%~q%E_68%j z2g2b{f4OfAMhWri?{GrWb=U<9Ef>7Xr7k+WkT(WQLiDfVTdW_=hOpgHM=?|_jt_cg z%l$LO>4HBFGbt9ccW*BDo;4f~DgKDr)HyOgG(J%+PvsVq!9XGr2quXd)#YW@&n`tQ zOUShWESOgHp=iActoUYk#Gt>%{w|*^``#1AktdfKgIM!zvYS|25esqsDQu2odd7iD z^pFz2V@o)RIgS-s1C6#IaAI09{!9hUbkT;P(mEsy(}i%}V+fV9W4YXDwll!8rNUI+ z6ApX)!Jwa7ASaXdWIyb{klAG}CX;lWLo$;yJ6*joz<(QXdi;KmGw|V9z#qbC2(dNj zjNVt|fqtYLh*r}O#wc@2t@7d3MBw%@jlk6@BD<0HEC#LZVRdVa29O#4))2c& z_eqpN>~VPrkgnxU6Xd z;>#7h^)G0uLWiPuBYf$)g~GQ}|@14=+%2Auzhw}`!OK$#+YEpYxbAcXU4c|F$x=RW`fI1A z2}6{~NcW?L3^c+be7^;(?G`0Irq=O0soqitzOh8li%dMnh}RFUs^QhVh9W!Fs6oG; zm&h&uk!|GPxLYmpoQlQo^hsW#fHSqWP&=*=-}oNN(P{yv`#e@!fJVpE$vu)!qz|u- zB@!_QU05RKp})A$JJIE1*n#5;^7@WJa;oaA;eZHvgi3z8R!XsX?L1;gkU8M|i+`3>;p?Vx1Z%-iCK5=BGXHzX@ zVv>}jxs#_`nhz{v%kAt0<{CJbhtS^Us%aR6u*iTKNC5K{HZ~d{ES5k)<^KkC*ahiu zai)+O&P02B?hcvI+&?&bbWJpoBn~W7{jFGDGX26>GVC(*r0x^!*jgj-Vy*R0wzdoj z-ns|bD0@PEXNCR!vHVoNFp2*Qg~e_sO(+9#G@E=BYy z+TR6sC_*-LR26w1uzOVrT2fZg!_IrzWf>7V=c$B z1^af8|Me`}%PvEH4c95?0p3nyh9Ca%F&e4QVsK*zPNd_IrWECY!KILd^!{_~2gsam zzOTki`1>qR6+EZq^YHTe*%vG?y?sS_{yknlzK7VZxTp7Ve^kBa_&4#v{L34#77zIF zp5t?rBtOp&L?Qw9JYDaK`2G0frxkTQEP?jl$=@&X`xM&qR{lNp9^a$;qwq>7hhUNI zg#3q3wvM)h1kVnr!5J}Qf&qxnv8>C!@$kR^;xMjYI54y^m)STHh<(!Bd;49xcHMP* zuQ}^hJk`r@oSC`#^0F)BO`~oX>Yf*M3$9bM?)bpKjsQHH%VeBFg~JT`UFa!?^ZfIKw> z>uyZ_Pzom6E0MQokHKVEza=3l#jwE_iTI46f+Bf}^R;Ny=PDK*(r{1Du;eHf)4^{r zSO3P&3-etH3;X?HN$JX6m>KKJ+S+1%xW>*@HF@#yl-uB*8ooGDNx2;{55)ppu+VQu z`$rpnM~m1B2nhr*dN{g*5}XtqF_l*{9AT#ffrnjOeXjO`LmKJs9ue4h8i==tnuxpG z=W7Pj*HaE>0QhtyE*_b5W9x(Ai<9NFi|}F2ftDt)U}s)5fzi3fOUu*jR$!`njFe^2 zKm|vPsXuQfUVD%(f8S<*7yZ3I63~a~2YjW|U3U6Qed9-M)bFTmN;vdf+f$`{<6qut zrkqio^w~(@`CqH`N#7IofrsPE*Mmo&#HhapmM!I|U611ix_ldZJq&Fa+~3~s*YZDp-5Vm+>D0ZY4H$WC-Y za(s>b93I2#bU%S4G)k{~p4uD-{5XfdUiS=#zurcD?1Q9y8rc;HJHcu!pi7~wIir}c z=MZn&XM(O{7R$BHpeN%v|B$gQ*Aw`l)9JE*z#maO-dDNqFnP_P=*qfaDbnbK#^)os zhP|1&rdhwLE+lpYKIm{!Wl@<|hSQ#Kx(qC@1bY*sy@hRr+cwU~ygI@U2#Vi5ZJjZM zk!J1jr2cXK+rocKuj@*Lzn^OV0sm8?mZCo0zw!E3)P@=oQ5kO~lKRG5#3Q;}*w>`8 zO2;KmM`$Y0@fKLE1SdKY{Pi}1yRZ-A<5E9(?{&}93b8ou|IF`SZ`+I3_?G|7PJxHg zl=G}=fF2n(uWC*RQWx?_aWkH2c5GKlVV}ik^!eK6oJ(6>VP`lH_JdTJym{8SBSO&* zCeaB^ZGmK1HdMpx)(uONzAfqr#2CxA*I&6b#}3D2IU1E^inSD%&(*&hb3og42Qdo- z0~T{FYHkwbE$E9KsD%v#`>nY>0tA{k*b&MF@)v`kdFlc&i&M&BD+Snud36US=}oEO zxDjEW+H@+nuAH0N)l;4}L;_Mcl2O`TfTJkig#_v&RtOdS-6~(4FOvv7Vpk@v6aMNrkWfWk&BDHoriW0j1ElQ z;S49D&!^)Z8_(^UJ2E6hoDM2goO&34(6g$lC4x2N05~0;2;o4R z`3fjg=3hFMnXhf0>x|D1b#AC-j8Y&JjvFk!JFaDZyQgj8*uhF>IMaXr%(}~c%p486 zy>0SPzS>zC@+CHHo(VV{igo3vyqG!N`$7io_D02yR7-Ktgqy9xvl1?&8}FLNObDQ=0ws`tfzPxvK!?{((d-|OrOa+i_<{6)=decE?Iv~eP9(UAZbod?EE!*bZG3n^;FB*n}bH#xz zIPuibS+OWcmoUW;|M2;ueuu%g>#_)QguNccm^7NgiZzA!EalBV3GVY@-g-0f9~p8q z9LdI_xF=a&jor=SQcasT0W~ldHA?UfRyy6}*2Tu(k&CxfDqAid8M$an z6@NDlTsSp)XtY-K8|~Jl(-CuLN3!|Rlq=?RCaq43H`t4F_HJElYz9x&EYka<7g0SI zjZ%FJz58d7?-8_=-3|l3njTCS24m>gHix&}Vu!Xd==|`{euVbr`EDdgqH2xN2+NN5 ztKUQ(C3r8N;hX)dNe8sWzoNC7kGC^+qPo}SvRigUOPJboGNw10jTWEDj7W3A>>PIb ze9j)Dp*()k=;%e`I1XU!!tss`9rXXkYIP&K#O1i(>?kEYNwdMC*zE2$qrc6BqshZj zr`xjVaNU8UlAXqB<5Sw}sA{;nkypWMK`;8*cIi0w)OBF*g9*{brXi+>Wy|-g_JO-` zN-qy0G;$I8dqFr1fI^|y!+%hs=%`0gJP){o9_64nyf66eK*;*axtm;BcR;3;i;3r-p?DLpAc&lXs;NQD8l*=2sy6M`TDU~wmQi;8yx>&9* zRw|3t@?v$VH<9Y;$|QQp_E0rBe3dtF-)wUER^6xIgOV@AEvH60?57&*<|oPB((_za z;I$6rKgY|H1-9Z12qiKw$k2s_ie0YhY%J~-^1tjss)%{$`us!9-z0ykx?i*RNk0P? z!mgtV)anYt`%pc`k5CYa{w;Df>m)TR@tse^-s#_fN+q?b=7Ri={Z{%vn1w}r1i2sx z2%$?kI}f0*Yna&V<06&3c6xxg7D-#d2PmrN&J`DE$fKUzz0WAMNujF6qy!xyyCJo4 z`m7zrvo{&C$i=n?O4vf(AKrXHJnvBgo`A)E_HMILVn_!K;8<#Fo88FT+P4-5_m7-6 zUp;$oJ8PTF#qDON!Q<=p$SHP*(pmL~W4@&SN((r*s{1OtT>1s42_oP;Dz};{L?=+4 z;)+eKzOzB20iw}EM52eZU(#Jf`T9Y+E;oqvy2cOc3(AMvBW>op&k@x$&O?ZZ&frE` ztSZv@*Fh#9HZjUWM3A`z8Wz~(jvLplyK%?T%h$Itr>%ajL1M{G9TWTWW}C^?)^W*h z3zO2Ds~wvXdW&`G)!Vk;u{3wxSyq?%>yloIC;Eo%R-4H@J;JuZF4D7PB9YJ=-ft$U zwE>rpKwnZ+c|x}d+Dd3k4a?Q5%Nd3?KiaIxQ!9=>V=MT}@R5nblVgWQM-Pon9-g=+ z-kXSaMDag1^M8IPKMHNd*qtaRq1#2FpcKQv85JjOvd={*@{3ZRn^(BnbzlTjoeexPWl$Xrzrh#d-($KV8-~5*z|2;$uvwc>wSGLoyh3?ZQ z2Bqu&k|V*1r)Y-j3F&*le-ak%n)ri`_%@Y%-;=%ydtv!s(es>G?`eB51- zJMbP6H6d?wV4#gFAQO^qkg`fU_rM0^mY)$8IMJd8yU%27+CppF1vkrqbv=9=>>0eRLHi#uohzIgp#oS3?vcg14P`M_)YcJ}t}?Ca-OCGK{|73{?7 zPD-A@9M!ZgAUhMXW&WA@K&p3_sH(qjSMTM4 ztgK`MfvkeW5NOEa@~t>W1#3954wNDl@6pjZA%1c%`%g%oB)rCP9d_zF*21w$V<@Ux z3)_csHNA3U&K07DjE|LovMb|q? zo_~ricU3m`^lq+12MUoBw6eQ?F>!de#naz@zMS#+GqRlVdopsp-Uw()W{N3A`~j$1 zJz_0?koLkCCe4c(JG6N&&U){0y_C1?!Ij`UE zYjE=D;km7s^jRHNqc_xVM-~rk8#<>KD^xyCayF;TJyWmEBFtRjE<+ zbN-S;Uy0{z%a2KC!wRI{nWeMrU#x#j7@Vzgl6t5^Pu2^5k!8jgttc3?@@VG zkhVg9L)eNC@&=xr*TvHmf6OOIl63t)?Ms_7o(`u)u>?c;c3+P_IJY?IwMRo%kKf~s zMnnFdUhlb%fWsg1*DhLUUxzeAQT{D+p*P`?NwHdjPZ(pIxYKc$${-HGCcb(67)1A{)dD~oEZCa*Wq6_!V5rlW-^ zq$$ywvp+}^7^4xKf;A~5wrY<0$X|nD$9ovw8<7L2!HRqMMWEFR5JCPt(m`61nPQ{0 zio=+6$K!qbuKWobV_WY3E-#3LbXa8i5*UVxnzrU<=pO~QrIw_y^kLr zE9tXt>_3I$V?V6j^V4KWPl}UV$QnmH0G3UQJxz8B+Cm6xR$%L%RP5aigS&nTr_S(Q z@iQ@;Iy2W!r_QixJ`&&0@xppuc4Yfa3kx@Guk($G*%5I94c!3`+Hnh+40P5T5}wH~ zBteDkImP(E*=v}i)lBpi<`l6MH@Dj9OA{q_Z!eCC&4f4h*4Jg(pI_i~SyrZTVYSi- z!Et?WTGK?*3@DOYj{(EK1BP@)9HMwCj;h?kIn3Om7Y=KKh`z?8Ho2}vLP{#p_17eu7YXCVLj8LYE^*Ea zvrL7b0kK%F|2Y1e7i`M)O2`v*Iz2cW-tWK66AF3#eji4i)%t@MYZ_z_1Ene3+Kf1A zndXL$30czH3l{jF5Z9}`Bm9&LIn|5I_(Eu2MXlo#ighAA+wdZ|)t}caW^N%b!`1q% z@Cih$2C*V0dR9$l~R zuWss$cSV^$g~$@l%0rN*{?X=h<}c55(II&8a5xelNLO&gqHu|e#kp#Hyx-$-l{yqU zHP0M|H_JZUcn)dSl>P&{{TffH*#AwX{aJrw3D3s=wvt`a&hX(L(AuL5?1)(oqzS;4 z;47+)8ALDjTzEk$tvuUj8}-pZUfNjhrC*!I>ZTFtfxq;;A0e;&ev(&yKYQ!{^7J3{ zEwTpq2|1+MF_-ybdfmqd&zUFaKoy8aeSq^DpGL3$r1^V_PS$zIn~gYtLnTolun1( zo5HD77=u}%0imSONoe&A>;cKiBMze7Eqhwk_z6nr2=zpz!-2GiB|UKCz4c#uPt<>j zy#cVgBm_#ei=CxK_y+qh z>a5>Kb+UDsIHJ$hKWJhH?AFu*>NMlzGSq3d6arSC_A%nTaorqb#2!cp#Q(U2c!4HB z;I;T^Z^900?4YUsT8AU(cgEdpkHc(m*8VukWL11^cBE&E1lYyuz7|gi}%FQxVE(LcTgA#y4mriT-WO z!y~4tI;Z*?^!iIfd57uU_EIESw7tjV$cOD=)BA!SG=UzIdS4w|`@$wEnu33|Yb zbe48a&+IH!ig&{!D5X**zuD)$yI48s3*OycF72F|-c_m=?sogk;wkmF3;A=%=O?}b zB~|;1A`c={Q|&VzctEe+7OQ3QX|LNI47Z)-KW`>p%f{j|&WccMh9%#DyKJ#&tZME{ zuwP$&fgOV{Z;iAE>fx&|z?YEiB)uB(5BT!xIyyumN$o=sih&4vVDf>c9(Yfw;f#je zZ|cAS&Epc=I`z^W-HEP#C3HzBkqEur8@C#!*Z1w}@7vv%8m}0vaqrvd!Bt7Q)}8F$ zafS4ijz5TyLS%s9X!-;K%kW$B2bCU?>M)6=B3-< zvP;Om)JY$az65&}i>MCCm^{VF5rsU3jTITY{2;UjlQeCTKGJc+kBOKV>0E{6DO~6;;y~{ z{&FO9OMyoVr3IP@x-p!)CI7WtOnUCLDVEdQGm%g#6A7lD|6MMocRc^wSPoRDH5tE> z{(;)^GW0L9Q6R;%pkN9SUnCPXmfT*EE;8l2ZU3RLVwz3TH|kHDzu7dTwDfawO?cTI{bkdUNjOd;lSuvlBVE$vM>%b0g_I!;RL&u&jNV6e5F z{wJ>sy+dNK77_D$f)OGv(4uu{dL0ykYamp$+BASwrEj^S2GOnbN*!qHpi9+t+m+ z+SyMhb9HSjmp68)Cvz=fJO!~nUd=|*BiI5Kr=%60>_e(uSh~d4jg2}AbdK2TV+ls= z=`QDEm4vGiIF=0Qv5F-Tw;1AgC1N7V@ss>SE|BkuaR;G(jNF8n$y&{uT#oSDXdOr! zWjyG;(wF(1a~av!h?hbh)A%L?xXfvtd4{L_g3p9y*Ib|TrLM)&>XoDHTWc&Qt>3s} zB@dfib9rg~oHfB)SFQWenW#;Mn^v@G8=YPE|In_#eVf_q)*!@b$NvK%_WVWUf%aMc zBQ)>b*wG+KGvwS^=Jq(I6NN8bkfCyrzXScFu%58*yB5p0ag>#p{#rvGgW)Zb^cGwh zGly8p>2TRuDjcr=m)+%X)_>`6+-NZThhG1n!SEo&7ozc1X_DPY`wvNv>cq}Nui`ro zRi!z=uSCA*qdKvxP?_&4RFyUZ{y`2G`w30*{e-ap3j3J;dV+^_673{peSrvmmHs9T{s>Noq&g9pN)g(Rgf(R&E(K?^s_Vnuw=j@kbNUcq|i(OS_c_wyKe%-nbvXqH-XH zU!+e_r|#o8T}1Usn{^yj&jyipH&6aRd8AR}EQX)cx&iPpI!9H(uo)l|{t1Z&2ferPM^tAQLw%&UUR!0Ze>v4Z@0OyagVLW zecLLy|3+{juai>rNI(mVQB;d*xF6;wI_y?I4!LyL5KK+koFRmMt@e%yX*f`dhvGgD zqLpY*EEq52U>M@HJ($_m#++MG=$ z2QiCegB6fTcuEQW8|DP>#og=<=@U5d8sF*fL+4>3{K1}{XL>Ngs+CF=Ws*|A?l*eA z(rBBe*3jkX2esF^)+b(q!JQxIb7v!^DwyBu^gA5^i^=T5U%$nKT+>p<_nNqSC<63C0yqZJ=r4PqCq9KqjSc`NN+HK14B z5+y45>W$dtpZEisTez)ah7ZlcH?eBshxzdiyUp(pgq(su9N~a3V0Ba{q{mnBN20|0 z@z2r%`;>l$k3C@%5chJ!o2>tav-amTbMNnYq1^jL_GYG+4s+?(Pl;{Z+QHafEOdlJ z(LjDHd-K6~(woV-k<7;Xd3nF?GHR*MrsdMG3+JYTRx04u;a8hjqr(THRKPz z%$f+=H_zAXZ?grQF4y6|hni)&>~c4AW2OT3^)W88#i}5pVZ-1R%s4Lnyu)C3V}7Ca z#HcvmT5ZB+w&1{Dvl8{RoDn7VN#pnovT>Yd1&OvxbUB&{RsI)Cw4-YaG};MaJG&8Q zwt=^(rTyOiCr{1qCxyH<_dxA1{WEz;H5-W99DAoFP0Hdmq5wHYC< z*}101Du9RiN)uJf;{G_lSG6eaAK~|^PQ?8Qey{2`-2X~_pX&(RlVw3#dp-LBJTX;k zgKgDlY0IiMX?US&veW zs(5fIjeB+Fx{$88$DF9zZb(7gV-}Zl!vCH#!KO5_Xtmc025s`^yVU*t8tkbZ9YN=q z)v}7Yl|8jHB1p&lkzJ{$wS*XpFKR#aCt~qwvuXqj+C{ca>4O<0T`r#0x=F1@td zYIj@AcIyIUnRCHvH(T6xYd0SYC)jTN&D?&{c!VrIiqdHMO;PTl%AGh^yQOk3cK_P0 z9~iJ%+!mAFChE4?O%}Hw+oC|;NMq1t->0+d$l7h1I^sk4$PWj%`N+`WimWRj>>S@V zX{@^abfzDmC=z`{u+$iT^yfkQtV_RW**4*mR^_RW);eKY*m+Bb^F;(Ias z#)fpO)%MNukEN&C<@$Fvy#Ssl*fg7Ky#H4WuwyF+*nKN+rKeYoH|wf<;)x2z&W-xJ z{!05sf7jaf&0k}QTnbBs&N$@qa;4-UOXMvrf``WZ@`bQO9um^;e`SgM!&;UIC^5S{ ztos=-z_>>KzAziefPyj6-v@Rh1BY8wKg0H9AqCl09<$A9H5uUv=Huz=#d0|&V_8X? z%i*xdzM#TSTUM^O*37&^g6!VytfY2_-6lN7b%<=H;nr&QZx?edJT Jl2>2&{{USQh2;PM literal 0 HcmV?d00001 diff --git a/client/assets/fonts/Quicksand-Medium.ttf b/client/assets/fonts/Quicksand-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f4634cd7c3f16e8b1ffd01f2ea4a824b3b25991d GIT binary patch literal 78948 zcmc${2YggT_dh%{ce9&bHp!-MHiaaVgk)0*H5CX|I;cQMLMOoxs)z^{^ilLtA8e?o z*c)~qMMNKLsMr-15wI(EL`BHH-*ax+4WK`N@B4rL@9t;jo_l8I%$YN1&di;eJ6A{{ zL^M2`5QA&$>Z@O>dP@kE4eZy0M~@o&PE77BA%>nNMCFx($BwU77i@S(2-hJY!d8wN z+uOV5;faYt$Q_73eeAfZamz2Cdk*fWc+-J{T(6Mal+yC4n zL?-Bj-!Q+esWJbEd-u0qQbZNecg6~S~D@Uv4a zgn#L?gZ5b8h|V!V-H(eSv|Ns*r;X##RH2s6n%%*~lpbGd67s~4kea-3b>zmvX;J-t z5t;_M3GsgZv|V)FvwiA?z7f8#pzgL+xU~yKSo~}%4HSYl!*-+W?Gf?{3YWjCt+;rE2ELRy%}C?qs{~dEqK(=| zjUtBnQA(NSz3m zEZX6Bh;!ht6$C*TvO8aO=yNr!v$rpfF3!h8~%8j;HI7F%i_v*dqWp<8Co{IFUP|*C7_7 zB$c8!{)>{*-MS$ny+6L?_gpU&SVz?LwKIS0IgS$3JpaalYKr;a?`8%UYT<)_dKu_kb8;*E0mh$3)E z&J(~{*L+QG8pRUuM`db6&Cln&m*SrI@Bl~oRzXe#cR(f{miYf(LZ)1GsV;?7mV!TB zTiTK9Qk1h15+yEM0g=>N5u*tuS^y46LV7%p7=4nMC)Q-X2(0PjB~%RBh4_~VKh#%@ zguF+JI??wen$eZs|D>OuF1gpB6br?2)+AkLJ;ICJi$ottl(dKH{KPU)S=*6zF2b82 ze-9+FnCpi0kMu3?g!-6e)ZSv$rzyYQEKO5_`6rci?~~+Tk95>h=Y#hG)DG!IcR?EG z*AbEgX>vO>N!Mq88yLyysce}ip`HobQ3~42#JS>1u~|GUc8IsdK5soE@UskTKQTVq>qyTNvs?FrjX+XuF-Oppz5HJL6d`K2Q3YHBj_W0 zn0<ae57RQs07aVUoK5`s%{2Hu+BZ8BH zvx9pF&kAl2-V}UK@Z-UULPSVLNPb8~NNvcdkW)iug)9nL8?rv+`A~bPGqgT*Oz70m zxuHu!*MzPQy*Bjy(62&&36o(}VN1i-hFuzVUD)kmkA=Mu_FmW*VZVlJ;Zfn~;l0EA zh7S%O8$K<(E&S~8OT%vrzd!uR@E5}03jZYh=ZMh}H$~hV@$ZP2BHoYqDzY?kUgV}I zd(>%Bv!gnqR!3bNb#>I{s4dZs=-BA2=z{3}(Lj?Gzn5{A2#{BLKa>h8*oZX$J&MM~!=VWJ#bFuS0=f9k{Iv;U9<9yZmzVoZt zs@M^+lVj(^UKP7P_S@LsYn#O>woj7P?lt*14{9-RQb2AvPgB zp?5-M!j6R36O$7sC$=P>k$6_(C5hK0-kSJ*(uAZLNv%mMlFm>1XVOhcpC|p4bSya} zIWaja*_&LIJUV$=@`B`L$!n7@O};Mq_T-0>w&vB#&~plvtG!0H|s!luk0n++p~Yn zKHAOE&DkxjTVA)~ZUeeq*=#_ZZM)XpfaW*7dle z$BjMi?it$C)ia}KVb6g*NA^6u=lq^ad#>sE&z_rl-rsXu&sTfy?)gd2?|UBU71S%b zS4yu2(;D+}K($}B1?;W_i781g$tvkpQd%;gWN^volF21AO6HYxl$=#^ ze#z#Nhf8*pyj}8X$)QqPY1|3_g3`&Q7nHtG`d*n*S?7gxd%OlDcm%m(oup+7= zp(4E^x1x7NdBvcLNfpy8mQ`F367q zdH-hy6b-m_pc+^(ux#MSfy)PO9;6K#G-!R5tO}``Q?;YIU-i?~FV~dSTwilX&BL{h z+8gU+U0vOVx{vCI)!#5Uc<}nczYG~YWaf|yhCDdr<)LC|#n7gqw-4Rj5Yo`l@Q;QU zhjkxz`mnQx-8byW@NvU08vew zAN9(p-J{j$u_UW-NjD2nFdt*Ny``b7%E_ht*xRh~O<9d!O9yfH{igBCA zZ5{W~IN$iP@h#)882`lh&nF~J=sBTz!i^JlPWWWP9}}}Dj-EJa;`E6ZP24zf^Tc~5 zK0NW`Nx_pmllsuG9#0wq<5MBxXq3uVo8vI9FJhc)7ehn@#%+DXD!B?h%H{HUd6V2C z-Yn31!+oavJolyUE8JJPZ*c$a3G+mI;yuY8w-Gb z#OX=&qOe+qt* zc_5tv4>Xxk4wN0Z{lMG1E(AVzJ?$WksPiR}UZQ6G2S#5{*y!MLro%VyxZi}|LY#tkpodmAn#s2$xS?{V1>Qc2#EmuwI zDYS|OYLaSEQ!obGp`KCyQPb4F(8kj6+}I7Rs$LAn_<1bG>iSr537+q77k7%g#Dn5# z@q+jmqr1<<=i&#oQq5Fnsh3rUIwpRRG14iMWCou7D`l0emy_gaa+;hY=V9EpQQjbL zl(*yge=Az)JMshhq5Mp(P&cSE)k|u;nyPMBkE=V?6Y55FwfaL{qnwx(*{NF9wOX*+ zs9sQmRF&#f@2IO(qZXnDs#x_8)u4u|VQRXFg|!I9j6@7(CQ?L(7=ZRvg7N=UF89U@ta=Uz1?t$gmD_k-ZR_a%gAj3quj1^fjL1fEB z;la#Vo=g!vWSXdw#iB@NiGG;lsg-4z>&X@kvcDK2`-P~+$(Pu_sE;XL-G#sxV%?9ChrlC$h*X|@=@`O zd_-)Q4~viFo8o=BOS~kvi9PZS@g8RFK9sMcO}r<*lpl$&#EZWa&7+r$&{e(|K-A|94^ zibv($Vk>6Do|8|A=jD^)Kk_lLSH2}az}(oU@_n&izAHYFyT#Y?V{u4+C7jYO;$$#p z-+UqhGeeP>VTz)eAasj1@f&)>Bbf9212aHJF{}8y=r4PVfwD-{VJ5Cr=8AIJT~x>( zqL1t;%4D9HCdY`=hsjw)lr!EiRVlhzsQ^@h^FixC-;SSIbMp zHFCY!ApaqD$^VGg<#Xaq`GR;`z9im}JH@;5W$~7LQ5=-}#W!-F_*Nbe-^)+cDQc{m zpvI_)>I~JU7NQ?sr!G|Is`J$a>O8ec-K=I{hHs0yTiv7XSC6Rs)MM%a^`LqbJ@xDA zP4sh5s<+VBJqKHcVv10?7ju)Uwto0HdEflTj#fxvl?bVtQsTkq}{2Os1{zjbezY!lC=OvAVZQi| z{V&-+!2TZg-(~-G_II+sgZ*u-ix;$u$J^SQTg8?|b6RJLyA~}fEE1a+EuOJR+^}fz z!bRfh6)o*;=qE@oa@eQYatUo9KbL*z1$2gHLI{_{zFxivhNIZ0^%6-dC-7;lLZa=G zAH#kq``zGc=&e%G?^0MY``PemrGVyhL)cLpH}5H47Gfxlo9D3GhXmaaRDr*+J&%7s zZLhY|`ftJLqeGjiO~MR*u=)Z21L|$GsR!ZDRj1+amPgSO7r+8PkG_2js8bHXpg%-p zVEp-wJSe}F-^uUg5AsKhMt_!vpc1oWTN-Cu^Wm7@Qt{f^@ zg^c0kekBSAjsa0e%vX-71jsjG!+fMUSaJ) z_EC{oap?nGIA7}nQm1li1$o<56ylCk5gcb6@K}$4Z&EwN_oG{;4ikSEyUD$`GzaXptCeM`N_@)MB+bEnahJ30k6-1gWNIsal%m z=Cu*ztQyq}R8EVUiFJ*6Y97{67N`Xxh%6wuTBgnt!5GzCg7t`hVZ`M`AM}}sMW6J& zNK`+n!y-fdh834wluGAS!W!wavC-;;T&5;bX)s6UFHIzJabh$C2doWlEo8n75+*&# zhMej7>0LNl3!-!x@ReALI21xFH(f)d_=V%?IS=q1G-%}*w44YnFleQNl2jhm9rr|y zYQd!D=CBggpW{k3B!H^j_X+N#Y6-v>r zUKMgzqD4+&es%6i2eZKumAF}w^dKQ=aw0%Sm)UrOx{fiWpWTHc7s^jk)hQEKk#JHq zg0>4G5;Ln*JLC)WBvMYJd-etMV5X%OPWe8DQP({fcLkO#gwv2_o3TeCb}!^@L-|~= zDxqo*^y?e-A^dOE2k<{p@5BEzAjUq9@iE8P%P~IU7?1<>?JH0;sk_l)Rzjl|V&vA0 z5%VP2f#G-t7=(V3tQSUg2x${%@R-gcXUYy0%`Fq{klLiIhd&RpMO$S*31dPfmJkfO z&G6?iJV(tZm@(ZrPB-zBRd$6{UDyAr#pxQJYG`FPDB(GX={cZ_1Z{((y4P*0PzOOzU-=3sSp7VO@9aNiyCFa6bEKzYim`YGtM%2h?Guc`x-gE@^#RST$_ z>aF^y8bH~qKvk$}Kv|f*DOXj1GF2~CrUn7ZP(4+t8VFgW!`k#vC29b;|61u~(`$39 zI2HFTu!H}`6T<(;zDtghQ&gD! ze+BFC80zL({B7bedeI>6Mcu4@-B|l_@MOJAUN1qL1PhT7c3!Q!&$KHUNOmbAMlm`1y^OzEXDOP@c3u$bumdR z7xfBP)8UD2k^bpZZ5z(-Nu|J&{Zb23p5JvkBv|zjDtb-hb0wFEX^JMe^}ZwW1vT zFmC)i?tD>*_SMzR6a}yg|L0wcL9%PeIe_~!N4!+St=H29@@A_CuK$16 zVV)^XEk+)H<_3U&^fqv~`o5#9_y}{1A7P%9o$r0|k?#k%pW*I@`&4%v2l0I0B3>k} zpJ1+#?%#x?_%F$5jINLRoyrnpOecQENDNLo>FPTQxCdr#2sc#z!nlvbA>SeGO3^?L zwpw>Bz7H+f#L>0Ew^y4K5RY(FSN}KN6!cAhlAm@6ypXQwt^jkF4FN6#a0uKWxc>5= zzPIHEm}C8$PAw8?a-N9!pBzRQ4gXb_ialh%oanG_lKOY^#Y|h?@eVrE`@iB+L~$3o zdBUy!#A%vH)Aorp+kRXR!%aiGBDWZ_pN?6~(?y&*9X53`=DwGq@9&MiEE;w;OGKz% zq6#|z%kj)!iK|z60aLuwFc;v%T*L^#gE5=gBs`c8FOmhqjoHnfau{UMAMXFBcnULx z>K&9}ugKSe!1o8D0)2;93kB|=D8X8QP&pXa&BUM`Pjqxo4l57(?-lG_`Up>`yD`50 z0wcCM+`ogB3pn{R%J(hy2E770lTpUOm?gLldXg-n;bO3#u$1ta?TChp5i@8t(KiA! zy5;2Xh*z#n@Lw5sd)F|m7UaVv$Xif9w?MX+VW#^s$aW_1GlAa({Efh$4g4z9#eR{4 zI_QR3;#9aa@im^)KSKS!ff?%85f+QOB6q3C!3s-`g~!v1ROq)nB1YQ@o*#f7wTqq@ zujFbj+&e^;mWy?hM$o0SAL0pgKh{QW7ln{RZ_Gd!;<=*0_8j_qN>AfM1zU2S$i+NU z1@-OnL*OqHAs8Qp@wn`IJfqAN>1wp_a6gUpGc^(Gl;OY!G+qlw9 z4AG$QeB(M0SDKromGrCN8sI3LoSDwd%fx%-RmkUg#Q7HW9gEe2btv0RxG#a<16`bq znEg^JfRDjls9xuccdS92FFtp|9l&nwtf@fV?Q{R_$8^ZYukqPJ-c*ZCFKPfB12^u zR{J7kBv#m>uqqbK>zA=udyB*F+{+ZUf% z+ph{W?+RSFskjOAZo8WR-YLR?8Y$E9)@dkdK*)Ay{D>iq_D8RmtI4 zmmGv!dQSf5)Y-^cjl46J1Dksryu@?*JA?#KGqQ0VjT@)P-~ z{0zG|zQD@vm+~u`O~<_2d!mEp)G<5uomi^Rt79E8U}haFjy$(6M$+s$R)de5Ux$?% zt%AfU{#kbHqYqaRDiVFbGW4fo#Bvp*oZ?K(3CCfk#-$QeqFAYtRI*ADD^#jVQ*NF` zIc`=%+yqN^7UouZqBnj3>;K9ih&i7AY5>;d2dOGmjTxOuVwI{zf3_Mn?i|bnosAiyp;)mWriQB#Y9w}mj>anC z7_1YH!}|XOFbj&rKjya7lu!EtQX4tJ6 ze9Skg1*(--8P8DdY7urL=yUqC-(dyz7p%k{g~0j!bFl(R>yWe}d6C#Io)OoJ8^m=1 zYk!Hbp2@T}gFOZpt4pwp;!;7ZJxY``vrtFcGnT6G=vCR~qQ3^!s;^Cqln-l8_E zTk#&l?dlHfX1I&jH}A#j=KWafr1i~*FyDR%b7+Uv!&vov6sw+()7uT|Nz9#X#oml< z=*Oebue!zEnDw~@R_|uZ@v(dJQY8Z(vvMbK+s~hBaC={RUfN; zm^nJYE9;-B&oO`Wr8p0>%Nww={tcdZz861;$I)wDDl#ye|1azhz5+W*8ZpCIh0)RF zVk73SzZ2JrYs9VMYRq&7qyPCg)~WQl%tJhz`Kvyki9I1l)iLY<@nMCZR`)fm?+0OR z-=PI-Az0z>vQ{J3qsOWdmte2TZd$hy`?WZXDLxYKix0$JvG31Taj=IVQ_I3Gf^OJ5 zkc(Yn-L)QCPpudBSQTi!wL-1PUNxh=Wl4);aqFC-x~e+;T3u#b3yrJSxR%hhu&Ab1 zzpvtZq^mLRjdWEN#(fpX_ZAv-s?00XEA$q69aRe&o7&r29aU|!+FD!Yg;urCX`R*B zw78?iQB|j3nYF@-u$rbh?M;gp%$(n{EVQP%t)sE2sin1pb114QvDY>=5+ROV|9si|Y0Ki)u>kbzFRVU0`A(cC{gm8lzM-2KP0FG-`BdcneEH>$>@TcdLa#S;@Nv0#3vEMYG`8zW zy;WgDx~3_r^OmTg4fdf{4Ws7jnVPrIV9;xpkr^$jt6@B9rphtYV0fs`pnYh^ocYZy zVWa?sB~^vRg+*ZvT{A2!D&}$_n{xYbt~~qj0KpcsU=gd@HXKFK`L>c692Fa!l$do? zWgn@N8W}*UL>FvPNvTeygzKWHuEb!V4{InGsW!qZw7S+=_E7<%s4dciYK>~GH5jNh zs<+l4S*w%u>Pl4T^%`|rY^sByE;V&Qqh`0Y8yZ+^6r;|hX2hyB1YTDdF>3Z=sCxV2 z1@jvhvoIj`I>)F$Jt;L(mvUZ(XlY@i7R_&5G&`VWlo*stbmjJXYwTlmfsL^QR#;SO zl%mMsy3{B|k(ooCeQW^HGNbTiWnp8Ft7LDHA*eEgRGC4d%)s~287Zo$w~d2(+Q$X3 zVa6@j3*;>_#8hS!qO8t7KCq68sg4T0XeZom>db3d(0ISB>x_)+4TkDW*&9Ub>LSLU zDC?p!$M`^5msdH)>#80!o{W%vJS)7Oae0M(B8w+%qF)>#6PxF>w6`ppv&cSiR(s=; zmaxhGKs{ZBQQh?=_Q@PYN7oy*QEZ5=zQR6*$%jrku8sHc+8Zr_p#Hi2!oZa4gsKfC zu4X|2&+P$vZ{%BLw2vy&VjJnI`snGaxP3tJ3_4Zj)ewAPv7^xtQlnv^8~ql#u_Zud z3j2gL`HLUgWEI5TY$-rdU6H|Pp}|n0Zjg#<%Iqy%PJ2sWY$H~+QS2In{ThSK8iQJm zUTkk+X=sa;uOT6$q}66g%N;F&)m~(fEGl)hbTP%c1@V^lvCm?T!e;qPN2Cjjyv3oj zj?2wkWSi|b$<<-AyQYCjF163G>a(y&H$ITR!KJr8WKIF?@WIY5oqyAU)o={NtX6a8 zI_4Nfm}3~{IhL*#dW*|-BVDE&>A785fcY&CpEs+$rKNR#V{7xACi{G@MEm>zxfkn& zFDkCF%|{7!PKsGl&@F@4V$-%3+gtUv(b`BaIk&ehoZVt?4Io#d%f3jr&al#^)z&F` z%efhVvT4ftXf0@fZGnO^T8d@04JK+04X8Cp)*2*r{erbNs=e6M7(=6K>Vw++7NpiF zN}Wl~h*fLoU0qQ`+ldwgy4x10N~K2XQqBw3x;m`w1Z!#en8FBpb9_I68P zu+~N?iVUtxjZ&Dcr?lR_D4^+;8HFz^4_kCxZF`FhL6sS#$_ysU`q(M7YEi2TV+^jgN-`#S{}66FXK9ck$QuXI#cEb(YpGG#V5*` znrEPl%aO{k(u>(jFSazlsII(^eW|XAOZ{R9S!!A7rMi_~?hn*8yTYjE`cnJyKr3z3 zLa`yT`abp*Og?nQam~I@vAwZ?HsFOdas&fr88IBr-B(q8z)f{|;7w8BO>y8&sdYnU zoo}KW{UxwM(K+~|;-)q*Brvb4K7k?C)(!Ond=uGdO3VraJv}U}kp&bO;O7<;j2olV z(4!eW2j7Hp_rYM4zbE1Qutu&*hV8R-)GWUUVSj0W&-my7Tg(WOFBxRMiSk=zD-f1f zFMu|4+RPxhX>;uC&*hu>HX!DP(2mIh@^pwcYX;-7q=12rrELs^cFczLWH4lA+v0Wu znzO`+w`k5XJ>DWbSheb4%N(4#phs+-V-O_W!$6z|Ex2;Cz?BUhuB>#pa^u348x^iR zbikFB6IUMm;Mzy$nKp(p&kPXH1Q}eGH*Ch@`SV*k7!G9< z&0yq=#-@4xTi03&{IhZP~lK=`9LXDyxs z2`p&yM~byj$3?^T;#r7m@WRm;<&S1x)Y8<}+RP;_Dk=_XS=506N=J){DRVUH1<_?u zT^iBUHovWP0V=sL^?|O}=mv2u4Q^Smuwyw=a>637uAAOMeMnwdUCN`U;=(e1#HISw z;lcoXp8&YnfMNS!|MmC;oAC)Y;}gv78dq)uxR!^oMQv(ZFe8LJ4}yp{gjE~#Y6`Ha z+`#E=t=M=R1#bqvDum5vKOEqy*I?eu(gt3C$^vhy_$JblPGDFG-#EL-DKNY~;HIc3@J8n(CQxPp z!CsxPUO;akJ6^rCMo6F>ymbKtiuKI6ZoRtB7kbTS7{l&*^~WOMb@6-k@iW9s3vRss zE)**|;{?BFA|mzoOfV0NAJ$eij-!M&ucaM(a27PS&lBzi^A^m*PE6XxslNw7Yf_Te zrLd$R?0Gg@yE>#Yv33!OIb1q>hxR1XPHBCwH1VLzM{*QuZ2KZo^NDelGU ztP~Hcx8UE#p(`*S4*KdD_)Y2-_^+rN;qS%_H05H4|D^gF{@bV&!q7hXC)FqLpGIDI zw<4zuk6gaHqjdfEx{m_2%qa zIIOQ{qv>a3U7E{jmN6OkdO1aQFkrOJtfO#;;eLRF=4I`LL+i+T6Ydqb?Ql=PJ&f=> z;BJQ72)6<5GPsN2&V^eAw+s&YnKd77Cfsy5y#10j4vuJ!gu^=uS^eP3P$oy=Do;(Z61eD4+7occ{LM_NaiJ7%mxX(gASS_7{80L{2-%wcDEuuJbe9EfwjjdY!11oO zaF<&U;V$OT^DW$J3tC}89TtQ(WaK;Bf`}KL$_xv4ngva;pwSl8U_rGOgw|(JuCO34 zpk8n}=^psWRQ~ih3yQR$U<;ynisHGCnmG4i3;F^0ui-v*?}fh`?oBu0USZtx@byr_ zZD-sQ@E>;HCq(8(KzF!rhEEXV+#4+DG7GxMg3h&|RTi|&g4!*J@|aI~xMy0p=@vA_ zg2q|UNQQ>MueNagP)f)O_hlATXhA)I&*o5q+zch+e28$|+2NdwvEw`(1Lw9v2}(Oc z@fbQ}LV8-peRmucO7SJ((hdlbwufjl^e#iM<8CKIJ1l6M1yShZR=fupx~EI%ZH(Il z+_hG`D;ZjE#`Cz+*5Q<&m1#>np(d2J(1biT6H5Qhgwp1k5aXIDElvwEsH9D@pfMIS z+=A*YXpjX}nh^7%(ad_z3z}^~lwt;_IIRnA0^>$^!8KSo9jZm>063g2 zWkFsGB3v&kG{=HG7L;s3aSTPK2B)f&qd27Uum$~KL0?ZnmI}CY6*87Ic{fU1UP3ktydInlc}5CPULLXo>}mv!Ia{1lvY^DDGk5Qu;9jyJkRz7DRdIq1hHhDcHiL zBw9G91%+FX-GV?q`3U8ae8_^nvmjV9Jv4=49N>6+P^0^jVb79buMB9X1?{jP;BZzM z#e+>V;yq|V_gK(v7PQHNuC*ZG3@TSzxb+sa&Vtrh&`Jver$*W(7H**h&9$Ir3z~`) zlbGi*7H+r&)mzXY#H&m$fnQ)jd4MumLaBgU3`JW|s0C4|%?f2GsnZNi`ptxrrzZWB zJPF%Z4|au;pc^OP_L;b(4+w($iE>CfnDjPyUY)cH@QW7otOaegAmEZ7<#<~x++7v~ zT+(I^y}`m=Z9$h?(8U&Xz6GteAn;;PSz+NiEU49jW?Rq<3p&k$CRosD3u?e9r3aU| z7I_R{sKSE07SzjvaxBPWLCF>rN0f0FnbZYJ3TB)N3{BchxWuF2;Q7SEI9T`xxUU)d z)PnX}&~6KQ(}G^Hpyw@Uy9I%=L64v(nDWCG?mi2;!-S~xfQgrzO&oKzk#QR=++~0+ z;<)Ep&?*aBW^4{#_- zq^C`I7ja)_+|Gm@sRI(WB|M(+patDyLAP1ZCKF2DVL}POC0xsCue5OMEohwut+Ak$ z7PQ2I7FrN^G3d>;aLp!^ya&)e$}RbI3j!{A8{>$c9!m6dsNRGUrUKGSImv>?SkQ0_ zq7-_(K^BBlEe%|W1r=COo&{xEP%6sdf`lKZn$az0LNx9}xjv=>H;H9$!+GtU1i5~* zpr1@AfkF>*=;vK<`xy5@7u?&7+XdW<3_WW>TP^5O3)*5ql;SQO$aBU8vMl{wV=Zm^n(R`Z9$(} z&|VALjRPp&B$>v;I>y5;!ryK|Pgu~y7IdEl-2n)e4-y&;Xd^=vCKSKHgj~rc6n~is zaf*vLMWlrbHlg^#7WAnFoeO9crHEf_{Jhq+j(*aG19|wP=1r4zv*i9p} zAD}XhS7_m2360Qf3vydfq6IlEh;TX;*hwQTtfc`F-^@!Ktfc`RG9l)a)5d*g;^Mxv zAlOYK#U2ZK7Y9|o9=8+z4hy%owF++Qy{0+VmnAMa$6i!!>-6frd@{78I{cG9pg#QQ6{{MoV?-Y6id^)WW zFy8x;GJ;kGWR7+h!$&Z?i`oQC=P*g}yV4l{IQvK8+wpd##QO;^G3GYFo$3p~F_=XL zH7%U+m@5Zm%;HKXcDWP03%&zy@PTJ78NP;H>{2HBa2kVD>OS~3TEjq0f^*cv-~==0 zfT3rM2Pfh?ijOxVZf2iWY~mHo=tGMLgZXKxl6(Vz_fQw2&T7Tmt`!PivAM&T*xpIeQP~D|Yc3!!9oMjapA& zUg6b+UA*3~i`N?-6rB{4(~eRkha1&8_}_A>Z&_9cIn~dUJMgXKYYWI{PV8J3J4^Cg zqJvZBDEBis_m>n(2bd)P1eHRxF}0UiuMTjkGdR^tEGt+)@SjZDrRd!{_>A|`ikI|i zi{KB_&LNoAqU12Haj!fEI81SA`9yq zQkE&q?*orhevs-Q`CJR-Ou@@F=v8+EKMe0kB9x?u)kBhbmC{oY|FC`VvzhZEPL)m4 zkl9SFh_xk)>qRhyiWMx|6)e?dEYB5Or*~?X zP^hdRpW=&;RR_Ubx@gW3HW+lAOy@kV(`&dER!g){yjeo2R`aS}8?O#7WK0|Bs%Ycd zoXuJ~nAiUnF%RpsQ5*_g71OzvJD74C*K!-_s#wRlwCU71_oqm1ph@kqUE2h%(s?~> zxf)FvuHXLLM*6eF`qRpytl?JBpC#6xTLG^x;q5$<%vSPc2FpB?F~4hzfvMD{GoD&p z29-i4b18o3wwA&4Gq|lexvh2M8qd&d9G`4dI@dymIsiDAc}S!h%<&m3pn2rreL9MP5n&fv6ePV1&MY{a}6{s^X!!4%v~p@RLboN6D( z+($806vy1hG52wtQ4C*U%Lkoi4Xqw;e-RJOwn)Yh56!gt4xcQ~Z1x+8D_P6*XE9e- zG38lI?Q{+u#G%a`+RQvOYwMW~@!ZU1Z`QCvEU%!n>TIsZW~QK9{$}RHORLDRKV&zG zY5f>5*@{%w6ED;8;@wfQLZl~NPL8 zbh01EtYkW)81o3%>8G6P5stZ*c*gtwWKq``80fHAOVSf7xiw8AiD5?qf&c>dvr> zHD`{EG^dg&SF+|5v$nWcTPiuPO4gG~){{!spJLl8q`F4)!S79FQ9&B@6qU?R61Sa7 z=Bko4XAVpLZPpxmLmn}ihYGIW3YJC%>qa?C@*FOE1;;Gsm>tZ?DyF}T>91n?_cG=6 z9CH=N9L(@wg4G5NeU&hH!3khf7_{<*nuN)@pws&R&gr zv70oEjU zY@{(aeSa(w`%9MKWWr@)6`4BnHDmw(``=ydEu!B@!SG5QJ_4$Q+>$Z)bLzCwnRP3b+| z5K%4!PW=#g(^_C8ER+qR>V*3Z?kBi|aClCV``|u+dm9d;U-=^3vv6DC9)-iGAMdgY zxf$*TxU1nVN4YP?xpwEnt%h3x*MZkvTXCHYHv{f8VUrUO7q(G0z(F=RH9%lQCdf{c zC6qaE9=K$jm@56a6*fplEfj^9&0B>NwiQ_-T{+&1@ z9lMs8{&Va@LcsjSJS=B;5&KWE-{gayAp-gPnTO~2>EeC)B`}*9^BTi%G5$J^`5fv7 zJI)xsPf5VHam+?~su4FczKO@Fudx3%jeEpX9Or3$kzHto*|e?Dv#&bM%*905O^B4z!2ulv68{pkC_ci2K107@-< zzcU`%hie?czL(*kdGzx=?fdk^bR2TXcZ8#K@qF~WZTx%(e24vM{g4^XSCl~i`Tp>I zWWvbzE#E%=?XH&iO*a*%cbqy7A*Ybks~d-OCu z^bfwHzGG;+=p_PwDEHUC9SAk}^gWK&a3C;-4uj&COq23KOMu&r5KEJMj~Ho!!Of4p zT_V_|2z(Ucu^a*0C^gZ5gUv8wajGu5W6=AP%ZU;@5fhlyw-L3u4t&8v5!Wd94nUZC z#GStsZ*j;*-{r&^;{WJd2k2*L(_!CUlO9^Y&%T$yxs{GWxHOnY^Yg)F{1r3~`>hK~ ze~j$hNzz*SYUTr4Y=e=WwaWJy=M!Kt`MxtC{^!2$%{$~2paX%h8Kdj<y3~i{9|!8S21GXgkZ$#kADizUmJvd^wpvUHntAu zT6yqRK{L+znT3D0n1g>eJTI-qj{Dp3&*gK0^2CGq_YhCx-&4GRC*ofCQqs$!0B07y zirikqzYynGy@x#C$KNYH6nl^}eH98PL*d&%<>Daz{qSV*1Gu2?KMaugHWW@hPQnRl zQ}9%lf^X?$$Z~ww2;YjrIa*aX>ufQfYmHOmC^BkO0 zb|y|Kn}=`i;CoW|>JGjrg%SJhIEQXCp5-3G*MPQ4oMVJ9TI?6warV|{ctWACOTUCO zr6%LO7$wSBvNo2ijU{Vi$=X=5Hb}`0nGeQ4ge4Wm(g}fF?gWP963%joV7UabT!L6G zK`fUbmP-)JC5Yt`1i5^SI@^bT6r}SRYVLE$$iXslu#93@Mp%Q9F(Mext4=(fk)#yM zh)&q=BVuv(cO}kHBuNFcjN(~F!7QU-mQgUvD3oOs3K=Z}g^iGu3zE74@QsjHD9bC6 z<&^|^y@jXCxABacEZ>3bQXsnza026pkf5CqU6LHZ9W;tG^v~r; z8j3fS@DE`P4Pp%qVhs&q4Gm%q4Pp%qVhs&~hSrH7oW)iTO{Y4D&DJ?W9PcDbKTgvZtPq)cCH&c*NuzoCV}fFk?SUy>n51% zCdsH9s+DA}l~mT>Fs>W=7D*qReo1xX=DG=GEl%ee@^B4ha1CX04TW{7A*z)uu9a-A zm2O-sIb17>YbBR!C68;RJJ*VXYo!P4bqLo-3Tk2{^`WAV_AdUfXxHMKbQfvU@vXX4 ze5)iH=W^}FDPIrcbh6cIuJ*1Pt?F@#TY<{Pms@_r33Yqqn>g+6d7PPdm)s;b$kq79 z!*rY?I2|Vs4v-bnixUl#*+t`=yyJMrXP$;8WZ>a6WzD8Etgl8cs&T$!E{v z+_M*HZCAO_^O1iLCI8s>rA+o6mT&vMSIdD{z#Ntzz;bJAxQLBL|D!ER z`I8aypzjc{oxmPeEx;;Zzd*~PF%Bpp^-sv{W8Xo{%7juZzWW5R4j>(^=q8ho7?_m- zXAb205_kp&;QIjHw{qd@2dTaTY7$B@86}svJBSwMhCdi?E!>^HgNT>UB~9VDPb2Pb zrgK;&fg7}Cotp1Qm26NX3M8Gwpm+$SCg>^5ZEb_w4)-G5OVBVX=^v_*OGsrutTsT( z!NC5mrs2fX>BzkaXUetsenx1g>cC0V8+@JMeYwa`XW{(c^Kmxo1+Wbcl=%;;Bb@6O zs+y3l#dip4{y-YcLMa<~BxxPyT<9&bP?p>EICr%P=km?ONrcPAT+nO=&1%pbsn&}D z>N?tSfD&U~2H(+3>yl~+Qne!0Dx|`f$Z+1^1-M@?W+2rP*gN8eN}zM}BRKj5-0TE@ zQ^ChHyhk1(^tE@DpBumBtn=5nd@p)PD!K|##ky+&qo7|*qL7hW`BRM7#|fClaH=E z{Mco|!Or-|2-UB1=E#v4&2w(rJbMmwUI>R4i7(g1S@?@Ayi=SlPB-zkd;_10)j{Bm zbnkI^yK2?Ubh+5Yv7hO7P2c;3^bvSVR!@)8+ZLV>?!veG)>!!uIw3p`U(WfD8Llli z!W~+SxI!da__Hj0wAdgnvhZ6idW@&?VD`6#!>K%GI)8b(rvLtg^bs;oY_RAbI3e66 zPZfu(@Izg~mm+^E&r&PgU!DZ?GV~U-UT-Z%I)@g9(sTzreziy#4ij zpM{5<#nV>&B^Evry^BBJ!3N&0#h-x@l1T9NLtn8SBMZ#S*Fj%P2B`7`2fon7>YH2A zMSbzXwD>p|-pVg4EB2B;+a+{a<#ZpIoY&i>(hs>vtK*`f)ymLn6fh#YI62xG?1*+m z#H94>JS_?Oy`#9uQ;^}ZyFyiiBvp@z4hdF^byZ*Mu!lz4Lh@4*lfpwBF_DpJvGVMZ zBWXmhOK&oIoD_^kE78s}bHFt7!wltm%SuafvNDNLqY!`E25VD`($b1jQw!bh!c7LwCm{#CJaaZHinPdF-v2xR}Ur)fVb-#l*yi{1KIa zOL*r`&cvt~S7OY0k>HxSW80IWmj>s4)0dSd!PZU(*U1>u6rpZ(9dYD(-6}pVQo-it zz}l7-CuD(l9P)sg(z4293@}HYH)&elhzga}Ffcb~;E3GL-(wOIVt#)wJZyKbft5W! za0Kt|J1lRY+Is5PUJboeYFw`&rF};9j!TSD^I{T4Ie(AnQ{gS|eAm(WM@YYcMWuKQ zmLea0%Ph46Phq0U<$?z1=0H6n!H`>lh4M02g3ImzbD0H-v>%GCM#lt&honYk4DZo* z#*n-oLmT^aAD$VR8X9hoP8w8~HDvXSK4p#P3@d3;>qD}mB9tR8p?ky30oAjI=D6Y= zw(#hz;HacX@6_|gj$AXnEEN)CE?8pd8`w(WS<}LkmC*4q7;%%;%lEYs*A_kmXWmjP zX1qlw7yF>-jc&4ff%M4g>GYz->ufFc{73@5Lo#%(`nTA>i96Md;9U! zI&^$Eo^=@y?Ln?D)AE!4o~5SC<%I)2Cs4L>fFICzNk5dAsn;UIr+9&cLRztT$>z~g)NyU?rmC`{;l zh?@JKscS-PVvm%R=s1Vn=?ITW?umXqwU@``=%(8OR}8ujQsStD5GXN}IaaeJX2c~X zn;pAZBF(IA8bQs3H1swVjIzLzEiw$!NsAC?KgUTdPUF_|oIOZJF!ZAX{T;O!S4^}k z_?NH*=3;*g?WiGpxEj0VDo9S2;ZJaxgLLX6c(8-fPFcC5G=WSaEFukiFz!J&BCi^; zwyC_lY3+#OX}O^x2~qYid-{;PQD+Sqa@MH4@oq=-H6*x4ovyHu`~{)qGu93tv35pT zLSm3JG$zreqGKCYjUIJ&16u!Ek?3O+5@WsyciPjkAQ9${+wovX!hx~+6Woql>yGlB8x z5t|?rVu_0?e1xDgUw$1Ig(%Tcv2O;l5D0@E(o5gzm`S1559Uw{>6oE0TkSHIwvLZR z?XcB>wFr!#ENRt)^;q1^r4mamsgWYx%~FDZy8C59eKKZWj&l5-kU*Cdv3P!DJ;Vd0 zi&T@IUU@8z8n8cV(rfA8l!(uv?PTnb5aIrcgF=8H>JYKuLHQ26iEt zdD#Q=NG?(vp zveuYI5;9gJYpusle3oc@0&I>(Z9~V#Z%Gmot5*F4?dHK4Wg_V+o}L`J{wjf;V6$pH zFEw=^n3&r;!Jd`mj7HMT$_2S zM(i&i&82J)pyI&D>fZ+SzW7pw$z!gZOgv%^^Z>ptqUWNCnVl3L$YLeM0|8&qSKj}bkH6X z65_Of6;DIs1oc#CaA%v8m&Hoyavu8^ThjEP&TAZ@p$<7K`PeIrnHS9?D_Cgck2>fe z>1fGVcQE-{3pwyJkjW49*3Smab%Jz22x@8!o;O3BL7n5`;$x!Y5~4$5gXC=y@oH;) z^sy^q6C8F`7JlsA==k_()#h|L9LL^_R=LsfdMzBbJiSc*_+Gf;pZ6IDtm6#i}=##C~>4eKLBYu0A_{oHa zRr|)*m+g9s*#MT$FiLRKuo-y{$F(HX;6hdR{@_}$t^zI{H zjEjzONmq}w5pI#eC&f@70=dV@lL2(*wApsph0IeG%T!=Q)v)cHe>CGk!u^v z${N>>9J6Z3kX2(&IeW;EvmqPKi!}+ee$-nA%nQ86eYcKx!fw#4upXaAlsZ0eMEM$9 zcO4%%kMNrIq!FK<%rL*e`Rw3X*L<`ve>yz*@osSR{{iz5uW2;vN_73{Bd|yJDvO_A z&2aSvtoQ?{`)~18Ez%9<*Jd}vt^DI)H!n29xy9&wC*W&6q#JrUX@sHU!^E=z_#+lQ z#-ltm@_ofh=MN7z%Ht15d3l7b)8+D7>1f2E<0CMePQ8Q92aP#&yh|M7Cqy0J%fctg zbHsC2d>V;S{9KLkUFwzOZKm^wpPUbW_{sV4hj-=c{1ftz6E|UhoLQdpEWV?#Zfrim zyvAcFy_|`#T>g5XQIwA7Ck&GgKlAG4)SopY8amcd&e`tFTI7f;re_Yiqsg*jY6y+RK;Px&xtkmf{4Cqc8sZ^c}O zkx5XSV`pz|t~lJL*zPBifl@l&AfF7WdldB<0DI<9@cgmXL# z7rJoz!fKLlByN4|#|K}%u6gnBg497jD-U?QOyl34^|~kg-cJv0D$e zo4x*EnZBxjRr#M~hewr4fwuJr`xmcWAZ?0tHrhcIA1pGfzlQa$N!D~fb)|NfET(*^=B3b_)rDt9%FHRXn~{>sDT z=;ZIpW6!8cGG(n*DRZ-s#7Y*9^=dCZMly_KSKynCy{S}h<2Tb!^zZKL+ueUuSf6j> z7T{cVq`7%0y_vs%P|)Y19Kp(Jg0EyAD~rfdh%oYyaJNVq5u-AE$9OT;nf%`@FzI)i z)jT|z99g^DB$kRr zeEtY~~`>t9(ji7PyssO0w{e2MKa{ataC0ci0^wjR8?5%-U;1b#OI> z2Tmz94m3qG{Tb};4)`^%&mE0=j8r(BX^s9@AnbXrzBfJ9`;`! zIzD9Ugwr^!k90x-PvWG*m3BzN3%F(b%XdRkuf9KllPOp3C+k<-AH(T$91g8(_5F>g zi%hz64%&?Y`WWS0H_xMSy*EYt3dK;P}D1YW&$9??jMT8mqssiu&YdI!GAINeR zeK4>Ci~L79Sg@<_PuhB|xSzClaesjJ81efrU2}h8HJp1!#8^1o?iaUqFk`n#KXq*3 zGX{6TaULa_Gad>nTR3z+2N5a@4i*yOF+PtJGJ|U)TAjiNn`Vcj44z(h&>fq}Gz~Pc z++bsRB-c2&p*3suj1+0Rn3%Vrf^aIdk7mX4_BJXV)QXTA(7BeS87`Yfd*9}C3lD%@`s#6D@DN|bS zKK7u}KE1QEZ|`iOWp;1h)Oj6&R6vup@=d#EkL)j%PCer5+I`J@#IiQ`?3ipSES^0+ zb@qI&t;^4R{;WD&9ysGw>({^Pi~-`;@PtTH;5;5j)ZsXtq(Lw2Cz(ucbc=YZJIlJw z*pAp=i4U_M65}Tq2l-2-izBeFB0-ZhNV_FxUiu5p4edp3i7#<#;Bd|t@Efxo#BM&K z(KKQ_cr&O+z`ZyvlBg#Qt7sJ*Hsq^p`1EQxJQ82C;g_y~Cy*5=+BvcY-pH*l_+60G zbQpf16`Pubg@`M1>v6?@Da{9?b60Ozx@Oi28S$PSJ-s_iVd)DH%9kx2nVUPZ#BSz- z`7$ix?ww`&MQ`SB;A{EoVlA_{;E?oYZtDoR2@XlNj<}!Juz&}lISOlS%H)_wVTu&f7sfw?MxEFNo^D1(Cx#tS~ ze2Du)*ItieU*k%@NZ(s~Jxr3IhF`J;=(-~7u-wQN5cndABH%Hc%erzu*#ZI{alFML zyfnZ&=f&bZ9FFz~&mSU>9&~-8tTE2NgwK_0A}1v-+f`xnt2MbR|JX7fZ|SlYd?6pF zy-*ai*SE6|&WmVWxg}n#PXv*-5~RphD=GLrxrBR^v6E6HQEU62MN7{V;<1F^C-PQS z#`({+afXl+z5=h}lj2@)UV(G{S&W~<`8>xRzrgrurC$dxTAXW{!br&Ga!6kjjNA%k zL;ccr1eq#-bw>jJu&eT-B-N>PfoH6v0qF~opvQOY9jeOIfOMYI>k37Z#~zSI&>TbN zhC{wX`V!BU;06ftfD}qv`{lppZ2cqsfJs)*P1OABf zCsMs0h&u1lKH>_ifr#^ifxDgX;zq-Y=h)i=c)!ZtE>{kVo?PH@hb`o}{hYlmKyKd4 zTv9%u5uSLT_&WcUz0Tjk=~cjK-3qwDdic5(a9W=N?uWgy(hjXd0auaXNLeeneGVOu~934ET@ijmB&rs8(wLg82x3QG03HW zvf})-V{|=^^6ofa4yH*AO&G zjG+ck*xpESKjB;4uR*6JU}!??Ep9EXAPd))Sw2tS)FJq`1gD4+j>V9g}8%BqhO&hEjcVEz=i_k6*B^ZL!>th~C?? z)Yi7t)4kN*wj}uw(VL@j9+0Aa9rbfZHg39RCfPMq@4gTQWq;qEf%2Z-p5223d-~8* z(W4)sr#zzww&l06kEsg(fem*{kDnc_Lgm9YG$%cNSqfgdN0B!{`5DFKvoX5rGkNJ* z$2YMvVePXASDw8hjb|TmyxZ}CTFY0jTs@p5{~vT6lF7W6@}(6*_1fRjI3TO%YgZTTt9i6}Ep}+Rr6>1YQ@tuZW?ywnzuiXb zMvQ`duQWq$>7mnz!UV2O8>$Fg*Y19x27d&8T5&&7-qSVs(~dV{hgh}s|5t1MnX{`H zN=omqL7zG`3~jc!T*is^CbBTslLv;9#8!xtb4iMWo}89#c?{KCL`GM6=5nj3_m{#8 z*K`7jn?cJT%yiWmUezT;bKAsfQm#Btsih4Ocf(C5A$u%|5`ss*7RYF~+fFX6jsC?N zR-S+^Qp1+~VH=*8o*?a+WHI(2E!Ljwt#D1?XL=5z}E3ePhw?*6Mdwe-#bcbYWjpddboaeR_G^;71hcrc161|Pb9?i`3mDd;4NXu|z zq;s)vXm_t!r+LF#P;Ka(zG~yHYbP_4dk2hYyd#xtHnTmEf!I)s;Dm$|&==DQgIHzI z3xTUeaKZs_jw&Z4QwS)6#kSgU25bcLW3shs^n_5hK-};AspiR2lP4MlZ4g`3m2B^L zTo6;whW7Rik~wqrrcFoYEQH=QB;Hx3^e%2ue8&^-Y>qDW>>e06rLXUlfq~s%$Bb4Q zdkpi}%6T(4&M;N^6&e?wE1(JF82DsJu1wrXa`2!?ug^l!Ly zeDZS1jOJo$%xAb2Paod8yD#AJg`%G3EGfl@kLF?q9dJ*-u27k_R^D20?ojfW#0#2A;(;oPn-QH2h4OOm)_Wq#;e;7V}h+CWgtjtt3 zZhMk-jzH@9&^f?esT9X z^hMW}@~-)77Rv|bTDmqCV*~r=dsJscGh&i4ciM%Q^z44s?55rwecju7ySMiB?dWAc zc6xO!ET_$+?A7$J95HNe@+0ESuw-ebej_#7GdTdB{b&vTyzNOMiE!#F_+MBrTj1@G z;#ar{pZ9R*>{W0mE@t3a#NylpFtm2pSesCj7 zrO3Yw>tchOub!GYJXYMft^giWxx!>O8qUrsVn_9z+Xu3JIaLklAtQO3Z#CL@y2FXHaUDC*B!xoFkhv@Sk+!c(*=L|aEM ztIEMJX$l;gla5{>G=5(&10@%BP75*V ziwE4gr>>)`K3a$TS3_6pYxt0$L)ch)awFAbqP1_uWq#~&c7WRHnxP?b0xK&_l z6;P&_YprN!Z!jy@8_r@)3&@tLTEJMz-M0X*c^iXPJtAgiblV{# z8a4h(AJW5~aL|bO!|Cv`pAom03R4?@9WjhZR1b!QtQnBnFwfnNNn3;B4qQ?LxO%{) zak(FiouW?2=FnvBU4*7|f{u_S+bBfJ!OZ3JsrdmI#~yEe)SK^)?bz#gHTvlmZJ z9^TZurK4j@Z{Ox(akFIB7ki?CU8GP{7Pnr|Z&(3e9C035^Y2+W)s^gOjtJqjD1;F{ zfi+IQ)N|rRL!3uF?zkGemPo%QI7x2-f6Vsw2srT$0Y3^0N~|5+FVo5t@ZUN1*(;6O zp_MG)55sFHRye_Ftr6TUJ#|qSR7A$|A0Z#H3zAb&ZMJM(ruLgFoIzzwX4C7I(iGv0 z_O`c77w8+!Uf7lCn~>DO14EVH(u^@PH`?4hniIby5k34#G*N1eQ*R{kUi1d@ht>U; zt^ls@{1DK&4UB|m9=44~$k?+!MXn=m1b8YeN zr@s%2k7u;HIL{W)XYL}p8(SV`uarImZGfPn^*q~yOmphl!-$7bzkdXTdpWg_XJ~8FBmz>UHwSd@Uc=P8|$}HAMTOYgA`gKqaoA@vQpY^>r-K*U#Lz+ zq+iH!D;|qmF>=GUr9w&_`vqT{3t{AK)YM2&{{2YUKV^fb!3tLW*I@25F> zYI)f489vHA7?)dmm{=T#ehd*6#AtR2HbcEzNq&obtYf-47zyiEqe(QC>76gY+R#m> zJKmCHPt(F6>`?1};*=#?f3)FQ8(QJiBA`cqgdO&dt$6XDu|idcMV{SiR9bL4Ml2OM zv(4~5=JRD9c{^eXLx&9;mQlG^X5m0xQ2oisj{`|CQoayLg_b;VHK$0ET2MXE8XLOI_L#Pl{?T6?8q965O5C6nxXTwYM1FIF|cHG9teO&&+ zZPiSLRe1^2Z{SIn--do4pc#|3&Jl1Kg6@QONTpoGwRsTGPphUj*ZLu?6g$`#t-a%) zGCc{e8C8v7P<88W#fL)sb?L&YS7+)6n{nCg_E>sAcRF2~Kibemv;5-n0A`sm$$KO{ z|1DZ;t;>GL=T|}ZD6g}7zmx0Obgv?vj%eH#z!$KV?^<>Dvlj8UtyqKasNGGg@7MgP zhZ*=P-u#Q@S1^6mQ-A&hWG2;7V=iFSbTqDH^K!n94J%NRLL!Q5FUK&pbAH3=bLm0V z_YIf#^;N91{+K`F+b2nuFA#L%Z{-hMLUY0r5=CAFm*sL9xt&-Yu!F1VpvV$EUa}nj zoA)R}l4f#xho&omp$#qTHbCTnM{|)wk~-4UURYNXK2c|ygwM>lne5999vH4X!$pvu zA8&3R&sTnbqCgV#w;`73YfsRuEH0l-y~bRf%Q5*ZI~y9hkdGC~{2S#X@AdlWja)uj zrDE%B>xz7A>R%_B1N(<6M|pQFTRuL{fAQro$HgP{1~XOR{Na4wn@1f#AUg(CGaM4? z<~noIEik>@?EHG(cYZf%4&v^|95-=^zqmYrR!Bo2I5NsF7bEqrf-2G;$7fLmuKG@r znWB}4iK7e5thxVL$9;sE<^aQ+HHI+yNhe*CnI6Uj3I-W=0V_>w5SA#k zHGR#}BBsmcnGnVTF(=~ggT>*dpiA^}SbBl;YwA5#goIoql1I`Zdlau&H40d^-0Bf{ zCe2!4=*j)0SrgutF*5k<`Hpv<4}2os*637>G>S~TC6NM62|zYp3X54xaW@$}}Er>~}`A3+v+)z@F* zHaGQ!eB?JSKZom2v#evO+E;m#{j|9L6xP9$2VYse%5@%k8rJb1iY5tcAXdf42Os)b z#BW7ErfdBG6z_Qo-rIX?SLbW*dDtEWUH>w_PNSrCC~(F{S$$6Wb`AarH2&J#q-SgJ zryXx~$hG@P7ZmOM9=bE_wikW=kqysF9FG32L}=*!)#p~O^QcShdD0059;?qk;&=mJ zJEDEE>DOL=+HrHuwl8rFYV~#Cc@OD};^_x#z5X@!2(OIhzihZ$dgek}$Kvi=YtX08 zsLhJ}1{(^Gz!})_it+u>@rmj)^7Y4EC2Zae4WJbs0TGKBfsIp@KFCZWKRW4`v?q%P zv4yXl*cMhA)r-Ox4G9BoDlMa+zM zx4`PN?TMQr4a1#vkx(S;uj?6af?`VaNK*bru1$T2bNWZmfi7i3Nox|&$C7k!8rBbb zQ-kiQkZ$DVEs!Tw-22<#kza0N`Rq0KKC2P;MxHC66vqJn~ zZ$tOC?&RoD)GKNJI&Wk=7b`Zf%uu#*xGUMWqq}_mR<+)*NP%>oY1#T@I^ywK*;1}! zU6a~S=Su}Vk~dzbrR(c55uYcLDHV!S*;c}g=qpK?J8d5DM($hZaQQSFo(ES39P9mI zWO03__8j4vo^wl&P1IWBUR;9a2+E&%J+cbuT^A8vYR^2!HCNFC(mg~=N5@ING-1Y8 z?j?Qp2-j!D-K5Wo{yuESx0^6)tM7jnaGEy(uij6(2;g>~Xg$|M7h9126SY2(7fV*S zo$V^51#-hlYG6(Pp+?nVYNL5Ov#qOkpmZ)LC zr6FODiG$5buZOjqhlOabKa7d`&m9hYRMmBfBw*Nz{ZGtivm64K4MGum5ZM|q_Z`;C~Tf8^Bh7w@x+d;GxgucGG3i^CXK>cg(-LscgGJhZK(&q0|q=%Lt1iexlXRo>Y z+4G4ef>^a@tZMns%d~12mtSDdNiIb1S7+wbyjY}I5MtPO&FCeE&b)+J*6jG?j3v2% zgl7&NK75FAr)lMx>Dk$7`cC~7t9pa$XRmPR;;n#JM@hOU;C!?qn+We;_1wz!s;(;9t@dN(dR12y z*Q@|eT4vA`s+CtD9)uDIJM-$|bfT>{ zw&=40tLTdyj%|^)R66W~Ta;&|wtaP^tFgCG=UJ4b6UmOqvAnxJP@k)hrxe#pwu=}q zvR(KX6lAr$#Qz@!yIiX{Jw_e-BNEGE6zWvN!+mElYAwwUt+ax@eO zJO3_ng|AKvI*-Kv4iYqKI=#-y3|@%Rv?Frm>v%hoGw<su@YjQ-iy!A&j1BS*#ylliEGSYTzt z_QU;#>aEjFO;O^7rNOy)Low04YmgPWcKhh`Ow)LdC99m1dPY12{xLy$Hs>TbaYKT; zr7AZhDDgc3eQ3MjoCGE5FWPw6-j7O_h42ds__OR^mVd=L0^Lu1NWdSlD@6$`5&seJ zr;#%wI0)TOyn^6}zS+EjptPO@lvWNSUnBdxvv2;w_ROxv6|Bc zJKI9c7Ag@Is;y(#u40QvfvRdoE??H9%HZtm;K1CRRo>V#ytk`svCG{x*VVkqLPlH6 z=?S9DUwL;Q(>>mx>Q(zQ4LK#Q_stHMik*FZoyF2j$NKj2hJ4d-rs?Yb-iAgU^_X-| zG#|@snD}!r=-0GZV|y}K-@(_h=sofKCv1xPBx=vyJwB7; zRQPeeW4#j+EiP4`A-(dSfgwCQy7KIKE6+}~;MqqUXFKkwwS2?M)yXDYecG|t@z&Z^ z%7ma^;=Qxv6?qc-Flk4c7z5enbQSY>nx_W+X$^Yx0QqA0z4BD8rK7v}Izpw>gZwIu zp!&?p2v$G4ZROc*^z0*!-@rRmZFy|v>ORVCdD>Co)k?&Bx30SS3?IQLw20~merI2W zhpvw*C5mxxg_&PJR; z%%QV}pC>M@VOS=uRnR7&nAu0ML;H8tXShE}%*vBPGHSP`mP@E%PTuZ1oNh1=Idh_~ z3*17)h-uSFUMLd8J;+2M@xEeqg&_L~1ocW`KNvhXHhOSq=-}ws!NE-%M@E*GMn*Qi zSBtsS4L7}c{f*n!?dvoRBjMMk^TYc}Z3iw&FM5JL9rE7eVH=R1)4O|Uh-z+(4$sXE z56{ki)Tebx2R99!(w8oV42yObC(HTzo<z9X}H@@V3d2t^_UF09y&mm(& zyjQ-1$0_N()%F#3fZ7-B;!wA0zwln_7qs$+8D*kU6lb$&Pr9Jmo|Hb}e)N;>x5tTd zpljniz}u4?CQc(9MMcgAs%W%LPz%up-#kHop*WHVLZ<$5qnm&8-8;%vej;FtQMh z5b`xcda4x2cDLu!T{-r5#ie5VeCxzSZ!Tb(ffo=#541JK%lV;!p6-F6){b@H6k+x{ zwt#)6MAa`#(QKhG*U>gxD9pBX%oWykwG=u#3oTtzbH`ju%UnlszO8M(*fu!WRu~w7 zmVjIU_+(|W)J0A}HL;461DD`52&+z;0RNDL+1GmUV19JUDoG+qT041BbVj7IL|T zQfVQdU-0d}{j76t+rR&|bI!Vb|CZ_NcJ8`vYU;XOJFkO^z>wYGz-jScpuc=P&|?d5EdWUHR9`5N~7_IAX*E~V59t-#)Lv z#q{b)^j5`0+toBrCv()2SC{wVb-rn(U>ev}LCbi?$*$zc+NQ^SY#gnid<5nr>#lqw zK&ocU(EaSaUd5giykT+Yc~8H!wr*Xk4#+QjK`IzFJP&`aO;NN z;!F;8!4iHZt6`M=jCdc8_`=%oS?d-q!Zb;aGUjX-WxTzPGCOc6Zs&A&HeZx?C_|Rm_WG*w_jtv)0Q@*yvecf&6 z9X@MIRD$0u;?f6~_H=pbx>C7`Z5^X$kFU?qw71N*wa&E_rdx@oVfzvGus-aV&>GUA zN-&={;y5NCQ28RKi*rrOS^2#yB1cdUO@h-2h_W(P37v9U9Un+F?QiOy92{(-@L<;Knz z(u3(tIWyDWKXdKarrbn6H<8=KPS^ClseJ$5e*Ej0?$Qi@+i1R@glvDyXv>?L`WqVh zoBF1vDzW)e^I$qX*j$1-K(q54X6GB&h1pA1C`|*Vq`H<6$6KXwosi~f9XC7uXDkF_ zM&C^9?lvnDV%>G2LeH_|u6x*ovE>N#_g$Too#8IYi*h0 zzHysBLh44iygD8G+1k+G6sTzo**To|W7dx6n>DTR)9n*Y*@=$gM5bw?y(yn-Zp!C< zU7NdmHg|Px?&;p#H9pbPy>4B1&jctTjng;2$Tn0dArDR|Pyqgh)fB;M_@HJorRWN{ zbi>@H`tZw?L)w#Sz3htmO<%XdSjeb6uZ4(DAzXzscTOSMNSqfuvBoE>Ew9i4I25q~ z2$*eJ$fInsTCAv%Qk<$s4>p$4&0SV3V@|t{sHUl!s5#`>n&?hoCt^_X1pUE$5>=BD z?YZ!*7fuFp#yU#CQ9avK;|i-4Ie{Pead@Yy)-T>~p>EzPPWi#QPL#=1-5!rS5lpnC z<7!+F1ZCGb+U3-bw`2UwcQ7bNlyq03dB~^weP#gV=A404ofY#+Ea-Qu&Qm>R0GV8x z?%OHLZmXlAsV_-AY{beNW?Ss)naCwp%DupVEpG`~He>vi8j4*de?FD^xgK>o->H~x zBV@{^_I%(LgC*1 zt!gp<-=lIB_8teXR3njiSGKhuDhg5UbIf47P%8^ozo1&qfidZMNKQqJ_c%@I-T87d z)ic&umoyTE33r!1l_ZP-8Z5zk3!JuYJ@^DXov3INmX3IcBESgS7 ztTeFE296YF3-E0T4oA{ah)G^nStO~wA`q6P%l+?Ck&t(rX-U#$&Y(+IU0&ylmZ7Oe zOsB72101e^abz%#6!vNLS4RRjin3-MDtQs`U#<38t5m={GJ~0D+K{5ThEij?ub~iO zsg}$@Hr$YkMC((LcsgrY*|Z)H~Dwz^c#;|X-u1OA{D3ddsMkoEqQ z6-^{i69rhN-X+-18kRxg7CMJi1TkhJDo~jwl~;A+jsf_(wYL%64HxtE04Ij)x6K_ zVziTHmpQ&D-46)*%&r8ahh50(q^|>lKC=q}DdDMl=}Um1&-|%IoZU8zo#?#J>@e=> zW@odk^m#zgXLbo7^ezKFT;696X=4|$F!pHkKC{blPk|j`8U8NxnYT=k1pI-#&m59s z_pmWJ1xO?A`5K-|vu`@SD8~SyK2!C;9`+ShC)Wc)ef|m{C7e!HkI0wkGv!M(visOD zhXBv)tAKRlB(W?kLeb~@0ZFmDQ8hUU2=L6`)yBTa!g2r*;F-5vKz}m)UDRi4nIH-N z6!6R*zzVcbo7aI#2eA5V9Ybh7P%eg5%gt^J1XW9^><>t$;SEUF1Wm)|KlWOKY_ASH z`!VT$)SXG=T&64GkD6Z~8!}_tW*y7Nq|dIs&b>@cxR;*q!S$a@U&8ZQobq)sJ%1TJ z-^4z^uMglHs889?TcZ6ET`#aV+Rr0$v-bG|;`*of^$tA$3x2&Bdgvw8{)OT?qBnSd zAFh9iU(Y+dI29h(XT^2AAGo2j4d03S2f)o$WGcenKs=cw;lYSyMX(lwH{x)- zUsBK$SYxne*Yrg`?)N#hzIkfj*t_Eq^bmcG#4G2ldR=!1Q^#(#>g%n_fx7Rk8Tat=6592OcDMCd zp(u?Mh6u&IX^x30)104o(stQsUFASDm5Q=k>%PPB%3G%%1CQ+c@Xxf8Rk{r=)HY>7 zxq=ZS)CbP#l}vwiPqTI0aPGE(?XxXNW^SIa{PlWJR?`Q|qi2pZ3@oAgvWT2hLd6zBrhHfv}Y_jvrbzeDtz_xa4=FdeO^67;kN_ zIr;~s5`6^*poc-p?ssFeI!Al{IOMPqE7&&I(mauGo{aiZy5UsQrw@!C8g3X^pl(t! zG|SOK;l%hLirO_zh;I74et%leQ#aez4`yV>2&u=bU6tBDwJ92daNBfrJ;q+^Mba|O>Mq_ zjw?0>KC!}D&OrDT)tNF%Ngu;Adgk8_>q0k9{Y_NbXB&=lBMdp zn|;a^e~spo_d$2mP1XP6?Ow0WYrB_N3+V0LPPcSA-=9`+JOo;L!tIt0^7w+?Ph3C5 zrHK7j{633*BlbP(ID`E&J^$^^__@U9mOsP(#fcpr%W=nMjI_*jwgo#x;C~@r4lI*c z!3sP;vFk<9{Q6zJvcxVm#;Y_le(WyzgTEz8>_yV|kjLB7K>x zF`OMBoD{Z$rdo24(8mUR-mMo63?1I&^%P%MZ<2zJ!qKv6g4=bhjhH=!hylV zn?3i&0zrSnio}1}A=xEw*pgz=Vv|b?g*10_M})@ELM2S1Oz`x>c35En|BMrCiV( z^99k%Mri(T0S2IBh}k0)YKq?$BpVQrwwQP1F4Sr4TC> zSyvx3`}?Uw0d#+9^KsobTj$HN>l;z8Pj?2J`wM%A7B zg)}vUQS5CR=*WfXeB{l`>)55>XSTgaIS19w@H6B1D!P8H?7hjU!OF&*|C`u7#U|DJ1De@`b%01p}Voa3|7S4h8twj!7= zXuevF2dV%tlgVXPZ;UfsD308UeR0x!YM{0o&JSOMy&Deg;(d-!+U=fHkA$Lu>HFmB zc2_psNr&qPnghWgWMfoUX`3Ai#x-_h9AQ{dpJWfhZg`{PD;R-WdgC8y+&RGSdh}2F z0|DPBba?&M_Zc5>2izgq59*VMDyf0@>AX2Q_dCZv#?Ir~Eqb?&lQVCQdWbHH@8iyNgQ>bEJ@JVAOa9$G z>4_n2>V4@*@F($x2gM&6E825>gtxb*HMG!Zs(1=5RG;FQyqbMdO4yj3<(Qo1n7o?Z z%i)Acg5T^Sc-V2B<3A;Y7l85g{J!fPzvaJgcCE)~g3I4SotV3jm5-fNwk+t0B0JJn zEJ#6uODUHD?|=qhRX{{gH@jpto0`}3WDD-~flV89_$_rfEs?d+(d}7Ox3~?Q(X>n- zJqDBpcV83x`1}?o%VCw=eZ}_5DT^D}hr_xNl0t@#HBMUYe)$843vF|piO3N2Sxizj zM$cVbaP4s_M0e29s-{l5aEj^(^mFwNi(%!21|k?uYR0|L4|8^nCh5+`p18}SnG@@C zEmMW&$z8qWId?QFnK%H$+2N`WWkxy@bFbQc=BHk@(6s)l?d6T54XDHDYizrC`=K}O zY2Eg=`!Bxq{hPAuPN_W5INH-7`6GSV+*q5{TShI4(Ln!9W83=9&O^KVXZy=HtD$JL z@@OX2v*oPb4VO)hTz1EKgNOH&jHK>%t1%>R!3jFE|S|72s= zL_^#3#%y;#@B%-z^lsp#!Ley2zE?&$DOj@{4>ndb8Hylet}S*!l48Mt;6dw{M!FyA z=>p2kxr@fLbLH~-;oPR-;oT!S=&>kND|>pjUdf^!zjN}k3(DESOxK>#xidq|6$;{5 z*YH@+z)*8J(Y$^8`Z{cj@lBpRSll`p9xyib6c&rE^Se6&S~4_n!LB~PODgR@G+vmW zZAMX@UQ~|q1|nWpeP*CNH8ok^vSnd3;xYU_q#lxY@hegcYoWuguZx|j;PJFp(RGXu zeZ~yKyGx>(7$5Njigvw#qQ#eJ>49urhewfoN*D#1{K-sYV*7br<*N_ehrm+MlrG1a zVxKCM>w^JL4Ckggok}kKcq41uzqsktmY{mFfNj_~)M}NucS}e70 zn+l4HK9C>_4%5zjy>z}2haxIPmY+x`dT$dUfboHP1s`VRgJgvX~ zv>P|9$5E{V9a}D(n7EMYfQY}R_3a%Q*jG*|DZfv4`~0xbTgI~iuiNSK*LyUWoK8m; z#~nWk%`eBRm244uK53LhVM5D8##?PL00GMYL9vU-R1GP9;!UUf3>T8RVLYc*bHWf$LU~&k=X9X?9lYA z$p`sN>r_5J)!IIl%TKj6cXl>6b#}7%pbSdObW6)rOJSyExZH%nHD}9Q2NCidw#%Ei zZZ*5S-|2;EPU+d zwi_d9E8R|(eq{?aRw3z1nK5X!6Y-2MNgqXI7XA`gIPjKXQWfDaA<0?l>$A~HSXJC` zs}aW)lz>}h&hfY%5eZ|f^d`4Qa~lncOVhOm-I<&moSpC9JLYW7Sy@#}1~e%Uow_tr zO4X-g^?v`(%{fJOd1V|TuEiC_^f6c8xqZd0z1zmR&N@(#oZH(wf>@+}wJ{J*voq@^ z*EQA`5-rg?J)qq#L{typEMMUpISwmCyS3$-B~RnZuUl(4+DJHhj8ODg?VEH5N7DqM zjK!LuzlP_4);m$!t)JR9G3 zWP19@wvAWMIhj9D+3S`XcXW)M(X4pA0ax+d)4=@GJ3BgdG)Nx*#@BAydeg?~Yc?x} z`wJ3E+GYAieSWXvnHpy6o$q9FwxJ;-$?r!7i_-xgtn*EfndE66cPv3-35i+jT|T%8v1g+Y50uMk<*8UP9GUPV|X)oXKu8qX*7qj4KGgeW7F20 z6Gr(OmUKI9H)8Yr^FJmJ4I`~$@~okuvnJc8^ZDs^{>jwZv1+SN5UU-!cI=x)Ll(nsp2-0&@@w7bb#Bo|wEv*t+8kmvVw!Tti%~vSOgEbsohR<(a;15d$_-S=(hT5WO1&f9y{U+* zSov1n08-7K9lSQmL<9RwW`u?@oUBaMS)zC))wYa#QMJd@w|97WZwX#c9FT|FmRN!L z<*TI6!Cx0db_cTlxV^CEoFm9U*lKG|KKdJHVZ9M{vJct*!h>$}ZF}9y~ItR<72DJ&`EBX($WF)DVhRPAC9Os8(@PXBTN3U7eeX zvvr-x`eI#Ou|C;ZM>ZqsUmJ3p+djKQ`XJ&xVQ?ObQGN@YrxBcajH>xvwTfb`RVS!| zbfL2gF}-HkHk-Cx)@xb#{e`(U93zt*Xm%y2nheo)C_NNPw#DLYb;(xCYQ2C28|$af zn~9x&mOfrr+|q;cZw;kvk~ukN&(Y@`ix1?dQ$6(!bU;%>vN!b|C{ZCeI87-XhF=Ko zPIwDshZlC%WzaK7${@IiF%eI}JkuJ)q^|lET45qJ&5+ARk%v`dHa%R-Pta%O%PZeU zr?1&p>e+i_u5(XQ&>iq5wd7Ru{N?MWFQ08*m(=RLs$xV3$9_YV%_Tbj`j*S| zzh>J;XuHWom6qqO+qUcasc1xT28^snkMp|welQzk3}Wsu7I+2z^6ylQp=0?noHgAJ z=p3Mm^g*UUAEb&g;@npcR(Kuq>v|zgxI}ZeRVRo2w`ak!?cb*{e*cXhBscX(*_AJM zG%R~Rxv92?lhSzmgQ!S0SsSp zL3-leTn$8!M>41k28~l|SePxVa8!pvl4tDH^ZwB^O*ZTec=V9pSNWR9o5$}EYw-pY z!;DmZ?(zDNd3rgK#Ibjzf>}E3iAhO4KU;3RFX0b)f21hUfH&y=vD^KQxIgT@Us0?; z*#8wbJo9v(Hl5>=#+<`901by`&K?BmEBH$DR@G#X#=LD~DNEdK?wZZ0q=iuZx^;do3mr*Z-S(yCuwa*H2Q97wRgX zifp10Y!9(bjWYxrZ>Zd5J^PYFc`K6Cf{LPrbZ7@xYsk*>`E+FLxm=%n`LW>~C~;Px z2ia?F6f@c;_(^YX=)do{E&6P_xr_^kiRWLcmlx4M?lckaV|9djw*BS$_8Th9$~9+D zENDP-Vg|Tva5|S*@Y7U#D(pG?mrW$uDwV99rU!Pg)-1qj$qn_PNV+Y01!4P*a7az{ z+{{Z)V9=1XQdYD+y0hg-^)wC`dd#168y^NBYx%cv1|TE=LBJ9 zp@Q+VbV#-%zWK7+7gxznJZlGnfbS&le>L@=P19%Po|W$-bOz6_HJoA>bN|xq(xTo- z;Jcv*+~&=YzF{d0G5m(wH}=VspUmSA`9hVS%dE-ggWtM`F~?`w4aiKY@;BbMOB1j_ zJEaI}=Mj#o@2k@OidckYzn!}@-b&Gj zJC*;$E=8-ywRs9(wU_fx`)M7k5Ic?>H?zC2yNTzx@tImx1FOtWTf$Tz!HdN8Zruv7 zR;0j01C^hu%avdFElpQhCJ4RyMSTX1NJ)vZmysvD{tTp^Y83Nfn_~<4~7O-tXq5(TiNr{C~vj> zcr34Nm;XWt4&p&9-IsV#uN7{ zsmxKXkyu~lW~-U|8W7gATwLaos&_gn#RS;ta^<~VpQU;XFWco;eSyjy9%FA@^J~gi z`@ZYe{YH#=TwisE18PXQ->J|WQjTrNryHj?90JP`jn~vjXqI{L7M$V~^j7YIi#Wix zVlyTVcy5-m(h_E~+JhQZfDVrzb8X1yaVmKWiE_UuoPjnDodQ;`BD~XF5$Azek#UE`kGG%nj@k_<9Wp&X5z&H7 zHUoMjQEaH2o*R#7I+KH{7LB*nuely8rup@h#4q=f z#NGUYZX^;`O9J1Ub@&iEX=i4Sqr(1`y$Nyem+XIuXAF|&volf}>c++l9N&iSMT^-; ze;L1Z{`yXII%?`cEf|l+TVnVg)af#WFwcCrv04{CbFLrP-CcZ!BxZ(ctONR?;(UZNth4yREwL>D`@ z$T}ns9#>3}Q{G$iaa1FHJcyaA`Z;FwsK$PzgK=t=qW;U$sdI(=?Ee0~Q|AzA!Qagt z2toC1DRyr5S&03x2ehbWXq6$obpfHe)8fTI ztm~|AD8`~KS@quTDPmUkhxEb8+8NiZ37U+%;8ynkEBZfMN|bmazU{= znS#%lFic4sI}pVwlTqyV$+fw+7&~WTg+wHxhSa*|uxqov`)nl?3e~yGdG;Tt?uFA2 zX}PXMd!o{O>Rx&mvB5XM3j&MY-em_b2A{QRQWP*knQ_&bvYi@L&0i_vOy@C)ZJoY! zduKz>KwP_#;v%=HQIBhS>+reLQ|FH4*0sBQ5%nYFVS8;jKG5CJx&1QffsU<*r~1x3 zWvL!4(}-cqb-=y-quYdszkJa}18y9K6XIurrh=W5dgZZ}Qj&T2&y8f-j(WmfO=c!8f8K=F>p~>zd1OL-jmM$ekl70l zDmZhMJJAwf6OD%1{F2v%mbb!d?=DVev+Ih*$xPE^d#)+hoNLaruXRi|0oX~vj(k%t z2Vmv;Kup0-9|IeHu+xX(SSp;i+>1lA@o#dbuQWT?TbikyeNynyar=TC3XRD*wPsA) z9B2Hm#`S+cW_Ha<5OFNOX3Nw63=xxm6ME<*z!#;c^h(4$8YyZH9t8U7>FNls(~YXL350+C4Nk2pnEtvv4c zpXzk}#wq_l8ULIV?d*~^uq{-rNO~L@DO8i?OkSs`O zZ>zx{K?NzQ5Hu!@u@A`u1P?sR+y69bjbWFYG|aA-w-UTbR0VQ6ZUhgR#9pAC(mh-= zg?>eO2AoR?jb+s@)@;QRmKBSA&!U4tVlioVG@@GJNE9FV2K=G`9Or~Rs5A0*=`(1P zYeFk6o`GW^@nl@u9FAxa92|lVaEwN&2fGg+puGiHpO_pXNufWW8@J=Q-5q{Zl|#nL zqF0l86z4hxo1a4gWrxp4b~ba&z*hSibT82Y=3J;4RMiVQ$6iHukGQeHB8*-A8by4)xZnw;Hq)02X_0jwnwtLlpH{f(l z8g-Ty^o-%~VIM5VUDEBd9dCcE0I>SO=SGi`l_aS zqGg~f`{6o$+>2_1;f2%sSLR@$;e25!$F@j! zi#92E&ZnPik76c~!vE#$aNh0GvDHEG6zYfZ|qHx z7SkhjF}L(0=l?XPFUjfNpX^Gdx{}H6`ugsqm1>Aa8yci8Y&Awy6%kf^=}kqfWYUVD zUFa3S?zNy5NP4u&JIKu_VTPcql(Hb~tS!i-a+TU5`D~-gt&k8*6RVIibNLKP&B9EP zmg?e-ttJ#0q+Qink!;koOepEdq@sD8W9K5r9P0nJOsNkkZrCWlBb)twHY?4g8yjh# z_c**Qzn7lj6%1>NH6|Uze>^?8-N5Vyy*ZZ6L%~z?)7<_9=$melMKhT1S zCL>s3ieHJR4URSRcCcttq*UJZS3f2Ae z1Zl%7T=QTIj2EXdeQ*`iB`;yzP}g}mFlN4;j+daVj2Fa>g>D zSfW-zl@1tgq`g+OkG_5ROT^W7i7Ce*!RjgV^Kas6m&_`@0JikG7bD)lg5q^6I4NMB zx4f5aTYiRUi$;1<{&W9J@}E0WAg$xr5B2sH?9AnRXzlJ=y>_3`6_mUHwN0I(gix6RkY-x=ddWi2vu_Y~jKg@sIk`%um;lFLUh~JOe z_j4(S-@mqhb2)+EM;+9kN$D`VlSd?pvr&Jl-ndZIGFgOtVbWpvO~T<|C_?&A8}>we z3}@)LrCa#PF}8HT@5lHX>^&3CIq4S1H*hQ(j9@%v^LyO&xZMxVsqy;>{@doT`2D1P zo%2Ebev0?AW%(kV*_G!+O`pqEu{AiWTYYP5>+ftmAzAOD-YXGMn+ zPuR=i18%?TjJT!yOl7y*tw}#|$~_vkGI-tdSPepl>V>}WD|r|Bzr@^El_;SAZB#Y4 zYq!VrY0$(Dx&qRVH9YB>cY7m7AnfjeIxImJ{fJ#8ALLnQTw<+lqZjL7Eo5uR)8|4? zGGd2g-pIQ`Ui?zEIydyCi1Z`VuWs^cVU$|LRTSDG^+`89D*eKkTcvZbqxcWBzi``X zesBUq`1~%v;endto=2jUs)fAsZWq*s9PVya+G(T4}xE)-*%+s)hQYm$3-;d9GzV{AA?kLIy7AD8GAL5)7X7b;UR;!8idZsUG#{(EgHP1oSAsp@El_-Ga zTq4GqbzKLHL-c7{U>w&8t%`41cNoX24q%+(LO*BA{QYe{&>JVD@Oeq%tS6uYcQx;!9hc^A5Kx^=|&F2 zjZvKO5_^5WimESYm`t6F>LwqT6*Ic@D`AobhN$|LBu|k!IW>LL6>%^g8A7;1t<80drDELIAGL9O(c600d`2O+f$vv5yP-FqK~#7F?VZ1K z8%LJM-y1+@%G#>M+FpAVnW`o4Nbi;iWtR!eHnW`VMWV9HBxRS0%r2Ak7l_I(6B%A4 zD7(xpP8tI` zdHy`?5l{yN>>KPGsz|ZXCE-ZDiK)^X8v1-3TH^jQySG$v&`|AtmZg`gi-nX%J z7Zy5SAmAKW`E$ENgXn!GzMm+=lnn~af|8xilo%}x&loDj(xH!snajcMPvf9w#*g3!jy z56`}%yzuW&oq*jr?(5NQGQ3ToIb=y8%A^_qcYvnI*yz@@$>%af^f0AO< zy3oTc^Ar29O#q}Pv{~v8w7S$P1? zQff=eP!$79vdX^NQdNa`7i7(nwZwn5$*pfSCAZWFcxCPCJ!1ZM0w7=h^2XcmkWFqq zBL%1s@KC(l1VABhM~jHP7qB}fV*WP*pip#(*lPi=zPItnzL5V)0F(lE-hBHH%T~nu zQF|k(yMz$IFjem(P zZv+hS0v-4zVlMcs(-OzD>y&c}9|4+#KWoN&OKN1ueH zw&^MLGK1VIk}etqfIeEXcHJ5-kS9h#vP(DU5qmv$DP+ z0`5?m6ci8VE?}R|d;2f>cWKV+&d0XU9qVqt4|lr=xXS@OKKqXL(!5_Q>+L%>IJ!?I zQq=iy?gAd(?e$>T81GxRW}&vBZZle<8`hNHgH_HLYi*6;$82ct`1xX%Yq@Phq94pR zR5pQmaQw+fcPU456|hf7MoHY~IIOO_+9$|;|JegjZSAj?77T6xSY?;WP*jM0y zua$A}T83rWbL9K6LkWostx)Zo5?V1G*yr`86)Y5i%er5pWqTgJ%}&CX^#u1QL$Vj}`o52uyou~H@imYvSm zIYusH3u=jEqRB^$xt&!ryi5cv)|UYA5KoJ1T3KmkVFCMWeF5+l(M%Rrcwqs<`T~%S zGhRFvUP!>Oz5t|$$=qD@qQgQ0hV=ztAr{U^rxvjD-;D?NE$3ixsi4+)e_z{Xq!+Qm zsRcY}P)EaM_JHZP1Zs)gNFx7P$O@--p(7pcv!VEf_n=x__)bT+6gKH^t)&vM+_KTq zN`~P=*OsWMV~vWIT>GgMq!KV^c+WL&5$zDD1#*#J8ts!#T1njK*aFt-K0EOm-Yly% zD<}uogW9mlO*@Gj9p8mk>OMyUz63nWo0UQw2OPc=m<{g#1#B8h&VTjwIs%^I zTF@$3M`u$)+KB?@hMKvmJpy1sG_0c_NMeDFlHuJA!uc;)7$*LbJZG9FrwLev3*GF) z0)xeg$bUmHO_RZtFRBpm=_xEQSR7{m*HOUq+lgPF^hJAc{4OZ~C6pi&j0y|9Jn8F+ z2YdriH8@b<$+3y=LbK8-gaA|(P7(tH0CX@p24)>eECA|)p(GYq$uSZDS)ioup?WTK zoY^q|R2kI*o>t%uKwUr*3)CJhm4}m1E#Q6=$6a7?v{W8WLbZU+04_9G94(cHlTa<- zX;-WONQB~J)5!u>P~0tOx%LRWXPNwGq9!MoQYt9!7MMt_>jOMOK@y9T2v`f&0{@Nx zSO6{k-=;CGlv0TWR?@o~c#D?)Z-%%x>Fd)$0j(KwXsEGpB&?9IJ)jKFC7cD0lk)dxVeSNY8RuTgXQ3L^lh3Jq1rfG7T zfP16_>jGUT08+5B*6xrJlDW{4A{W|F8;LBC3PlMllSIH5jINQL&ELR{25Hday-h2w znkeAYC0+fN&46wY07+pT@vm_7NjTA{P86_~flnh42ZN-z_*c(8;Hd_6YAL0bYAgrh zV2}{Iz7=_GJT;`9DquFOYW8mPB5e@>F$u`LPfD0I2RoSYBvpwlQuKy^auN60C>mZc zE1aDr;2!Csv-&69H%mY{T~dZI$VP)07(Ll%q5pp=1T2|oEuA@j z!kF7gW`S8)FKtVk`#ft3=j;ppMx7OIHD9MY1i&;RbB`2ZXm&Drj(~M#q6Id};u}yH z+N`gGXD5^Awbbd7GUN@CH;Mpw6=l}f5zN-$Oab?ov>hd#Vua?)D}g1FUjP%-CdznD(Sy{V!PowpXqrEt7WxJ%4 zR-ery0=33%;>_EmlkU84m@8n71s!8_R@U2arEAQ9%~Mj!;AI8^c5$#?D{L|MP-0n6 zR@SfH*XTN*!`*rDuMlrCgVs3soR&>sJV92vUaYQPy=_IH+56g$^G$I_t8_^*vI{pa znkNKmfp}a-Z`|wPAfD!!VzTny#y5&O7)&NG4~{?i=q`cEB1tQWd-b}`=k?D=hX+^U zd~fXGW;Uh$n6wk|ot5{l>N^hvv8aN09n9Uh-x^!MY-o?FfZ=V3xO!AZycQEsY-1VQ zg%&E|Mvs6yT^ZadgH2RcLA*)aXCcvi;7YjBBgCCv-}n&KTDtk;di#bk)v&yd1n#qt zNWhhGqkpC?ZWlzX6Dg5ovZo7G@d_!K`z$1Kp@r4;jV~&*+l|9!`}ot3b_jTnY`DWR z*$!2Rr0%nj$N~$Ma-+wQoAEXkW|GTa17UrH{hM4Pr_XSrQwc;0&~xpsyFWE z{o}(haaYyE7TA%()N4cHd=r^R67!=)Pw|LwSKr%sBpy-q#YEdjxVpTxA-#?in4b32Bm7Bbt7iYYK571jz0~zlRRa0&APV*3V9r7m6^IG;K#=whg|}( zaYsQ7x?wj(nQ7Ibnj&lH>?L1|bN6@3^V74k*51z83U`kW4>lzrGn_V%xvn@X`x|Q0AhLqxj{OpvERfhN-aYy>yhSNlNWjht|6snMELotS zLaea~%zYn@8DwX56CMM8Cfx<4J!slpRwFLVX;8;R(FO!Nou=U{i{w-m60oqk-rhBo z@ic@5MC|#k6tT)y#3tk*I512-&B7L|y0k>CGp05NHo<7jhRqna?W$U?>RD};ENXq- z-$4s9ENlCMvL-MO`ridRX%@HAt7UurmwZcunB@WiODQ8nx)6(6U!g$@^3_)_PTu_e zWl4c&>mnKc=f(y4>+ddK{_>mudGS2SQ{{Jh`>o6S*22lbxc7@p+->`2{>$-k_<|Jh z%~vm;zwzefi}n}q5J-hs-_H)ih0Br`w!lJeR(J?A?KUFbNxECP-bltg_1aR{E>|93nl#jp2ooFm=NfD@Bx< zQOQiet^s_MuTVxJPTJ#n@S22YNyU_q>K-a<*! zfQ4a!f0yz`n$pS5l?3>cbm8jVXo3}<1MeL@&;D+C<^mR)1-Yv{FprYN!@juE zY?3uD)48@C))tT#b{PfD3h32g$EAT1&iLhKQxp2vrp2!{GBF z;14KAaucv1?rK3r6rD7Et4b1amnw>E+NjL>8Cm;z-wV%Gz(P?)6ecqF(+u$*ig>fA zg%<=>U*M{T!Doi7r@>3wrku%Lzy-R}t>){LY9hOM3JoXXypu58t$L>px#LWLWIYve zH8ght3x#EVjk%r13Ja20Iywxu953aIRVBU;QX5kYXCb z^W7{i2#h*kT8nZsX&YO+0rVoGeHjMVKdo0Q9e3HEl9jqv3+@)VQKxS!o92gESK7_B z$@PA&>vFiTfQLKiu6($LY)h_HjC{20uJ`UQej?GAL(3DMeMh}I3HDWjKJ`qYtI8kF z+agn;g+hf|U}0sgE&ZIIQl2!dyNWiirI2@X2cIzm{^0Y^itQC%NDMrVi-+?*x*25K za2|lU*toZ7@d||tSa3%-`Q8lbB(2T@AT`W;c~)D^q7(rOx!(+e6$S+$Yq zr3qNhha348P;^$-+o{fl0f@tBmRFfc%hCiaxJ<9qisp6=&D@784RXV--LfyHlqz6B zDw8e~m+i|$VI#Ao#7Q*^!~ zn&_v$=amOQ4RTcEVa)p~-X*anQC0^@P*Xh2Hcvx^fCVSwk{hyvI>2|eh*wY}U}4yh zeG?-*K;}sAGQ+pD&1+UAU_lxJG$X!-{=*JlY`0nS2;T`QAMAZve zkmMHPVh{%x?*@ELTe4~zl@PEXZqV6le665iYN?RwECS`hym$7JuT^QhO{H3JOP?+K z>CWm}JCw?;VMP@vkiL(vxrA576=zh!>W)(x3p|b-2NW}`4EPVbW5=qv%&$_}AsEBV z;+D0>U0CB9GP1fA74C>iTHtYDjq6CYt?oFr7()eXToYC| z4_B1&JzuGlc!gRCc!U&xWIo6nlmyGLyv-^UWu&2&0v5!rmTn8&=WD2`)`u(FvBH&M z+HT@yO{uMbM;sl6q105%RWej^DPVZ*PeP$O3wK2A1w3LDA4ABVGE7iOoU8HLUtZKA z3!Q}F;@Gtr>n+1{)22r{1WMz)!Js6lXt$0r?mQsiDU5`?vexb})0QE#aC=*hs&Co* zOB6PLpbU`Y6v+&tE`h0d-&WQaq+RNOY1>-l>uJxCCG%Z}2J$QG8&B=04khK>O%~xk zM0^_$2sj0)+-pUh4i`nd7Gm=>{xdkVqTTPG(gV23$$)?tK& zNi|~SpW1gQF!!f^gSEEC@MAW#2Wy)i2sk6e>R78Rjo{Bazq=nlQEO zPIhAR2|W|hV{2_gSX%%900000000000000000000;FtVA#ht2v8mJ-W00000NkvXX Hu0mjfZ$b4` literal 0 HcmV?d00001 diff --git a/client/assets/google_logo.png b/client/assets/google_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4a9918dad10832bc8aaa5574d71fe15f089c8cb GIT binary patch literal 16590 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 literal 0 HcmV?d00001 diff --git a/client/src/components/Auth/LoginScreen.tsx b/client/src/components/Auth/LoginScreen.tsx index d6bb18018..899a73364 100644 --- a/client/src/components/Auth/LoginScreen.tsx +++ b/client/src/components/Auth/LoginScreen.tsx @@ -9,26 +9,38 @@ import { Platform, TouchableWithoutFeedback, Keyboard, + TouchableOpacity, } from "react-native"; import { LogInEmailInput, LogInPasswordInput } from "../Common/CustomInputs"; -import { LogInButton } from "../Common/AuthButtons"; +import { LogInButton, ExternalLoginButton } from "../Common/AuthButtons"; import { useLocalSearchParams, useRouter } from "expo-router"; import { appSignIn } from "../../services/store"; -import { AuthenticationErrorMessage, AuthenticationResponse } from "./AuthenticationResponse"; +import { + AuthenticationErrorMessage, + AuthenticationResponse, +} from "./AuthenticationResponse"; +import { ArrowLeftCircle } from "react-native-feather"; const LoginScreen = () => { const router = useRouter(); const [fontsLoaded, fontError] = useFonts({ - "Gilroy-ExtraBold": require("../../../assets/fonts/Gilroy-ExtraBold.otf"), - "Gilroy-Light": require("../../../assets/fonts/Gilroy-Light.otf"), + "Quicksand-Bold": require("../../../assets/fonts/Quicksand-Bold.ttf"), + "Quicksand-Medium": require("../../../assets/fonts/Quicksand-Medium.ttf"), }); const { inputEmail } = useLocalSearchParams(); const [email, setEmail] = React.useState(""); const [password, setPassword] = React.useState(""); - const [authResponse, setAuthResponse] = React.useState(); + const [authResponse, setAuthResponse] = + React.useState(); const [invalidLogin, invalidateLogin] = React.useState(false); // Possbily change this? + const externalLoginIcons = { + google: require("../../../assets/google_logo.png"), + facebook: require("../../../assets/facebook_logo.png"), + apple: require("../../../assets/apple_logo.png"), + }; + // Sign in function with email and password const onHandleSubmit = async () => { Keyboard.dismiss(); @@ -43,7 +55,7 @@ const LoginScreen = () => { console.log(authResponse.error); invalidateLogin(true); } - }, [authResponse]) + }, [authResponse]); useEffect(() => { setEmail(inputEmail?.toString() || ""); // On load of the page, set the email to the inputEmail if they entered it! @@ -53,41 +65,117 @@ const LoginScreen = () => { return null; } + const handleGoogleSignIn = async () => { + console.log("Google Sign In"); + }; + + const handleFacebookSignIn = async () => { + console.log("Facebook Sign In"); + }; + + const handleAppleSignIn = async () => { + console.log("Apple Sign In"); + }; + + const handleGithubSignIn = async () => { + console.log("Github Sign In"); + }; + return ( - - - - Welcome back! - - - setEmail(text)} - invalid={invalidLogin} - /> - setPassword(text)} - invalid={invalidLogin} - /> - - - + + router.back()} + style={styles.back_button} + > + + + + Welcome back! + How have you been? + + + setEmail(text)} + invalid={invalidLogin} + /> + setPassword(text)} + invalid={invalidLogin} + /> + + + + + + + Forgot password? + + + + + + + Or Login With + + - - - { - setAuthResponse(undefined) - invalidateLogin(false) - }} /> + + + + + + + + Don't have an account? + router.replace({ pathname: "/signup" })} + > + + Sign up + + + + + { + setAuthResponse(undefined); + invalidateLogin(false); + }} + /> + @@ -102,8 +190,12 @@ const styles = StyleSheet.create({ display: "flex", height: "100%", width: "100%", - justifyContent: "center", + justifyContent: "flex-start", alignItems: "center", + paddingHorizontal: Dimensions.get("window").width * 0.11, + paddingVertical: Dimensions.get("window").height * 0.01, + backgroundColor: "white", + gap: Dimensions.get("window").height * 0.029, }, //This is an example of where the error message could be @@ -112,7 +204,7 @@ const styles = StyleSheet.create({ justifyContent: "space-around", alignItems: "center", width: "100%", - bottom: Dimensions.get("window").height * 0.10, + top: Dimensions.get("window").height * 0.1, position: "absolute", }, @@ -134,13 +226,60 @@ const styles = StyleSheet.create({ header_container: { display: "flex", justifyContent: "center", - alignItems: "center", + alignItems: "flex-start", width: "100%", + marginBottom: Dimensions.get("window").height * 0.019, + marginTop: Dimensions.get("window").height * 0.23, }, header_text: { - fontFamily: "Gilroy-ExtraBold", - fontSize: 30, + fontFamily: "Quicksand-Bold", + fontSize: 37, + marginBottom: Dimensions.get("window").height * 0.01, + }, + subheader_text: { + fontFamily: "Quicksand-Medium", + fontSize: 20, + }, + regular_text: { + fontFamily: "Quicksand-Medium", + color: "#8E8E8E", + }, + horizontal_line: { + flex: 1, + height: 1, + backgroundColor: "#8E8E8E", + }, + externalLinkContainer: { + display: "flex", + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + width: "100%", + }, + footer_text: { + fontFamily: "Quicksand-Bold", + color: "black", + fontSize: 15, + }, + footer_text_container: { + display: "flex", + flexDirection: "row", + justifyContent: "center", + alignItems: "flex-end", + gap: 7, + flex: 1, + paddingBottom: Dimensions.get("window").height * 0.01, + }, + divider_container: { + flexDirection: "row", + alignItems: "center", + marginVertical: Dimensions.get("window").height * 0.011, + }, + back_button: { + position: "absolute", + top: Dimensions.get("window").height * 0.075, + left: Dimensions.get("window").width * 0.075, }, }); diff --git a/client/src/components/Common/AuthButtons.tsx b/client/src/components/Common/AuthButtons.tsx index ef940944a..973611948 100644 --- a/client/src/components/Common/AuthButtons.tsx +++ b/client/src/components/Common/AuthButtons.tsx @@ -1,5 +1,15 @@ import React, { useState } from "react"; -import { StyleSheet, Text, TouchableOpacity, Dimensions, Alert } from "react-native"; +import { + StyleSheet, + Text, + TouchableOpacity, + Dimensions, + Alert, + Image, + View, + ImageSourcePropType, + Platform, +} from "react-native"; import { router, useRouter } from "expo-router"; import { useFonts } from "expo-font"; import { appSignOut } from "../../services/store"; @@ -35,7 +45,10 @@ export const SignOutButton: React.FC = () => { router.replace("/"); } else if (response?.error) { console.log(response.error); - Alert.alert("Sign Out Failed", "An error occurred during sign out. Please try again."); + Alert.alert( + "Sign Out Failed", + "An error occurred during sign out. Please try again." + ); } }, }, @@ -49,16 +62,22 @@ export const SignOutButton: React.FC = () => { } return ( - - Sign Out + + Sign Out ); }; -export const LogInButton: React.FC<{ onPress?: () => void }> = ({ onPress }) => { +export const LogInButton: React.FC<{ onPress?: () => void }> = ({ + onPress, +}) => { const [fontsLoaded, fontError] = useFonts({ - 'Gilroy-ExtraBold': require('../../../assets/fonts/Gilroy-ExtraBold.otf'), - 'Gilroy-Light': require('../../../assets/fonts/Gilroy-Light.otf'), + "Gilroy-ExtraBold": require("../../../assets/fonts/Gilroy-ExtraBold.otf"), + "Gilroy-Light": require("../../../assets/fonts/Gilroy-Light.otf"), }); if (!fontsLoaded && !fontError) { @@ -66,27 +85,63 @@ export const LogInButton: React.FC<{ onPress?: () => void }> = ({ onPress }) => } return ( - + Login ); }; +export const ExternalLoginButton: React.FC<{ + onPress?: () => void; + companyName: string; + imageSource?: ImageSourcePropType; +}> = ({ onPress, companyName, imageSource }) => { + const images: { [key: string]: ImageSourcePropType } = { + google: require("../../../assets/google_logo.png"), + apple: require("../../../assets/apple_logo.png"), + github: require("../../../assets/github_logo.png"), + facebook: require("../../../assets/facebook_logo.png"), + }; + + const clicked = () => { + onPress && onPress(); + }; + + return ( + + + + ); +}; + const styles = StyleSheet.create({ - button: { + login_button: { backgroundColor: "#5dbea3", width: Dimensions.get("window").width * 0.5, height: Dimensions.get("window").height * 0.05, display: "flex", justifyContent: "center", alignItems: "center", - borderRadius: 10, + borderRadius: Dimensions.get("window").height / 2, + shadowColor: "#8E8E8E", + shadowRadius: 2, + shadowOpacity: 0.7, + shadowOffset: { + width: 0, + height: 2, + }, + elevation: 2, }, button_text: { color: "white", - fontFamily: "Gilroy-ExtraBold", - fontSize: Dimensions.get("window").height * 0.03, + fontFamily: "Quicksand-Medium", + fontSize: Dimensions.get("window").height * 0.027, }, sign_out_button: { @@ -99,4 +154,29 @@ const styles = StyleSheet.create({ borderRadius: 8, padding: 5, }, + external_login_button: { + display: "flex", + justifyContent: "center", + alignItems: "center", + backgroundColor: "white", + height: Dimensions.get("window").height * 0.068, + width: Dimensions.get("window").height * 0.068, + borderRadius: 10, + padding: 10, + shadowColor: "#8E8E8E", + shadowRadius: 2, + shadowOpacity: 0.7, + shadowOffset: { + width: 0, + height: 2, + }, + elevation: 2, + borderWidth: 1, + borderColor: "#8E8E8E", + }, + login_logo: { + resizeMode: "contain", + height: "100%", + width: "100%", + }, }); diff --git a/client/src/components/Common/CustomInputs.tsx b/client/src/components/Common/CustomInputs.tsx index 71871be41..336530378 100644 --- a/client/src/components/Common/CustomInputs.tsx +++ b/client/src/components/Common/CustomInputs.tsx @@ -1,148 +1,184 @@ -import React from 'react' -import { TextInput, View, StyleSheet, Dimensions, Platform } from 'react-native' -import { ChatSendButton } from './CustomButtons' +import React from "react"; +import { + TextInput, + View, + StyleSheet, + Dimensions, + Platform, +} from "react-native"; +import { useFonts } from "expo-font"; +import { ChatSendButton } from "./CustomButtons"; interface ChatInputProps { - value?: string, - onChangeText?: (text: string) => void - invalid?: boolean, - onSend?: () => void, + value?: string; + onChangeText?: (text: string) => void; + invalid?: boolean; + onSend?: () => void; } -export const WelcomeEmailInput: React.FC = ({ value, onChangeText }) => { - return ( - - ) -} +export const WelcomeEmailInput: React.FC = ({ + value, + onChangeText, +}) => { + return ( + + ); +}; // Maybe will put LogInEmailInput & LogInPasswordInput two together into a single component -export const LogInEmailInput: React.FC = ({ value, onChangeText, invalid }) => { - return ( - - ) -} +export const LogInEmailInput: React.FC = ({ + value, + onChangeText, + invalid, +}) => { + return ( + + ); +}; -export const LogInPasswordInput: React.FC = ({ value, onChangeText, invalid }) => { - return ( - - ) -} +export const LogInPasswordInput: React.FC = ({ + value, + onChangeText, + invalid, +}) => { + return ( + + ); +}; // sign up screen inputs -export const SignUpEmailInput: React.FC = ({ value, onChangeText }) => { - return ( - - ) -} +export const SignUpEmailInput: React.FC = ({ + value, + onChangeText, +}) => { + return ( + + ); +}; -export const SignUpPasswordInput: React.FC = ({ value, onChangeText}) => { - return ( - - ) -} +export const SignUpPasswordInput: React.FC = ({ + value, + onChangeText, +}) => { + return ( + + ); +}; + +export const SignUpConfirmPasswordInput: React.FC = ({ + value, + onChangeText, +}) => { + return ( + + ); +}; -export const SignUpConfirmPasswordInput: React.FC = ({ value, onChangeText}) => { - return ( - = ({ + value, + onChangeText, + onSend, +}) => { + return ( + + - ) -} - -export const ChatInput: React.FC = ({ value, onChangeText, onSend }) => { - + maxLength={500} + style={styles.messageInput} + /> - - return ( - - - - - - - ) + + + ); }; const styles = StyleSheet.create({ - - welcomeEmailInput: { - height: '100%', - borderWidth: 1, - borderRadius: 30, - paddingLeft: 15, - paddingRight: 15, - flex: 1, - }, - - loginInput: { - width: Dimensions.get('window').width * 0.75, - minHeight: Dimensions.get('window').height * 0.055, - borderWidth: 1, - borderRadius: 30, - paddingTop: Platform.OS === 'ios' ? 15 : 0, - paddingBottom: Platform.OS === 'ios' ? 15 : 0, - paddingLeft: 15, - paddingRight: 15, - }, - messsageContainer: { - width: Dimensions.get('window').width * 0.75, - borderWidth: 1, - borderRadius: 30, - paddingTop: Dimensions.get('window').height * 0.006, - paddingBottom: Dimensions.get('window').height * 0.006, - paddingLeft: 15, - paddingRight: Dimensions.get('window').height * 0.006, - flexDirection: 'row', - flex: 1, - justifyContent: 'space-between', - alignItems: 'center', - borderColor: "#8E8E8E" - }, - messageInput: { - width: Dimensions.get('window').height * 0.35, - fontSize: 16, - }, - invalidLoginInput: { - borderColor: 'red', - }, - -}); \ No newline at end of file + welcomeEmailInput: { + height: "100%", + borderWidth: 1, + borderRadius: 30, + paddingLeft: 15, + paddingRight: 15, + flex: 1, + }, + + loginInput: { + width: "100%", + minHeight: Dimensions.get("window").height * 0.055, + borderWidth: 1.5, + borderColor: "#D6D6D6", + borderRadius: Dimensions.get("window").height * 0.015, + paddingTop: Platform.OS === "ios" ? 15 : 0, + paddingBottom: Platform.OS === "ios" ? 15 : 0, + paddingLeft: 20, + paddingRight: 20, + backgroundColor: "#F7F7F7", + fontFamily: "Quicksand-Medium", + elevation: 2, + }, + messsageContainer: { + width: Dimensions.get("window").width * 0.75, + borderWidth: 1, + borderRadius: 30, + paddingTop: Dimensions.get("window").height * 0.006, + paddingBottom: Dimensions.get("window").height * 0.006, + paddingLeft: 15, + paddingRight: Dimensions.get("window").height * 0.006, + flexDirection: "row", + flex: 1, + justifyContent: "space-between", + alignItems: "center", + borderColor: "#8E8E8E", + }, + messageInput: { + width: Dimensions.get("window").height * 0.35, + fontSize: 16, + }, + invalidLoginInput: { + borderColor: "red", + }, +});