From 9567c54cd38fe6c448368a03f35c3f568cf846df Mon Sep 17 00:00:00 2001
From: jinyoung <87177577+jinyoung234@users.noreply.github.com>
Date: Thu, 11 Jul 2024 18:17:43 +0900
Subject: [PATCH 001/110] =?UTF-8?q?[Feature]=20-=20=ED=94=84=EB=A1=9C?=
=?UTF-8?q?=EC=A0=9D=ED=8A=B8=20=ED=99=98=EA=B2=BD=20=EC=84=B8=ED=8C=85=20?=
=?UTF-8?q?(#4)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore: 초기 package.json 설정
* chore: .gitignore 추가
* chore: tsconfig.json 초기 설정
* chore: react 내 webpack 세팅
1. webpack 관련 의존성 추가
2. build scrpit 수정
3. webpack.common.js 추가
4. public 디렉터리 내 index.html 추가
5. src 디렉터리 내 App.tsx 및 main.tsx 추가
* chore: prettier & eslint 설정
* chore: emotion 설정
---
frontend/.eslintrc.cjs | 19 +++
frontend/.gitignore | 29 ++++
frontend/.prettierrc.json | 28 ++++
frontend/package.json | 69 ++++++++++
frontend/public/index.html | 12 ++
frontend/src/App.tsx | 3 +
frontend/src/main.tsx | 14 ++
frontend/src/styles/globalStyle.ts | 204 +++++++++++++++++++++++++++++
frontend/tsconfig.json | 25 ++++
frontend/webpack.common.js | 42 ++++++
10 files changed, 445 insertions(+)
create mode 100644 frontend/.eslintrc.cjs
create mode 100644 frontend/.gitignore
create mode 100644 frontend/.prettierrc.json
create mode 100644 frontend/package.json
create mode 100644 frontend/public/index.html
create mode 100644 frontend/src/App.tsx
create mode 100644 frontend/src/main.tsx
create mode 100644 frontend/src/styles/globalStyle.ts
create mode 100644 frontend/tsconfig.json
create mode 100644 frontend/webpack.common.js
diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs
new file mode 100644
index 00000000..51b43308
--- /dev/null
+++ b/frontend/.eslintrc.cjs
@@ -0,0 +1,19 @@
+module.exports = {
+ env: { browser: true, es2020: true, jest: true },
+ extends: [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/recommended",
+ "plugin:react-hooks/recommended",
+ "plugin:compat/recommended",
+ ],
+ plugins: ["react-refresh", "prettier", "@typescript-eslint"],
+ ignorePatterns: ["dist", ".eslintrc.cjs"],
+ parser: "@typescript-eslint/parser",
+ rules: {
+ "react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
+ "import/no-unresolved": "off",
+ "@typescript-eslint/no-var-requires": "off",
+ "no-undef": "off",
+ "compat/compat": "warn",
+ },
+};
diff --git a/frontend/.gitignore b/frontend/.gitignore
new file mode 100644
index 00000000..612ee679
--- /dev/null
+++ b/frontend/.gitignore
@@ -0,0 +1,29 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# storybook
+build-storybook.log
+
+node_modules
+*storybook.log
\ No newline at end of file
diff --git a/frontend/.prettierrc.json b/frontend/.prettierrc.json
new file mode 100644
index 00000000..592e5538
--- /dev/null
+++ b/frontend/.prettierrc.json
@@ -0,0 +1,28 @@
+{
+ "endOfLine": "auto",
+ "singleQuote": false,
+ "semi": true,
+ "useTabs": false,
+ "tabWidth": 2,
+ "trailingComma": "all",
+ "printWidth": 100,
+ "bracketSpacing": true,
+ "arrowParens": "always",
+ "prefer-const": true,
+ "plugins": ["@trivago/prettier-plugin-sort-imports"],
+ "importOrder": [
+ "^@emotion/(.*)$",
+ "^@apis/(.*)$",
+ "^@hooks/(.*)$",
+ "^(@|components/common)(.*|$)",
+ "^(@|components/layout)(.*|$)",
+ "^(@|components/pages)(.*|$)",
+ "^@components/(.*)$",
+ "^@styles/(.*)$",
+ "^@assets/(.*)$",
+ "^@constants/(.*)$",
+ "^[./]"
+ ],
+ "importOrderSeparation": true,
+ "importOrderSortSpecifiers": true
+}
diff --git a/frontend/package.json b/frontend/package.json
new file mode 100644
index 00000000..cc0a9b46
--- /dev/null
+++ b/frontend/package.json
@@ -0,0 +1,69 @@
+{
+ "name": "2024-touroot",
+ "version": "1.0.0",
+ "description": "to your route, 투룻!",
+ "repository": "https://github.com/woowacourse-teams/2024-touroot",
+ "scripts": {
+ "dev": "webpack serve --config webpack.common.js",
+ "build": "NODE_ENV=production webpack --config webpack.common.js"
+ },
+ "dependencies": {
+ "@emotion/react": "^11.11.4",
+ "@emotion/styled": "^11.11.5",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
+ },
+ "devDependencies": {
+ "@trivago/prettier-plugin-sort-imports": "^4.3.0",
+ "@types/react": "^18.3.3",
+ "@types/react-dom": "^18.3.0",
+ "@typescript-eslint/eslint-plugin": "^7.16.0",
+ "@typescript-eslint/parser": "^7.16.0",
+ "eslint": "8.57.0",
+ "eslint-config-prettier": "^9.1.0",
+ "eslint-plugin-compat": "^5.0.0",
+ "eslint-plugin-prettier": "^5.1.3",
+ "eslint-plugin-react": "^7.34.3",
+ "eslint-plugin-react-hooks": "^4.6.2",
+ "eslint-plugin-react-refresh": "^0.4.8",
+ "html-webpack-plugin": "^5.6.0",
+ "prettier": "^3.3.2",
+ "ts-loader": "^9.5.1",
+ "typescript": "^5.5.3",
+ "webpack": "^5.92.1",
+ "webpack-cli": "^5.1.4",
+ "webpack-dev-server": "^5.0.4",
+ "webpack-merge": "^6.0.1"
+ },
+ "contributors": [
+ {
+ "name": "Jinyoung Son",
+ "email": "sm099@naver.com",
+ "url": "https://github.com/jinyoung234"
+ },
+ {
+ "name": "Horim Sim",
+ "email": "hori5020@gmail.com",
+ "url": "https://github.com/simorimi"
+ },
+ {
+ "name": "Jaehee Choi",
+ "email": "jenn0.6n@gmail.com",
+ "url": "https://github.com/0jenn0"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "react",
+ "typescript",
+ "webpack"
+ ],
+ "engines": {
+ "npm": ">=10.7.0",
+ "node": ">=20.15.1"
+ },
+ "browserslist": [
+ ">1%",
+ "not dead"
+ ]
+}
diff --git a/frontend/public/index.html b/frontend/public/index.html
new file mode 100644
index 00000000..244cde8e
--- /dev/null
+++ b/frontend/public/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ Hello React
+
+
+
+
+
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
new file mode 100644
index 00000000..1f1b34b9
--- /dev/null
+++ b/frontend/src/App.tsx
@@ -0,0 +1,3 @@
+export default function App() {
+ return App
;
+}
diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx
new file mode 100644
index 00000000..3eb1ff60
--- /dev/null
+++ b/frontend/src/main.tsx
@@ -0,0 +1,14 @@
+import ReactDOM from "react-dom/client";
+
+import { Global } from "@emotion/react";
+
+import { globalStyle } from "@styles/globalStyle";
+
+import App from "./App";
+
+ReactDOM.createRoot(document.getElementById("root")!).render(
+ <>
+
+
+ >,
+);
diff --git a/frontend/src/styles/globalStyle.ts b/frontend/src/styles/globalStyle.ts
new file mode 100644
index 00000000..61eef010
--- /dev/null
+++ b/frontend/src/styles/globalStyle.ts
@@ -0,0 +1,204 @@
+import { css } from "@emotion/react";
+
+export const globalStyle = css`
+ html,
+ body,
+ div,
+ span,
+ applet,
+ object,
+ iframe,
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ p,
+ blockquote,
+ pre,
+ a,
+ abbr,
+ acronym,
+ address,
+ big,
+ cite,
+ code,
+ del,
+ dfn,
+ em,
+ img,
+ ins,
+ kbd,
+ q,
+ s,
+ samp,
+ small,
+ strike,
+ strong,
+ sub,
+ sup,
+ tt,
+ var,
+ b,
+ u,
+ i,
+ center,
+ dl,
+ dt,
+ dd,
+ ol,
+ ul,
+ li,
+ fieldset,
+ form,
+ label,
+ legend,
+ table,
+ caption,
+ tbody,
+ tfoot,
+ thead,
+ tr,
+ th,
+ td,
+ article,
+ aside,
+ canvas,
+ details,
+ embed,
+ figure,
+ figcaption,
+ footer,
+ header,
+ hgroup,
+ menu,
+ nav,
+ output,
+ ruby,
+ section,
+ summary,
+ time,
+ mark,
+ audio,
+ video {
+ vertical-align: baseline;
+ margin: 0;
+ border: 0;
+ padding: 0;
+ font-size: 100%;
+ font: inherit;
+ }
+ article,
+ aside,
+ details,
+ figcaption,
+ figure,
+ footer,
+ header,
+ hgroup,
+ menu,
+ nav,
+ section {
+ display: block;
+ }
+ * {
+ user-select: none;
+ }
+ body {
+ font-family: sans-serif;
+ }
+ ol,
+ ul,
+ li {
+ list-style: none;
+ }
+ blockquote,
+ q {
+ quotes: none;
+ }
+ blockquote:before,
+ blockquote:after,
+ q:before,
+ q:after {
+ content: "";
+ content: none;
+ }
+ table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ }
+ button {
+ cursor: pointer;
+ outline: none;
+ border: none;
+ background-color: inherit;
+ padding: 0;
+ color: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+ }
+ input[type="text"] {
+ padding: 0;
+ padding-inline: 0;
+ padding-block: 0;
+ }
+
+ *,
+ *::before,
+ *::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ }
+
+ html {
+ font-size: 62.5%;
+ }
+
+ body {
+ background-color: white;
+ color: black;
+ font-size: 1.6rem;
+ font-family:
+ system-ui,
+ -apple-system,
+ BlinkMacSystemFont,
+ "Open Sans",
+ "Helvetica Neue",
+ sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+
+ code {
+ font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
+ }
+
+ li {
+ list-style: none;
+ }
+
+ button {
+ cursor: pointer;
+ }
+
+ a {
+ text-decoration: none;
+ }
+
+ #root {
+ position: relative;
+
+ margin: 0 auto;
+
+ box-shadow: 0 0 0.315rem rgba(0, 0, 0, 0.25);
+
+ background-color: white;
+ min-width: 28rem;
+
+ max-width: 48rem;
+
+ min-height: 100vh;
+ }
+`;
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
new file mode 100644
index 00000000..3672bed8
--- /dev/null
+++ b/frontend/tsconfig.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "ESNext",
+ "skipLibCheck": true,
+
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": false,
+ "noEmit": false,
+ "jsx": "react-jsx",
+ "jsxImportSource": "@emotion/react",
+
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "baseUrl": "src",
+ "paths": {
+ "@styles/*": ["styles/*"]
+ }
+ },
+ "include": ["src"],
+ "exclude": ["node_modules"]
+}
diff --git a/frontend/webpack.common.js b/frontend/webpack.common.js
new file mode 100644
index 00000000..875ec693
--- /dev/null
+++ b/frontend/webpack.common.js
@@ -0,0 +1,42 @@
+const HtmlWebpackPlugin = require("html-webpack-plugin");
+const path = require("path");
+
+const isDevelopment = process.env.NODE_ENV !== "production";
+
+module.exports = {
+ mode: isDevelopment ? "development" : "production",
+ entry: "./src/main.tsx",
+ output: {
+ filename: "touroot.js",
+ path: path.resolve(__dirname, "dist"),
+ clean: true,
+ },
+ resolve: {
+ alias: {
+ "@styles": path.resolve(__dirname, "src/styles/"),
+ },
+ extensions: [".ts", ".tsx", ".js", ".jsx"],
+ },
+ module: {
+ rules: [
+ {
+ test: /\.(ts|tsx)$/i,
+ exclude: /node_modules/,
+ use: {
+ loader: "ts-loader",
+ },
+ },
+ ],
+ },
+ plugins: [
+ new HtmlWebpackPlugin({
+ template: "./public/index.html",
+ }),
+ ],
+ devServer: {
+ compress: true,
+ port: 3000,
+ open: true,
+ historyApiFallback: true,
+ },
+};
From f61f3a0e5c1fb111853688a036ff88e66abeb90b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E1=84=89=E1=85=A9=E1=86=AB=E1=84=8C=E1=85=B5=E1=86=AB?=
=?UTF-8?q?=E1=84=8B=E1=85=A7=E1=86=BC?=
Date: Fri, 12 Jul 2024 10:46:43 +0900
Subject: [PATCH 002/110] =?UTF-8?q?docs:=20pull=20request=20=ED=85=9C?=
=?UTF-8?q?=ED=94=8C=EB=A6=BF=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/PULL_REQUEST_TEMPLATE.md | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 .github/PULL_REQUEST_TEMPLATE.md
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 00000000..e413ffe6
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,9 @@
+# ✅ 작업 내용
+
+- 작업 내용 1
+- 작업 내용 2
+- 작업 내용 3
+
+# 📸 스크린샷
+
+# 🙈 참고 사항
From 88b5338410f83a695283dd7382bb8a87be459459 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E1=84=89=E1=85=A9=E1=86=AB=E1=84=8C=E1=85=B5=E1=86=AB?=
=?UTF-8?q?=E1=84=8B=E1=85=A7=E1=86=BC?=
Date: Fri, 12 Jul 2024 13:41:54 +0900
Subject: [PATCH 003/110] =?UTF-8?q?chore:=20package.json=20=EB=82=B4=20bro?=
=?UTF-8?q?swerslist=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
1%에서 5%로 변경(크롬, 사파리, 엣지만 점유율이 5% 이상이기 때문)
사소한 설정으로 인해 develop에 바로 push
---
frontend/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/frontend/package.json b/frontend/package.json
index cc0a9b46..3bf3b8bc 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -63,7 +63,7 @@
"node": ">=20.15.1"
},
"browserslist": [
- ">1%",
+ ">5%",
"not dead"
]
}
From eae8ec997a9e0da29d096f3f48d3598ded1aea37 Mon Sep 17 00:00:00 2001
From: jinyoung <87177577+jinyoung234@users.noreply.github.com>
Date: Thu, 18 Jul 2024 15:32:57 +0900
Subject: [PATCH 004/110] =?UTF-8?q?[Feature]=20-=20stylelint=20=EC=84=A4?=
=?UTF-8?q?=EC=A0=95=20(#51)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore: stylelint 관련 의존성 추가
* chore: stylelint 규칙 stylelintrc.json에 추가
* chore: vscode 관련 설정 추가
---
.vscode/extensions.json | 3 ++
.vscode/settings.json | 8 ++++
frontend/.stylelintrc.json | 82 ++++++++++++++++++++++++++++++++++++++
frontend/package.json | 7 +++-
4 files changed, 99 insertions(+), 1 deletion(-)
create mode 100644 .vscode/extensions.json
create mode 100644 .vscode/settings.json
create mode 100644 frontend/.stylelintrc.json
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 00000000..494eea3e
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["stylelint.vscode-stylelint"]
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..198eace8
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,8 @@
+{
+ "editor.codeActionsOnSave": {
+ "source.fixAll.stylelint": "explicit"
+ },
+ "stylelint.validate": ["typescriptreact", "typescript"],
+ "stylelint.configFile": "./frontend/.stylelintrc.json",
+ "stylelint.packageManager": "yarn"
+}
diff --git a/frontend/.stylelintrc.json b/frontend/.stylelintrc.json
new file mode 100644
index 00000000..54549255
--- /dev/null
+++ b/frontend/.stylelintrc.json
@@ -0,0 +1,82 @@
+{
+ "extends": ["stylelint-config-standard"],
+ "plugins": ["stylelint-order"],
+ "customSyntax": "postcss-styled-syntax",
+ "rules": {
+ "declaration-empty-line-before": [
+ "always",
+ {
+ "ignore": ["first-nested", "after-comment", "after-declaration", "inside-single-line-block"]
+ }
+ ],
+ "order/properties-order": [
+ {
+ "groupName": "Layout",
+ "noEmptyLineBetween": true,
+ "properties": [
+ "display",
+ "visibility",
+ "overflow",
+ "float",
+ "clear",
+ "position",
+ "top",
+ "right",
+ "bottom",
+ "left",
+ "z-index"
+ ]
+ },
+ {
+ "groupName": "Box",
+ "emptyLineBefore": "always",
+ "noEmptyLineBetween": true,
+ "properties": [
+ "width",
+ "height",
+ "margin",
+ "margin-top",
+ "margin-right",
+ "margin-bottom",
+ "margin-left",
+ "padding",
+ "padding-top",
+ "padding-right",
+ "padding-bottom",
+ "padding-left",
+ "border"
+ ]
+ },
+ {
+ "groupName": "Background",
+ "emptyLineBefore": "always",
+ "noEmptyLineBetween": true,
+ "properties": ["background-color"]
+ },
+ {
+ "groupName": "Font",
+ "emptyLineBefore": "always",
+ "noEmptyLineBetween": true,
+ "properties": [
+ "color",
+ "font-style",
+ "font-weight",
+ "font-size",
+ "line-height",
+ "letter-spacing",
+ "text-align",
+ "text-indent",
+ "vertical-align",
+ "white-space"
+ ]
+ },
+ {
+ "groupName": "Animation",
+ "emptyLineBefore": "always",
+ "noEmptyLineBetween": true,
+ "properties": ["animation"]
+ }
+ ]
+ },
+ "order/order": ["custom-properties", "declarations"]
+}
diff --git a/frontend/package.json b/frontend/package.json
index 3bf3b8bc..040a9d7e 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -5,7 +5,8 @@
"repository": "https://github.com/woowacourse-teams/2024-touroot",
"scripts": {
"dev": "webpack serve --config webpack.common.js",
- "build": "NODE_ENV=production webpack --config webpack.common.js"
+ "build": "NODE_ENV=production webpack --config webpack.common.js",
+ "lint:styled": "stylelint './src/**/*.styled.ts' --fix"
},
"dependencies": {
"@emotion/react": "^11.11.4",
@@ -27,7 +28,11 @@
"eslint-plugin-react-hooks": "^4.6.2",
"eslint-plugin-react-refresh": "^0.4.8",
"html-webpack-plugin": "^5.6.0",
+ "postcss-styled-syntax": "^0.6.4",
"prettier": "^3.3.2",
+ "stylelint": "16.6.1",
+ "stylelint-config-standard": "^36.0.1",
+ "stylelint-order": "^6.0.4",
"ts-loader": "^9.5.1",
"typescript": "^5.5.3",
"webpack": "^5.92.1",
From 3f2bcac3ec4859148a3a3cad47a7454a843c3ef5 Mon Sep 17 00:00:00 2001
From: jinyoung <87177577+jinyoung234@users.noreply.github.com>
Date: Thu, 18 Jul 2024 15:39:18 +0900
Subject: [PATCH 005/110] =?UTF-8?q?[Feature]=20-=20=EC=97=AC=ED=96=89?=
=?UTF-8?q?=EA=B8=B0=20=EC=83=81=EC=84=B8=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?=
=?UTF-8?q?=ED=98=84=20(#42)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat: 기본 폰트 설정
1. webpack 내 asset/resource 옵션 추가
2. pretendard 폰트 추가
3. woff에 대한 타입 추가
4. globalStyle 내 기본 폰트를 pretendard로 변경
* feat: svg 내 asset 설정
* feat: ThemeProvider 추가
1. theme 관련 declare 파일 추가
2. theme 추가
3. theme을 ThemeProvider 적용
* feat: svg를 컴포넌트 형태로 사용하도록 변경
1. @svgr/webpack 의존성 추가
2. webpack.common.js 내 관련 설정 추가(url, component 모두 사용)
3. svg.d.ts 내 svg 관련 타입 설정 추가
* feat: font 관련 local 함수 추가
* feat: assets/index.ts 내 marker url 설정 추가
* feat: tanstack query 의존성 추가
* chore: prettier 내 sort 순서 변경
* chore: 환경 변수 세팅
1. dotenv-webpack 의존성 추가
2. webpack config 파일 내 DotenvWebpack를 통해 환경변수 파일 동적으로 변경하도록 설정
* feat: axios instance 객체 생성
baseUrl 지정
* feat: react-query 및 devtools 설정 추가
* chore: @apis path alias 추가
* refactor: theme 내 detail에 font-family 제거
* feat: Box 컴포넌트 구현
* feat: Carousel 컴포넌트 구현
* feat: Header 컴포넌트 구현
* feat: Tab 컴포넌트 구현
* feat: TransformBottomSheet 컴포넌트 구현
* feat: PlaceDetailCard 컴포넌트 구현
* feat: TravelogueTabContent 컴포넌트 구현
* feat: GoogleMapView 컴포넌트 구현
* chore: re-export 관련 설정 추가
* feat: 초기 여행기 상세 페이지 구현
* chore: .gitignore 내 .env.development, .env.production만 오도록 변경
* chore: @react-google-maps/api 의존성 추가
* fix(Carousel): 이미지가 이동하지 않는 문제 해결
max-width 대신 transform 속성 추가
---
frontend/.gitignore | 6 +-
frontend/.prettierrc.json | 10 +-
frontend/package.json | 6 ++
frontend/src/App.tsx | 10 +-
frontend/src/apis/client.ts | 5 +
.../woff-subset/Pretendard-Black.subset.woff | Bin 0 -> 353268 bytes
.../woff-subset/Pretendard-Bold.subset.woff | Bin 0 -> 349904 bytes
.../Pretendard-ExtraBold.subset.woff | Bin 0 -> 351920 bytes
.../Pretendard-ExtraLight.subset.woff | Bin 0 -> 346740 bytes
.../woff-subset/Pretendard-Light.subset.woff | Bin 0 -> 349316 bytes
.../woff-subset/Pretendard-Medium.subset.woff | Bin 0 -> 349340 bytes
.../Pretendard-Regular.subset.woff | Bin 0 -> 347852 bytes
.../Pretendard-SemiBold.subset.woff | Bin 0 -> 347944 bytes
.../woff-subset/Pretendard-Thin.subset.woff | Bin 0 -> 342876 bytes
frontend/src/assets/svg/back-icon.svg | 3 +
frontend/src/assets/svg/down-arrow.svg | 3 +
frontend/src/assets/svg/empty-heart.svg | 3 +
frontend/src/assets/svg/hamburger.svg | 3 +
frontend/src/assets/svg/index.ts | 9 ++
frontend/src/assets/svg/marker.svg | 18 ++++
frontend/src/assets/svg/next-arrow.svg | 3 +
frontend/src/assets/svg/prev-arrow.svg | 3 +
frontend/src/assets/svg/up-arrow.svg | 3 +
.../src/components/common/Box/Box.styled.ts | 29 ++++++
frontend/src/components/common/Box/Box.tsx | 21 ++++
.../common/Carousel/Carousel.styled.ts | 83 ++++++++++++++++
.../components/common/Carousel/Carousel.tsx | 59 +++++++++++
.../common/GoogleMapView/GoogleMapView.tsx | 92 ++++++++++++++++++
.../components/common/Header/Header.styled.ts | 15 +++
.../src/components/common/Header/Header.tsx | 14 +++
.../src/components/common/Tab/Tab.styled.ts | 27 +++++
frontend/src/components/common/Tab/Tab.tsx | 75 ++++++++++++++
.../TransformBottomSheet.styled.ts | 68 +++++++++++++
.../TransformBottomSheet.tsx | 43 ++++++++
frontend/src/components/common/index.ts | 6 ++
frontend/src/components/pages/index.ts | 0
.../PlaceDetailCard/PlaceDetailCard.styled.ts | 40 ++++++++
.../PlaceDetailCard/PlaceDetailCard.tsx | 27 +++++
.../TravelogueDetailPage.styled.ts | 50 ++++++++++
.../travelogueDetail/TravelogueDetailPage.tsx | 80 +++++++++++++++
.../TravelogueTabContent.tsx | 67 +++++++++++++
frontend/src/main.tsx | 25 ++++-
frontend/src/styles/emotion.d.ts | 19 ++++
frontend/src/styles/fonts.d.ts | 1 +
frontend/src/styles/globalStyle.ts | 85 +++++++++++++---
frontend/src/styles/svg.d.ts | 10 ++
frontend/src/styles/theme.ts | 39 ++++++++
frontend/tsconfig.json | 5 +-
frontend/webpack.common.js | 22 +++++
49 files changed, 1057 insertions(+), 30 deletions(-)
create mode 100644 frontend/src/apis/client.ts
create mode 100644 frontend/src/assets/fonts/woff-subset/Pretendard-Black.subset.woff
create mode 100644 frontend/src/assets/fonts/woff-subset/Pretendard-Bold.subset.woff
create mode 100644 frontend/src/assets/fonts/woff-subset/Pretendard-ExtraBold.subset.woff
create mode 100644 frontend/src/assets/fonts/woff-subset/Pretendard-ExtraLight.subset.woff
create mode 100644 frontend/src/assets/fonts/woff-subset/Pretendard-Light.subset.woff
create mode 100644 frontend/src/assets/fonts/woff-subset/Pretendard-Medium.subset.woff
create mode 100644 frontend/src/assets/fonts/woff-subset/Pretendard-Regular.subset.woff
create mode 100644 frontend/src/assets/fonts/woff-subset/Pretendard-SemiBold.subset.woff
create mode 100644 frontend/src/assets/fonts/woff-subset/Pretendard-Thin.subset.woff
create mode 100644 frontend/src/assets/svg/back-icon.svg
create mode 100644 frontend/src/assets/svg/down-arrow.svg
create mode 100644 frontend/src/assets/svg/empty-heart.svg
create mode 100644 frontend/src/assets/svg/hamburger.svg
create mode 100644 frontend/src/assets/svg/index.ts
create mode 100644 frontend/src/assets/svg/marker.svg
create mode 100644 frontend/src/assets/svg/next-arrow.svg
create mode 100644 frontend/src/assets/svg/prev-arrow.svg
create mode 100644 frontend/src/assets/svg/up-arrow.svg
create mode 100644 frontend/src/components/common/Box/Box.styled.ts
create mode 100644 frontend/src/components/common/Box/Box.tsx
create mode 100644 frontend/src/components/common/Carousel/Carousel.styled.ts
create mode 100644 frontend/src/components/common/Carousel/Carousel.tsx
create mode 100644 frontend/src/components/common/GoogleMapView/GoogleMapView.tsx
create mode 100644 frontend/src/components/common/Header/Header.styled.ts
create mode 100644 frontend/src/components/common/Header/Header.tsx
create mode 100644 frontend/src/components/common/Tab/Tab.styled.ts
create mode 100644 frontend/src/components/common/Tab/Tab.tsx
create mode 100644 frontend/src/components/common/TransformBottomSheet/TransformBottomSheet.styled.ts
create mode 100644 frontend/src/components/common/TransformBottomSheet/TransformBottomSheet.tsx
create mode 100644 frontend/src/components/common/index.ts
create mode 100644 frontend/src/components/pages/index.ts
create mode 100644 frontend/src/components/pages/travelogueDetail/PlaceDetailCard/PlaceDetailCard.styled.ts
create mode 100644 frontend/src/components/pages/travelogueDetail/PlaceDetailCard/PlaceDetailCard.tsx
create mode 100644 frontend/src/components/pages/travelogueDetail/TravelogueDetailPage.styled.ts
create mode 100644 frontend/src/components/pages/travelogueDetail/TravelogueDetailPage.tsx
create mode 100644 frontend/src/components/pages/travelogueDetail/TravelogueTabContent/TravelogueTabContent.tsx
create mode 100644 frontend/src/styles/emotion.d.ts
create mode 100644 frontend/src/styles/fonts.d.ts
create mode 100644 frontend/src/styles/svg.d.ts
create mode 100644 frontend/src/styles/theme.ts
diff --git a/frontend/.gitignore b/frontend/.gitignore
index 612ee679..dfa8bccc 100644
--- a/frontend/.gitignore
+++ b/frontend/.gitignore
@@ -13,10 +13,8 @@
# misc
.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
+.env.development
+.env.production
npm-debug.log*
yarn-debug.log*
diff --git a/frontend/.prettierrc.json b/frontend/.prettierrc.json
index 592e5538..57c2fec8 100644
--- a/frontend/.prettierrc.json
+++ b/frontend/.prettierrc.json
@@ -11,16 +11,16 @@
"prefer-const": true,
"plugins": ["@trivago/prettier-plugin-sort-imports"],
"importOrder": [
+ "^react",
"^@emotion/(.*)$",
+ "",
+ "^@tanstack/(.*)$",
"^@apis/(.*)$",
- "^@hooks/(.*)$",
- "^(@|components/common)(.*|$)",
- "^(@|components/layout)(.*|$)",
- "^(@|components/pages)(.*|$)",
"^@components/(.*)$",
+ "^@hooks/(.*)$",
+ "^@constants/(.*)$",
"^@styles/(.*)$",
"^@assets/(.*)$",
- "^@constants/(.*)$",
"^[./]"
],
"importOrderSeparation": true,
diff --git a/frontend/package.json b/frontend/package.json
index 040a9d7e..c8866583 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -11,10 +11,16 @@
"dependencies": {
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.5",
+ "@react-google-maps/api": "^2.19.3",
+ "@tanstack/react-query": "^5.51.1",
+ "@tanstack/react-query-devtools": "^5.51.1",
+ "axios": "^1.7.2",
+ "dotenv-webpack": "^8.1.0",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
+ "@svgr/webpack": "^8.1.0",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 1f1b34b9..fd1f6596 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,3 +1,7 @@
-export default function App() {
- return App
;
-}
+import TravelogueDetailPage from "@components/pages/travelogueDetail/TravelogueDetailPage";
+
+const App = () => {
+ return ;
+};
+
+export default App;
diff --git a/frontend/src/apis/client.ts b/frontend/src/apis/client.ts
new file mode 100644
index 00000000..762bb660
--- /dev/null
+++ b/frontend/src/apis/client.ts
@@ -0,0 +1,5 @@
+import axios from "axios";
+
+export const client = axios.create({
+ baseURL: process.env.REACT_APP_BASE_URL,
+});
diff --git a/frontend/src/assets/fonts/woff-subset/Pretendard-Black.subset.woff b/frontend/src/assets/fonts/woff-subset/Pretendard-Black.subset.woff
new file mode 100644
index 0000000000000000000000000000000000000000..f20e5a96839acb2cd1a5d99cbcca96e3956ba5a2
GIT binary patch
literal 353268
zcmZU4V~{94)Ari7ZQC}^+O}=mwr$(CZJ)Jm?|$cg>izensw|Y24Xp?R04Rs`@9O_6B1)3t|Lm^*bwK=|0E&xHmwR^H21RU<6H#Yz*xG>G}Zxr1t;-N>^dr{YuQNJxu?_7XbhfbO(Uo&NRGYJ2f{k
zFa`iI&;IAf_Mb3`TC$q|Q~vW6_}3=*CnV@kMC|4^&hG#0mH`0ZtN;K+baUu=p{(tU
z{@Dp_0|1cr{?oaOnAQFp*8ShOLf!x8OMqAeC~s?EV*&s&l>aX|M*skbTQEqM5%zXY
z&Hx}2|L%>&7670LBaGG%-F-9L3szfstmCKKY4#=&RL&X)JEJMgr0IGw_?G`4G+#(yg4Io-n!)anZZV!r&$W5=I{Z1_(lo5X;tx);aMYZQ}7U
z->S_lsB|O|cAyx$tY3#oIq|KjlhhESBrM)`d<_AvgbJ_bz>Q!SuulG-Zh6q2od2&X
zgdic^ms{Zy+)FQ&FFvbK1rBt@vgeX|Xdwb#lq&WfzImjy1k57V5D^ja^nJu=zou)CCuKnO%cFx$UGE!cC09RL9Xf3;}p2tcIzVZl-i;NTmu
ze589{_n{m#me!&wtxoISJ!Y%8y>30+e@00=(YJn|t$a!B`{hjf}M-_HcrS-6au2)?X3v9prV#Nua
z1cAqUI2S#yB@S;HD11JZ6-KI+yR%z{DrTTZ=ywWQl#ai{U`thD&-lTAwj3zR|dN2c3ddm(5UqX4I({vf9Qt8$l
zwCyoTJ8!0CT5qO#q6i@Gj3JPJfV~+lPz;lf>yW?d5W;mqDrx%3_<9XpmhsPhO?0h1
zXQmb%Ih&Dl`k;`_ygldg)|{`(2A2p&GSfc=UQL_3o-_2L2;}7Qe)_bP$?lKBWglF9
zN`e=7%vChb2fBkxtR2l?)kI?OM#VqwLa2A9DyYiAXWu}H_S9sx4Dxw+a*>
ze#U?pHcS2HzGL?LxHPiov+s5^n;WOUdhNyV$!=x$`v((P=Fb>~iE)@vMWlGu8!pC$
z|GybT=NfiMBwK1d{JZOqYN7IJx$=YNyw19i+$AAUJ`hkJYF*D8@6w>tKapyk{U>FB
z0+P^%$tRe0QC}Ia0C>_Gf?=K>dERdGi0a4Qh1E?(^r;oR&`&S!O7w}}CFn;yGxIvA
zEPDj0Xt;597S?t#6eJj?8M0lHO)#cZ)K}N$})Q6kHEiv-nU9IT347xJFirJ)1I?6^-bUXxN=XB
zhPEm2V>|y_4DxVH5@ZNc^a~O|=f|~=dT}oMv*AOq!g%m4G8t8yq8=pk2ga8Euq*z;
z@~o9SR)?Gx<1uEo?g?kSyBl0^5-lK%Z{8yo8Eoxh`>nPh=8L5>8ayahTQr0&f4@$O
z>aon`vj3Xww~|c2u{iw6M4^KXw;WVf8q1|IIC=>3y-**08{*`U?j8_I9BvUTpkQfcWTiLLL}sD&ak((Yn8ArX
zh4UDrg6C7UAIRFH$R!}ra4kRB6+jx2uJGX*<9)m15G|wt^ov|m0GcBp0hi==J`wrg
zMbxv1kHF!DVuf8t5`2*4*5!M!hN*4*CQW2s(=`Hx2VwxkCe$}B0xc70r8gdOQ9PBD
zbxu;s4Q4aoB`nrz459g8UfP^)%zoD&kU1U@tl9*%@Setk@dg0WnPIUgo^e%^1D_zd
zx|Hl%o!XTC=0kgme6W~aa~6H?`Uj2wFd@Yun|REIF&n}a7jKzYwYe+Y#!1d3+M1Te
z3NFRx=!1xMPJEiPL1QTHNp0sH&tbd0oWc3cLt7C;ZuS;bw^p3Y5WJD?BI*=s`Nm^o
z)t`NdjUY>IVsezuswSJ*I!B+lo5KTH(f5m^D3@6I>Uzs*uRnM5x(8^%Ygtzqo45*|
z=l6bm`jAF)50*~Rgc4AcuRKzu@&y;n{U2sSV$0hv!c<-iD279RWt~?C_=HF7go%|a
z+v_5C#bq27r0)-v!^J5eV1*MPNXf(~xIjq3&Ve*wg;iDyB=jA_1^b6NTigvIXvRZ)
z-fvOpwP~!LHhzS@)+J8jygXjLT6y>96Ek~G1tfgkp*_=(`ZAHNnUAu+H*{!>b9E-r0Te6
z_$lU%9}t7dldSR`xK!I%@=#Tq`kbZbAcJ&>);J81jA?tf4@~FK6lo-T~X|s
zEU5Yo(DjQmARVN3^und#yqi2OlZ11Okzag$jwjd7UCpm|+Wh|ZL>lj5OGBge3PzGd
zbQubsQVEykrj&`I-0GtqJ3$Bn%t&>>D%cKze@H8z@pu9aZ)zIyIwZ5P5b^pAhleo7
zT595{eK}06#yT!aCi$stPoJevyDtte_U4xKphFe;24QIBUPL79tDl;MFT-I#4xZ!7
z9c}Pk0UHcPCh{i`OZ#?iII!sdeyzzqbcgZtigH1ZA3i6<8VOOh`e?8Seg~fS1IQ-g
zewi+Pq#%ewMKo)z+MGv5k}9`N^7rl7vrf2T+a@6lIO*Ez(pkil+@x5f)tQSkYmQJW
zcVmZCEy0-#IIvw`8Mrt$KFNEFuzDo?l$0Z)h`iE2{7|7lPEMjBB4T3RASdY8O-e;R
zI5|N_Ro(pUmlvlYpP+S=@@H~TdLLY4(0wxHr3?kTdmBL%*a}#VD%Chdo;d^#690X_
zi=C4e0C8BjR2oYs=fTeerqrUVD{t2%m&}Has*s2{XGpGe4~cXuGN(xCNMab}U5MyH
zcl{e!FfItv_+ro$=0pD?gx|qF?r*s@=}iA}JEQsu=zB!PbxP5BL}8pwGNG{Uu*vL#
zBuJnZlxemx5veIa7Lh{|WKD|cD7d3WuF8=Pt1x}W7lj@Z`F_4+eA(gjh1l3K7HX5Lbh1yq@*J@>=ZcCoLO%F`2M!~yWeCG(`{k4(G
zJ4jQfTg{F%&6k<{eRMO1pXBwKPxc%$p_E#@$e6YEG&35r%K|C0>XNi8f!k%=STCE{
zPM?Y^oqUxKUHrfIi}TR`xSI0x|G1hna7g>zZbT){6|?de+jNi=>Z{8AC&gMXq7h@?
zxY6oGpf*Y&99xbq*;Z8#E*!@qPa@g9%emRA$rJstzXz
z6U|`4qXY{%S$^c-!q_uPO^oJdFTUVu@!acqp_2s9sIm~2c>(GWn^i{xa@q~W>QmB)
zPyKJjp-)^hfr|eKPnvi8zVX}#x}4BI>gfzbU!O?%YFdJnvf<$Q1m1i54g!~yF)s$5
zQ8uRIS|kc$8oX2V;&x;kX#YK0OJ
zGBwC5c>vGIhwZMNAEJo*AJJ`=8By_4g(gHf7?dOT92?+M8@UBEy`QYA3Q3Xy@mQku
zqaGZy&M*wJA+x=v?xMo+f2&&cZbj5Tnf_KaS=aIZUl`lu8-KN`H`;RjcBh=}2uqAy
zk;LQk(1Vi6!REB%OW5G%FbX;Xz?MmfWd)K*!oLiGgoMs*n#G*Li1^L{gy+j-F&iKS
zpD>)XQ~mM!k=mvbB+CrOEfTIkO7x#Cm
z8Sv-FUM2-uyq~wtY*wWlqWPJG@5@@K!itCn67a|NfrN(!*pI5xHq|Ht=9cZ&j9EXp
zQ#7ST;#ZgnjoL%%vqIt+jbWQ0Oj+9DW)P_tEv(a~gk05?se{%Js4I~rVVnATz^UW_Sw4xrEsA;E!68
zh;pIUpn8}CnyuF*0gtAexy#^U@y37GcK7RfveA73$@D(y
zf3sVzHPl<3ZokeUA7z#-nfG)9%6=WxV)t#Q0#>@Y};WgIaKC%I1PpT)zG
zb0z&eSF>coTIYXLXS|y%N@HeVVjhki!pisF-C^71($Iand;AQD-Y7M(U$q1dE+){o
zs?zhOKVM|DWc@fTG(S7}s>?M!;&w{EI#g9X2Y`x1g{bdLNo^AT^#ncWEwecy2!r;?
zITh>OLW}ww*jw(ju&;ssDrQ|6jy2eZS&~Xu%4_Suq#0Z{7}|z1>SD8cPPXB05*OL0
zAa`sCx}h(zT?TExtRF+0vqF%f*%R&MVlc4Z5qn8AhM01|E24+X%=yG5UIMCUjk;;s
zbh{6G#vga#pD`~I;P>91Z6b%e)FL?7iYv_tB4GvGOLW?86S;Vy*CnF497Gg!pF_y-}q2{rNf`%|-&ZeCGnxnMT~Is^+mBx2hAD^JNqleR3Lvg|%I=Q!Vv<;RWe+H=J)(Qc#ND)~5Fn
z5K$N@E5`_`IS!-ws;-`@#qM;F{3>~?%D5?nFD)x;U-v!yyy2vZF`nj60&+@JXjG_~
z9l8@eP`7cl9otaWVauk#5sSP04K4jzk|s8Tmyxci_Kgo7*ZkZc%t#OI{?wjm8x&XF#z)uPWfpC9zyN0k;G72IQ1=#*HE!
zBp1CcsR25on8VXFzs9t{fMd%^R($%n9_KksMLI19A6Qd@j3*H{L@bMyOS1O%GqSPb
zV!8#_VzHKk&+biKm1L2)t=SSMMP@t#H#wZDEL%(neOBJ8nfTbq7^aG$5gCr2e~
zX?V7)Ml}r52`1a?_eN~5xD)r8pPt?{x*vjY!z4;3WFFzlnB&ni825|O>XHWy4L`rc
zN@rH<1mdw!CA#<3rJ(Oc^1czGHC5(E%KiYrQ4wKy@(?SV^=?#?TU2V^nl09S3UaLj
zje#9bx)U>*S^{xXb!KU5&)+ZZyBCWdV|(+pc{Q~aTMbZvE8XHWWs|)EDlQa=FoeU}WJ`C04^vVsHI5s%LC^wk}|wSGC*L+~~(Q}lLolRLd0Q?c6~
z+&@*?iS15ko2YnLg#{Jux&!y|wulqT5*S57=p1@$EZKUZqxw#fR*H6CKQ%vVab9*`
zD1Kc2e@CNKa^dPQ)jU>SZ`=l|q(!JMYQ!9%4b{PA@^P2PxyKc{2|C4%l@eCZF7H%v
zD*1F2HdJ-*Wz*3rC)j!%ejEAGQKn}meN1B4E_x69uB)i#MiEo5j2@*3t<`2Kaa~xe
zj;Y<6QET|Sh@E405s|R3YOHw7F9#?r^)F3>z6NT;f0WRQ(Yy0Io1gIQ8(fc0T%T+(
z1i%fbMu8oIO3`737a#z;RtCTdH@!uQLwkv1|G>at;RPe(WTJKZJ#Uy!(ZhfFOeMZ-
zZe)pj$k~zg4g1k((C~c#pWW>?iT8Cf^wpDy7i~#k+2RoIvQ^)1^!0c(SscZ($6b37
zPuNekdv9_3jE&Y!R#xtOon(3jYpf|RC40byR1lRL>CNcyo3syY^wMheTB(A$P+>3I
zxvb&`DLCUSDO~GW@qQ3)*y1-cPVuG3#Z?|Aw~QpdgXR6E5pY*pC@pZ8P*tu}nY-0d
zH%ArB`r4&F75#-dmPC)%)^LmbrqNV>`tc#D5{6@R(G|K!QQ1xL)g!Kq8Imfv2+=wt
zBD{GM&PXx`l)(=fjCSS9NZzSSjZadEjOSEWlwQ+HAbZ`DOD9AGcJ4&?VJ
zr;UgQ2g{&kTPTM$FUD~J>8sIatD+9&lJ)+|5f>l(t$p<;m7`5}6~fN+0h+*}*QhiWw>2FnAbvGDIdw?l)1;@0d}D
zyds2Y?oO{(`=^RWF^iR%H>?&m4XsYy+p~lg7~SlcHakdwEC0?tMT-%s;R#!{$@BGBUxyizArwm|hWQD|@8+l|w
z=5l0(kIfgL_Q3G<@qrZNOVs6?f2qvKtwaNi8M}FlCu$kHIp(bGJl9(X&VyXKUm7p78j5rcWOuW~
z6OD4Ak8ZOW)itckKa9uM=k}=nJMC9=J%HCoHtBLmvnmNb^3hub+p9*OP?HkCJ_6_O
zKh!HUR_9Nqx9%Ar5Wtf2sZA_#n6s*q?UTiDq!W$gpkse`-=@x(EFCk8JbyI5tFJLq
zG;g|ad`(cD;o8id%uiO91zcJPLbrq*Jl;0;-Ak?|Im#+~dO*T20aV*z=Z6i%VsQy_gioWYV0vzgP0eXt4Nw6$S(0)7A&?
zGoPwEmTa)^IxCz`OSae~k?d4v<=mwzFy*SgKk-b4$N^H~aHIpd^esO3YgDHEo}uP<
zn|!kqWUy&!F&Gp(h*$fUx&hx0S|cwpXVF^C5)y%$H9{XyC~n(UpDJ~43Uso`C=FPI
z&-AoW#T$7hzK!-G&n#?U2leLohws9q!I?E-TwIfXC3NWoy8Jlb_BeE5P&%}y5JLuuC&~eq7A_K&xMk`f236vSaCO=Ssk;w3%YtbZ3oxQfMM9vEZmsEW0B
zCS>2Q+J_%QT%f0k!)D>IldMde_7j=p95w6M>HoCkq>pt;P!n+D%4{G6E_Pc2%b0`;wjpmE2Fz
zW5Fim8W4i7(b;4_J`@}$4r|m)gg#0*CPZGSG;YX9JyG7#k!Qa{`1uh!So5#6hznW-?#2>fzY8jhzw0
zSA|0yqr0%uZa=lZ>ma<)`jWoZoLAX?eWu7fM(SJmP6RhBp-*Qv#h=J5RSagwv87)7
ztZFsg?Nw#*PX-`1k;!I22JmCDJFEt3tTHI*_6e7Wx2rJ+=v1;c9)5}7b6z7K*Mw;c
z9o{rCI`A`@9RL0xEw2bZYY=7*$3mwK*SB8ix|4ti-^fanumhm
z^vQ#QLzSIpc{XoPgu#N$t4EmMnJj6)4Db~VOlC)c+DdLIDk(nQh`6nn8IANjQps&(
z=~;CXrp=&u+_mP4H(U<|wd-dXvmQQ_jyp%C7FCDdzoJ_U(EosYycYEQ54TPKaC;k*
z9f@*c1VT?oHL|1}K=Bb)<=2!Ef2NrnfF2qY=Brl-_!=TUhu^x@Vw_@G@3sI7KH;hI
zg;!~ob4+?0Mxm0UT?^PXM?IY2tO(C7cP1y8lWvI}(3ePJJC0L)huW;}%Y#5@L+!IY
z60#>y{x^RYbP9`Sb^gXzLJI3Sra1UxY7E?Z#9dDhd$tibf#fF0BE3>MF$LluF&ycN
z580o6VK>N-?ndU(2p>p(=VDArS@uTmuLGXr0a7{Q8cwn?lZ}^&7qAt8?S+4|ZnMdW
z7tge(fJ;CnBK$N;)rN7_4Iq)vU!_yGN-B(PP(DNXkwc!9TcNRuvV1`yZt;g!z
zpF^TJ%!lSc5(&+8lHe#ViqmlCofkI=qw&a}G7!C&`DY@LP`OQw;j
z)zgXD`=!gaMCEm6)2m{ZUgjY*S*NVS3b$2`N=OH$-o3Q$@LaH5eLgKF*_>}5$iSw
z8;^H&!UxQ5ub9(cZg+|wODLBL-vcg1sTd!YLT?36TgB^1{o_Bg3V96Oo8Akq845h!Eoo(-1sNMJ#pe
zG8{alPHJ=$=EmK{w3&&RnS_Z$IHP|5er6-K-294@&z)Vhyl8q|x4eE7Z>>IeWMqW+
z6buj|t49d?{_!4B75i?dkm3aw>~7K`Ki$s2fMgJ6%Onc<^^u6naq40J?J5~@hZ8G
zdk=%b&+T({F&sHC)02+pD)EDNa$&-PwVj1d%A3uOPkRnulNSd!+n8xKbp4uaNTALu
zJhPFkN-jt#3Rd?M@%>mouoiAK$t6V0LR`9D1P8Hnoetyr6QD_o0OdeTtyx-~#9|hO
zWv4cDz11YZ*#oVtfz;Zvjz(xEO8jfhzs?;>
zdeo${CdEpBHz};Pg3qZgH8HranS}PYtl;EUUr!-m?YGuBv6-~sGIedaKCu@0vX^S(
zeMSrdMwUrV&zhDeIi7f5qNWF*1gMO2QJ^}BmorW#dP;#LyW`sZ8>=b`(WDUmPn-nC
zr+odoR!B*zEe&c{!-(;#GRE7xaa)hf;-^!Jc6yu(iC%Un?eFl92Ue~M4Ez?2-vWM-
z@OW$LBgU*1saa*4{PX0an(hp43-oqAs?r`rC{ganB3XBYsrjJfJQ#875Ef%lw2~r?
z-RCES>^Ew*v48SI8!$noCUbar4c~-$)1jSxM9+VCQut;$g#pn8lD8O<31P%{ZHy
z5Cc*x`SO%%olYe`U&Uva2T85(oMGBT7xQp`;Q4~)1otPhrQ{+S5vi|a_Yqy{H7SKH
zB#zLkKV|$xgv)r4IENnhSE`nhQhw))ITPKn
zpV8hTYkz_)`J#~nSA9dlvWISzpB}>f`<3D90(zA^sds?dE-bIOOruoT#_q$|Uj~N8
ztjk~F@Yk759+k1N$7d?4*Y(SoQx55GdxE}6$6{^3-^U#oQrTJd#<;0Z>fp%*C*K1D
zBh^wKlcjVOMk~A{lsux-+SRKFRHW4|XA99pkaiiZ(BDx*1jtg;-T1try2{I7h!0MA
zs4mA>dyO&Xu~mP&;P_6CL!KWnWDdZfyM&GHwzu@aF^2&(bkyOSEXc#ODf|42s8m0A
zs^Z~d160)ktq5ROw>$q)NWSXAxFQRNdPZTe1$94|s=N7X_wnXfFhFbq3j`s*)KahB
zlftXP)u0aF^3{DXGHFW&r$==h;TAXn&>yL1IP1y?Ei5R6PL^6RYi&0Ja21|pXxYik
zJq-gw=D_MralWCNN*x|JM$HQ(kQ$fBxEAAV%526U3IhZKkn;*oS9Dn#w5b~clX2x{
z#fFmANaag)=Ge?nJ`_|fp1)OMF283z)21!z+Lt=Qyo`6pr7litq34X?y1w>1p`um5
zkhV?K;9*NK49;$#uD;GNb=M2RaMrquQLd<`0)U^lOJ0%w6YWD_lJvL$E4wjk^?r}xz2I@?7az|L}3c$(3*UznZof|JGP
zHA!?6>Zc&@IigBkF-ma+ni4U>Z@@$Zz#CP&$b%1rm?A9!Gpvs&M$+0%;^(n})pWXP
z+eMBcA9Pc-QoC8`reFSJ0&xrF(;&4@!vg`kv&`dm5eoLf2Y<*Nqi%jRC`potFzwIu
zLQ$R_pr}2BH={$Tbh;~Hvt$n!3d=R@ez3&r%X~8$Tv>+i=j~YC(ayng5)mIyUJu2V
z>vexH18bG1iQjj=mBZaTkwSor2Zzt^d9*%N^er9={!Uks{v$RreO1u9_{OSa(N=EZ
zwQ3nqf|^_p&XW508{y1wGtz`|g>-^X_?W_VVW_{#_RHsn)KdW_(g*@OX=W)g?-0+-
z^M&Dt8*2zlGw>Gmn7)MWq@T4|>nzB`1Z%l^*EB_zWZaUjYYg7F@fi`(s4zX)GxOp~
zE6&_sbOE4!VTaap5A>p|v~UqyX};p|8U6+cy7bZpG)C|_uUTH6hVe2Ah&(y41Q!J|F0n1m@
zvpzn4b}Ov{Uym$(b&J~PIdvszTgeLiK%f%N=rxyj&l!Ua4{WTG>g$*RO;+6)P7WKM
zTye%AsxaFXZg~~%%2-YM8TPU`vwb`GyhDyRg`1ah+wGj#S?znEoepS9r2s-*M~{QHD-A&K{U#u5OFe>F`?
zAqf0skKtR4XAvDzdbvSA3}1M7&s{o9fFt1#|9vf8AeO4Uf%+wc$Xx6*z$LdUC2oB&
zB^4oIr6fx!-d6jMJ(SM0YI6h(7Vmx`+F4A|*JJ4GyXT9<`PZDWYuZr<;>)1COQK%{
zgyKCKhQwjsf=3{D>kni}D&iR(=|ifca+5mkDL1IUt}KlZy6g&k3d$P?R9vl{&%3_c
z>_^^Zn_mZ9spuH#AK(0{DF#Xfn8?@(JE`3TJ*(~Aw!@8IN*^jn0uxIm#Yh45fi@g^
znFhRZ&3^4EvZYxgw4uEMI3)-i9ZqL2uZe)H_xHZvwU;RFZPli1fQK0xAyZn-#6RQP
zBgF=f;8U*ZFV|xMjVAckqcoi~=#kJ5(5=>#6lf6eOqnGVHOO!(qp{6f>G-5_CU`wd
zjYCTz&8R;9E;bfZfNZY4a6al$dY*DPO1*B%(d6|gpzcn_BZ1K$%9V7L;=GQw>*j5r
zGb5k0T?4hgL1wAR#VAGr>%=C{O{+RVGkT(}V;(1bD@wz$tYX(u2y-qQt`E6&1xJ~N
zUrmr@E=2lyZQmQ42*cbql_Io}5>6n$elwNBRvfUgLZ^PV8ltJ%gTTKXR;YGDWA|~r
z%y}_iPRrl4jLWeYeD-Biv}~J($VI9TH@9!_smd(BUo2(UN>ZPkF)o@>0x#iD@5+gv
zpRGw+kp>a!Mv@@_-2|mZW$A&Zx9kHT^_lwHgmverI)G?JfNhdGi=)1oXij|wV&W?c
zb7n5$pjvEHFztQl*#pvCTf2bZj2ezgwt?V3S?$V+97sA5wCSc%k2mc5)iz{rr{1#b
zQOS3PwY@tVA(($EXIGV!rsvk^vn?O&JEO_a(N5ykcUt;_P<%k}+*@G0;0-pq+>3y8
zfw%gELlu7y9**e~{Z0l?ju-t4ihuWZeSJ3WR<%M0t?Y1=T`zVUyMLiSp|EZ-Q`&4`FCxqh3C9*04x|jnt_w`k6IBLTx^(=zm
z&u$)yER1S9Lcs}JPelvo)r~h&urwc?j&2Nro-|#&!Ylz3vLV;o-GwRI^~LTp|Lf<|
zNb3vsZj0GM;`*DtA*b16$AVCHL^*JG(?ofa}lmzyHCHO0!2cnrtvTb(lN(oK!Y
z4dAQW;@}9jp%B7RvK4K;u7IWMPG-{XDkuUgy33jj=XEb-Znt_=U}BCxc~n+CKKJq8
z&g>1aYML9m9c&J(tLEjFCPQLVUReq6=_O{Dn29iUa{Tbfx3SIb6I4bJVHeIipPY?f
zamVrPh@}GtP9oFIFAokO=oS&BXLJ1oEb*Fasr`YT_?WJGtO_H|2okf8Ieji=$pq(z
zu=dXrDickNoNlzSHZCI4qNt|TDgOrM?013~Dne`2?-ihYf0f_OOf8Id-@zmD83h3v
zkVxCr3~e6$N*@8uPNrps~huWmK9Kbf7(DerEKa)v)rrOp8lVvh?K-xkM%xVu*%gRvlP
z)BK(+?sM29A!DZJ6XgjCF=f*g(pOgVV%BN3h3|&3^AX#Msu%dV2t%lS9G8%qX${Ca
zDtEO(-Y{(VEDQqPPM#>gZ&FG#U`3rMZy>JN3eN+c=crGCcPqZ6>(#pcJ%~q62N#X41?Tk#8ioC4faGVe0>P|vfWCb
z_+g8`-y4DFL=2eo`Mcwr?eO1~@LniQT);&GY?Fld}FFe0DG`
zbYA2a=kTJc)7EzjJ)WFX*0CXI
znZGp_XN0Y5Y00J>8j)jokM0%o=i4`((;s0Pi1smiUyCQZe~Fa1$Y&?d
zD=YdEpzEza7K_*0Hz*^5aegWQxQV66ID1?zoE+p*E@x>$H)^TbY;?vC+%E9k`YlSIdYF%jt7UD6ALm@96#b7~ny^*0*;`u3s!
z_Rnd}CKx4yo3#J&4RCbFh(ocU8X%FrIG+h2*EZu-?#L43*4IS;B{ti&1C5Vp)4K0R
z54R##A{Ky)xzk}lrmMb-frEfRLch&yc#Z=u>AP_ob-BAB4*R5H;`gL2r|UG(P@J_!
z)*e(4<%HZ=kmHH{gXt*`yFw)DU_t?gn7cAGoSDlWix&*dC9PG6-E#jW&wjhVR9aJ|
z&dGI+WPG?tuf4sYXPi<8BiR$Yr4MI~cWweaD!!D<3Dt!{jK*_f6tojZm+J?T=3s+C
zBd(|oucRIHnj}9fYep_8&i@Gow+y5GPE%Z?hlL1%r~v7XJ7>iDx4({3+RG^t56y>m
z*Han2CKz0GM#%detoJhPa8Hj#6rO}gfhBK|M=S_sgtf%gWA#Cbf+=CYv8|Ne^HB>{
z1vo%X7UPrTNEQbhRS8tdly}L=;Cri}z^-oh{yh`4Nk0){x9@2)bVWXjvWh+V^c!R!
zyWWTWMSpHFIk{w`@4E=f+X)09Q@rj|xpO)?a{t2QS;@LpSqi)^A*;VTNM(?fQ|h8n
z&wc&_H5c`WbatqzJt3PY#~lnl(UGs;Q2HZYQJK1Vf>n`ycgyrfCoP7~Q!3!^t_Ch|
zDMOL~Lxp?WjiKe{2nkeCK(dh6bc<%`<*qPkq0?vvGxI7f$r`1AJ$TVgAeWr{sYd}n
zoZ*NyL*!{PLF7Zez3OZ--D69kuT)dQYxX^(#(k%`jzZnd2Gu`~)G4}^Rs3~UK#xY6
zms6zYb?;0z-0!h5W5l)IySBC#c262LXq-&yJY>oY4nOjkXUh;)_RMQ*a6+X3M8O7mxf`BhcG-kyLkU|;|c
z$e&(kV6K=tQ1=+dsIGQGk)G~cF12!)n&K(K#~GI&Sn{PkLzzg;_MZ
zKQ$ypN#@d*H$zl4!L=L0D48iy%pjWJa1ibzZx=YwEkP81pu6h)*UcJR*;Lk`HAVEMz2d;k@wr|WW^
zb^77G(C@oTS>OHF7j22cuCnYz!cA`X
zK8U0Zw2v+%506d1yv$5fSC8-o(RaW2LaZ_O=d|Us>hEf04UWc6-`cIvU2aE8)@NtL
z&U*x4=&59s#vEf?!WU;sJR;EK{J~zsWaG(t&rXaCETFkQfdOQk?!hz1c{k7DDB^mD
z_W%t%PTra<0x)dJS`G`v?vccFib-|cDx~GIS$u_t?M_jWW`YD1=$!=e;JPEJ9DKc8
z#KE(^L2-wj7RGNA{^#mK?4+``k8oRei~C-Y*Hb_1DPX;Bi4vcrW2C^2e_Sx;{c$(n
z%V~eGbL8;^79PZbYok@I8Q+j`BYtoYui8xO(W{emrKTgzZb9o&Nh~&(9^nooz;=pl
z2EE8aX2wziT~E*A;=-6$VT
zb)bQtK=B(zYwU=Ieq0~fzBCkX2
z?n6QeWiN#`JRbT>GSx$JFh93;urJFAqQ3A4O<+=-3wK
zs8Shvsca1nmy1=BoV&@HHEKH)V3ghR>aTCqE4(~bVgq3ofv3=5OpQZI8Jj`Q4GGbK
zg-LXcMds1q`xWQZY+t}IChv{|3+2p7{c(B@8LohA;r*Vu{`!NZBF`bpFbE?=gErFr
z;=cm#S0i*AWHZ-X?lhC0{H?8po|=(UaGNwza(c!}a&%wjeZTV)zd9B_r?a@^LwVnY
z6$PvNW{!f*EMI89%XYWwH24Q`N(|4Ju;63SzE0n26$HaUTN==M8)O?wX%&_3Ns?u+
zkI$zf=|eR?^-<|CX?q2UXjd5=h+djf1`=K27WQC;`_&wMrAuvVuQ^{|ZfE#uRssIV
zuFwE4LR~jVq{o21@Cy+`Lm1W4>*gEB)V6KQ(kj>WBv@D9a=@anH-joW9u-`Gtl9e33OZ%>}#m&S}fh1M8%^
zO0@(?Y6vuH;Z=^J2w-ln!tk1*nrGv&bZ%3|BeKBLjn8I
z08pHHwlp*I|Ayr(q0^-&q&M1!u0t$_K)X9Dd{3^xLZh=)>uU5tcnuAXg(4!cvGM!?
zP-I0YiAq*8rwaWINB7V^M@hL=GH*D#1O^3|5@?n&{wxrmb4v@&<1@+cjmoke3*T=)_7Yh&ZKpAkkQlWYl9B0wp6$qZ~AA{*Y
zhn-i;0o00RP!`vR@%c2~P_;~8#$e=v&07wfQ3u0BSfNM_
z3`kaBaRFxR6ya1tV72V_FECstF@y%q4MeBY3-u@SxwFy8hGp82FzA94k*x8y#j=L=
zrOq`3^mq|)X4U{^+k-+a3RF~fl1I#{|TA=BtQW+M&N&W~4v
z9iHfLWYg1w(cJp&Ph
z0K$GxcE0glNR-=|_4g1MGDHylZ3c{Bp;ovmFaiozpOl&tR1H;7rE0oQPNcX+>Or+z
z4B#O^Azxd>yuc)Pxw3jf^bYH?XJ_UeJksQuNHij-y#;3iw*I5{6)p4om~t!0u}fT|
z2$JMh)>g!n$$|yZr3D7}CozkXC&9rvqF
zYwmjM+BaJ&1UGp%kxXOW+|s2*iD<&$o0V$~rSqcXH9YM!$0O2_GPl?%nrth7a@`#@
z>*rSZmia?}s$)+Uz9>;pcNtlpn7}zuu|Lm!BbszQ*o>lq)v*L4-#t7df|Yif;)V($gl)QC0bXX}vs+1p}xTT0zsG5e0u_i2o+8qhX|
z@gf@ndB?+oclFU^@e_%P0Lqgdwsn14Tf(zc8Tw
zZ~u?8H-O8c%KFEjb7!7ML_`F5L_|VFBr+pKBqAa*B0@q#BqSsvLPR1&BqAdtG9xo0
zGDJi|G&3^SH8a;-W68+Kh>XaHh=_<-Vp)2aXXg07a~TH)$$fwS{9v^2=biJt=bn4+
zIp?1Hy;zKm$G?PGHM68oxO}bw1u=J$FFK($CY27Z8-^tx15bsJ%l?KI_RZ86V2}3mvy9_iZNaeSH;ZMh~Y-Xu*`gn#*oKQjK~I0SnMSI!R3M|MspX1Uhbe6
z!*}c5a0nZ?Vmj!6NHE;o{5%RF{vvVn6LmZl7(ypJg9@BUL#OLUMJh46HPNPh3KAy0
zyPFL(9M2wq_g4g8XpmrXN*@XiF3lb
zb!GQCCj8^`pe*pmI+96R=#IG+cgDv4~~5Z=36?BblH
z3lK)tX2L_Tko5ZkH<)u}6q02e72
zoFXFR<@9jr3ft8OpRG)XMR<;+wP_LRZBWE=?z}njpxo{tHJ6t!2q06Yc1@iOJpn!B
zK^ddL`@%Ls$5VriP%ttjPHao8Br?`y@5KkUfFlIDN!`?Bt<4MhCNWKZ=7twhz%9HE
z-Ox52ba(t&DGmpb9<&~yvYa%F<1g%XiJC24S%}gwuEhH?!5waxC5c=rW|5T;Z1#j@
zWTjNg3n=1Ft`9wNVH}WKek>8p6+0!Kh-k>lVp4-ush+w8S4&l9W8}!fMz3T?%H*hn
z9>)7ILIKgwWutWlxNhD+U=cW1efYqGe@mCbz#}6=Z;eA(!1baRE*OCWI`fudye{bM
zrhzLodnK{uSW^MfQ04~D~6#j$XrsnM}Wmx{MnN*NwZQS5&kRnrjOg==zQCIrl(
zYRbaSRcjMsAYj+g@;?$D?R=u<=0|?0KC%n^_(2r0kP~qp8rFgCE~!d1umAMknPtjiGsb4Jb4E*hlpdcMj-M5cAkCe$}B8avl8QokrC8J{r-BP0*pHCWt
zFaqPYfD!!XO22YB55kl#yz6_WTH#t#2dBg@6IbDXy8EyDw
z)GBOhO#=>ev(OVdAsAYD9d4s$zatgzyifFQ-Y%M**1ljr;P6aR(lZVN_S@ry>S~56
zY{H#OMWspZ6y2Z!V=$rseBt^TQZJVWD8_LmVj6c|7~s38zeB9y&frvhV3~ORKer0z
z(!lnB9&Q1%8oE=mjmuW&GSXP&piYV}O=2e~W2s_w7=lqbAA|L)_L9J*5vPWBq3=>7
z-zSM3dLFTuYe5h6jt1Us%f2S4JCofxe*GBusVx3TmmU-WJ)7R@oe6&2WbN8YMcPXykcvuah|9qktM
zD9ql%!rtD&!9quLJRL#0Axn*z6)R%Vp1k;NW
zO*-niGV!S4w6v2{B8Ru*_L55}U10Yv%3&q_b}CC_r?U#?n6I-xiVRk0Fr?yzbUEQn
z2X8zhI_urVpLSy7e@p*8bR8y;ZV~`hn8@4WPS{~;fHOciODx8rxW35lD$udej3yUM
znsJ;oRgSXRX{Cvmw&BHrUBCCtLK+@$D}{3q#F@Z~WJ+iCw&(?exE5c+-yZ6EaPS>*
zxQN7KjgDiRe<3qG+Fiv|$BddAFE)^{;S~xUdK+;OcgcB-foYe1(qikA$9EcfOawhGAdCGG9A
z@j24Sd5FHePB_Dz7k%`Wq#XjViA%ydh{gBtNbmBlJL+B(g)Pej;uavV2r){TOj>4S
z)$fT%3hYObJn=v|7r~^r5Pe87&5dH92)A(kxC3@-$2%NLPGaa8D%w^RZPdAF2d=Rp
zZcK2Y5#RO#w*FTBQ`dEvN16_jA_x=&2p~mL7TF0&Si_ybO4x#jumlI=yQ6;D2fX=c
zk$jaH`Mf+GM-c=YPE!Py6afv6we~a$MdSS0zR9h80l)35`nBH$*O7M4ag34MKL+HB
z-0!e)^=fSVF7E=63<%(V!RPR&N4nQuK8ofxVo9-eVlGsh=fA(hX=wKTyuAIhhn#l2
zzt+=J&id#U(5Wb9(O;^CT(z;Q`?^+5KW)e6Kgzm)zYa6VrTEnku3ZBGyWiV2^vI)~
zza&4>UHRT#SVXd@!Ya8|EPyh64PV7S*L1J?xsodEx%#{B{WK*oaL=zk-I3q^7`@_$
z3oE;C{k1eOkWQfmRbZBa)I;a}m&;S9v?yQcTINSK_@y3t4btu+yf9eSH{gOrQ
zz=6!i55)fa+29~T?zrPwPDy=R6o<&_idS&*W71zkOHWUa?5umF+2a%7lh}zS=^#yk
z!@MWVf!W6$*um#q2bnN}HSX}*JXqeQyOfRE@-H&sT}6mz`33FLgqg5bj5-Q!Hq6AZ
zD7;H@`HOrw^2B8wp3ysF+piO3#4J@+WX&0o<)92{qI6X=Fqdm3tbA*lxRWccz@DoT
zRu;|%8k!Zcp4uVmG@&)84Xv9yIyz+G9g-&oW7N3dx*0Ey4X*i&LnvZDf0ioXzml-|
zN`U>r2QSY;(e3TLytiD%S+AT-a(7n(*d_%Mr8v?~@Bb}`H8i!ix6AO_CFB1?7+aKs
z;tAfl1OM}XieojK{;a>;_F1fSjjbPgGV93>>9pZA7QkWc?k{;Wk`#X2uI&0h_GS5y
z>VNOeSd|V|P=H7Dw%7wcS8vap@6n@dLL$a&mmaJITA7X|f3aa+jo{nu_+4+w4|LNk
z9KUJeg>=$hT)-ujoxu0--Co*8^v~@mYza0I*MLE&PfXP5wVT&OFeco-v@ou{g_Wg~
zorkNq6IEyaY6s)`va+ZkD?06whOE(gtG22~mu4iM!LtwuLDI`b_y(S-yacu{*-M{s
zx%J#u;K?zZj4rsoLP!^2VV%HunuF*!Gw3PLG}&Qlt9ewViWKe-T#ZS&U<-@fkZ{o?
z0ndp3dIOawfPt>G-Dv%|>F(hwad;8bfi4)f01tA1cOcbYz7pWGhJjJooW_yK*t@||
zrZoQ;3-I@Ruz=wC)URZa3}FC5xO1?G_yJD{Zo!AK<$lmD2mAM!D@($1rGA{t#=?qw
z+Oe=|j#Av?`f(LLlnc}0W_Ki9oID!r1$#OUF@dW$>u7ba6sJBe+$9_k#UzLY15^m7
zJC*8QAa$9kYL281NtLHDNH(rcaHivW5jS8$Dp-Sq3*NwalWZ}OJ7Koq%Ed&!opgW)
z5J<&nyko84*R(_Nmi_`YLVr54NJXM-f?mpzmqsf0SG^bvLLb;t2-Wx?u1<&9FmE>M
zx#%oBy1w#$V`f)N4us(`Qa~<9`6M5UV`E7@cp((xy%_kw&@EpVn}moviPh9Tdn;le
z&?7ekO0^(AKem9b(nv+?4ioF0tqK`oFRsQ%@~8%UWWC3bq$_$id+@DdB1w=c`7)eF
zElJoXipf;*1S(B!qz#>VsVHAn4N8GZtAz0dsxhjs#z$~fj{H#iYy>Wr4mE`erN%~5
zq+Mhi#39fc5MG}u-1%#TNDEYK=~-lEGN}QR9H~?zO%dJX0+mvZVyE5X%28JXBChG+
zz9kEm@!(VS&Dx~;Bq;)1)6;qHzXAtUyKvGS=W`1R@MLW79jD(9efR*j@oOI-;8%XM^4|}y`?>q!M>{KP%Lw>stR)5rRGFupyLb6#
zX+c4IfAQ^E@%2xuS9N^3vd6b?mt3S`$8`xzTS`}%Mqk(1;FW%Ura9*Eq7+fI${@VnpKx2L?Sx{Rd3GBChNd>)^|KkpUq9z1|zEZy5TAA9Jb
zW1HzdKXlJM_uh5az4zS1v>0rtQnWaaX^|W6$6Sayr6ZdUZ@>_YNT+C)x=KS_3JIe?
zd%y@mR=9Bbrk~%*{1%(2z%N1W|DYU`>ghDSm
z^gsRdziVp#c;=ZuY94)X&ALZp0pcFf&%v@^gG_!GN(FJdyx`LX?4eW(-GSLFS7rqS
zWUXA89oXzJ+u7c3_G|~G29!flb7N0U4Wn_O%_OQYLyjDZU>05+jKJZKkG|KIZHo_*
z_M3NuSN$aaVH+-_694;H`?_Di_6Xu1pOJ0!gYHTRNY7gGltW&f{JrV2jL{H`6=jsd
zPmg;cmDK#-`!4H_@A~P-S@VLDvV(>)tsAoawj3>H9>&CL|Mg$m3EfF`QC~QIs|+%$^F&GS+;T3qi6g9&heS(=%sU(2x2pF5@WV0W1csgj
zN;t?4SroBMsGBNw%#bzlD-#{=RwRp-?vvgx|Mhz(EF&ilkBwZp1}6I67h$L955AeT
z!9Dj}e1mQcJ0u&@k5=jFWFa@m^4TE6QAOL=kI^=-(KgYRUs$@QD*e9^h#yq{^6PAT
ziZsr985V3z2d*ji5;i;#gXh1?{R&7LKrme3E6pN!6gIEym1{5`ybfo~A%B0#NpRW!
zvak4N9xxAy>^)ZhLZ)QCn1eeR2ho;cGH
zktR;d%*ScjW#fUEm;)O}$}Y>61=FGn(DIO8kgP0^^Q#|FE+=T0}krNXzj2wiU*7kw|F(@l6eADf>ZwkM6V^Fi#%;{c6d-q_lWEq%kU=Ov{g-Yf{
zcam$)qLO^|8NgGu)V)!di(kpJxM;3~Tr5c(O~LeE-qKz?q3Hg;YFrKR$&GS;QlN3QfS;v1ypTDX?9%-wu3!
z3tb)p?W@-$VzLbduvACgM5bT8K6Dc&J0*~YHOuiOJYPsn*=06baFGV^ptxqIn$If<
z&&98EM-raH;03zEcKmz|O?KdK;=Ol)qxmL!DsPe#p10$-U3`H{BV~0
zRN)U}avxTR3Z%JD(ss=M7Qc^VSKIV*>naY;J0L=MKCioOtht?CJP0X`T8MEMOr%2?uiS7u@-(9Oct0
zZ&3~$Whbvuh8h;0IVlxhCS-{!gvpp7`flmycs~SNf3N(t#~EKHXQw;~o=_)TfFQ0P
z9Q83m3oH~WPGWCj_gdjyasB-eqDJ5@bVI0AgnC>Nx`YYU#D(LkX{zWmXR3p+WvEOJ
z#LLMk{YENU8;EysJH+hx!Q>Md#Uk-rZa*#f1c=0)1>*KfT~~g3fjtARqq1Zv>bL{R
zgi&$mq$j`=TaF(;bUS`;s@mI-YKyzcv4ayt#)pEtMekkx>Hol?wcUP&Z$2uTj~1}*
zS@+~*;>@9rW8vLVMGrS>^}v+R&a3`+e0<^rRmXS#J@|8%T*3S3tSb?6Eq~VBQHXgL@QcTK9tPdtfGmpv3$yP#&pQn{?|tHlz0N~U&mVq}olv?f
zQSvO^B9;taBOJEX>ThglO8O=ahf^l42Tyq__XcC@f69OCa2`z+;px8&in-?KPSGP@
z%s-32Jk+!5w;B{v*_{F}oxyNc->I~A+Z)KFc_Rzt3IUVB&%(_ePc6I-%vlVCi}z8^-v
z@1YbkwBJ_-qO2??q0Z4xE8(2z!*vR+dTag8SKFR(PkQS?K@3H3!Y--wB$A^{L@*Vx
zNGaDSA`}VCTXSRkTt!P;JY#PV7mN{dR`ld8g%ezh=&3jA8?qX6ot}P05RVM@_lt+a
z2Z?>KsM9NQyqFw$vEHDSrL53#eVS_hTaVVxSm&arqjNlcMX;EU=QqC)Y#X`%^&Oeu
zjTcB7X^@IY7M8}x>uaBC+T^}t*O0i~1O^nuGr?dnrE}V3Li{?!PR?064-uo|XRWP^
z+42}!5o171XQ-42!0sy0`t%)THUC%>dpyr_MfFQNvqq5M`ON3C0}*
zxKW_D>F(0$)XRG6ote>Fv`dXkJy^)Qh$(cA67pWHb3>lkB7l#8jpeHWR+lFw?T!YB
z-ko&a^*7AEiv#z$=#6b#cZE46TtIu%o|e(&Rf
zfsfxCzVY_P88c_hAlyw(M%TbeQ#x%e2=Cj)g+2Lsru*|Ro5TtetJ?93q031<>*G?k
zNfobF-+h9hH;6u@L`vgYCo=over?{VkL+`%#4pxy;TX(FdQ=mZ$QqIP2kYPA_G(9HuZ1*(s8(W~&&
zpVEiHavpl>-K}JcppIL++dNdj2ofR59+
zs0mGj8xt{3=#fr{UffABghQcTZ>#Y@bQMc2!52e1IX5cFneIv#S&^E?F0v$bn*(=t
zn`tg32Oqu8#0T5BV*N}TB5mRtFc_};+`bE^;BWCxPGArIT=u0)a{q|l_7h4r?f524
ztwwXFwNvl)vqhfR+TxH{J;|T700po+C6jfIG)nXs9pZFFEhVt7@=O9~PP@PpN?b>H*5h@uubCBA;_%qwb{JAa;vL{sD7gQ;&n=g3JLsb+j({x|kV@o9Xw%NhLXyp)gV
zMRegEg~N1zbkn=*PdxQyj@zrRn4}y_$JXmyCJh2ii@vPGGOl^p
zJF3$;>I`d8j<+t~yA}*vaVnben*blIQPG^AjsKC%*p=vdJ{_I8j(%9kQED*4aV2$pMW}i&Sn_NKeloX{YZ&Xd*
z*H+Smn*|?i>xK>PdWOy)Zur^;FH7C{p7Xi%F)PzM72uofF8m}q2J3&y{u*?TLJZa2
z4+X}WT9js6&+7Dcq9}bFQ9ygXPcT*F8bzmFSy{WBL}PA6l$X~Sw6k>cm_@Q=V$7Wm
zO)_!SNXD)qaymLrE{g<0c*P&dH}Buv{mA;xvUhib9~5Zjf96l}cpC8wXYd^z4{Sbj
z*WDkb8lCX(YdY`!YF+sakykZfzTFz{{;W`muwqg-F{iq963W|RJ
zQ|03}N`qWaWW8eg5mTM5SD-p|*q|tVg`Ycrx?zm!X>o!bDu4571757Ef*U@qIRH@g
z_Mr+qp)Y>E^(n`yLn!%9nRV%=IU<3DF%)YoA7g%X_1^W5zZo6<=Hu)4u7<&-OM`p}
z@dG#hsRP!J-79bhuc-WXn_2XNEiZB~OVK%N6!bTg
zvfa*J=c?K5*qzup+_<~8Tmj9!F3p%uXwBaTxAfQ8;!&y9vkBbz5^Ro_TjAnif!^(X
zZ2E`eYrwxKiZd-7x`TiR_|;sZZb~q*wCb2P1%_x*xtFt-T7Xg|UKvoHrLirbkAoS~0L0=U?xZ{(ot|9}
zrQ=X0oZd#8NXuHV+G6)M>g}6dc{Iq_hWFZ@LT_}vG)~9;q!EIJ!?27rN{jSWTYh-n
zwzf);!Yu7u-JJO$fcern$iZ^1A9LWa*)v=6Bj?aBAwjW%P8DIm|G^~Hnhm+y&5js_
z1CM%!_f6}6;?0BORVl_q$0x)>AP+0c{+qmLe|A@LYER|yN?4>XdG@D5V|BGCEw`H4
zdgJUt0)A2hY{x>*gauG(p8m-__co;2+vCB+-uo}6R^GVsho%+1{=d9oZ%?&tL(|e?
zd3mu@p+&l&3AAk(Hy-7jQ`4R^!@zFgum&AEB3ry?c>Ya*YVi5$gM$EJWluf5JN(coeZkW|Z8z4|3`xtZoLanGd18`hr5w&-Chv-=
zaNL}?Vt3l(6)RR$Jf60DMc>W0czN5~dwcnNQf~l(y@m7NvF~lySMUWi|6(<}d!Y*u0+-C^
zCIztuJbyz36E{-l{=08aNExog9!LfXCDtL
z*_W%vv!cD;ORnPUvmIahHsAH3!w-T^aa8HTAduuk^XDcl8I1~>g+`(No#Y)Nwe;Ry<%Qs%wz5H3Lw*Qt+nDsIkR
z5PvuY#s65%>{#G}1fs-7eX^-tagZK#Y3x+8f?0A!_o_{ddPoIA7H9g|T<
zgYdz?Za{xZ-^Q9zBUoKmX0K+4WuWFKdO4f{!xeZA>ZO|qS>IwD-2AHznx*ft$_+xn
z7tRnXd#tBXiy(^?0V@fXFf
zEN8UeFiYgX4h%*ATIUvBkt9}%&PQIHWpdg7R9=mXY1WHJ;+&kA+I$T$?A%3ulKKYS
zQVme5H7!!x3A~chG&o6})$9L|G5-tCxLwS=GOOpTt%$UpJLU`vtE=&=&%VH~*a6zY
z#+v;ARc{@tt~p3-_$2XD%bBg$&!T#D1^c3=9M`pP#hbQ^S*!M@KejI_sxl*e@2bHi
zx5$-}Tb5{x;WH*IhO_v<5HjgHSFCfN3FZcUZr*ST(3E^91dwojU}-mg_IIZiNIp4I
z6ZetM%Rj8v5lw3yMiz?9QrDUG(@OE$;6!)Cv)A!vvwm6Ca26ePPzCstz$@kJou$LC
zIeqkvVD1AQ<2$22;z~mQR%}x3-d~idKfGEhd`iK}h=%h4=Kdut~=H`BuWr#|%1a0Uc`|8@u@E5{WUn+k+dkAqZR2+D=U
zk>X;BWJ~(cCOw@F(2MH!tie;c5~m2(PU6Hlqrrz(QO-C_Bj#Rx)DCJf%OJ1_{K!h_
z-U(}r+jq5Zb$aC3I#IL*UOwuUf6(Wz3yq#k9gL1)Vs-p=`O)As@gzu3T%!i5uYT$G
z9WKXCq3A4v8@9YMykUF4h^P_6B*4Zihx_TE@ISH~NHqM<=7@m?6`OI1NK=;rE
z`eetq5%*oz$#ER$ip|f7>`VTJIyzY8=w~srVzqxm`JCkxhgNAN^x+xNiV!J=&$G2=
z#Yz2+?O#5LEm8~|F|}agI}fA0Zp#
z;VcAksLw0wEEMHV4e{}YjX3PhZdS-x!{~>-bWUTiDtI+$Egin4XnVv3T%XVcT@>$A
z)34y&)|gF~_NmJ{a^fr|9!eO|K`{O9LfveQ4wUt*{JHXJ`xYq@x<(f=3`kM@mRWka
zyskf-{m%`9g;Ia$Ah8V@EF64kufRSZKqt$a*|$c;bEj)_6OE)P_TNa+RONNp9EE3(
zy|>)?{&U|J=d*`}2$lKNECZ8Sn{y@|Ys40^pa~b=0oL|i4pWIPpsNOVRGD-{Sz+Gn
zxJo1c8q(Qy4NEIyD;?{gR1`h_j7lfP^10WsF=MfOPPL^z(^MsPk_#An<%mk>-%({M
zt1%4=5TWB0i}lgDvHR_JjY6R?wC6ht3~f8q__HCUzu90RPe^dzxWgR~rBr^4lU}@0
zZ=a2HOA~tN-C3&h;~2h;uY#X7hs;7{`AIAvczWe@nNSsVDj!hBJL^{1nkT5ah+^~wrIT`bYCX-;Mr(;#{WZRBajRT)gOJX?Kz}n{dYeU&DJk%u^h5IXY1Vy+D8I54*U`NNS8@=I3jdP0eJ1MgK$IW}O<+IQ6
z>%9P*f7(M8{G{zPw$jB9-+c4E+N!EredSAE=i;ep@g)ys*F;CxWIt3AKkXDI9Z432
zON(y}@+D;H?YAyg-M|8kCLFFl$x)TV6fdt3oI6i*jAH^z5A=k7DVl%AXrM-Dt3R3l
z!*k+6Az`O{g0o=*JHbg14vKp}6i3#mVojbSb+ED5DwH#9yQ?NgKZy4)6`NCjz;iUh
z{G=oCf_W)MKo>Mh$X`5#!`H~OxCb{)mX(XDY9GNJIAW+?oN}{6lBcg!epaRd}
z5r~AKVX*}6-#KHF^gdT;X}>7lu^9*PbWNMPArViTMSTcdi0I-nq!MoOr02GYv5)>E
z%V5>!H3Q#;K!afRfoRz$x?YY_ZYzy}z#e)t(89`CD86jeb6H>02|Nbj5b7ahb-X|9
z9`_0?f7x-8beb!)nvuHL{^Ot9`EcM53S0v%mifYclZc5>6t#QAWgC8Z-D*aDd0IjZlM>Md6!qM~{$%;P;5mfQ+5auvRYUDDeIOGNyf52a{?%hw^
z4N;;M?69qZ(r!e;6+O#Pao%0>A31&^=QM%>tcZR&5Xf)zSt9$Of@XgBm
zzWmqn9^Z>aMkC!+T&Xc_QJ~+b^Z%dV$7M&>M9q%ojzK>UmOD?9KH&1FI6Sb*_AC4a
z>uS%t^Do0qm6iDAR~PYue1{smFK*d&H;|eW$7E8+UxSLSrF*IL#8@;-(}o!6dRv=%NaZy=S{`{Vv@V;Y@uY3j}V^tai@NAr<08o
zNh%D&2k*c5$ETOlg~C
zgO5O=0Vh9|iNfX6v-)Qgu3J|)qkq=vr|s<-U{-Ea0N;L1z>65*tLQ4UL{t-@w@oqT
z*J9(r?arb&V=~5(OKDMS*2Y3W<9uY>d4?wIuE
z!GrsGLiWEhyTIUCKswLy2*KIr6B_}TS6cQ+)x=IQb3!*!uO-k&~0Q+mRTHd`Ky
z+9Tqs^*3xFdd`q7SA2w(a6|j`7Sds^#M(JA-tmXaczPQO?sSgDdduc6%zH)HV`16r
zYAc14{d&UQ#&B1zXmjkWLeY`>ZP}SHPv<_eN(_;5!Yg%?srGB5jbHzp^TD&C^TC>K
zcgTSS*XyM^ZVR#H6YHFw_~*vSRvq&kuv^N2QUQ1iUL-c}zAgJyH>LE(SY5`gze#G{
z)G&v+bZ7>9SH1Kew_}PiZHeviPJ#Cpb_(y~u)ATQjD{<>e(yao^XcZTR+BDy%)mV;
z(vUq6>@85r(kHPo1{;c40Y@n%>BhTlO%T6W_N5~u6)GU&AYI`fbGcI-ZeM59-pd7v
z!JHtR2QMytlq{BlX-N>4;%+{!6Bu)VCj+G_`fU?Z?tU@BlIT4IVL&!I8ULs*c^q
zYng?DROH;z-2}#Jda`xKt;Ubd+(NTeL0z+Zb|LuYJL@T;Etp8QNLxuLzu=Nv*1L~d
zS#-D?JETx@qS3-cxJecjRVetKmVKWp-%&*{ZoAeyupLAbEHVVs!xA|GHyv{;8&t+NKKf1)eS;SNC{L7Qyk~DZe
z_Zw_oxf&bVbG`=MItYg}Juk&h-E#^HpFEdsIjPg#7OP;no`}-Bhn{vEa@muev&VVJ
z@##ZrZEYDiUqdVdcfD@O#NZt0qb8aQOG_D8%~e~5as#-`VJN3K_$N`6D;{m6xqKCV
z^?4%=J|n}Q{*Nd5ZC~Z#clK5uCQf{`6k>hgAGkID^E|_p_IdW-Skls1W_5IQb>@9f
z-w5+~B1o}5{(-)}f&M;fKJTbAD*3$Tsb^a|Msh}MX9Hjnp1~9Jr<#wt*+N{bx6s!(
z9l*AKBFbsK`~w6g!xSKDChn$OZ25nlpuAnX631Ar9A7FmUiD@X5DB8-GF)g(@rc#
zmHKf=eRnxxA`BaE&!O>Q)gB`Q-K+NdO9;4J2iOT3_o
z3M$?H#S>UBCtvlLaF``uLVf*c{>9|D{iPg*V1r(_pF5I+VRXCD-Hi!q7KX>AL{ial
zzJDYEE0wIsU@1$&1e=^3NQ!G}ien{GCt4zHrR=*lqa{*bB_y4rM}xBqo}_IyqNCoc
zZaBrTi|;(rhu^;AxEEZ0uK}G91U#FF09MJFsiqi}w13
z`l^@yT_TDNjW}!%hewi;X!;!+S{Juhzcb!gtY-c|KeTDabXK-mB%A?%-k?vd=q*Cr
z{6!89hmbtn%03px>U-8Y<5eHyl#JP6A%8A~-(;N5$;pz%Na03ruP=P1?O9PwJC%+?
zR~_~LXH|RiqQjgyZkXB{tTNa2`i1jPBi0-j1^-)M
znnSnEG(BKow|J2(luN!!9aK5Go`20_Yt4`YuF*dX=~HL6QFuzJCNoqi%@~3@#fzMm
zbQhu(Zj|@Vgv-i;j|F8C3R)dj|YU(#yglcc@=jAc-TQ(0rynCbo
zH`sXU`zS
z=rUuPQxI6N#$26$7w7-{r+K1SeMHo8O2JUJKHCZHPdV;h?DA97qTZfXb3lUdmSf%xRFW-5PHC$R7we4_f)4JshnK9
zkrD+Qs}cJ-8)+arTOab$7X^Zld^8yq6F+5eqo(MpfM%uLrGL?CJ2chl_u+K@VNYJX
zRZnn6IvBoA@5HmQ4`AI-nO}omu76jS3f1zH9N&HqI&4CR4ZQ8#IU{y`lrnepdTzW@<@6ucESgJZR+11aJ*Mer$
z+KPyZP(O%%9-#kkQYWp4&^lCm(g5hM$3;p(#LBU4I9V+O58Rt!*KPB}+W04?cTdl}
zcd)paJN&}Arv>4m!w;caHFaaB*_vBcc3R`+$9BsatY`g5Z8m4lh|O+a)=GP27jO%n
z|9q<`zV$w`b?(c&*Cgs(-B`1nG8m>`ehz)t+Q)qkOH38*&IheTccF~f!ZKnbT?YOI
zynub!E4LGYeRSfD05>K^KeK-QGo)PO{vfe8D+>p2%U-pm@VTe+w|z6&!OqrhlC9G$
z2cq}C;tg5MP;&se89?TUKaHO`
z>2+uEn-AQ}z_3#s-Z9DFoNVvbbJHB)S>PO{^V7V1{>B38-~aA&dx>O7Ftj4STau})|m~-vewhaa
z7jpv*!3wFCotDEy?Z4nL5~Fg#8T{SktFR;xPm2M1gWT`Izl_t;ggeCp;;=U~U=Z&`
zzZpy?FJ6wRl`vxhW_&{+r)cpt`KBAsryc^>jyEJ>CR^28+WEMv_%@?$BY>p!5PFQtPgT<0uFT+%i?^jOs@
zW9E-PXR$ZA3dvb%8_B_vgamSmJAwbeSAV-5h|gEAibBXO#A;fU^R@B*{tB}cYrUnyJ;&)$+v29JjZUmu
zv1+wUdmhL`MEM`dk977vlKfNEkqYn~qv>Q`XSV+Qo_jyf@b|~cr0x|hovZKv>C5}O
zZ|i%5LgHDL8>;9-DJN?*GJ&U4Pf-Gx->Rc4b*;=18RSlNlU$&1anxa3`5tilcz-#-
zp6Y`Yd)^|UyeG~;-D5*xpg(}(qWE_I|3-i)HO35kGm(tnvEkK)^AromLN5;aA_M!F1qlaWOx@
z(M;|3&ews6>D-`j;gQmrz4rM@59d4d&U_g^_e;
z)Z<MQHr;BTX5AC_IHs?<3IvC=rM~GoD<<9C?+v9WYvVI-T@wF&oHXnsY@El^+
z+2DdV9sx4!4>iaI<8kcEJ-)o;oeUs4J%!@0LUEy$DX$5@$WzXgBL52N1EXUh-TC&O
z#)mcs%aDlGT{W*>dTE0?>jH)zOcF6KO54?6EF7r<7e=#se-#nlE
z^j%ZmgeKTE0@qKVQ6_guZ@^mo;pw^+yWY(N{tqm}^Uv2uAFAI9JZ7RvYS#yuI!P2B
zrbq;{
zb#ZIKR)@XNqIXBcTCQ5K^cRS;?-2PXemj&=|G)>^#ILYXc>Gv$!%k6WxGbu0Y$=?Z
z=>5#4DkK%gI3@knR;Es3bWqK%#;s2|oTh5CxufdU*0_y#SXV(a*5mo)*OxnO_^~Ai
z{IH&6kY=fXYXlM
zgY6M7aqiMth}P*g%C9i)z7AO)d}#Oi_)T{(TQl78=FX0_o0m=91LvV)
zWFYM6l2j5a)#!ck6EtnAzw5d36!Awqf?ZD?TT%Y^Y!TZp>oAkIHC>c%#xzqrLzg2)
z@v#1jYva*ulw|oGZ|!bM*c{AE&Ja{dF>MMSi%Co-@(HX51j$dT=x@c(QQBC4=T`cz
zLmQr?EAq&FrSE2$updRt;{C$lU>NmNl-)44m2k
z0Xq(?a+gi5f~G6@&_7jd%>5dhS4HF3U*~={ybd5xKO5`uKe=b_DcYBcom73l
zJauG6`TIGD2N6-nH=Av03mk>n71`MpvjxY3+IV)*NAHr2fqUz<;i^0Fgm-#KT<|-4
z8)RL63?{+_RlV8~zj>MU9%zJOMX{HnAB=wh0wApX-$^%DXaBtJ(Vr^ly&hlvP52p#
z+4ak|?n=TR@i_KAar8dA(h>Vmz&zg4Z2a`zh|kx%y5jzIo%emazUs#N+nbkn2KDZ8
zb!7$`FlH1t{qJ$8Y0B87TiLwF8Ex>JuXZFpapzbA!5DBUFUOxgs>4g{#B$!p2lnpU
zzweFL-yCPff5+eGG?X3PBw`yPCh_j(_hS!j%svzob0~Y`TWdh@55DtuLTA86T#2U)9b>Ve1aw5EOvN=HyziV56KF@r_)ZTfrhoBwX8
z3)u8x9O%Br^HSF7JM&*p1Rd45DBm|UTL-oTQ$~Ec`3_O-9#T-v9Y;s4Zoo^%Y``?y
zKZK1jaxZ=iEHa1Q@OX-8MdAQkK%~DSi#OmPoVX!toe-V4(2x!VbzHG{!q6n;kZPQR
zNm%su_5uNHkBHcTcVgP#w-&=pSbR>TnlaI>Z-??$g%XU7f30HT88_^}#+7m!zY-SV
zNwY~GVSdw&3rpkPKJyGxOheRw4ymtR
z-0)ZLUQCGUkWi$LH+S-joJZlwy2|MZUA@rq1*nDNuIU*zeHEhRx
zPQYzYg!M?tz;bKvDJXqJ?8EceRag;I`FBNCVTKci48?+O(yD6wuB<{cOr$W;pYF`(
zxH_6lTT^tKbK66rZkn9pT+^5GFS^gn_Ti2n{#^aec&d#
z2x{S=eOwCST@fCW;vt6=LME1RXRr$L%uxlBfe1*pZq@VnBjS^__Y{^sf{4H4pZUd6
zyAEZca`&@c^$@;VkQ2v&wpZ6%WmQJVU?XJ1b57sX6SDFKix=P^o!ZRDhazHcv{(n*
z%o_l{$Z5sTV^-sZ)-4x6CzJ1<0}(5@e$0TQ_&Ro>>FMf-m-nRs8N$Egx7&*!I$Hl6
z5c3}POb4ZkWY2UQPw@0)*6BORLbcAo@#qZ`peGY|>nt5Vij=vs9Z*-ZO?O{6%=;VCdFj>X*Cm
zE9`%^JZjhBEYO*sqZhBvrFwhg;l!R5%|Auof9Z?xo+ZDOd3!UX@ipvH$Fo>z>$vvv
zS9in-S&`|GLggWa(jje_yJ>UpJ*yW^mQDLG^;84Yv?s;ER&WEa>NoN0`g7PUzuOE8
z&K<1T|JK2SZyg}+P=h-;6K267d;>f1a&Ard3vVQ2H-3)2&sMD7U7L;K!r1+fjXe7C
z*#6joTklvFaNC`C+&Y^5DFYh!>c_+xpy5*6NDA0ye(V}KU?&Pv4b1|>L;o*n;CTfD
z^Y)s@L9USs8qT-2w#rCa&CmSLWN=p@ntJ%C=Dh!z3@X=rm06~MZqj62st;g95h_#|
zLv2YOxntieJ<;oLw?0k`WM)9olW1Czbi4IVXoaH(=|5Np0g^kO#%fYQTJZ$dk}|zN
zeukH`8t!~zM?6@4k0x`^P_7=KRYDk9oD`#$G
zY=UN(NT&vGti=z1Kp~`H2|4t8@S7#=xw$j`MhJ0P`g{(G_s057
z-3je*_=<+llNiuRy>}5CyZ%{IiA~55`5eFRO>Ky-&H>9W@#4_N6L)WV;X$yBMG9N!R8uNhrvj+HT5L9p!&1>&L>QdI9dP*V1;Y_NcBjsm^&4&ZY=hyY{g{+<4Ms+Z;K}f
zZrJ`v$J*@RsTI)Z@GgXi#yj3BYkZLASRX-u9aP~mC{H~Zb980dv24(tDS{LD0iMM_
zb54hD-?t8QI$o784|<*w+NiRZXk}|lMhwS**9(udKe#b?>ON>1K@fDX?81Xt!PXQ3
zxKd#!2qmP$(|DW|k#N|u?&RttD|a2q!Vh17!*~Wi!Qrg4A%(ji!C`M`1f8@<{+qRE
zMj0{;>1tU`qY}fUaY3}In2rUnK6d_*+}o$@fqLSw4?-4>oMD;quJTsf#3FCI2D5Prc~5u$K>{GZ0SHi>5I5q|LXe6H@N}sGzjx
z86+X7y7c_&w7{u#AQB6kYMEc@m+K3YF2z0;IJFWkz(p~b>k?YHQ{pncPX8$W(3g7V
z*2fEC@I(frh$|sF
zw`EGY->!fDk&ZQw-#)br8lc^5;019R$&(87w_pRBX}10Bu1Cb$tx#+hA$|QnVvjF>
z?cI$k7c9@7vtyRS4)-RuoCzaPHcvm!fA*oy2Ohi4YBx04R#C%=B54q0HbNjtlS&re
zacIx^2R8;$J02oCA?nfNtBypJ9?ry*g%nRn(a5<(ULJoL&!d!Gx9r*1lSb$igIGXp
z$BHZ0w&e+mD>ATlYSEqXS+}de<^;V}-WZ=1JoTS22;#co^Kxw^n$}h>=6)tHPQ@zX
zoPH+u=!)IPvhn@r;0V5pbvU%S{_bsiQ_x&~?4_A_T}^Io^&D~5j=#k_I8vnAaB12ZDHY-?}+IQspb-&Z8?Oc-?Bu_1Fjgs&02hdpZ4^~x4S=T`iJ7gAF
zU#dLJJ{O!{nuN6lP-^anoYYe>$7m3diRO(B_k@4G-pdQC6M7@~
zGCmhV2N0=f`X=2i|5Ml6OM5d^dU9qAgI+H@-1gwcJ7hm*Un_f&;J5djr;d#cY6;9?
zEGR#G_z(P{vJ&R}1J6{K@7{-XBm}l4|9#c5h?2vZ;@@9@O6u)DMQP*NyPkXF5mCHu
z&D)P}tX;ddc4OwDHPBxe5*iv(sN+~$a|Ju4aFH7n)zD(%H8gP(1c?bc@J1sIEB+y?
z-R>O-k)2^dLi+=c-ERE`G(bPPFM_GR#`oeW%E0+icXA(C-Gp<%1fgKkuf%Wv%sjW|
zgF-yM1-6<8p(x?4`;LUZP`Mt3=CH@7^-Rl8N_yI+$2udtudIyGenlF#Dww^-V4kjG
zo?}qs55*I)ze&WBl9w($zJcnsk62l?Frv5rxMi$D3|-|%D?nYu!i>C|P^OPE_wz&_
zkDdML=N@=72dsAFK$w_Fm*26~C&IILCW4i)GPH~H=?c+tO3fup@kP3^^&OR?Ufn?z
zU-bL+>B***@e2&4a0n`=u9F$CpL0&Re_(aOeEnKT=X7#^IKKmy)0elF!hG=m5{F9|EtwSsQNT{&W{jS~X-(0fP}gef2ZjP{ghjXwFFxV&
zXyj1Dnwx0eRX`>$2QSFMGxF_L^M?5w)^*<=ev{=Es3eQ{KyxGPOg$4{8dLT6C&W+I
z!&XxdoIoxJJIqg3N930zjubPZ4V5f*oXij@k>h*?mu3&s?p~Eb6$J4vj*Qf`5HIGt
zB!!zIAG~qWTF56>E5S?rX-<0Ppj-yZhl)ca8V|PV1BF)NyY8d7vImd+s{nLAzW_~m
z48O%c@~c<8y8m&Y@+qVURY?kerlO{6@AULXRa6mPeCE33i2jkfQvrkXqub+|{r5!Q
zH2E2*gC-B;STb;~o=SS`{Eq~xf3#v0Vnc~lG85{dUX+oM$C-Kd+%NMq^;uq9?
ze|c%k7nlYR2Iu&L<{^mM@UMijHE;dnY5d}G*olq!Bbv8Vg}+2sq=XDwZ6570cU09+IIj&Kx_8y}1~!ZpOxGJShUC1O
z>YALT^d$f_cJhHsvY2wL;ntLF1-Khsl)*SfoY5aB*)qOku
zfabiaz=%AatYM&hagCty|}b^C?$L8q&g5t)v0MS>PdOyk?L2$32tiw
zz9JP9!0legBdU3;O*r#NzI+cl7BV91V_%
z|18;aQJS4X!*_g*7%)HAUJe0u++Nx9HZ**2-Rm#4tWNc(@x^&)*93vv!WkcFB66i)5mCRq9^Lf!((F_6ZfXPdo?wk
zaV;(Eip#joN><;a!;LJ^S%qJJll!@l3J|QnZcJQr|Gi*q_5xQhR360tY(Bhl4?RsX
zZ+oY3hRJ2mrtAvmp_zs6#A$;aiuiU7Vyza*|8u|tB3~;9JeMw=cYFQ$&NYt*S{1=5
z-1&bBdG5b`$lPBdZm&Wi=UDh_|L2%TS?{;8CPJ;Q8D;tZIqsn<|8Q<)(Ur)D+w=bt
z`J4oP>wf%i&PebRx~%X26#KBKJ%R1otX!-mvS;(49gTL=TqZ_yrD7^qFAVbi1W#VN
zRPVa0s4ISBpw-K8ilcdjI4fX(`S}MkZ?`%QT~O%P;n%~t2V@PER#UwnUS4wOF;nQW
zW^BW+a8uo#&%FMyNym?d66|%N`PyJ&G$zx;63qLI3n;h;<$&VDfQPm5gcO@P*=Af&
zu{9T}hkZ$8!{M+HsZLE%r423xZz-oe&6w*h+nT=&~dD
z%CBy47d!|$#(}X+=8;uc!RP)3Z#S#b*{cLX1}}RLtaowZ@I_KvObKP{Wh%+@c#2jD
zY$OZI8*jpfd+czCgz2k_e|yO-HvzmZ1iLAtQfrd@vGr`MFWT@7i77A>c?O&GR{72pVd
zV2iaCv9Ws}PTakEb=kvn=X$u#yYc$#AzmKP!b$j&c03Dj#>Q|PS(QD-`R-Z2?@0$=
zSkM(8F9dA3CuGBIw`~ZyXG1{a)EN%bra8=*O7xk9-#+bLQHo*;0zo96(Jvl(VBvum
zQ1G|%6g*tWu@T}Kl|9&*-6^})Ae22unf4`mEYe_P(|xZE{z<}!sFJuJ-1*D%ZhwDQ
z5En8=7?QjC_0Jz$@Zp<+P`eY!b{((K?Sv>GJSXCFp8&)XW`9~`odtigQ&HCPX|l3N
zpP0a15<0m`F@bN_UnuzIDfjXcLELKU>?FqM?e9LY@U7?OHt%D%{O
z``5dsVJA|7iPb6^e+A7vEo07vb~dK&aV7_|tTzO-<$A^Ct%_(`(0@92NQ&Q9k^HflI|1S;c#y=pTKx=Suz6LaKP6vyY><+Ap
zjm7$otc&us1_;tum-ZI9KKi#<6zze?&x?`mv2T2l;rZcvXkPJFzR@&m_onQ!Steut
zTWjQSS$R#ti}iwg&|vBol}KF6nx!y|Tzf41t>9S+P>J6*G~hS%w|(Gs?yYiw^0yA{
z2H1Uw9RHt62c+a#kMCW%l96W(E%NtYB>(Vbul}~fgN{s~BjaTsNp`HE?$PV?(Gm9;
zG{!K!|Cb@aRiqNvw$LzJ85(Dak^VwM?)Uh`s%X6Meby&K{x*v5wJ|0!
z7{M0%NOH^@pQn3#^p;8JT)A<^kn0rRmy&(~ofj^Fc31|N^mWf)dfK(B48>H?_4E+;
zm=}+%S$NvV
zU3x3(g}#2;ZSSjsm<77_cH+G11?q;Xw^OzXpVq)m&R)Kjp^&XRvG|{1p>O|=kT^1q
zah4v9ZMsqE9_fD(OKT@^|NcE&6s0CSXCJnzVY#CRcHDHmeh-}E9giK8@3>+dv30>q
zGi^a69{S*CzbU}mraJd5o&y9p0v~2>_9+KG4~W!(L*k)H{#fC341aygbBCz_2)kwB
zCxcWPD;1Mm%wRI+-X#o=w*O8gHDmt=Vx^xVb{#QNj;by^>iF~LM!Ym{HupRn<(+G5
z@g#e}#8JNx11Ld$lcPQN9kJ4KTpp%~y_oxKXTgWUPkqVD)2QF5q2-5(sxSOuc;ZjEweY{2N7U
zX^m|jv&mSv4CqXILV-phl7(E?LxuNX{bYx>8)pgp-(2Q-q#cb%3`3NT>9cWH&vy59
z)R|G7E|-H9ZO&o$mz4`yqX-o=3NVdc$0mPP1}psepGGuE7xB2$e?PXx);Y8JLO4od
zY+SKv-lSGy1$85EMHk*iIK*{|&U#P%u9Z*RIW%QPi?_?5KI>+Wm{;z>E%{$R;r7aI
z#1=#><2r^1{CdIU+as%016Sd9QWffYEx6ZW;AR#vSY^b^RL930!Lf{*g!^^md4}Hw
zo89%_jlq9(Rs4f71cD%_?6*f2RcCdlJo1CgG2*Mwi`}vezqPWvNLk*wlG{9!Yof96
z#r9`i4!nnW7EKt>hYLd=EDQNC$!NrnALt1?|H!WE?`x{Rx5uYtyV0oA(;?o@hB%E{
zj;}6Ie#URytvHoYWTcLws=zR@{g0}GPl4-c)BQIMpJTJUpTL68H^qwM%H4Or
zl8xz94Q(fkDD~k%$G$pM30gz*l9fSpQF|ZTu=jp|`}b~mY;V+n!_8g+iyXYK_qy4E
zPmg)>PP|BOt={B1Nz|8)=m8I-fYE$P_l_T)bwBVnD#RqaGkG2v-Q*RY;^1JQ
zgVS{R(EmmCILRNpV2?+oGp@~f*4VeegHMO8#LC#gFTx8^a>rd1cuUsA+7bJWHslbT
zgs-RAcZMJbmNzbVzHn#r}=Z*%|lq7iGQ6CUrs^OqVQ
zqw8a<;^H2FAc!dMf0U9w|N6+fU(0ICA&}0&^tLQ_Pj`Etm_wz@~u8;hxZh4P)YY{C8>6x9Ev5a5l>Sb$s%$Tm#ZZt_*6RJuy6UGYZ
z#ba#92NqRTVPkVMHnOgxMa?G~HC82rmRVD*i5fO2!GxLK9`2Kxsx&e1$jiVDB
zp&(jsaN~BsF~bzF<2>cKW}$Eff_NP|+PYz<(T)rg7xG_9a_{XV>cJvpxmW6;SS+X8
zgV?T*HnkI43E-dqvA`|ytyNg0T+OEl8KeAs=4cEQjpEklQk+W+6YOo{w_z91PloA2
zmAx5xeAmw-9-7Uv*JowS;sTxsXSfTZm)=odabL!5_=mN_
zB@buAfc~SUce%yw3dgNmFXp-Jc>~2X?$Yp3Kri8aWWr~Em1kMLp6=^7h
zZu2Q{qwH%`@4|HKKKh@A2pNdbr?(Y7`k5q6nbGO#LIlEJyyF(Pgvuz;l|*j5?S=31-J*Bj
z54wU;&wDIYYTse2ebRtL_yq9rG6dBxMxri6V6vTFtZn;$LRB=f9z}h8Oo%fLG(Ydn;=X
z?+2)Uhio4i5}k^_V-6nq_mv^JIculEW0E|g;rsVK{#eER_g6gjI1L8|eJCaKl3Q+F
zLV)K}#Ckd}*ST79BH_OaS?c*v`6|$ruGkn@bSclRyhffEP?$;DM~Ku}Ftb?UA#h-o
zNM%D+Dw5=)%aVU)z|FG^m_XWz#oT!~2(7~@(1EQFE}w+|rFFk#&!YeAk*LfI-C)Su
zc@aPPzzIz#0uONiaq!#@29+_@nq3dq5ZlVN&N06(Hk_40@syMV8{C}St9h&v9&?oTq~q
z>~nSE@MDrWea@g11i0h4CCLdCq<41}GB`PfJ;
zljLC$WQn<-J`B2|M@mjUn$wU3y5cu}-(kK)lCex7w>)hKWSQ(l^tS5Y=Zva>N{@wB
znyU&zJ=Y*ElDTeSyX#C28%X*z7kKsNNmS99HrM?@#AK->&_rAUgk*f+jcBpr*$-2y
ztHr#njX4VI!C6BnOv9Y_?KD0X~X7@vL=Y}kE
zbK?wkxbQZZGPToTG6+E(l^FZR{aE$Phsm)O5m@l_r#X^u$JVW4U`FWO8Moc`Sm-?&
zw>3_i>FGIhn!*cv+Tf{H3N^!+u2RHav1g7MmaRKf&YHpI)Y`dMiiCDE4{cQU1+KH1
zS&6JfSowVOGY=nLjoXWw@{n3ZI5~C(NYdM@QE;hOc}cuk<<@h&bS-zN_PG#Gdk?5`
zc4Ppi%^n=#l7*)OCgXXMjzeS@-3K}$NM;4oA1l0=|Iq$uv7n%73uQYJjvf-th2^4&
zvyg^zb5%xJ7o{kr$eeguC#nS2Nf9WU-PSoSZ0L6LV4t(1o7w-7B2$4hr*z|)m^JuG
zd-??+8vw${@wPU6^xYV7Yf(!<^1Ba+JGM7(kzUx5Zr5jDv|+dRZ?*3sjKn1pb`YE@S&=GZ|f^}Tq;a{Zw=^ny!1`JscKq$>BBN7?SV}XmBvr6GNl}i0i9Xr
z8xZK{7kJwewrYbY+J#qC>2OsQ?;6@QoM!ydcl(K7<$RBy%LTmevcDMi!*J-4VxaK4
z+03KZxFsp3SCR#O}@nj615FS2szgSrK)l(0>6)hG${{@?6
z=1zi?a-K5FsvS#Ro
zQ_^R`t+;Z8$b}3Q7UKQ`peuZ~;fXbsE2zgS_+*oK@wOO7Z~I{O^v-E9w+Y$VI>K_q
zEEZRIj#Apf=&tL#l>M%ux1GZovhWm^LlU+6jJZzaZ_s7yw(%8usPuQBPljgOT_v--*{t5I
z115N^Ts`a1X7q@2=W;U`CY9cj`d8OiUztTdCA@`Ayw%WUT{E981YSrumF(Jl-7M}y
z800;%0k=ao`05K^y7&a)-}(Uf;{4AyTlCDa#!Z7LkYMm7Un$zIzgyfL{$<QOBi~rRVb^`V-hNAOzImy~jSh6iEXL5;E>P)gHG`umCtGymIi(e1
z+b!6PCa{17=8WrRa+{%;=w~>-L^ps3A=i4=a^tq+*!aTRt_s7gi4PNh%lI%(D0+13
zJ8KN<|Nfw`4ROmD?rKik9(dxGjFi@<}mCxO3Ih%M8tq*4S^J#1DwNMcvTr
z-OXw`Vd{+EsJr=Uxa09U7_OdmxEgMboeh@-TP^J?WCJK5mUQL|tJIkncIY$B=ZGlr
zj2^heua)zc{<-YQWn#&OeKC`s%o7Wo*1mNA9
zUo6YHQz%`(XZ56v0--edrSQp@oNTcR^pi|dQj!!;sxT%xnpuS}s}ef1SL(vlw=`AK
zWlh7>y#J>;Ag0xEajOXgl^-h^Ucab1yDMqKA05cl{_oQQQAdM<-+RbtEIRMi
zv+T1+N8s;TO*tjgkMiSz?sU0W6N-BJ@;b{kjnj7%30*MWYJ&kchL|+=5!7qf15;5
zp;s=HAuu|Xt9A?R!c*#(OAPw?hIsjSKzMcTO!6kQ+0K0ji7DBKXw))2eV
z1=pG;4Mj6s>alWEAXGU!P&Ktqoq6}`lnk;4I>{8fRNK#fNi;bmMH3%B
zNV?~NH&y|ue&$3nv4|>OL4S2j+q2rb)5GB>DViMmViJl)#~G|Jg@u^Rp4m0-jj(T)1%5{gDgEC+
zFb_{()=@3xLz;svhXRQYz4yNR?t_5+@0I?U@=)`oq_m#W+8XfF*E&6ae)EyDnB?+&
z+Y1BO3-*Xx^Jt=JO~z1gD#0G-Z!yOms$>KC7s-Z6
zGbuf38a%adK8K%@OmYTKi=KKXeND=)f3Dxsl!hglubg^R5b~Q-aM%E+O=_jgnLQ=R
z;$y`M$4(X*Et1jCXRVro4J6ZIo(ELlW{Gtqo6PY1&o1FS1aX5T6bE}uY3ph(Jw4EC
zO7<#4^8wMCjLf4suPE;1n$X|7y#pA~$i%fU@&-u|hpx&Ac;o6E-
zKq|MLO?~jql|Tw!q^!H8VFSc9cz_lB!l>*3ofBQ>H!0=(QIpYV^e;)I7?>>!=5R7S
z6c}dAgq^OlnF-m>{X^V>b(?qGWt;H%@0oJr^;p_ta(*c7-G{}>b@>(dr=Ext3t#Mb
zUOc``<_M;oQM_-L*v`31=OBVjzAptDqMOOWu3%lnwI&~~Vmkiox};hwV#6q&H;Z7s
zTsMXi7gj>fnm(sXOvO_>_T4w8VwuY&U8zi-E02vWPk5;O0s1%nuG?Jt4`~%s-hN1|
zdHJ)9M~|)%3t#%SK&%P|%V~YnCjka^VrNHQo^Z$J@NmkKoE09v`HmL)Ue&Z|Gn{N$
zeK3ZO)sLN4%+-!_+=^D2k!9>Jc+O#3pX5wSG}k$fENX+pjGya9d6G#bZaVu279|!R
zPulo#GL~*Ad@sR#lAOTcIvuB&Ly-FL=Y+<{tWgun%F;{bjLbQ$1MZ#az=V@&PT!l8
zNErk(X5}&|nVc6>{IG(s~3VufYi<>(f^cnFl_H%!eqSda%7(CaJqjV*bJfW)z(-ZeJZT|i{O!ItY
zXg6|)o^>?MF5i^Bd$!5(*+XmS3s{`udpwn=J+Cz-<9iedP5xQ5?V*_1)&=e(({$Y&
zsF*uTnWh;tf0Z`F_4@(#<2N7I<3)D(>{WkI{`bM^eE^mFNulsm<0GcRl-Ex^`o#J5
zrkxoty`O~DYu?J-_;y^}+Z!|AT6092Jy+V!Hi7UhrP3wO@B
zj+ebO4I1{$o}oC>0fv?A
z`k_&=Vz&8>a0u9sHlTpJ@8ZraxpBBLw3FIlOLdImme4qY-{uX{^J&}mj+(|YqLmZ%O9-eCXsYx}0Ii
zrdZ_k$3t7!lZUT#=P7v9j(w6m&E@sn>-dj}fmqqc*<+7%0joUEInN;PLmxLJ-?}rK
zcsHRK!u3fnf1A%uI&u~a#ZJ%A$5-%%nP8v#{#r1Yvw2a_(NHIrB5|bqbBOv%tWK}x
zoYW947(!U1)J;qFyfKiL=WkID0?{vd^+hzTdosXc2b`6eglAzKzHsRH(|>@?37|Uw
zF2sjV&|6b8;kK_>e~6397N9(es`3R)%%h`n1u)?Y?l|~HV_c?ut9p=F`;~0(TAg<5
zlzq_5r~(+tWF4Av>X#Mnc@#(|p1__h$L`y8WFzYsFw)o{-H@*16xk|+^tEI|$O54m
zg1BCh+;M1kb3)FYQ|rM*ruyzHZ%N9&&GG;=fv?`r)FqQM@`v$n_-kGrBQfDcJb+Cv
zoQZk6?in_ACu;l|>@Jo}cI%2(NTix~WVE}C
zTSIZ_f5j#@mg+F|3NypURQI-l6+7GI>+SoY8R}#h?D~B$J8tsBPtcrw?#_a;N5ytL
zg?~JG_`cU`Get3yw=uOUB!@a@8f642m5XW0gV*Dz3@0X}3X;W%D@i&8nH|Aj=KXb%
znfc;3-)Vgs`pM*5cfZ`Vc2m&Q-B3?S+AzhwQH|r$VSSaL2*j=i{iZ
z&QQe}{7biY$qWkRa1N^YMzce0;Y`!)swbbUnr)g{Si9EVp1X~L9NK(3^o5Fb6y$OI
zb<45HviCO0AQ#c|fHrmNeE*6P2h`@s2}y-Xj{okLJ61k=+td#MiPz1~=cBkHap{z|
zpdU`iO*!JXihr>cWq(|Ec5m
zy}bW1uoA<0qj_rmJ!K+moaKb@ZD|31tIa|#QY@+S4T
z-UrPa5fiFgS(q5C5Hfv+7x(Rh8yYC*%;5tE0S+F(6L-F?@I_FiPrB`m7dv7fzul?~
z&XEvW8$7(`;NzJGV`C3yK7MeG;2#tmKuAFF?YHtX@Dp|et)T1?kv^h}eNP^_@3nUx
zmtQxDy&T9GoaL95b)XbVzjBliaPgQAdr|M>?RH@1z`bD`JaSX>Uo)#1M4)aNP80LAL$Aq>T2<9&$Vg~PR
zs)u^eLFweBc*Awv79BtCVx1i$sskqmt_@U_OO1S9Zh4TNv#>CihS=YNfCMIU?ReZQ`7#@e&?w@1a
z_wp!0u5jRru#7vyt(zQxqL(XIfm?7$YSw$1I!OxdVxNytMm0@-S3yG%sVZ&K7^PW=
z$=oTK2-18M66l`(89u`FCZLG<9115pkhIYP_flNoMz}Otgi2#OU86R2hGDeopo*ch
z5()wC_#!^w$p$3GF}C+=F^=!nFG2y&a)r`v%UcjbIVT}GknXz+{7r100u0UUgwck&
z8_%l*PM`4U7$&--LlJ!!-0qIg;w@A%6yvE6kKF5W$Ih?Y3LqFykz8^N>+m8;*4rXt
z6?a;CW{STI!&g`tNTxb;+fC<*!M9(mC&4D2o{hhi0h-Q&ZLg~!U7NVKyIVmO48iVr
z0PkKT!^*@9kGvk?{8;x_@*^`%Bxwv?ukB?WR#IFqSuRB(gjUL;C=316K6@)-@abhN
z^k*T8sVYK2ChruEDlTq!yO)2fHE4r4iOXSCe%jGp?52J
zNmfW0mo3XsM{h$VI8QJgc4IaseP3@cdk*b1B!Y(rK7&i>=W9qj73~IrBwni0TcL=h
zT$2~n#3@U9R-rO-J_Xy1Oz#S-C9LZ0WzR39o
zzlvUs7q4*T@+VM0ouCPpb#Q12dYE9ae@Ks
z#+9!$TgaICjsSlT%*6nCx?NYvyz~LPj+PH3++4k>Cpo#T`rS9cPtT(X3%GtM&dTqy
zE}RQBKlNEy_~(xW1iaaOOZSRzDB*4N_ZL=l-`cl3Ab?GWkD?yAOM8KeZv0*`gN(U2
zsUlZB=lw9JVh^_e^JDzJvJ&R~^I+Bf{d@OSRG|kv1oN+$1%C-e%-|Q8KYH+;jho+%
zi+gwT#&;fs%eq_cyz7oT?z;09LQ*UPWJ}3qGZ#vsWiqw7Pq=Jdi1rqeibwI`_yXQ2
zi;c!W`zJcz%J~*Au8hQs-{lMg%*NaJK3+rtE4Vf(-YO8q2rky_6S(mK+X2VY$I^Gs
z9GI~?Nnk*NRfpv{(Ut^Sx_q^PqNPW+-5#Ntc}A*)cn=v)4EoFh9q3bkq?fi<;f1zj
z003w7giZ*CR^A#5xpu5Tff}?J!WqoYaog^T&@O1wa(|(bWgi$YABBpWYg#o@xZ^R+2;m%4qmcA&=pG`P_b5>w$a3|-%yq2%J
zjvT2Pd?uQa@ufHQEvnI1T*n}}7jALKSMUZINitQ^5Cnn=t^f1PGykcn8F&WZnSq*h
zaR6&l*FO-Os$YnRySO9LXI4}#p`^o{*`}
zFSWgvYM35|j=(jfV`HX#rkx3k%mFRuT#&~3TOp{PD-;_I4f2f!^9~CS?DOHzDbYl#
zLeuMfHL>dwc4(mJ-jIqHQsqk&so;%g#D#iWb5Q2FWS5t*;|nT*gg`Oo@B|B>%+vtq
z5cbm=_GO)mJ>g=RsAxlpB5Kw|e89?0igA*>Mrx^MW7}Dm9oTV!N&+_$OE-9e3m9`*
zCKhop*+ZOT$8D!_(y7DGr*ashyvp&b41|7Od;h_ZFEr^rL|3lcyeRi{oZFN5TUP-r
zGa|&5?`74k$Kv!8Xj}OjKSnb^euXTr~98j7uYPG$&Jr
z*8-k&c;>*&x@4Ev@X|+g<*r#+S1_=OU!}
z3&ceU1HufcDmCxyiHUhR?F1@vM~i5EKfmv`6Z