From 0806d887cbe3f7227de1db807e9db6e70e22aa8c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 00:06:51 +0000 Subject: [PATCH] Deploy to GitHub pages --- .nojekyll | 0 404.html | 24 +++++ CNAME | 1 + assets/app.CmaDQ0PK.js | 1 + assets/changelog.md.cP5vwYkS.js | 1 + assets/changelog.md.cP5vwYkS.lean.js | 1 + assets/chunks/@localSearchIndexko.si-0bTrB.js | 1 + .../chunks/@localSearchIndexroot.Bwzisf-w.js | 1 + assets/chunks/VPLocalSearchBox.BwpIHuIQ.js | 7 ++ assets/chunks/framework.DPuwY6B9.js | 18 ++++ assets/chunks/metadata.109b3a7f.js | 1 + assets/chunks/theme.BFgfqfbX.js | 2 + assets/guide_getting-started.md.Ck0pXdAU.js | 47 ++++++++++ .../guide_getting-started.md.Ck0pXdAU.lean.js | 47 ++++++++++ assets/guide_index.md.CF6anCHw.js | 1 + assets/guide_index.md.CF6anCHw.lean.js | 1 + assets/guide_options.md.BzUWU8EA.js | 57 ++++++++++++ assets/guide_options.md.BzUWU8EA.lean.js | 57 ++++++++++++ .../guide_supported-languages.md.1VW14d8f.js | 1 + ...de_supported-languages.md.1VW14d8f.lean.js | 1 + assets/index.md.e7tt21nu.js | 1 + assets/index.md.e7tt21nu.lean.js | 1 + .../inter-italic-cyrillic-ext.r48I6akx.woff2 | Bin 0 -> 43112 bytes assets/inter-italic-cyrillic.By2_1cv3.woff2 | Bin 0 -> 31300 bytes assets/inter-italic-greek-ext.1u6EdAuj.woff2 | Bin 0 -> 17404 bytes assets/inter-italic-greek.DJ8dCoTZ.woff2 | Bin 0 -> 32564 bytes assets/inter-italic-latin-ext.CN1xVJS-.woff2 | Bin 0 -> 120840 bytes assets/inter-italic-latin.C2AdPX0b.woff2 | Bin 0 -> 74784 bytes assets/inter-italic-vietnamese.BSbpV94h.woff2 | Bin 0 -> 14884 bytes .../inter-roman-cyrillic-ext.BBPuwvHQ.woff2 | Bin 0 -> 40488 bytes assets/inter-roman-cyrillic.C5lxZ8CY.woff2 | Bin 0 -> 29164 bytes assets/inter-roman-greek-ext.CqjqNYQ-.woff2 | Bin 0 -> 16272 bytes assets/inter-roman-greek.BBVDIX6e.woff2 | Bin 0 -> 29920 bytes assets/inter-roman-latin-ext.4ZJIpNVo.woff2 | Bin 0 -> 110160 bytes assets/inter-roman-latin.Di8DUHzh.woff2 | Bin 0 -> 67792 bytes assets/inter-roman-vietnamese.BjW4sHH5.woff2 | Bin 0 -> 14072 bytes assets/introduction.md.Ckxwfzhf.js | 1 + assets/introduction.md.Ckxwfzhf.lean.js | 1 + assets/ko_changelog.md.EWkUgtos.js | 1 + assets/ko_changelog.md.EWkUgtos.lean.js | 1 + .../ko_guide_getting-started.md.AiQ6EL3n.js | 47 ++++++++++ ..._guide_getting-started.md.AiQ6EL3n.lean.js | 47 ++++++++++ assets/ko_guide_index.md.BWfDSZJq.js | 1 + assets/ko_guide_index.md.BWfDSZJq.lean.js | 1 + assets/ko_guide_options.md.B1dVRSt1.js | 57 ++++++++++++ assets/ko_guide_options.md.B1dVRSt1.lean.js | 57 ++++++++++++ ...o_guide_supported-languages.md.DSKJSZko.js | 1 + ...de_supported-languages.md.DSKJSZko.lean.js | 1 + assets/ko_index.md.BcSpPhlX.js | 1 + assets/ko_index.md.BcSpPhlX.lean.js | 1 + assets/ko_introduction.md.C1vS_6Re.js | 1 + assets/ko_introduction.md.C1vS_6Re.lean.js | 1 + assets/style.BidkyfYk.css | 1 + changelog.html | 27 ++++++ favicon.ico | Bin 0 -> 7501 bytes guide/getting-started.html | 73 +++++++++++++++ guide/index.html | 27 ++++++ guide/options.html | 83 ++++++++++++++++++ guide/supported-languages.html | 27 ++++++ hashmap.json | 1 + index.html | 27 ++++++ introduction.html | 27 ++++++ ko/changelog.html | 27 ++++++ ko/guide/getting-started.html | 73 +++++++++++++++ ko/guide/index.html | 27 ++++++ ko/guide/options.html | 83 ++++++++++++++++++ ko/guide/supported-languages.html | 27 ++++++ ko/index.html | 27 ++++++ ko/introduction.html | 27 ++++++ language.png | Bin 0 -> 16277 bytes logo-16.png | Bin 0 -> 500 bytes logo-32.png | Bin 0 -> 951 bytes sitemap.xml | 1 + 73 files changed, 1077 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 CNAME create mode 100644 assets/app.CmaDQ0PK.js create mode 100644 assets/changelog.md.cP5vwYkS.js create mode 100644 assets/changelog.md.cP5vwYkS.lean.js create mode 100644 assets/chunks/@localSearchIndexko.si-0bTrB.js create mode 100644 assets/chunks/@localSearchIndexroot.Bwzisf-w.js create mode 100644 assets/chunks/VPLocalSearchBox.BwpIHuIQ.js create mode 100644 assets/chunks/framework.DPuwY6B9.js create mode 100644 assets/chunks/metadata.109b3a7f.js create mode 100644 assets/chunks/theme.BFgfqfbX.js create mode 100644 assets/guide_getting-started.md.Ck0pXdAU.js create mode 100644 assets/guide_getting-started.md.Ck0pXdAU.lean.js create mode 100644 assets/guide_index.md.CF6anCHw.js create mode 100644 assets/guide_index.md.CF6anCHw.lean.js create mode 100644 assets/guide_options.md.BzUWU8EA.js create mode 100644 assets/guide_options.md.BzUWU8EA.lean.js create mode 100644 assets/guide_supported-languages.md.1VW14d8f.js create mode 100644 assets/guide_supported-languages.md.1VW14d8f.lean.js create mode 100644 assets/index.md.e7tt21nu.js create mode 100644 assets/index.md.e7tt21nu.lean.js create mode 100644 assets/inter-italic-cyrillic-ext.r48I6akx.woff2 create mode 100644 assets/inter-italic-cyrillic.By2_1cv3.woff2 create mode 100644 assets/inter-italic-greek-ext.1u6EdAuj.woff2 create mode 100644 assets/inter-italic-greek.DJ8dCoTZ.woff2 create mode 100644 assets/inter-italic-latin-ext.CN1xVJS-.woff2 create mode 100644 assets/inter-italic-latin.C2AdPX0b.woff2 create mode 100644 assets/inter-italic-vietnamese.BSbpV94h.woff2 create mode 100644 assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 create mode 100644 assets/inter-roman-cyrillic.C5lxZ8CY.woff2 create mode 100644 assets/inter-roman-greek-ext.CqjqNYQ-.woff2 create mode 100644 assets/inter-roman-greek.BBVDIX6e.woff2 create mode 100644 assets/inter-roman-latin-ext.4ZJIpNVo.woff2 create mode 100644 assets/inter-roman-latin.Di8DUHzh.woff2 create mode 100644 assets/inter-roman-vietnamese.BjW4sHH5.woff2 create mode 100644 assets/introduction.md.Ckxwfzhf.js create mode 100644 assets/introduction.md.Ckxwfzhf.lean.js create mode 100644 assets/ko_changelog.md.EWkUgtos.js create mode 100644 assets/ko_changelog.md.EWkUgtos.lean.js create mode 100644 assets/ko_guide_getting-started.md.AiQ6EL3n.js create mode 100644 assets/ko_guide_getting-started.md.AiQ6EL3n.lean.js create mode 100644 assets/ko_guide_index.md.BWfDSZJq.js create mode 100644 assets/ko_guide_index.md.BWfDSZJq.lean.js create mode 100644 assets/ko_guide_options.md.B1dVRSt1.js create mode 100644 assets/ko_guide_options.md.B1dVRSt1.lean.js create mode 100644 assets/ko_guide_supported-languages.md.DSKJSZko.js create mode 100644 assets/ko_guide_supported-languages.md.DSKJSZko.lean.js create mode 100644 assets/ko_index.md.BcSpPhlX.js create mode 100644 assets/ko_index.md.BcSpPhlX.lean.js create mode 100644 assets/ko_introduction.md.C1vS_6Re.js create mode 100644 assets/ko_introduction.md.C1vS_6Re.lean.js create mode 100644 assets/style.BidkyfYk.css create mode 100644 changelog.html create mode 100644 favicon.ico create mode 100644 guide/getting-started.html create mode 100644 guide/index.html create mode 100644 guide/options.html create mode 100644 guide/supported-languages.html create mode 100644 hashmap.json create mode 100644 index.html create mode 100644 introduction.html create mode 100644 ko/changelog.html create mode 100644 ko/guide/getting-started.html create mode 100644 ko/guide/index.html create mode 100644 ko/guide/options.html create mode 100644 ko/guide/supported-languages.html create mode 100644 ko/index.html create mode 100644 ko/introduction.html create mode 100644 language.png create mode 100644 logo-16.png create mode 100644 logo-32.png create mode 100644 sitemap.xml diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..c44df97 --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ + + +
+ + +This version is deprecated and not recommended for production use.
generateI18nLocale
and generateI18nSearch
functions have now been merged into withI18n
. Therefore, both functions will be removed in the next version. Please refer to the documentation to migrate to the withI18n
function.This version is deprecated and not recommended for production use.
This version is deprecated and not recommended for production use.
generateI18nLocale
and generateI18nSearch
functions have now been merged into generateI18n
. Therefore, both functions will be removed in the next version. Please refer to the documentation to migrate to the generateI18n
function.This version is deprecated and not recommended for production use.
editLinkPattern
value even if defined common theme configsdebugPrint
option for generateI18nSearch
debugPrint
methoddisableAutoSetLangValue
methodNot purpose for release. Do not use production.
This version is deprecated and not recommended for production use.
generateI18nLocale
and generateI18nSearch
functions have now been merged into withI18n
. Therefore, both functions will be removed in the next version. Please refer to the documentation to migrate to the withI18n
function.This version is deprecated and not recommended for production use.
This version is deprecated and not recommended for production use.
generateI18nLocale
and generateI18nSearch
functions have now been merged into generateI18n
. Therefore, both functions will be removed in the next version. Please refer to the documentation to migrate to the generateI18n
function.This version is deprecated and not recommended for production use.
editLinkPattern
value even if defined common theme configsdebugPrint
option for generateI18nSearch
debugPrint
methoddisableAutoSetLangValue
methodNot purpose for release. Do not use production.
This page walks you through the installation and use of the VitePress I18n module.
You may need to pre-configure the VitePress module before using this module.
It is recommended that you use Node.js version 18.x or higher. VitePress I18n is written in ESM
.
You can install the module using NPM or another node module package manager. This package is only used in the developer environment and should be installed in devDependencies
. Install it with the command below:
# via npm
+$ npm i -D vitepress-i18n
+
+# via yarn
+$ yarn add -D vitepress-i18n
+
+# via pnpm
+$ pnpm i -D vitepress-i18n
This article does not cover basic knowledge of VitePress. To learn more about VitePress, please visit: https://vitepress.dev
First, import vitepress-i18n
in one of the two ways below.
// \`.vitepress/config.js\`
+import { generateI18n } from 'vitepress-i18n';
+
+const vitePressOptions = {
+ title: 'VitePress',
+ themeConfig: {
+ // ...
+ }
+};
+
+const vitePressI18nOptions = {
+ /* Options... */
+};
+
+export default defineConfig(withI18n(vitePressOptions, vitePressI18nOptions));
// \`.vitepress/config.js\`
+import VitePressI18n from 'vitepress-i18n';
+
+const vitePressOptions = {
+ title: 'VitePress',
+ themeConfig: {
+ // ...
+ }
+};
+
+const vitePressI18nOptions = {
+ /* Options... */
+};
+
+export default defineConfig(VitePressI18n.withI18n(vitePressOptions, vitePressI18nOptions));
Call withI18n
on the defineConfig
option of VitePress's configuration file, the .vitepress/config.js
file (the name of the configuration file may vary depending on your project environment).
The withI18n
must contain two argument values: the first argument contains the value of the option in VitePress and the second argument contains the value of the option in VitePress I18n to override.
The output from VitePress I18n contains automatically translated text. This options data will be merged with the existing options in VitePress.
There are several options available, but they are optional depending on the context. However, the locales
option is mandatory: it provides the languages that VitePress I18n should translate into.
withI18n(vitePressOptions, {
+ locales: ['en', 'ko'] // "Required"
+});
The value of the locales
option must include the supported language codes. For a list of supported language codes, see this article.
VitePress requires you to specify a primary language. This is called the root locale, and in VitePress I18n, you can specify the root locale like this
withI18n(vitePressOptions, {
+ locales: [
+ { path: 'eng', locale: 'en' },
+ { path: 'kor', locale: 'ko' }
+ ],
+ rootLocale: 'en'
+});
The value of rootLocale
uses a supported language code rather than a directory path. If this option is not specified, the first value in the locales
array will be the root locale.
To test what the overall output looks like, try building VitePress with the debugPrint
option provided by VitePress I18 set to true
. You should see the output in the console.
withI18n(vitePressOptions, {
+ locales: ['en', 'ko'],
+ debugPrint: true
+});
To learn more about the options in VitePress I18n, see the VitePress I18n options page.
`,26)]))}const c=i(t,[["render",p]]);export{g as __pageData,c as default}; diff --git a/assets/guide_getting-started.md.Ck0pXdAU.lean.js b/assets/guide_getting-started.md.Ck0pXdAU.lean.js new file mode 100644 index 0000000..fd6a3c3 --- /dev/null +++ b/assets/guide_getting-started.md.Ck0pXdAU.lean.js @@ -0,0 +1,47 @@ +import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.DPuwY6B9.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{"order":1},"headers":[],"relativePath":"guide/getting-started.md","filePath":"en/guide/getting-started.md","lastUpdated":1729749440000}'),t={name:"guide/getting-started.md"};function p(l,s,h,k,r,o){return e(),a("div",null,s[0]||(s[0]=[n(`This page walks you through the installation and use of the VitePress I18n module.
You may need to pre-configure the VitePress module before using this module.
It is recommended that you use Node.js version 18.x or higher. VitePress I18n is written in ESM
.
You can install the module using NPM or another node module package manager. This package is only used in the developer environment and should be installed in devDependencies
. Install it with the command below:
# via npm
+$ npm i -D vitepress-i18n
+
+# via yarn
+$ yarn add -D vitepress-i18n
+
+# via pnpm
+$ pnpm i -D vitepress-i18n
This article does not cover basic knowledge of VitePress. To learn more about VitePress, please visit: https://vitepress.dev
First, import vitepress-i18n
in one of the two ways below.
// \`.vitepress/config.js\`
+import { generateI18n } from 'vitepress-i18n';
+
+const vitePressOptions = {
+ title: 'VitePress',
+ themeConfig: {
+ // ...
+ }
+};
+
+const vitePressI18nOptions = {
+ /* Options... */
+};
+
+export default defineConfig(withI18n(vitePressOptions, vitePressI18nOptions));
// \`.vitepress/config.js\`
+import VitePressI18n from 'vitepress-i18n';
+
+const vitePressOptions = {
+ title: 'VitePress',
+ themeConfig: {
+ // ...
+ }
+};
+
+const vitePressI18nOptions = {
+ /* Options... */
+};
+
+export default defineConfig(VitePressI18n.withI18n(vitePressOptions, vitePressI18nOptions));
Call withI18n
on the defineConfig
option of VitePress's configuration file, the .vitepress/config.js
file (the name of the configuration file may vary depending on your project environment).
The withI18n
must contain two argument values: the first argument contains the value of the option in VitePress and the second argument contains the value of the option in VitePress I18n to override.
The output from VitePress I18n contains automatically translated text. This options data will be merged with the existing options in VitePress.
There are several options available, but they are optional depending on the context. However, the locales
option is mandatory: it provides the languages that VitePress I18n should translate into.
withI18n(vitePressOptions, {
+ locales: ['en', 'ko'] // "Required"
+});
The value of the locales
option must include the supported language codes. For a list of supported language codes, see this article.
VitePress requires you to specify a primary language. This is called the root locale, and in VitePress I18n, you can specify the root locale like this
withI18n(vitePressOptions, {
+ locales: [
+ { path: 'eng', locale: 'en' },
+ { path: 'kor', locale: 'ko' }
+ ],
+ rootLocale: 'en'
+});
The value of rootLocale
uses a supported language code rather than a directory path. If this option is not specified, the first value in the locales
array will be the root locale.
To test what the overall output looks like, try building VitePress with the debugPrint
option provided by VitePress I18 set to true
. You should see the output in the console.
withI18n(vitePressOptions, {
+ locales: ['en', 'ko'],
+ debugPrint: true
+});
To learn more about the options in VitePress I18n, see the VitePress I18n options page.
`,26)]))}const c=i(t,[["render",p]]);export{g as __pageData,c as default}; diff --git a/assets/guide_index.md.CF6anCHw.js b/assets/guide_index.md.CF6anCHw.js new file mode 100644 index 0000000..860667b --- /dev/null +++ b/assets/guide_index.md.CF6anCHw.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.DPuwY6B9.js";const l=JSON.parse('{"title":"Guide","description":"","frontmatter":{"title":"Guide"},"headers":[],"relativePath":"guide/index.md","filePath":"en/guide/index.md","lastUpdated":1729749440000}'),d={name:"guide/index.md"};function i(n,r,o,s,c,p){return a(),t("div")}const m=e(d,[["render",i]]);export{l as __pageData,m as default}; diff --git a/assets/guide_index.md.CF6anCHw.lean.js b/assets/guide_index.md.CF6anCHw.lean.js new file mode 100644 index 0000000..860667b --- /dev/null +++ b/assets/guide_index.md.CF6anCHw.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.DPuwY6B9.js";const l=JSON.parse('{"title":"Guide","description":"","frontmatter":{"title":"Guide"},"headers":[],"relativePath":"guide/index.md","filePath":"en/guide/index.md","lastUpdated":1729749440000}'),d={name:"guide/index.md"};function i(n,r,o,s,c,p){return a(),t("div")}const m=e(d,[["render",i]]);export{l as __pageData,m as default}; diff --git a/assets/guide_options.md.BzUWU8EA.js b/assets/guide_options.md.BzUWU8EA.js new file mode 100644 index 0000000..c5355bf --- /dev/null +++ b/assets/guide_options.md.BzUWU8EA.js @@ -0,0 +1,57 @@ +import{_ as i,c as a,a2 as e,o as n}from"./chunks/framework.DPuwY6B9.js";const c=JSON.parse('{"title":"Options","description":"","frontmatter":{"order":2},"headers":[],"relativePath":"guide/options.md","filePath":"en/guide/options.md","lastUpdated":1730106791000}'),t={name:"guide/options.md"};function l(h,s,p,o,d,k){return n(),a("div",null,s[0]||(s[0]=[e(`This page describes all the options in the VitePress I18n.
locales
(Required) string[] | I18nLocale[]
Defines a list of languages that this plugin should support. This involves including the language code corresponding to the list of supported languages in an array value.
For example, to support English and Korean, use values like ['en', 'ko']
.
withI18n(vitePressOptions, {
+ locales: ['en', 'ko']
+});
This way, in your documentation structure, you should organize English as an en
directory and Korean as a ko
directory.
If you want to name the directories differently than the supported language codes, you can map them with objects of type I18nLocale
. For example, if your directories are named eng
and kor
, you can map them to English and Korean, respectively, as follows
withI18n({
+ locales: [
+ { path: 'eng', locale: 'en' },
+ { path: 'kor', locale: 'ko' }
+ ]
+});
Where path
is the directory name and locale
is the supported language code.
For a list of supported language codes, see this article.
rootLocale
string
undefined
This option value specifies the language code to set as the root
locale. In VitePress's i18n settings, that language is specified as root
. This value is required to specify the default language for VitePress, but it uses the first array value of the locales
option even if you don't specify an option value.
For example, if English is the default language, set the rootLocale
value to en
.
Note that you must use the locale language code, not the directory path (e.g., use en
for the rootLocale
value when the directory name is eng
).
searchProvider
'local' | 'algolia' | undefined
undefined
Setting this option to local
or algolia
displays the search interface on your site. The translation of the interface text used for this search is provided automatically. For more information, see the following documentation: https://vitepress.dev/reference/default-theme-search#search
To override VitePress's search options, you can use the searchOptions
option.
searchOptions
LocalSearchOptions | AlgoliaSearchOptions
undefined
You can specify refinement options for local
or algolia
searches.
disableAutoSetLangValue
boolean
false
If this option is true
, the lang
value is not set automatically.Use this if you do not want to specify a value for the lang
attribute of the html
tag.
debugPrint
boolean
false
If this option is true
, you can try printing the options used and the output to the console log.
label
object
undefined
Use this option if you want to use custom labels.
link
object
undefined
Use this option if you want to use a custom link.
lang
object
undefined
Use this option if you want to use a custom lang
property value.
title
object
undefined
This option is used when you want to display different site titles for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ title: {
+ en: 'Welcome',
+ ko: '환영합니다'
+ }
+});
titleTemplate
object
undefined
This option is used when you want to display different site title templates (tail separators) for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ titleTemplate: {
+ en: ' | Website',
+ ko: ' | 웹사이트'
+ }
+});
description
object
undefined
This option is used when you want to display different site descriptions for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ description: {
+ en: 'Website description',
+ ko: '웹사이트 설명'
+ }
+});
head
object
undefined
This option is used when using different head
settings for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ head: {
+ en: [['link', { rel: 'icon', href: '/favicon-en.ico' }]],
+ ko: [['link', { rel: 'icon', href: '/favicon-ko.ico' }]]
+ }
+});
themeConfig
object
undefined
This option is used when using different themeConfig
settings for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ themeConfig: {
+ en: {
+ nav: [
+ {
+ text: 'API',
+ link: '/en/api'
+ }
+ ]
+ },
+ ko: {
+ nav: [
+ {
+ text: 'API',
+ link: '/ko/api'
+ }
+ ]
+ }
+ }
+});
This page describes all the options in the VitePress I18n.
locales
(Required) string[] | I18nLocale[]
Defines a list of languages that this plugin should support. This involves including the language code corresponding to the list of supported languages in an array value.
For example, to support English and Korean, use values like ['en', 'ko']
.
withI18n(vitePressOptions, {
+ locales: ['en', 'ko']
+});
This way, in your documentation structure, you should organize English as an en
directory and Korean as a ko
directory.
If you want to name the directories differently than the supported language codes, you can map them with objects of type I18nLocale
. For example, if your directories are named eng
and kor
, you can map them to English and Korean, respectively, as follows
withI18n({
+ locales: [
+ { path: 'eng', locale: 'en' },
+ { path: 'kor', locale: 'ko' }
+ ]
+});
Where path
is the directory name and locale
is the supported language code.
For a list of supported language codes, see this article.
rootLocale
string
undefined
This option value specifies the language code to set as the root
locale. In VitePress's i18n settings, that language is specified as root
. This value is required to specify the default language for VitePress, but it uses the first array value of the locales
option even if you don't specify an option value.
For example, if English is the default language, set the rootLocale
value to en
.
Note that you must use the locale language code, not the directory path (e.g., use en
for the rootLocale
value when the directory name is eng
).
searchProvider
'local' | 'algolia' | undefined
undefined
Setting this option to local
or algolia
displays the search interface on your site. The translation of the interface text used for this search is provided automatically. For more information, see the following documentation: https://vitepress.dev/reference/default-theme-search#search
To override VitePress's search options, you can use the searchOptions
option.
searchOptions
LocalSearchOptions | AlgoliaSearchOptions
undefined
You can specify refinement options for local
or algolia
searches.
disableAutoSetLangValue
boolean
false
If this option is true
, the lang
value is not set automatically.Use this if you do not want to specify a value for the lang
attribute of the html
tag.
debugPrint
boolean
false
If this option is true
, you can try printing the options used and the output to the console log.
label
object
undefined
Use this option if you want to use custom labels.
link
object
undefined
Use this option if you want to use a custom link.
lang
object
undefined
Use this option if you want to use a custom lang
property value.
title
object
undefined
This option is used when you want to display different site titles for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ title: {
+ en: 'Welcome',
+ ko: '환영합니다'
+ }
+});
titleTemplate
object
undefined
This option is used when you want to display different site title templates (tail separators) for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ titleTemplate: {
+ en: ' | Website',
+ ko: ' | 웹사이트'
+ }
+});
description
object
undefined
This option is used when you want to display different site descriptions for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ description: {
+ en: 'Website description',
+ ko: '웹사이트 설명'
+ }
+});
head
object
undefined
This option is used when using different head
settings for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ head: {
+ en: [['link', { rel: 'icon', href: '/favicon-en.ico' }]],
+ ko: [['link', { rel: 'icon', href: '/favicon-ko.ico' }]]
+ }
+});
themeConfig
object
undefined
This option is used when using different themeConfig
settings for different languages.
It is declared as an object
, with the key value being the language code and the value being string data. You must use the corresponding language code even when you are the root locale. For example, to customize English and Korean respectively, you would set it like this:
withI18n({
+ locales: ['en', 'ko'],
+ rootLocale: 'en',
+ themeConfig: {
+ en: {
+ nav: [
+ {
+ text: 'API',
+ link: '/en/api'
+ }
+ ]
+ },
+ ko: {
+ nav: [
+ {
+ text: 'API',
+ link: '/ko/api'
+ }
+ ]
+ }
+ }
+});
This page provides a list of supported languages available for the locales
option.
The supported language codes for VitePress I18n are as follows:
Translation language | Language Code | MT |
---|---|---|
English | en | |
Korean (한국어) | ko | |
Chinese Simplified (简体中文) | zhHans | |
Chinese Traditional (繁體中文) | zhHant | O |
Japanese (日本語) | ja | O |
Spanish (Español) | es | |
Portuguese (Português) | pt | |
Russian (Русский) | ru | |
Indonesian (Bahasa Indonesia) | id | O |
German (Deutsch) | de | O |
French (Français) | fr | O |
Vietnamese (Tiếng Việt) | vi | O |
Italian (Italiano) | it | O |
MT (Machine translated) is data using machine translation that has not been reviewed by a local person in the country at this time. However, you can always request translation improvements or new languages via Pull Request!
Translate translates the following locations in VitePress:
This page provides a list of supported languages available for the locales
option.
The supported language codes for VitePress I18n are as follows:
Translation language | Language Code | MT |
---|---|---|
English | en | |
Korean (한국어) | ko | |
Chinese Simplified (简体中文) | zhHans | |
Chinese Traditional (繁體中文) | zhHant | O |
Japanese (日本語) | ja | O |
Spanish (Español) | es | |
Portuguese (Português) | pt | |
Russian (Русский) | ru | |
Indonesian (Bahasa Indonesia) | id | O |
German (Deutsch) | de | O |
French (Français) | fr | O |
Vietnamese (Tiếng Việt) | vi | O |
Italian (Italiano) | it | O |
MT (Machine translated) is data using machine translation that has not been reviewed by a local person in the country at this time. However, you can always request translation improvements or new languages via Pull Request!
Translate translates the following locations in VitePress:
aJxy{j56_L zLQcd%;`&~HJsDrJW_a4>d&hA{Nt%hyNLF?&qFj~s+^=YLS&kL0B0b+-|x3)hD5eTXjF;sBks*LGK6BDNMxvx zf|hib=bz^O@z GfYh`X z_yO`CpzH1h +3#A#v=GwJw%XAHfK^=;*-mAPcLQr)8z=5K2SAKwOuZg zEIkBx`o`Ma`R<)3hruP|mFgw)`p0S_K~j+b?7%_r`0alX==Lw2eWm@}R*n6=;Qq*3 zgvu!-in6Wl*KJF!mcAwXgKW+4g1zXOC9($XS*BwO$ukGY(S;jc#uVfiB n_PL z9Gx%6j}LO$Xpo}@NZ9}=jhoPDs|l{gAK(NKBzH-rqDI;jf pO2xNouqwb3n(O_lR=g*F`__{ zCV;vqT-Ou6uDVuNcvXwB-~Z3-2Glj5Yn(!_nj(_#_qR6Q{LGqGytKz5;ul#&WWNkz zTKgGmeWFo+e>2sb&2?Mrm>^IxYKr&-V%lA%6A2YxFl+tVGMsLH*D6{~fMBy*BXBzW zBnd6Xy`0QJ1R^kvW){y9Qr3Z44`=gow#u+mI(@chHuo``2U)y8*mE)mS>~#VdGXdn zG6e#d0zsTC7=?ukXHlpu4qY?I6kst0l9>W*PL?Kvab+_;J`>7eg^E}S5tERxS~AwG zm+e(K@rsL-ShIFy1po^||78yZI0@h)fExhr19%w_05S^5qJW$OkedL;qlhwKNnQZp zu>k-}N~l~qk=?#|LGk+VKSlC0wv6T!&$U1S02lx;{MHxqAAjRkfLs#zs&_9Q9vsKU zTm6F6fkEhp`_o&GuQ5KhYq$rFe-Ojx{F6VQebG-#-anqd{l$V$Ki&B0Z*IjO(EFZ1 z9-o{(binlw?J~Ogp$#7cMgT`1)T9ahe?JB?+7B7Oy*(X)z5+2c{tbVrx(WR|D+tM^ z)tG^g@JD~EH-E}_nf(0sPa^;Pvmf;Pm;XX#@#KB%%4%!qYV`5g2J4C8i|+fT{AB-3 z+4ZYy-FD&U2A9>Q!@u1>MvfMXUDY#;&8Rs8$5&?W2XNCYBz`gOcl6f)IKfoPeaydm zqVHS%&wcjGJ6~Aizp^X;hxWC-uVp*gf1k4brR@vrW>kFIwmFm6=)MbUo Eb!c6i}u<)j0k$J^p=<&RBHpZiHcw0VT2q-9N#uT(7~ zGrJycUNI?Yc?G9vVztEZbri*lmo?2E7XcHiW=e*?zxa9FA;w3=i znFcJr%KUrV{1JPXK(jc(U#48<^T07*f;%-b<{X;LH-vxo$E~lidxtMa?8M8b0W`Xt zO=H&n*<$(g=APx8UB`0zt_y&=xoDr6Hvh)$W%Jzf5v$0B_UH8MP5}OZ?dNI+H<;hD zdIa<7a&CYd?Z2rN_a9E5?XQOhdE-A@eq(;ba)|k-#lPlX&}#mV_ITs0S$899GFukj zPxhD_i%q64dHb@W5sqxfOSg@$(o* 23U`vxO16QUj*?9OLq;$TAVqHoENWWY;1tkp~J%dh0CT6zxqA$*)mzPgO zOux8<0fX;ONzTwa)KVv$wCt3djzqe5l0d<+&i#%7_UQrc__%5=!a}eosAvF*=nB1Q zM=9t*0Q 2R++V130ZFHgCQ@|TX!^x-=4%UlMR&M&=`T)RiAqs z-n%~T(OaIl47utIZ`o*Mo?Q@~JP_RCN#xceAlGgTol;PO%V=^^6v?O9A35*yPw*s$ z+9T3)&z~h*SZ3R2F9)?aeV#;MXVzM%S&wPn+vtx@9x^PP`=pYqbGmf)?$)pJB&IQB zX;TY%U>_ LIqM-f*o6&dgx+P8EP -SA!E+0M%#!vXAi;t4q#UJ@E&?jz;rYEe&@SZ62 zWFQ`z_pLq@+piN|b@j||#cb)7d*d8?FFHSMmwtD9mKl7<{m*dde_sE2>@lVs*)sew z|1Ng)4&}4msFBij&rvg@+rrrG&@VRQpW# ;h z1-touxffRFPvh5O3&%arMHjB*pR@TQucdcrtCkC|gsW!zSF=X1{TG~9(+5sQARz}H z`X9K3U(FxvjnBXE`^UbxefjsNzql)#{LEJ$%>5Wy`%LNgpa1r8*%Rl#%Wma2g#crcxI$;zV9*hYrn~R zYv`BXVe#gh%V9PE(9gzSTzrcZ{`dwk!n~UY;R MfV9|rQM@zw74~{5b0M9=-uRaSte#Cn7<6!<{t_^eW{Biw}A7Je9?n_s| zr;mq@d;xs)q>(0qlTS(S&Oz7H#Isqj@U-d9B{2W#{)tb4U!RHHE`j`6U+Dv2$#e2& zF<|#|?><;(^T-QJKVJrazx4A<5X4{p %P`hWVdP~2UW*LFhQ<8YfnzCT%@ z@nJJ{()FJyE Iaru8Iu{v&7qRa3~v|9Uo5#>oGM)M%{yLF2EM `xmVh^KtWN87-F?HJ`@Own>TRGr-wFS-{d^;r8Je#Dw RSC%u!@kjASGY7r>~cuOLHjpIIDLb+i!xolsaoU6Kv^TOKG^Ez zh{V^~f%tK5yjXnxNBUfpNRKAX48Enqm&NH+EVuH}wKPk0`+gJ&5{jQb7Eb|YyxHk* z(&g~`6g6u7PEYJ3!e70g VC)kC|gOm%HYi 3saDJGgpl)=}tQ#^jfHw}$c)z@XgDhf@mxA9L-i4iC!P?rSb( z*8SfJaQoz4`ad3abGHUyoD~HWi1EMpZYY2Pc#l2h9$^U_aI>Hg+8{SU-x8q@Mvp3~ z$p}%B@sy~c=cL$fy<}mfuqwv`3hVODSy%8oD<%Yj?TS*$#|O+q`H^zWSXU{VyQ}4O zwd%#{^>r4Y=nW_7PyD?~?DzQS( +B` zuLtZww$}o;J24*vueo%20oW~Vnf>_y{hj_<_|xv%)or_P8O1gw4*t_WP9K?r>Ub&m zDEX-bs0C?+v NLQ_Ea`wGJ$^}pED*Bo zHmJcx?7^5YV9JC!D^{jD#3s!y!y)VIwnO{IO5a)|P4u00zSpnFLqSDRlad#eNO-uE zd86Cl3PUOs0JOWZFJSZp#H*Qe tzY@L_F znjt%f)7FgGCH%U2%r<$m;hG7%frnO4*8wsa1R<6kk1^6zWfe*_i}3Dv?Bu(drL FHw zT)rDGX}IKrO9Gy95L{yr;9x(w2D!`ps~ !(<8jH5t%Q?t84O{gvOg|31K;x-kd(A#@+df8 PTyH}M)}}V&bLzH!7GBrg8!~Y~ zUm4AEm+lc>P0o*BUt~O^hKJz7X!Kn*5vr{kflLq1;x>Qgj6ZhW-tN=?&TmiVt=2iL zn5Vr?4W-SV4=LToz+iJf;_TuYdod4_4nhAWC_xV}{rOJ+CMu4>e@*M(jGruHPu0w@ z#f@6uF(`Mnzc{lqkWV;?j0zZD2wbh$Z%8SKBOE{<)q9g_-s8qYhJwth3vLq*D+*RZ zc&z(vFu!dV!yGhrflanAzpZXuIg4<}&c0# pm>XX?~gzx#B;mpQQ4S2YDe zG`gF?7In};|K^PA+y>Vdt|q~&U)BsISZExKP^oEXvM4Gd4DhujQezi#eDm1BIX7sD z=rrENTZLJF8>Ktgwj*4Rp<}hs!EwsErUf&)gAqiG&r#7?m3K_P7uH!r1=_IgydHF| z|G}*+?!Sdy4KgCJ79BB;hjgOtcykGCimmP-m33UY;T51ou!{mDZd=5eUStQkwN>u8 z7k>)~5 OrJ%O3Btf(;fJq5NpSjWF!(~5U!fB*@#GTt@3IMAz?GY!C2 zh8>$T2NoXv5u_&uK||tlQF7?iQ*E*_aEqa0bn&3p$U9^sCTTT%Ly+l>G@GPku}|q3 zp{+V&xE7{bEf+{6 &M9&Uo+6By70&SoBbL@9rT*m^2WCB zOqXDC<9 7jJY;U(sI)d7U-$19jp7msVF zG*}bLiB!y#mIosg=95?zlV^1TcYO059wd7OmJSPxALez^VMhRmM!}Ve{9Cwi@hn-T z?;IdNyg2-kXooRZ1Ajc^VNxdr=0qmx$xgSr!R^$;L^;HO_#!E6)3@qTvLVKv#HjP= z;#mkTE6m)|HkkMrTT`sLd>uQP&X;?m^~nrb8ig9JcN70EDW6U9*4YIY_dEh)od|Yu ziHFfPGsM8}bp4LNT!iZlw#mN0r&op5Oyxt&K`t)%YxORixK&FB`7X8wneS1p&_E>A zGb5<-{;GWcmYonF9eA3$R;J43c(cOg*GS?rOn{@+W4OS;BZX7{1`6 zrd uTn}T~%x}R&| zqnv!!`6Ohx_8A#s;3euY@ji*-P{vd0;|%#Q{P_dI%7L_YPwV=!C5@IG2xsw+zng~5 z7yPvf*H6l+kYZ(jF#xcNb6z_OH+(+qO)qYwH~ihrIJXVDV8L}Vvsm57bh{m*#(p=| zLXPas48EXd(z9Q< #4r#&QR1bjf%{qfzo18RuuR{M9v#v?xUy+_u(~+VHH37euhpeod4r;)JF)*IG4~ z!)u-mUOD+MkPO|)8X8FbFeqV?k4Q!cVNHrP%US3m*vLX`5KhAL8+%0UWF%j^Sg%sA ztOK!u Bc3jABvPgA|reCyEiN%S*T*IN>l|hUsP8=_$F7o8o|cam> Cq>k)UFR7*%#(riI%_Fn3 zE~*)KPt5>4AWY+_h6H((de6;p_1|S!@<|qmsC4TG{Q@CaT6EbbSH4sqEt_pgNQ0|u z|DQTn5_Da=3SG7H*4MJ>blfnraCbyZBQzT7x2mlOD{z4>*Z|DTX4ho*@vAdSUikl` zYN(R8P6HNYaP`GaCcd^zlQ^`O(F~CulHfsv>mP<&bad)*!hox%3jbQujA R5>?DIKSgrO0$D3Iy|O3zkXqs&$JQNh=L)aZ0aTzLm9|D-EL7#4{4A&P8r9 zf525A_=?`?ur<=tD NOG>-3OtNH!EkL34plg9D#$Oz}Eq7XJ`m~I_9jNekJ z(FrWm^6E};($4Ns@goXDQZq(2I;l6ScOIU*HlI;pNJuLwX?BU^OX ARhe(4(EJ z`Jr@n59Odpwiix-?_yNGI8**pntKTT4TO|gb$-;gdSXWL9EWwLz9RTf^SQM`NoGNi z8}lMEF|yh^xs#RF?<9{eD;O+K>0l)HIxe!rg?&KZw?emeQ}Sx+Ez3x!W& daA3h&4e7 3<$pE3^KsKkij_aBHsNG1n*Gq>R;!-%qJ{VtC9s_ds>Y0pRu2G5EqH zKC*#S?T>~iN5H?-#FRC2lsfV3b7Y&vt4E(Xtg=d~cQ&+e{@((q5wYA9Aq;Rk2a3AJ zwegu<^yRL5;MulUt3k#285Q8N12c3JgK)uX>5un*`ylAnlQn>olLqq}j(_rKnIiol z+_AJ8S!&H&$4JMIJSkAa4qN&&-2Hn^TVS8_onvgW?SO{}EjLt#oZytUZb=0)aWu^@ z#pb6O5xso-a?uf^0;}^bIU>oKkjy;BIp dIr=&2 A+N~EXOWz()%BjN?JpzKhz5sJJ>HL= zw82IIPM-~TUc7h3W!&f$b)Jb=d>~JqiSAiRThB!f?X Cxz1l_%IQ-v1?C?Bp7%)F*OJ0z@yqEz+=WM=ei*ZAH zzJ8H5?>a4seuL@4^zBx9ybKd#iB%8H59d?OUdVf!acjRSr8nu%NZwVCDI3byABa}{ zPQ!S+Y2vq;JukGy$P9|PnliBrF4q(SX8Fl=~bez+M6>%^N zr--ioAQ@LNIJQQF%7?3~!WwLH!{hnJev8ks{bjfO@)p$&X2+Pnk@xMuuKlW<2K=iI z1va(s&fBa%rMtzQY#wNlJh-a0uyz8Ld>;uGQt&9jDN#F$jS5LwT>B~WFM>~vq_KIF zgCx|{gW4$Q$ntdbJSoxZa#? O4YSg-_tF@^t$KHOv;^k>PJ0#=O)@T!R@wsZ)(WBd2(?_pSTA) z(X1)I*fLG(L0W#uHXknDKU@fP7bNim(c-|whD1$X!$PA+N9~A&vNMR-GRd)^jI8!> zVm*wCNZMHxhfpm-aqE!j@K|Nj*>G??p_XJ0wW>6qh^-6MBCQ}+LssLF_E(MaIQ#zN zCp!8`UQcjWp9;AOG_GQLG5H6*it` q!0C4yK*&@_`nIi{ftfhK)L0-Zu3rj%J9nb{Z$RX$}AlN zEZh?bdvUewkDm?%TTp*|a92c~`4P^yfx;r-AuY$rxNKkHy@Nws6tN%zFX4IJ<{I|c zybWsnD}*|3lzdgM?aD_8HQ14l8(+{L*A`8QAiHdt-!H$;8A{kzW6HkjXMMuy&_Gly zmRQwbMIOI@Ef(icmiOP7}HWh{Imt{F-}Bqld@1p(6?Czj6}oiC>>Y)V0w 9l^ulm*qe5_V$JP-^y3^mg=i!lCkHR#2{U zI4yF)Fr!&|kyg-kt|emK#WC!#Y~3II+aH(#Wf~A{PR2;X;+iOoHY5igH7{d(hlLdj zvn>AJW6`Avt37$y+&*EzigvkfQ_sVvB8f4n-w)oIo1qsNsopN|-=DeHF)bb54gA`n z)J!c*PrObQm6ET?!BgbM_TU7NoICJ1T!$?B!K!=oV@-m><$3*?38lZ9PE3FH9wA$< zm5nandT2PQI`Xvjk%StlRxX4$$=gQs_2K!D3m`5;x<_|jasc-EnHsk}(lKAw*N_aV z(OzjMoI>!K#O#llK6FX-(n@At;ht>2MN|Qj&p$9$e$61`L56%jaWVY5Ef&B+J2X=~aN_{RD5*#L^^rrI2n7#nZ+4S{70oZ8q zEUyv3k{6IEITJV1hQzbvkZ!FUX+Y6~Ap$Ls&WE~E6a18Cv4e!*D+J7-Q`6Gg%~{-N zx_PuGW#TBt+tG{J4UNi+FBA?l5ZnvsvS!)CFkm8UzLCh8h2<_O`w`jYE>ZEjJyUZa z4ydrXcn2xF5Vxl=rg2L=58{AW@tNGs;UPO*lG!lR0o~l*y-$-W>JDW^EFja-+XrXz zjBxQVHPNmePDd3D$UkKQD_Qle_`H3Z#V3>kz1gLNsBL|lvI<~fsMDsVF{-9juYGAh zE? F` zg4+4{k}F=kMU8{J81vWK>#Z>XhZhA$eQHaC=cwMSqorsRfrHVWjz7%yHR3PBJI+4f zukNDRD{sAz9r%kII9E+?o*Q~@9^&SXRf}G`d$jX+vFSc$AYvo<79MzS&eUycJo_lE z^JV)IJNS(5u1%Tp&DlEDMa|XEtH+xiOQvVkP?|?$h^<_`%9IDF$ATr yM%( zJxecB8VG^pO;vmglDFN1^Te++Y3}8a7 z*@8&>4}k+er?tf}`iuz`961MVcgY=vXBgFUguhs+$+eYEZn6dL!X}9zXc%NHD$(MK z+P2cS-^=TMjFaI;LZ9x>EsY!7T2){~4TeRM`@4!3Nk%nkehW-L&_$)zGdGPQxuw4s zw*P|1Qw0o0vB0uu&z1HfBZg0>m+%>5?BcEejpPVM#}ZPr>JnW>5$P_-^z5+-76>vf z!wqC%2a4}!t2VYx&g(nZ8mfG8M1OQd>5r}}e=n6GRpKlVoM=hTL99I~yhG^isO=6% z%2Shkgm`L9!-7FdWB)li*u-l=*$4H)zkEN<@{6WFf#{=nzT2BaKvVFPQi3;gj=zf+ z9olK;rwe+dLD(S_*vwr4v5pag0QOeK{^%kr^}2t+V-Z&=KXBjMOrFJ;^zFO*{f*cG z%TI`vmA==`ub6+r49w?pBnMx>cZl?js&JqdbZm6u7+!PO+=3Hk-D`jHhBkMd;@#Hl zF8+=g{D2( d7Ntr>MvIvL`Vo! !>=)6>(KIHsWo&ikq@7K~44&+u;-l&f~J6DUdak%sYTCMT;EdXb0f@nWcKF${Xn-^*6rooHlM$oQM^vy-_(`<+Tar%46?H zlV)w|W6V-uwEqhaCRC&)vY2U5fuCyQ mTUdW+h|-W$^}MROzhQdq0vh12+2iS%ynYa_zEBHVHF0sPvRt`xc~wO|nV8-A)sl zE#SJCinFNVMQo#`06@eKR?d=$p#oInaiEdgH=rw?Aq1HC+Qpj$*v8slZ>>o|vPOgz zp{XW8crRlh76H_;ITY9Z_H2u)Sc@I5g@s*u#RNn|OtHw9?3!Td9MPArt!i)gQVVJ( zv_Q$O_>K2o$b$r0g &?G)b(5#9>WuwPJ4VykOp1XxYAX <*c6stc|{rYNNW6zCp=2N{^ zz1E3`3Z*^g3H7Q!H~p1Xs%A{hZ)KowO0}jFQq+^_dRgg0g1;D@i!RX4Z9_vS? 9PwB z-uDtWe`H1{5nO!P_-MS ^2$3&~e7! !xmhP!r~vLVpW~TjJ!I0fvLLYyo-IaST8q%YIA!0!PWii0p!L> z+t~Wm1JV)Tk52QwT8@sewl*yu1=_r0xuZa~rPgn%G*jXVEzG)2+Nx!T^w9P9&j$E& zn-#_=|BOj&bQ{RE-vs}xa$yJv&d<|3*7<}=$gU{#bn9YL5SYkmXXT7PtgA>on9@k~ zkpI6=*HtX0J!v!?8wSdebu&BuPRjt!8WhizPEV>t`1;)R3d6(nxK&rGA#2{y6!kY> zky;C oIe)N9mO0UVC1oFxr+}ZaZfibThaw%ZUY3mw;aM+oD1p$o3R$vnJ3{ zYcv@o!1(LZF#B~a_@x;L(plHvH3c{|d6G@6gWLJEqUyJQ`eo@E69nndIJz>qTP?#< z8lAD@#xh>N;oqt)G=Dnx*)G?i$zmn7_QTJauAeKDOCG{MJ)61DKjT@Jxs^R*=I5w4 z8?cbszzu?#Z?abv{|d~tyjI7m`NyUSXxx7HPv TPE)a{$IBSb-n$-*Nx6k#I0o-*|8OB!?6JOo%c6+CC>Ib6e|~(Rbjt-hDZlX z^~0`RGV7iS@*1O&(4h!paRhnZ=D~=_HrK2HcJ&&RoO~-~Fw=683l&c=T|>59o!(5t zuA>mbA8tBy@G9VT^Zo}`-i_<{^CazWq4=13 gc#=StK?%o{0T04an@rq#xBd%VY5in7@Lt|UiBmT$(o0|x1{MkKapZ$%c@B* z$N?Dhb+BsTX&G1Z)|5CgGc56RB*NAdO%rBL3@S!~gqjO~FI&UWB%1~eZV4(UL;P@Q zv`F)_P=|ln#)s_@7}7?OmP<@+j+7!=L=Q8Fp3Ld$GuxYtU!(mrXZ`_)QS;#POKQ$3 zx6jN lN@U4U+Qx0@yW zFRvyNzuEEK9WkW+l+W
9cpqY4e@b{IL0yDOmNms)K5{s;cHyXVgXYf%=Oy zyfhxujM7vzp9N8Yynw1eP2rYsZv-A`jP%lS(YivuqL3&TR4CdM?SoE0muc7Oc<4Og z*6Et)`sgO=R_gB2z0ITb4qy~9W|%(AB32t)gR{lSaB_Wt{#}K>zG!`i0oGu`aKdoK z{oGq%yyBOe+*B#1%NpNo)ap p*>AA_FWKi%>geNmFB|7{Ca>aR?9$|VzXWrCR(A3z_89Rv zU4BwITY1{7xTSupnWwgwwYS7u>b>Os(EA^K*=Lhaw2#ndm(PUH1)n!W4aS;CCUS^% z#Bt(f-#O9*=`87)p9=TW|5reNU};bhc_9QHf)5D};e^zMjD?&G`5#4*H>P+~wowWw zos|8Q>y%HSh){=6N+>t9IgA>v6}~OvpQjkPGfLCz5ygqR9(^HZb4))KOLL>$i+#V% zWn1dD_Bfk3T3l1yskrxaE-z1jDgeGWvD%I)z!@)r9ch7}Ru70V{<|^&b=G%n64MY5 z=4E1x=<_^CM7Tn@W 8bJXku7mn2Ue@yyNl5E7FbffK6SrtD$9 cw!?2UmV^#ta7{Tw%O8Oo8r>0AE5`u^xLUnxq3r zs3Qfle?B1r8uY5V?#y)ku28EPSCKVXV1osgb-{=X-@5}7z`SOJZz95>?YCk>4q;$+ z9FYL@VF0l^1|6N3gmhrLkZM$r!#G3{4Z)mk9Mfe<)nq|dA=;S57(yTm$+Qh;%-YhF z488+TO7zre!slOzcVf1)IjqF2RinSo4^$VqUDIkh82rFc-2Mdft)_*N)|L11&F}Hw zJps?JQYC!a4Y?>tXWV@^SQ`8mzRHz4GCYU&Dg_1)$u-p&%IEpFMYuTha6P`1B^$ZY z_!NvnawfFkwR_5Zti1;)Cz-g3QOcgm85RMWpNF{4?+LFWx%<^?)u2z(vPbu)ezP0A zOT%b%U}JnjaF!Rq!4spHJ*o*{f*B^5+#a$Bzc84^!0#-G$h$-I#5ByoWtfIZ?z{_3 z%gBP1^NcI!qNq=igq=5J?jeMm1Ex 7Dj3G)+q+zF?0~1@j?kc$@e4 zN6azBJ!PN==FlLq$9Rl6bfftjJXZr}rj8xc_}VbvTO)?93Fn~GX*ey9<&Bh9RBM{d zjfLk23%!1{Wzzl3>(uTCTHy~C22B#%Am~gU&vWRAZk@At5~lsiB7|VIQn8%9(9#K+ zNZ{+H8V}iQar^b&ozEobFo@pWWj534!BiyHA5WLssv96gXx29e2l_(;1L<4|v}XrG zCDTG`4 BYIxmY(Fc4 z#XE|wR2;84u2y7!)E=61vv2FNhr!9+LH|&;ZRs5p(y9YruDF1Nx@}syj)ZO4ZNx5d zzt3mw?@p|FU9|>Z!EWb!Vws(Sp&{1#z%a(PtB7%*;?cqZPb8NFRs8H~_s~6X-tX;| z4|}w1FQ1Rd!3OryegeBR3cxi>K=lLy1o$9~3fUAOjAO@%4uT-XVn~Myvc f#I< zVA3th>5wpc>D!mKWX=_;^ju5(?bS-8o-Sz~wK41z{ZWTrukRi0ZVg8=C&OI3{8&$R z`j*q-UP~**vGw)e$! !VAh(dvqBu;HP z+pdX3oKG)W|8N%mK;Dqk4}zx}Tg-SV=x4m-qx2U(8Juglzj~$iv#HlO4u!87kC>n@ zS}!JXoQUz{&T^W;1{+Y=VDmM-1H%v`BccCJ?NNX=1OFZc CC2y~*XK)a4hU-( zWK%{TfKE$(&2LK^ufSSPhJtY1;KsT9vYgHt) Vp4EkylxdMW?wk;R$HDho7A}1N!|wrqv4W6vO3Yh8OF@MMG@L z8tI6xI5ItCAYQ_vps=_7Zn7jeeiFM uV73_1_!(O z_9btIag)YTkPS#Xm@Hbp{K%w2>1IUgD4fmmycn{182Fw?fQyW~DiR!C8rgD`q%Y#r z{li`g^OAX$DPuF`(O#O%7)vwmOp&HcmE+p)a89U~#FP&p7oy8ZtmMFnA|Gjv^=OJ9 z2nx7YJ1EjFSXa82RDxEyeCA8KpiiCC2UKGnl|wWG7khA<<=_% Fz zp
C P#ej2ji< Zu#Hn)Q;+#o{-vw*bj j{d9T z*95ifAiJ!x%KH4gq2B?0;op3G7zb@F2u)xcVjO*q1e=z}=N4eGNOEJ%_&PLB({;Ya zX|#;13HrQ=Bcscykv=Cw&Dt@uxusbtMH6{dq5)`aseLbvtdeD~<95W9^_(->1c*l> zby{M{tC<^v{v2o$)N-xX46N#T^Vc>%rmOPcbj^N>$AynFh;YyhPs>BlN%|;& iDfmsJjrfvO?8&*!=y&)KF(7i0(zw6POsw(CQ`1VGgS-iM*9NT|v28;H6 zfpv>pGFC&-fygAmF=D{gCWt1GQq^B<915@X|I7E-LRT&n Wn?gx{d)5%q^dSs4tVe1o9UKNc| zMR}7=Q@+o+@l`mR6=3<*CO!I-FvDU7)>SNj7lKkG4g3x&=i)|!lteHBVG+hH)PH{J ztaoSEU89MiZN)^j$$mZ`5Pdsp5C+U@~aaH?BJ%Xs}&T!>toRzDdRBwQ8;#Zo9Fz zM)(`?_`8uKQqjOH%|r8h?n(K!$r>?K?i%~A8RQfAcEILVO`^osp;}_ndc)=*d4CzX zrF~1tQ^ZX^w&=nnaGaA}JyB-hXQ#s9B5ZADhuPjd217xG*2YBxX=0~bko2jU6_lIi zja!Iy|LB-L^|)mB$*Rlv0sBljOq0%&nP?ykJV+XF<@4P;Ajeb&M}Fo-!!>rWV4;8o zTW0%zB`=^&YwZPqnL|vy>M7Wf%B!hBS8E*jDd3-hrCqFRrrkaIzb88+I)?i$@a15p zMx&k2*>TBK@nO{w69)q1SrRwOG7>jmUwDZelpp{(lT^DL5<#^SCgF5+qBD&5EC{IY z%6br{(OAxg_Z(!0B#Rx`eTc|{V}e9*NEJDo*h}1!j3!A{LRMX}(TOsPcwfox80B7> z=+A2C!l2(5iwz~yaa-%_Mloh*-~6|(^ZZ(2v#ee<+W`?AKK* -K_aYDA&$;6N(Hv z=LZwUd~jIs8iHNc36M@F6=?T1;LXn*A#X~>{5B#MJ`ANSl8A+y$S^fpyEv4k;%XJ` z*GmDiiKQZ82t8ZpfR{~SS7j94BXSW>3F+oSck(DPG_prMW2^DRKIcps7lE jfPyX%O$3yTc0q70DF1s(nLdCz9k; zd0GCf76d*nRK93U?Z(6M;7 zx91UF%GyzkDYOZXH98ErZ}9dOVzH9u9lK9oOuk55o>Q3uC{?!KZDym50}kyI0P-s&`XD2x4{TQ9JBT^*MF#VcOz zv4$=_*2O|2DXS#hiop#@B+nibw7{PSLbKDa()jK`4PON|KlC%<#<`xSid$U2|1_OE zN&?$FlO{(GJbJj7-SlKU)Aof62S>x5M9pDWcKtZkDmYl><*3A!BtjF4(x76Hm+DDU zZSwx{5kwKM05w3$zjG4^n$XU2pT bct{gi#nF<8wbHS8 z9{kdE&-{JO4-)}7F5xlcSdw{SHz46mO^E+6gAl@XP181zOK4!o4OJ3(-Y|4kR%A0m zXxm71vp(&M%vPz@leAx&R6~R;Lj!AVwskoADboNOnF?FyB?ugdH?11-5|n3I2*tf~ zp?qJ2M>BQ0#_Vhrwzte7mG2uHMj>T(2Gtk}yIZOJxN;(?X}7cqTaxefYOVfcpn7I( z;UIdB@7-%gLsm?+q%$pLza9z)R{XY38JaI&tXY?vZFuXBPPfhxt(JOiGk+pK%Bv$T zR05q#Wh+S$^-QF1H|p7O0~#Gza&oa_U! I}-T>3w%I=VEQ3M6ct5QCK2)cat!l-6-qT_f5<2k<0{RvWIDHXI+zxU zS|bV9hR8*d xCg2Fl9SHdSe6PhB>SN$;tk6v@ ztu>OQOj_l}v|^HvvPK=q-TN<7xOB}_%STTn=lPZ%yE8E!9$t*6U1z0X%Kt0Ax!0xz zaV3YwhRt!#4>_lbrdH{cwGgqQigB|zy_Nypc>jdT{k#`DgMR8OEu^HeZLLo-V`!HR z=Sh@=e_{8iXe5gunsP{uxp0d-9~t8VV_Z03KpDL1uL#;i{x03y@#lQ-){vN#r^vN# zrN=|~_WN}&g1nz|p_G^wFuI}n@ow5Lmt$!^=32NCMXB;#aZ{dk64WS&K_;RQ?OKTj z!cvE0ORT7?t%pM;mgm~MY9P36Nix^kt#gL&o4|tD>gmc;`7VsxZ`nF?#WpV&qqv_( z?YI7%tE9$%IPGzaca9wFiwq+1mLo8JaxdJryp&=FmW{vEqa=FFKROHhnZftOkizxs z;ApE^;}fItF1b8GB$uYEbecRl@bX_8{G#LAznyv+;I >rsKNJO|Dr%*<;)uvL)Nf&yQz(4^x!qw0<%YR z!5WCIo>N*Xf3aVU`_iF5v@D*2cj(K_7bvN5i%)6aafxI1BE7lOo~CdFkyRgK)2ZT@ zB?c#0N#Q7jBS>C!``xVH&pA9a!=${6D9&u7^;leRy;wzB(v#THUD|OADO%TYm`{Br z2AG98I1e*1>tJ-!Bzv1K*X{Or(K}r|h+t??c2BV#H<;3HiF~^&LtqO5jkw%0qcWJ+ z>UCL`69nd)jWQD&9~MU;T1iJe?eBeaVu=<&Qx4xj4yVS>?MUVI@U<^oNI9=d`!~!1 zb7$P>iR3%>0+`M&jyCOP4$ME{Tl7S;T1+NaX`E0#-dO@I7bg08e`%C?!^P-ay~Wdh zO9idivqNqAz{nq6 0}mi0sN+Ex7%jXe}40~TS2rzG{e$_371~qM|#}0 z3s2 _X`HI@LHH>|y;>aaE zDP?Utj%^0r?s{*mwkZm$edOuoJJG2nS4cm8+?3N4IG45~V* s1xni9ZBea>Vp}B_? zwaY6a%c#v%W=tstQi>ZJ2_d!Sl&;b!9(ZGwo;0_n8nu>eGoy5ts;dm#g9PYIac8|^ zWviVMUC2rI&fn#m#p2qPH~Y^%nxz-9zaKudZ;HU+-=Akup{@mBP2YMG9+;URd?K7q zQv23AL94oEpUBK8$^tHfaH87o5E+vMoeCTL_@)QOD<7GY3t8;(2F2^$+g_8cN-Zsi zE+HZ5^&6*nL}aYWY-HI$>P@zD3!1i6#EaDTJPjc(*((a%gfIVvkWO&&-mFgHWjaiK zQZ}Vt WRC!0#iWcf7{B zLMbuM^FTjdooen^S8L$sW2=}PRISNK#3V}S$C?Qxsf_Ra{q0yQQb)sRoQ*LU?W&6! z@{Gn%X6x%oLn?nr;#&1xdaJ++nxR*AKxc?I7}>^9>cUU5{Qd#p|Dr46hmH)XO|vAJ zS6heYd-E75vgV^l%?-Mu`1z$+2YuU6vX|e~c^(1tA>KeJR3;R7ezD`df_rc8F89wy z=BSkBEteZFzDKZ9ZoOfGc2dw#GcIz&kf2Lr|Nh&B{AyKy #j-0>;%KtS@ z#tM{e#2{$fpT^>~ANvJ@eqhRc{f~Jy0kI0GlV|ePi!g6Bu6%3*T`!&Zt{EU|EL@-q zI$C-`>f?gzV5#P4oVnCm317fu-bp%13^uTcTS&{HN>NfwuXPy&t-8^at7F6NVCJ?N zH}q7ptWZ2#TU}9L<1(M XeK}k z2Qp&u9Cx#;9c|jzZP#&MsxL`0Iq8qN3L>-6o74Q|WbKshp6?S11{kPDJmUQA4xM!~ zOELt1A$pzKmN~^br>skFwM|=-xDLzA#*{cP4$wh?-9rPM7>96g(W2X; XWL4eL*d^PgA+|wiAAof3PTT|B=&gUW!i%K~V7SwDFpy zW&ykm<{)4E+@CjAd|^1ke^x8&eXXM=5cn?#)$Q(ygM*f9rJl%)aqoYBPC&o@Qu?;`$mx;=bQ@UQ!*q?8Kl#Q3GPRbi=rD36+2y)FUYAc_(lE0jRo(G3($HB-k)HU%~ z6$8iUY~L7X+$bsL!BQ(j&MEaFX|;uoH+py2<2mwAZ6#m$);+&xruY~Cx7X@n9FwSX zYo;)#&ctuWr235(-K*0xZm!>e(x4VX`Ua?j5|ZoD^o_74AAkm$u8Mgf-hUi95JUwB zH|dapZJ|QgE{cpZ>`~pe>MuN8-Cn^@hs G@?J8%Vu4PWSCewVp4;j=Xh0b^EInCIPNSbSoVx{Y=#_vfzS*&Ivy`8%O< zdh2x}C}n}o& jB-|4Q860kY9l^{sT{O#uZrcXD^0Oo6jqE+H+57v15Tg-m zt?e&T#JprMhdoB9dy2-Q8_p(=SuUDjBkv#G@%{ATnP*}(rEg3gDGK;i=VpuEUdr;g zvxVL8O2UR$s)ar!xqKVf{_?=vz`@|K=KDuXe^*yHY`UWLzzr`Ykb8Lz*N#rs C?j^8Ct=%=~y{EM_@1 zFgj$ftL^i>s%ky?|Fs@Hi0_ZTI93 jU>jr Q# z56BO|-4V6s4ZyFvdLPpPq)N2saNr>0;BGv&f27+s!kzJz?V?hh04HcT;mlbsdZ>=% z #$<`sZm<3OoBPuxS3}iaStdhUf@2p z3t<2O0z3#1Gq#IPoFt>ALe8-7r9VA7x%d8%G1%RHDSnyQ 4q3f z8ykF|)EbPg{&jwdbTXP* G}v`#*C(f1Mim|G|4e8wBT;MPpzEy|Fh*u&Wnd z=s=K5t6!IF(4=WHAal>LA#(8)kLe8X++iw7>Z}C>hc?DZxnv@gY)YyJX(jzYV?_Z&Sa>VGcVE}BI8zVa^6}8$5Xk%*`Fr51O z9>IZQFVK!5yKCO1)^*RjHM)OS$7qM+9Wge6H$rePkPhXwz!qb!>Hf}6_vzr14fjp` zfGwX2^k&mX`a`%R=-~@GroWy%P`fqqNL?-1@h-y|KP&S$SN gMdA=06=3>+%HpI}C0$(_+-i;f>a1!C za 8T{RbOi}49RYR+sMybWWL-DZdOv?X33B2S_lJa&2CLEFG`no_i9fK* z6wq=RgfR0PE5-w% w!e4JoxP$2T-R#EZ2+G$`o` z8bQjJ;8pGhX2U-~tyE-Rb571brvcun>m!;w6zHzfd-T8At@c}_KK!24He*Z8vG7*# zzZn!2{rxox4x8&=?l?9CW~^2}kbR9u-5MtRSzj524HL ) z=fY{nO((Z+JDqQM58i&0Yg^|G#y9uWx18g8I_#Db&x5vO>xR`f5ynZGkvK^+FpGe? zN;%_A0&AbKMhR<29BxWtr^EqgTnlk`5yMG(xn+vdIZeW$RN9J#JA)75ySKrP2nwh| z1V!l3v-GmG@D`O`Pd9pPwkyaAfX|}0(Qg1H6^f~2cZ1_ C9-!zYAbKI2{w2iIakkn?BA$O?|$)uF5p&NhAa+ z-`bK3x_zJ(rZ>~jI|6@tsNJ)6E!N>jYEdv2Q&2?9SxYCx^DWDx5a}ozQX jXALGBmG%S^k>w4`Ohb@EF>haIk1kkm8o zv+7zq{(fBmIHaAio$UehoXCmf+4+rf5{HYNXx!tIWpA7UNgibNP18CGLkC=n5F~XL z$W81MFC4cg!5gh$u53D0hNVCthP?-JuPdWL&LAA)^fyJ2mqr?%jD(9B*#G9 m=TRQpm9Mn6EL>X zOrfPjSbxH7)VM~yb6nI1zufX}2%HZsuBoD namH(!A^sE?vj926b== zUd}}CM;wTY$UzwX|G{jKmo9yncxgVrN;@lY2s8EL5hHbd`q)iel#phImM4A_eBL~! zM*wM {_Roo(_mBqUT9LJt3aq3}J3o|DgJf?}sRW3^Hg!2AQmIkhOm2qBPIyE{-4O zeKY0}@jxj|!r;6QX>3V0l4v5s7HjSxquXyp`o{-bPi9}yJ{8 g)bKar4NA2vH$}QHbLXSQ su5|hNEGFOlMNmuh@z%)p}wtN-+zYTNwPQIBENFmW1)3w^(GV z&OlA;m}Yr7RBqT~Tu|2< iR(Jwo$_(W847J>QcmktcxZTMV=q% zos$h&AJ(Z1nM?cco+Fk5vz}xBXz$Q(aU80L`RqzJ%;?~i?T=Kz;Sfy6uzLvmZvNR| z(;HOF(M9kVOxam)yJL`x{h|`zVB
z84EBnOhlu6=w0JsOp>A)O6y!mSaaO=Q)!rH8|z5N#esD2C`;5nqBbA_lW`QoxZ@!4 z!rVHn61jw!F^bA%QW6^P(#Ve}rb5MAm(42Yp L;)u2d)9wX@ zmP7%AL%&_w`gVs}W?p=*eZaygE+vmT<(O%7?O(dAkqH5<7#Gx_fJH-4q>=J7wcg9R zB{*6`@2!fC5gjwU*1jwvZ_wAD9(?rYd|q cv9k z2XloX+E&v4ywbHQbI)mJh=pA6f)#-_qq2Yb9qbC* Fp&EK_$BVefP Pj(YF5NeifT93M2}al^*@`9?VWnN z)$VDP0H%(n@Xa?<7C#3&rqX8hfKneC#+IbRvaLp~Evi~SWxKX@Z^)Kb{_rfw*(*aL z7BU{3&+5YoZ+dN#tlmhGB-WmD*Nqmm5v{d88D*TIBu*3OYprBbP_e{JOan|yG&7B& zVl24ij4&l!#yQ}4JrO=*yl&`znlyuED6Q2D;T8_^`bjasu9z7Mt}IS8i?P>bFjO$G zQYK{-6$zX4kdu;r#;7hR))u{l7!8$*UUG4CgEYwnCaH|8@GkztRXFJ`H$gEMXsn%b znc&%{!E zog}In^4%~mlM;xZK)_xENDSSb6xBd *Y~1HY?Ft5Lg*`s?sbkDl;j z7q^W26`8T9SY13QA~zm$GxHQwBJm_e6~8s|UeGR6xg4{H0v?5+qdHXDkJz(n zN7V N>%FwS>8@@Df4Xo*s?3y$qUWdgEI^L&} zG-AxQ$_dYFcU^xvAff6N^ohg2&Ns}3Q>p$#$%m# 8$CV9E(L znq*B)KQdbl6%0=-Qnp0nKYWjEjybRSseL4hvauhbsBCus 7XwOq|mBgwZ_H w8VtkE1Z8VLqUCHHZE{GL6Ve!P*MO zl=s~}({@tFB%a7a@>L(440th*ew^ q}p~v0`#GAaQX5Z1iK~|)J9)-A3>`*GAn3 R@fr5<)9V^kKJ`l%jdrQ7lyEiy+u5OH5v zk0sT7I1q_xh1znSH<6@R42<|nx7%@ BqzeM=dPrJPNa>YtVq1tdDEvB0W8ABup`{61LZYVtBBZjf4=vK>-IYWq%vaIh5E9 zuZN+OBqqVbRa*n!aT3My>>Mr=eqs8jonLNEoU~mFUBsRgSXC}EhEp+G{ya~~;i?6? zou+0Rv!aqBSYd@7R@jT?4O2NdZy=qEih-5O)a)pmX#mIFgx$ucz0UuERb%HA<4ARO zB8Ajj&K>(^Lxg%ysy8}att7JUp)>-);8kjdLFnQO-3ru`@HY|i=l;8@VrITgf5-%% zQT?HN>nz6jMW`vQOY)_`8>(8q^QxwSgGYf+cKKZ@wt~(}FIc$Twl6`cjok6%>&!dL zq6UWQGx2l@aNdOZc6{@NDh^K=)4{9Z3xFD0MG`&O+GClXjUyqXFxad6{b )pvnLkvyA&M|J6tygmIbfHWKKUv(d0?8o7tq~Ac5Q)CmrHZ$|BI|jt$SWK@h~h z$})rs&?F$&gMx%}a1Q3<9GoLd-e5Z7Gi*h9$1FIjX;}1&vL8B{X#|05Bjk95PF4YY z7yC2;BYB$+TT32~>41H0n$Uny9hrtgal5; #OIBBv8?kUV_QZd~u$XygAJ%1g$3HTfF0mlgYn(&M zlY;ZBnl#;wJ==pZZ!@+nvut?@_wkXfxrGHrYSFVxz;f|0T*u|H4XO127ZvKKt?R|h zsR}Vz3F2^Tfbl3EE>mAwZ?qDe?K-;^$B|Va%u7T&YPUOCea1UR(j>Z$h6L23DWCE7 ztY*u3s$|BXaRUY3C&?W}1%HcrSwL-3W(5JY0j^iXJNgx81bj((+%cUc`cF4VSK?3a*ei3GJ+7E#1 zmpf-eFrj zwbv(q9CQI}Q3nZ|x)pFMFpb^r8CxS%mEXNar8w|?E&HqBnQ702VL7HMvgFEmZAhPL z%o8sk);LTj4yRL*z!Vd^RV(ufO~|T@V{<%6L3QF2wQnTA6jhAER8-Mk;@)?%IB;we z;xfV{aFf)98Ok8OcTFc!Q(*Qwlf8`bIdL! M6oysLwy1OHP8I(qb>=_U|5 z+1NRG``dAB1G%GjP4&EoMCuQ&@AH~CE}6#Kw{1=4*nKC-`B&@hEt}SQC`2*-r)1+u zWFap~MSz+^ea{8KVS>{MY2uk~Q!tSlHy;CVwl;=ExB^Yhh~p-MmZmj}Y*>FUl#o@( z&o1W2MTr~K$Jp5*OHn?R&>3urxVljqnapaoE_SySH97AI%Q!w9Nk8=GSmm;&12H^O z%A~Q|l%@w4dTb#D9WfN3BVds%5;cqCjKI8Qb=|0{EfGG#Fu};a5>+OseYIlObX#xv z{`S!Kl60-8mceiEAz_#}mik)Jjg<9$M6N-&JcTor1?y|$KdmCQN`BLJTm@!;Ckdk% zyj}f%M9@G`vCa0>#>;QxWm(CZz!^l$xO*7NJo7&F1~D$WWJ1vtLXgL(6@xS+l#+bv zFa!|@`x=%n2qJq@9tKe7s|X<-t;-=_CgXI71vI5fX(xl7t~xq-hB~VJkUW;`dF@mq z>h!aLF0?M}m}3L{v{|+j&ZCck*FV>^?^CtO70WA_Ee-rzTmEsbO^S!SH<-1HWm{yu z4XA7*Lgy{>9S17s;9$@MTe@Si3c{+#b!FT|R7WJu6vq$*JbWzMMq?v{p|33Ivun&d z2>=MML)6WFUb-D|QUe{dS%fu>%)NkNDl}D##Ix&7mWh-e13(rRdEcA*7NtCJSO7D@ z8E<3D+ikv(fL7A^O+LHM0)vZ9?a7VyDio?-yv;+Zhpitmbm6zb`AG3BqU{^mQmqiq z%1`cxFE?r8>j^R1f=ZJcjZK1U!5Jz`=G}6gM%XhRsVPU*l0@4Dr(ZX*z`2yyQox0F zS|{qKIvf* M{tP-;M!Bq0v8}qW1wD}1v%VR>>2|zPdyBJOsxydX{Vq- zjxwrEfipb}aNq(97Z|X4$J@{{Yv5VIqO#M2rl! +m?y94#o0u=1|!|EhBi1^ZMK!L(fe;jfM2v;kR(yYEp|J4 zB$_$%Xh9zB$RY12CnS4(y66SRWEupf1w$6yfWtKe!?q%yl?iE+t>3s7`%pgP4a5^3 zUoi1Tx92JgV=>cD+-tSj;lmY1YjQrj-c{kke>@ot7aNAFvJ0J;rf9I2=5z_iNDca? zUR!79(;JMvcMsFx_i+uxD#T#@=lx{}BWD6|!VNf!$^&d6@}LCAiaft@E&f77G(?Va zvnUdxTk&&B2}c;KaQ~}>&2B38Fnkz{Y{zU~@x*G7*bOxwaJ`1Ye?4LlK_@0-Ji5^S zA>uttvPi>{4$~+kP}U9N7(GR9^;pgIf+zxk(50lEcIAjMs&K|I-Oj6Z45KrQ4{raM z?hiZl+TlUBb71i7Zl@^wlznFaGn-!md8uZS_4@be>9YnqY|m8G%laa~mi(x-v&bU` zb2|lt@w1;gGqepd$Bc-B|J_Z`)Ad@Uy4QqmlVx@{GlQ9YQxZ(A`!BCuCD8KT^S2tL zSQ+6Y#KWNpFggNG#c&nv=bm;`g#DZ*9x;-~bSzAscG7qg%25o^1qO$OG^xPQwz%i! z1=a0i9Zm}YKIk*$)bArX6P}Nzbtevcsy$j-LZM|YK<2R4NmIoT)`bBDobc?@H90*V zPvolhS%*$-@j}&PXbq*p;f@MEA3>FeBJ+>(U^E+}ppV@K$(a^C?q-bd1-rje(HQs@ zmzB7NfZo#sE+c{H%ABL 2mx)!ghx~5w;f^fTu`edWd`WeP|VHy!KGl2_za}}Q7 zujwy3%-(aHMfV>_^y{S$V_+$0L=xF8ANK#>*H&c9UyjF;3u!z4wav7y;pWu0b3)Q1 zwDU}){82xbcI^}RX3!Q+v?`qbOH*(z9P{DP9`_TgMv04YmL^dg1%XdU;JQX-Nsglo z`^y-E$mLClvF=RfC_+%>c~KTx5lUH_^!kXS(x1m%3iFd$IYP<} d%j0`#!kU}^TkWj*>cU_({#oHguY|%0u8iq3r(z5*| zCH;vMb`(=G2hddvG+fmO{`U^8LesA8><+dDzN9hFJtlbe-HL)}nE%0$o|N?BChKiI zw6vt2NgWAnoy|hUuNQ?F@+T|Wez|SN*k(&T9iqUsVeVmhki1R7V;*Acj%#L!4fL!w z>*5(-rdg37u!E2X5IN>J4W`1h2(2u@V-~98{-$I{19NXC{H=ImijYTeUf3t!3J1dD zXTeIW!mM*fz)^XC9PJ4W4%Y(Vjc7!|6I+O3rTYjIg8e{|9X1k8S6Fi$l4jYVn1Pg9 zCU`0ggQ1X1Vd&`O4|0XX4-dAiWamWDOO%uZj!P`%GuL#l#GEQ9wT0j7bWy60rmBsn zp6Ph@& G~vJsUl zE{W$Ub49~$kJs;}SoS6OM3SPNV;>+JwbZ)b$o(Z^%Zbb3#m}67i75?8u5*oH9I` zES4MxFY{eK{V3QQu+*M `Y({JpsnRI6@N89% zNbI)S=r&P8G~0)fp9W!d``CiKLER^c&G+BmW#M(ysb=RlJJz_;gLA#Uy#rtI&vkn; zu@qu6p{#xO=Rn1;ErieNtk^V;+l9jDJs}qy3KP3ut<#n{E?UJZ0k*w^+_`^#w^JLs z`Aq(dJ_&O7$@ q*?wGvW_#3&JR zR<`tzU@WzidlZn+jEEJp{pt`&vRZC)#+6_&$%L7 JR(To8kbNI1^Q2J`Gmk *sIi<% ?;hIOQ@>7dJ!>zy_oW{q~5b6`E zQ?dzCo#cdcC@#)k&R*9Pxc^FZ!!=U(%-ialCOUSmvO?4+7C73*msu8cA*8p|ZHFS) z^L-b!EIHw`0^Kf}I>h&oX>=_#T8a=wv=JjZ)^oeP#C(+FH5FYAZ`~GewWOhqGZsa0 zN>Fpdi-KFU)z0rd(%A*!+VTxPd7}~vZa7%cqb!bb7H@CR!5P`-1G|3y ^J%a1!qX(rxQf~mHR#z=tej(cJaTyJsf&iC&0o}d!s)JoN z%j |gL* z( 6T4km#*rO!i>Xz5Yk@QHRvQ%~fF3WW zI%`~fRzkJU36B4XTgLFZ7%D$rC&oFKBoM>P#fks=4Xw&CHF^C=C&$^QPo2ND-)c$H zvKVo;KI##=d(#7l*3*@p I%{yw+ zv9l|N)6 rU1?FNH2t}TtLA+|Rf1UUCnbbvU8V^A~JazKfmwATIYBZu;e&F;~4q|GeAevmA zEKlXZThT%O`k6zTn(b~;d#V})iY4A9fft0sSd^P|K(UGHf9_2;LxS6ZiW$dbQFK}Z z!zvqqu5mIG(ic)-o4}H}vjk&^Ma!_ax_flA*%;N!NRmFfN{&OOjm9TH^oNnoD#4zW z#F`op+=Kyr%1CNxyhL`ooAg;4B}2fown~FPebf8FJ|#pHm0^h0DnHBx_6F_AwYk*T z7D{WuFxMH1`~9Qd2Hy@EzeV|^SmyJ$3I|O$hr6WfcD84vo+DTzR3~xj3RUGqLu|tC zfWTB2wUdu*z3LIZh=K~wylmUD>>Bv%p-{9b4XJ4ZgfmqSY@!P4FWSwZ-vQCepUhkN z*!I d0Q%qjFgx476?9EqTpKJa{hO3^6Cm>c&i*3`Kj6H6Dyd1?0QH) zFQQ63FUvigW$8xPD>AU8W}HOjde8p2tG$^7At)p^ y&Pl4yc)S?lC@0l1x(>ts$;u85mIQ >>#MPg9F3FYMzh12ARoM1$?T~YdyJ8GgDiiu z-ar1-ME#2?A3MCSp8V%G-C(y#vgvAsv=ST9PD|c$qZeKU=+rrGkAAdLyr&9TKYgd8 zx=Lbn0^hH+(dw1!_URiu<#SH*K4E>I9zYK{B#Xi^ZL<{QL!vO-<0D$XWmc>M)rryp zOtO_e=AiZf^h0NhiQz!iF-#3yfM>7>m*Rrea)-#ai0@&KR1#B8pyEhVhd!9ILnmVg zwD%+gS~j$8OlUM{uyHUL2BsKd8%K>yVhmw;;Ebzh(u{>r#1MvnKsOj`LT7!y`cXMy zlz{(gykGkX3k%1AHU2LtZCq6QN$-qdzkwM^mAAN>Inn@yxio*9xjzyMQMLnK5WtZ= zVR*rTY#3Iq`#`j8wT`(X-&NeUT~>5%I7Wr$;1-(RJQeP4M #u$qRENx+g)|x5> z#@dK5Z=k%78HQktQc@vf499KuyeN?r!?G03ay-itjwFdwo*;M*CpelUof%1zyd;Z) zz>owsF9 7Xe;@Xa#ob|oc2eYZ_L1< zK}P&Ofwev>DQ@=Sm==m%Q{XjXqB>7KBHa7``aq;Oc^%x#2>S)LChea_=28$-t?IUp zu0*=}G%UK9hI3+Oz@k$(7bi(ukKcr#Ih4lnB^GK9EJ_YGFEX39NZvnBKKT6GLcUeB z8N=#Gr6!9TE5P1;++Q}zc);Vv@jFj J%*wgEBA%Yp@? -?f+REs=sJ z0kshwZ(lh+A0HMT3#F=>YeR94mg>5 fRsRo5y%_dow}{@b5$VfQ8Wk&2k#s*zj!`(x%sl2 zuA(2xC4Z8Eh?AXVD0kuKA!u$@p0Bdda)GE`A7rlgH6{14HZAWK-yT?M;dK6e;Y`en zu5Y~@4|nTb;X-Y_KRw><$c;a_o{Gww;hTdwNj%*!+qXe)R&n%=dlXd|90+ydYB(W- zR*QCSO1Aw;y!J^}9`%c@bDN`H;}BJKluZOv bB;S?F+OH?sVT8#LO$>hE zkdutm+VM;s+0EH>yCn -NgYW!xezGN}~aXqo6rB(NK zyS;iqK-FIA$t20DdI{}cVAV|U2N8AGceD<0PFoJzm&V+arNajkK}Mb9j=9bPMq)0m z$4HFyRZpmGS Cxj4S#@N!GlCI z*lEs>(rWs#Bs;b3A;4;n|IgV6z^Ta3#uSftRS>LZ?YuT05ewve=zH20cBe06`_Dyb z5=G&l#jzIN6!}akLE3(i#nfi>4S@!rdAL||Q*KaVg+T4dq$o9=HOVAOD {ZRsB^z40rYS 51m)Q8`1(5~;W z6-F$=&%Z~=_}l+gV>FeL4eKNxba-^|RQ5`!k&IJzNRp(Br^9^GSUt6vq#MaC7c4m- zgkq;5BqY(n!J|)D&Ws9V`S&J(SqdZQ&I`MkcWR#%cF1cg=2!8%!&3(?gE=uY-Km?g zYEq%!rovif?5UAK1Z|Y>rg2izAWYIUA8;X9TjX&_X<4MGc4cWM%ZqueRW-|L_Mcn? zv@=Hg*q8*CY &D)tt-=3raNWs z<)tCC;_KauJ{il9gfN1xbKGzO#|QK_ueT`JP7>{d9|*d`^Uw|Z)w+#iySfL1b|&A_ z9Zk=#$sC|IeWw9`ccMeO+ZXwmUmM@3m-B~QLqyUi^!hgIzZ%KbI;-*7DjwE{`zR<0 zeso5q{-E!%9a&4 CwVm4h zKt0I-(hm8)#)EiY%?jEu0&&DG$=&JO;m1WZ&`Vm3+QI68Xg0xEQ9wQdlI&`-(1HCi zCoE>MREWWrXF6CK|7!7CExiE(DE-&sIH%>>9rPC&AdiwfU)N^|@(^;oW9%F)L!f@- zuem{oRht!`Q)8to+kyM-xaI%kM2e~XN1`Oto{n4VL@vOJF@&1uiZuY}M^X8mb M%l*-J@fEe`)*cd3+4dqP$7LZK;@&KEU3g{C7|eE5?qRdOxyx4i2#Ofy5@JZYMG z*wk%kQ)(s5%>5dWh7L+IC61zwjn(_ye~!hrofEY|wJUNa9CY}=auicw%26Oh$kE=I z16r|jiLMLq;nL$6Y|LNp2rmqE|L2doOdnhMRv4Rje}#M~7rU$cl;NNYdxNtX+eR2v z?8TBvec<%1m>Vq7@dW%S=z(T4wgFGKHo)I!hU#Iq*#B$?3o&2i@Xq^JeF8gsU3e-D z1ub(kbpBfg`MQ_+yQO~bm!m 7PFHM@GW~{Zx4+%M{(}>a_0OP^g?scLz zs1S9@WYF>XM{SAX2FRe$%%L1k9+lwbyi<%bJ|9UzdY)$NT*StT9w|bgmmS^uxD(Fg z-t|vKNFJ4-t+D$ty6aTTv?wh;I)y_7j-6yJ&c@m3#o0K!R_c)w&g#s^VH6FB)Jw^^ z*_QyJgGjKlm+__eVnXT7D7UwhCGeQV-80|aMx}9^Y|P^5qiD$KZI1T)5^b~NEE0|; zhGG8O`6ho-*?m78-lKSh8o6~~z~lUQ{cmr4!J2=3H1qPMPYJdq0OfeM+I061l=rza zgJae%eN6uZrqg3K!tWWM@u!R_7&5sUAnRvpHU) kgs5mf1gpgVQ0`|7n(LpuN!!(*UOjfdNEBqLJEo}_E>5z*JZ#H$ z9R~#@u%5!ajop>t6HU$Z1NP){#w=%9pu)Uvl{%Elm`Eu3&z862h&4tHd6*dIjPp^g zOx%gac3